Apache Server Üzerinde ModSecurity

Merhabalar, bu blog yazımda web server üzerinde karşılaşılan web saldırılarının log olarak nasıl düşmektedir, sizlere anlatacağım. Umarım faydalı bir blog yazısı olur.

Apache Server Nedir?

Apache Server http/https olarak yazdığımız web adreslerini servere göndererek istenilen sayfaların gelmesidir. Dezavantajı ise yüksek trafiğe sahip web sitelerinde performans zayıflığı bulunmaktadır. Ubuntu server üzerinde  sudo apt-get install apache2 diyerek kurulumu gerçekleştirebilirsiniz.

Apache Server Konfigürasyon

Apache Server kurulumu yaptıktan sonra üzerinden geçen logların apache2.conf içerisindeki LogFormat yazmamız gerekmektedir.  Sebebi Proxy ayarladığımızda geçen logların hangi log formatında istiyorsak ona göre logların gelmesini sağlayacağız.

Daha sonrasında /etc/apache2/site-available/ içerisine kibana için bir yapılandırma yapmamız gerekmektedir. Sebebi Apache Server üzerinden Hostname ile Kibana portunu ayarlayıp apache server üzerinden isteklerin iletilip geri dönüş sağlamasını ayarlamamız gerekmektedir. Proxy ayarlanması bu şekilde oluşmaktadır.

 

Apache Server Log Yönetimi

Server üzerinde gerçekleşen olaylar için /var/log içerisinde apache2 dizininde access_json ve error_json log dosyaları bulunmaktadır.

İlk olarak Filebeat input kısmına acces_json ve error_json loglarını çekmesi için aşağıdaki gibi işlem gerçekleştirelim. Burada Log dosyasının yolu üzerinden logları filebeat üzerinde toplanması sağlanılmaktadır.

Sonrasında filebeat output olarak logstashe yönlendirme yapıyoruz. Ardından logstash conf.d kısmına apache server için filter yazılarak gerekli işlemler tamamlanarak elasticsearch üzerine loglar derlenmiş şekilde iletmiş oluyoruz.

Evet, Apache Server ile ilgili işlemlerimizi tamamladıktan sonra, açık kaynak kodlu ModSecurity (WAF) Kurulumuna ve apache server üzerinden gerçekleşecek saldırılara örnek vererek blog yazımı bitirmek istiyorum.

ModSecurity Nedir?

Açık kaynak kodlu bir web güvenlik duvarıdır. Web uygulamalarına yönelik saldırıları algılamak ve önlemek için, ModSecurity web sunucunuza gelen tüm istekleri ve bu isteklere gönderilen yanıtları kontrol etmesidir. Kontrol başarılı olursa, içeriği almak için HTTP isteğini web sitesine yönlendirir. Kontrol başarısız olursa, önceden tanımlanmış eylemler gerçekleştirilir. Kontrol başarısız olduğunda istek engellenir ve aşağıdaki işlemler gerçekleşir.

  • Güvenlik izleme ve erişim kontrolü sağlanır.
  • Sanal yamalama yapılır.
  • HTTP kaydı tutulur.
  • Güvenlik değerlendirilmesi yapılır.
  • Pasif güvenlik değerlendirmesi yapılır.
  • İstek tabanlı filtreleme yapılır.
  • URL kodlama doğrulaması yapılır.
  • IP adresi kontrol edilir.
  • Boş bayt saldırısı önlenir.
  • Sunucu kimliği maskelenir.
  • Bellek limitleri yüklenir.

ModSecurity Kurulumunu https://www.inmotionhosting.com/support/server/apache/install-modsecurity-apache-module/ adresinden yapabilirsiniz. Güzel bir anlatım ile imza tabanlı kuralların nasıl ekleneceğini ve nasıl kurulacağını adım adım belirterek anlatım yapmış.

Atak Senaryoları

Şimdi ise WAF üzerinde gerçekleşen saldırı ataklarından nasıl log alıyoruz, buna geçelim. İlk olarak SQL Injection saldırısı gerçekleştirelim.

www.furkankibana.com/?id=3 or ‘a’=’a’ i şeklinde bir SQL saldırısı gerçekleştirdim.

Gerçekleştirilen saldırıya karşı 3 log üretildi ilk logta 3 or ‘a’=’a’ i  şeklinde SQL ifadesini tespit etti, ikinci logta 403 Forbidden verdirerek erişimi engelledi, Son olarak yapılan saldırının Risk seviyesinin en yüksek olduğunu ifade etti.

www.furkankibana.com/phpi.php?message=hello;system(“cat /etc/passwd”) ile PHP İnjection saldırısı gerçekleştirdim.

PHP injection saldırısı hakkında gerçekleşen saldırının yakalanması, engellenmesi ve (Local File Inclusion(LFI), Remote Command Execution (RCE) ve PHP seviyeleri belirtilmiştir. Sebebi /etc/passwd ile sistem hesapları dosyasına ulaşılması için uzaktan komut çalıştırma iznini PHP açığı sebebiyle saldırı gerçekleştirilmesi yorumunu verebilirim.

https://github.com/coreruleset/coreruleset adresinde OWASP’ın sürekli olarak güncellediği kurallar mevcuttur. conf dosyalarına girerek kuralların nasıl yazıldığını, ve log olarak düşen kuralın nasıl yazıldığı hakkında bilgi edinmek istiyorsanız ID den o kurala giderek bilgi edinebilirsiniz. Unutmayalım imza tabanlı kuralların atlama tekniği bulunmaktadır. Umarım faydalı bir blog yazısı olmuştur. Bir sonraki blog yazımda görüşmek üzere…