How To

[TR] Apache Web Server Hardening

[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.

Devran Atuğ

Merhabalar ben Devran, lise iki öğrencisiyim. Web ve mobil güvenliği üzerine çalışmalar yapıyorum, aktif olarak Bug-Bounty yapıyorum.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu