Bu makalede Internet ortamında en çok tercih edilen web server olan Apache’nin Centos linux dağıtımı üzerine nasıl kurulup konfigüre edileceğini anlatmaya çalışacağız.
Kurulum
yum paket yöneticini güncelleyin
yum -y update
Apache’yi Yükleyin
yum -y install httpd mod_ssl
Apache Kofigürasyonu
Konfigürasyon dosyası için
vi /etc/httpd/conf/httpd.conf
komutunu verin ve aşağıdaki ayarları uygulayın. Bu ayarların etkin olabilmesi için Apache’yi yeniden başlatmanız gerekmektedir (“service httpd restart”)
ServerSignature
Apache’nin hata sayfalarında Apache versiyonu ve İşletim sistemi versiyonunu göstermemesi için httpd.conf dosyasındaki ServerSignature değerini off yapmanız tavsiye edeilir.
ServerSignature Off
ServerTokens
Apache’nin canlı (Production) ortamda çalıştığını bilmesi için ServerTokens’ın Prod olarak ayarlanması gerekmektedir. Böylelike Apache http isteklerinde daha az header bilgisi ile çalışacaktır.
ServerTokens Prod
Directory Browsing
Bu özellik web sitenizde açılış dosyası olmadığı zaman tüm klasör ve dosyaları ziyaretçiye gösterecek şekilde listeler. İstenmeyen bir dosyaya ulaşışmasını sağlayan bu özelliğin kapatılması güvenlik yüzeyini azaltacaktır.
Options -Indexing
Symbolic Links
Sembolik linkler çoğu webshell’inin kullandığı kritik bir yöntemdir. Apache web server’a sembolik linkerin izlenmeyeceğini belirttiğiniz taktirde sembolik link zaafiyetlerinden korunmuş olursunuz.
Options -FollowSymLinks
Server Side Include
Sunucu tarafında *.shtml dosyalarının başka bir dosya içine enjete edilmesini sağlayan bir özelliktir. Bu özellikte güvenlik için sömürülebiliyor. Kapatmanızı öneririz.
ExecCGI
Cgi scriptlerinin direkt çalıştırılmasını sağlayn bu özelliği gerekmedikçe kapatmanızı öneririz.
Options -ExecCGI
TraceEnable
Apache web server’ı varsayılan olarak TRACE isteklerine cevap vermektedir. Production ortamında çalışan Apache’de buna gerek duymazsınız. Kapatılması önerilmektedir.
TraceEnable Off
SSLProtocol
Global etki yaratan SSL açıkları ile birlikte web serverlarda bu konu ile ilgilide ayarlamalar yapmanız gerekir. Örneğin Poodle açığından korunmak için SSLv3’ü kapatmalısınız ve güncel TLS sürümleri ile haberleşmeye izin vermelisiniz. Buna göe Apache’nin desteklediği SSL protokollerini aşağıdaki gibi düzenlemenizi öneririz.
SSLProtocol -ALL -SSLv2 -SSLv3 +TLSv1.1 +TLSv1.2 SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM
FileETag
Apache Etag özelliği bir çok hassas bilgiyide beraberinde istemciye taşıyabilmektedir (inode sayısı, Mime Type ve ChildProcess header’ları gibi) Etag bilgilerinin kötü niyetli kullanılmaması içinbu özelliği kapatmanızı tavsiye ederiz.
FileETag None
LimitRequestBody
Apache varsayılan olarak web isteklerinin boyutunu limitlemez. Bazı kötü niyetli kullanıcılar servisi engellemek için bunu sömürebilirler. LimitRequestBody ile web isteklerinin boyutunu limitleyebilirsiniz. Bu aynı zamanda kullanıcının upload edeceği dosya boyutunuda belirler. Aşağıdaki direktif 25MB’lık bir upload limiti tanımlar.
LimitRequestBody 2560000
LimitRequestFields
Bazı saldırı tipleri direkt HTTP headerlarını kullanmaktadır. Apache’nin varsayılan HTTP Header limiti 100 dür. Sunucunun alacağı istek tiplerine göre 100’den daha düşük bir değer olması önerilir.
Örnek httpd.conf
MaestroPanel’de kullandığımız Apache konfigürasyonuna aşağdaki adresten ulaşabilirsiniz