Apache Web Server Güvenliği Yapılandırması

BEYAGU

Katılımcı Üye
25 Ara 2015
671
0
dPyaEZ.png
[/url]
10 adımda Apache web server güvenliği hakkında ufak bir içerik girdisi oluşturmaya karar verdim. Elbette Apache kullanmak yerine Nginx veya daha farklı yapılar kullanıyor ve geçilmesini benim gibi öneriyor olabilirsiniz ancak halen ağırlıklı olarak Apache kullanıldığı için önceliği buna vermeye karar verdim. Sırayla ilk adımda yapılabilecekleri listeleyeceğim. Her başlığın üzerine tıklayarak nasıl yapılacağının anlatımını yaptığım sayfaya geçebilirsiniz.

1. Apache ve Php Versiyonunu Gizleyin:
Ek bir ayar yapmadığınız zaman server signature aktif durumda olur. Peki bu ne demek? Keşif yapan kişinin Apache mi, Nginx mi kullandığınızı ve Apache kullanıyorsanız deneyeceği exploitleri bilmesi demek. Ona göre Layer7 saldırı türlerini de deneyecektir. Örneğin Slowloris, Hammer, Arme vs. deneyebilir ve exploit açığını kullanabilir. Bkz:Apache 2.2.22 Exploit List

*Örneğin slowloris.cf domainimin çalıştığı sunucuda hem signature pasif hem de Cloudflare ile maskeledim.



2. Dizin Listelemesini Kapatın:
Default Apache yapılandırmasında dizin içerisinde index dosyası olmadığında dizine istek geldiğinde dosyalar listelenir. Bu da ftp alanınızdaki her şeyin public olmasına yol açar. Bu sebeple bunun gerekmesi halinde kapatılması önemlidir.



<Directory /var/www/html>
Options -Indexes
</Directory>
1
2
3
<Directory /var/www/html>
Options -Indexes
</Directory>
3. Apache Versiyonunu Güncel Tutun:
1. maddede aktif olan exploitlerin ve güvenlik güncellemelerini belirten bir link belirtmiştim. Oradan da görebileceğiniz üzere aralıklarla güncelleme yapmak gerekiyor ancak update çıktı diyerek hemen güncelleme yapmayın. Önce biraz bekleyin, stackoverflow ve diğer sitelerde bir bug veya sorun belirtilmiş mi? Sonra iOS güncellemeleri gibi perişan edebilir.


httpd -v
yum update
1
2
httpd -v
yum update
4. Gereksiz Modülleri Devre Dışı Bırakın:
En nihayetinde Apache modüllerden oluşan bir yapı ve modüllerde oluşacak bir açık tüm projenizi mahvedebilir. Bu nedenle httpd.conf içerisinde tanımlı olan aktif modülleri gözden geçirin. İşinize yaramayacak olanları kaldırın.



Buradan hangi modülün hangi işe yaradığının anlatımı bulunuyor.
Apache Sürüm 2.4.x Module
CentOS’da /etc/http/conf/httpd.conf altında bulabilirsiniz. Ya da locate yapıp httpd.conf dosyasının olduğu yolu bulabilirsiniz. Orada LoadModule diye arattığınızda bulacaksınız.

5. Apache’nin Çalışması İçin Ayrı User/Group Oluşturma:
Varsayılan bir kurulum ile Apache süreçlerini nobody veya daemon kullanıcısı ile çalıştırır. Güvenlik nedenlerinden ötürü Apache’yi ayrıcalıksız kendi hesabında çalıştırmak gerekir. Örneğin: http-dev.

6. Dizinlere Erişimi Kısıtlayın:
2. maddede detayından bahsetmiştim. Burada ise httpd.conf dosyasına ekleyeceğiniz bir kod ile bu kısıtlamayı sağlayabilirsiniz.


<Directory />
Options None
Order deny,allow
Deny from all
</Directory>
1
2
3
4
5
<Directory />
Options None
Order deny,allow
Deny from all
</Directory>
7. Güvenlik Modüllerini Yükleyin:
Burada önünüze bir sürü seçenek çıkacak. Kimisi Apache 2.2.x sürümlerinde tam performans çalışırken, 2.4.x sürümlerinde crash sebep olmaktadır. Ancak ben Apache 2.2.x için vazgeçilmez olan mod_qos (2.4’te sıkıntı yaratıyor), mod_security ve mod_evasive’den bahsedeceğim. Apache yapılandırmasıyla ilgili şu an stabil yapıya ulaştığımda ayrı bir konu olarak paylaşacağım. (https://slowloris.cf domainim üzerinden testleri sürdürüyorum.)

8. İstek Boyutunu Limitleyin:
Varsayılan ayarlarda http requestin total boyutu için sınır yoktur. Bu sebeple izin verildiğinde Dos Attack kurbanı olmanız mümkündür. Apache yönergesi (LimitRequestBody) ile istek boyutunu dizin kapsamında sınırlayabilirsiniz.

9. Apache Loglamasını Aktifleştirin:
Apache, işletim sisteminizin günlüğe kaydetme işleminden bağımsız olarak oturum açılmasını sağlar. Apache günlüğünü etkinleştirmek web sunucunuzla etkileşime giren kullanıcıların girdiği komutlar gibi daha fazla bilgiyi sağlar.

10. Web Servisi Monitör Edin:
Zabbix, Argus, PRTG, Nagios veya daha farklı monitör sistemleriyle düzenli takip etmek ve logstash ile loglattırmak. Nagios kurulumu ve yapılandırmasından bahsetmiştim, buradan inceleyebilirsiniz.
Icinga kurulumu da benzerdir.Herhangi bir açık içeren kod parçasına sahip bir yazılım nedeni ile sunucunuz ciddi anlamda risk altında olabilir. Konuya bir örnek vermek gerekirse, geçenlerde round cube isimli php tabanlı bir webmail uygulamasında bir açık saptandı ve üzerinde roundcube kurulu olan bir sunucunun saldırıya maruz kaldığına şahit oldum.
Tipik olarak, saldırganlar internet üzerindeki sunucuları çeşitli web vulnerability scanner yazılımları ile tarayıp herhangi bir sunucu üzerinde açık içerdiği bilinen yazılımların bulunup bulunmadığını tespit etmeye çalışıyorlar. Bu işlem sunucuya 80. porttan erişilip ilgili yazılımlara ait ismi bilinen dosyaların kontrolünden ibaret olduğundan epey basit olay. Mesela roundcube örneğinden gidersek, uzaktan kod çalıştırmaya yarayan açık bu yazılımın içerdiği html2text.php isimli dosyada belirtilen bir php class’tan kaynaklanıyor ve saldırganlar ilk olarak hedef sunucuda bu yazılımın bulunup bulunmadığını anlamak üzere roundcube’un kurulu olabileceği tüm path’leri (mesela http://www.falanca.com/roundcube/bin/html2text.php) kontrol ediyorlar. Sunucundan dönen cevaptan hareketle de yazılımın tespitini yapmış oluyorlar. Bundan sonra da bu açıktan gayet rahat yararlanabiliyorlar.

Sonuç olarak bu gibi saldırıların önüne geçebilmek için ModSecurity kullanmak oldukça yerinde bir harekettir. ModSecurity, bildiğimiz layer 3 firewall mantığında olduğu gibi gelen istekleri tarıyor ve daha önceden tanımlanmış olan kuralları baz alarak kontrolden geçiriyor. Eğer herhangi bir istek kurallardan biriyle eşleşirse bu isteğin reddedilmesini sağlıyor.

Kurulum ile birlikte gelen kural setleri oldukç
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.