FreeBSD 12 Apache Güvenliği ve Hardening Rehberi
Varsayılan Apache kurulumları çalışır durumda gelir ancak üretim ortamlarında yeterli güvenlik seviyesini sağlamaz.
Bu rehberde Apache sunucunuzda:
- Sunucu sürüm bilgisini gizleme
- Dizin listelemeyi devre dışı bırakma
- DoS saldırı riskini azaltma
- HTTP güvenlik başlıklarını yapılandırma
- Çerez güvenliğini artırma
gibi temel Apache hardening adımlarını uygulamayı öğreneceksiniz.
Bu Rehberde Neler Öğreneceksiniz?
Bu dokümanda aşağıdaki konular ele alınacaktır:
- Apache sunucu banner bilgisini gizleme
- Directory listing kapatma
- Timeout ayarları ile DoS riskini azaltma
- TRACE metodunu devre dışı bırakma
- HTTP güvenlik header yapılandırması
Ön Hazırlıklar
Bu adımları uygulamadan önce aşağıdakilerin hazır olması gerekir:
- FreeBSD 12.0 yüklü bir sunucu
- Yapılandırılmış bir firewall
- Kurulu FAMP Stack (FreeBSD + Apache + MySQL + PHP)
- Let’s Encrypt ile aktif HTTPS sertifikası
Apache Sunucu Bilgilerini Gizleme (ServerTokens)
Apache varsayılan olarak işletim sistemi ve sürüm bilgilerini dış dünyaya açık eder.
Bu bilgiler saldırganlar tarafından keşif sürecinde kullanılabilir.
Öncelikle Apache sürüm bilgisini kontrol edebilirsiniz.
sudo pkg install nmap
nmap -sV -p 80 sunucu-ip-adresiniz
Bu komut Apache’nin dış dünyaya verdiği sürüm bilgisini gösterir.
Apache yapılandırma dosyasını açın:
sudo vi /usr/local/etc/apache24/httpd.conf
Aşağıdaki ayarı ekleyin veya düzenleyin:
ServerTokens Prod
Bu ayar sayesinde Apache yalnızca “Apache” bilgisini paylaşır.
Değişiklikten sonra Apache servisini yeniden başlatın:
sudo apachectl restart
Dizin Listelemeyi Kapatma (Directory Listing)
Index dosyası olmayan dizinlerin listelenmesi güvenlik riski oluşturabilir.
Aşağıdaki ayarı uygulayın:
Options -Indexes +FollowSymLinks
Bu ayar:
Dizin içeriğinin tarayıcıda listelenmesini engeller Index dosyası olmayan dizinlerde 403 Forbidden hatası döndürür
Değişiklikten sonra Apache servisini yeniden başlatın:
sudo apachectl restart
Timeout Süresini Düşürme (DoS Riskini Azaltma)
Uzun bağlantı süreleri DoS saldırılarında kaynak tüketimini artırabilir.
Aşağıdaki dosyayı açın:
sudo vi /usr/local/etc/apache24/extra/httpd-default.conf
Timeout değerini düzenleyin:
Timeout 30
Bu ayar:
Yanıt vermeyen bağlantıların daha hızlı kapatılmasını sağlar Sunucu kaynaklarının gereksiz kullanımını azaltır
Değişiklikten sonra Apache servisini yeniden başlatın:
sudo apachectl restart
TRACE Metodunu Devre Dışı Bırakma
TRACE metodu Cross Site Tracing (XST) saldırılarında kullanılabilir.
Aşağıdaki ayarı Apache yapılandırmasına ekleyin:
TraceEnable off
Bu ayar TRACE isteklerini tamamen engeller.
İzin verilen HTTP metodlarını sınırlandırma:
<LimitExcept GET POST HEAD>
deny from all
</LimitExcept>
Bu yapılandırma yalnızca gerekli HTTP metodlarına izin verir.
Değişikliklerden sonra Apache servisini yeniden başlatın:
sudo apachectl restart
HTTP Header ve Çerez Güvenliği
HTTP güvenlik başlıkları, tarayıcı tabanlı saldırılara karşı ek koruma sağlar.
Apache yapılandırmasına aşağıdaki ayarları ekleyin:
<IfModule mod_headers.c>
Header set Content-Security-Policy "default-src 'self'; upgrade-insecure-requests;"
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always edit Set-Cookie (.*) "$1; HttpOnly; Secure"
Header set X-Content-Type-Options "nosniff"
Header set X-XSS-Protection "1; mode=block"
Header set Referrer-Policy "strict-origin"
Header set X-Frame-Options "DENY"
</IfModule>
Bu ayarlar sayesinde:
XSS saldırıları azaltılır Clickjacking engellenir Çerez güvenliği artırılır HTTPS zorunlu hale getirilir
Değişiklikleri uygulamak için Apache servisini yeniden başlatın:
sudo apachectl restart
Sıkça Sorulan Sorular (SSS)
403 hatası alıyorum, sorun mu var?
Hayır. Index dosyası olmayan dizinlerde 403 Forbidden hatası beklenen bir davranıştır.
Timeout daha da düşürülebilir mi?
Evet, ancak çok düşük değerler kullanıcı deneyimini olumsuz etkileyebilir.
Bu ayarlar performansı düşürür mü?
Hayır. Çoğu durumda sunucu kaynaklarının daha verimli kullanılmasını sağlar.
CSP sonrası site düzgün çalışmıyorsa ne yapılmalı?
Harici kaynaklar (CDN, font vb.) Content Security Policy içine eklenmelidir.
Sonuç
Bu rehberde FreeBSD 12 üzerinde Apache HTTP Server için temel hardening ve güvenlik ayarlarını uyguladınız.
Bu yapılandırmalar sayesinde:
Sunucu sürüm bilgisi gizlenir Dizin listeleme kapatılır DoS saldırı riski azaltılır HTTP güvenlik başlıkları etkinleştirilir
FreeBSD tabanlı projelerinizde bu güvenlik yapılandırmalarını güvenle kullanabilirsiniz.
Altyapınızı hızlı şekilde kurmak için Rabisu Bulut üzerinde bir sunucu oluşturarak Apache güvenlik yapılandırmalarını dakikalar içinde uygulayabilirsiniz.