Devran Atuğ tarafından yazılmıştır.
Dünya üzerinde en çok kullanılan web serverlardan olan Apache’nin yapılandırma ve güvenlik çözümlerinden bahsedeceğim.
Apache server config dosyaları:
Belge kök Dizini: /var/www/html veya /var/www
Ana Yapılandırma dosyası: /etc/httpd/conf/httpd.conf (/CentOS/Fedora) ve /etc/apache2/apache2.conf (Debian/Ubuntu).
Yapılandırılmamış Apache serverlarda server bilgisi ve sürüm ifşaları 404 sayfaları gibi sayfalarda ortaya çıkıyor. Bunun önlenmesi için;
Apache2 serverı’nızı tekrardan başlatın ve sayfayı yenileyin.
Artık Apache 404 sayfasında apache sürümleri gözükmiyecektir.
Config dosyasını düzenlemeden önce bilinmesi gereken kodlar;
Herhangi bir dizinin gizlenmesi için;
<DirectoryMatch /var/www/html/serverfile/>
Options -Indexes
</DirectoryMatch>
ya da
<Directory /var/www/html/serverfile>
Options None
</Directory>
Artık ‘/serverfile‘ dizinine gidildiği zaman sayfaya ulaşılmasının engellendiğini göreceksiniz.
Kullanıcı tarafından atılan isteklerinin methodlarına bakarak isteği nasıl engelleriz?
<LimitExcept GET POST HEAD>
deny from all
</LimitExcept>
Sitenize gelen isteklerin içerisinde eğer “GET, POST, HEAD” methodları kabul etmeyecektir. Bunun sonucunda size 405 Not Allowed döndürecektir. UNUTMAYIN Trace methodunu LimitExcept içerisinde kullanamazsınız.
Apache üzerinde Trace metodu varsayılan olarak etkindir. Bu metod etkin olduğu durumda, kullanıcı tarafından yapılan istek-cevap döngüsü izlenebiliyor ve Siteler Arası İzleme saldırısı ortaya çıkıyor.
TraceEnable off olarak kapatınız.
Öncelikle apache modlarından olan rewrite modülünü yükleyiniz.
sudo a2enmod rewrite
sonrasından apache.conf dosyasına
RewriteEngine On
RewriteCondition %{THE_REQUEST} !HTTP/1.1$
RewriteRule .* - [F]
yazınız. Sonrasında attığınız bütün istekler HTTP2 protokolünü kullanacaktır.
Öncelikle apache modlarından olan headers modülünü yükleyiniz.
sudo a2enmod headers
Modülü yükledikten sonra ‘apache.conf‘ dosyasına
Header always append X-Frame-Options SAMEORIGIN
ekleyiniz. Artık siteniz iframe ile görüntülenemez.
Eğer almak ister iseniz alaçağınız sonuç bu olacaktır.
Konum bu kadardı, umarım beğenmişsinizdir. Farklı bir konuda görüşmek dileğimle.
[TR] Apache Web Server Hardening
Dünya üzerinde en çok kullanılan web serverlardan olan Apache’nin yapılandırma ve güvenlik çözümlerinden bahsedeceğim.
Apache server config dosyaları:
Belge kök Dizini: /var/www/html veya /var/www
Ana Yapılandırma dosyası: /etc/httpd/conf/httpd.conf (/CentOS/Fedora) ve /etc/apache2/apache2.conf (Debian/Ubuntu).
Bilgi ifşalarının Önlenmesi
Yapılandırılmamış Apache serverlarda server bilgisi ve sürüm ifşaları 404 sayfaları gibi sayfalarda ortaya çıkıyor. Bunun önlenmesi için;
# vim /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora)
# vim /etc/apache2/apache2.conf (Debian/Ubuntu)
ServerSignature Off
ServerTokens Prod
sudo systemctl reload apache2
Apache2 serverı’nızı tekrardan başlatın ve sayfayı yenileyin.
Artık Apache 404 sayfasında apache sürümleri gözükmiyecektir.
Apache config dosyasını düzenleme
Config dosyasını düzenlemeden önce bilinmesi gereken kodlar;
<Directory {path}></Directory>
Directory tag’ına verilen path ile bu path’in nasıl yönetilebileceğini tag’ların içerisinde yönetebilirsiniz.
<DirectoryMatch {path}></DirectoryMatch>
DirectoryMatch tagının ‘Directory’ ile arasındaki tek fark DirectoryMatch tag’ında regex kullanarak path ayarlaması yapabilmemize olanak sağlar
DocumentRoot "{path}"
DocumentRoot web sitenizin dosyalarının bulunduğu dizinin adresini vermeniz gereken kısım.
<LimitExcept {istek yöntemi}></LimitExcept>
LimitExcept tag’ı sunucuya gelen isteklerin hangisine cevap verebileceğini isteğin yöntemine göre seçer.
<VirtualHost {servername-default(*)}:{portname-default(80-443)}></VirtualHost>
VirtualHost tag’ı içerisine alt alan adlarını yönlendirilmesi, log dosyalarının oluşturulması ve konum belirtilmesi gibi birçok özelliği içerisinde bulundurur. Ayrıca herhangi bir porttan gelen isteğin nasıl bir davranış gösterilebileceğini ayarlanmasına olan sağlar.
ServerName {website}
ServerName kısmına web sitenizin adresini yazmanız gereken kısım.
Dizinlerin izinlerinin ayarlanması;
Herhangi bir dizinin gizlenmesi için;
<DirectoryMatch /var/www/html/serverfile/>
Options -Indexes
</DirectoryMatch>
ya da
<Directory /var/www/html/serverfile>
Options None
</Directory>
Artık ‘/serverfile‘ dizinine gidildiği zaman sayfaya ulaşılmasının engellendiğini göreceksiniz.
İstek metodlarının engellenmesi;
Kullanıcı tarafından atılan isteklerinin methodlarına bakarak isteği nasıl engelleriz?
<LimitExcept GET POST HEAD>
deny from all
</LimitExcept>
Sitenize gelen isteklerin içerisinde eğer “GET, POST, HEAD” methodları kabul etmeyecektir. Bunun sonucunda size 405 Not Allowed döndürecektir. UNUTMAYIN Trace methodunu LimitExcept içerisinde kullanamazsınız.
Trace mothodunu kapatma;
Apache üzerinde Trace metodu varsayılan olarak etkindir. Bu metod etkin olduğu durumda, kullanıcı tarafından yapılan istek-cevap döngüsü izlenebiliyor ve Siteler Arası İzleme saldırısı ortaya çıkıyor.
TraceEnable off
TraceEnable off olarak kapatınız.
HTTP/1 portokülünü devre dışı bırakma;
Öncelikle apache modlarından olan rewrite modülünü yükleyiniz.
sudo a2enmod rewrite
sonrasından apache.conf dosyasına
RewriteEngine On
RewriteCondition %{THE_REQUEST} !HTTP/1.1$
RewriteRule .* - [F]
yazınız. Sonrasında attığınız bütün istekler HTTP2 protokolünü kullanacaktır.
Clickjacking zafiyetnin önlenmesi;
Öncelikle apache modlarından olan headers modülünü yükleyiniz.
sudo a2enmod headers
Modülü yükledikten sonra ‘apache.conf‘ dosyasına
Header always append X-Frame-Options SAMEORIGIN
ekleyiniz. Artık siteniz iframe ile görüntülenemez.
Eğer almak ister iseniz alaçağınız sonuç bu olacaktır.
Konum bu kadardı, umarım beğenmişsinizdir. Farklı bir konuda görüşmek dileğimle.
Moderatör tarafında düzenlendi: