FreeBSD 12.0 Üzerinde Apache HTTP Sunucu Güvenliği ve Hardening
Anahtar Kelime: FreeBSD Apache Güvenlik Ayarları
📘 Bu Rehberde Ne Öğreneceksiniz?
Varsayılan Apache kurulumları çalışır ancak üretim ortamları için yeterli güvenliği sağlamaz.
Bu rehberde Apache sunucunuzda bilgi sızıntısını azaltmayı, dizin erişimlerini kısıtlamayı ve DoS saldırı risklerini düşürmeyi öğreneceksiniz.
Ayrıca HTTP güvenlik başlıkları ve çerez ayarlarıyla FreeBSD tabanlı sunucunuzu modern tehditlere karşı güçlendireceksiniz.
🔧 Ön Hazırlıklar
Bu adımları uygulamadan önce aşağıdakiler hazır olmalıdır:
- FreeBSD 12.0 yüklü bir sunucu
- Yapılandırılmış bir firewall
- Kurulu FAMP (FreeBSD, Apache, MySQL, PHP) yapısı
- Let’s Encrypt ile aktif HTTPS sertifikası
1️⃣ Apache Sunucu Bilgilerini Gizleme (ServerTokens)
Apache varsayılan ayarlarda işletim sistemi ve sürüm bilgilerini dışarıya açık eder.
Bu bilgiler saldırganlar için keşif sürecinde kullanılır.
sudo pkg install nmap
Bu komut ağ tarama aracı nmap kurar.
nmap -sV -p 80 sunucu-ip-adresiniz
Apache’nin dış dünyaya verdiği sürüm bilgileri görüntülenir.
sudo vi /usr/local/etc/apache24/httpd.conf
Apache ana yapılandırma dosyası açılır.
ServerTokens Prod
-
Sunucu yalnızca “Apache” bilgisini paylaşır.
-
Sunucuya restart atın.
sudo apachectl restart
2️⃣ Dizin Listelemeyi Kapatma (Directory Listing)
Index dosyası olmayan dizinlerin listelenmesi güvenlik açığı oluşturur.
Options -Indexes +FollowSymLinks
- Dizin içeriği tarayıcıda listelenmez.
sudo apachectl restart
- Index dosyası olmayan dizinler 403 Forbidden döndürür. Bu davranış güvenlidir.
3️⃣ Timeout Süresini Düşürme (DoS Azaltma)
- Uzun bağlantı süreleri DoS saldırılarına zemin hazırlar.
sudo vi /usr/local/etc/apache24/extra/httpd-default.conf
```Timeout 30
- Yanıt vermeyen bağlantılar daha hızlı kapatılır.
``` bash
sudo apachectl restart
4️⃣ TRACE Metodunu Devre Dışı Bırakma
- TRACE metodu Cross Site Tracing saldırılarında kullanılabilir.
TraceEnable off
TRACE istekleri tamamen engellenir.
- İzin verilen HTTP metodları
<LimitExcept GET POST HEAD>
deny from all
</LimitExcept>
- Sadece gerekli HTTP metodlarına izin verilir.
sudo apachectl restart
5️⃣ HTTP Header ve Çerez Güvenliği
- HTTP başlıkları tarayıcı tabanlı saldırılara karşı koruma sağlar.
<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>
XSS, Clickjacking ve oturum çalma riskleri azaltılır.
sudo apachectl restart
❓ Sıkça Sorulan Sorular (SSS)
1. 403 hatası alıyorum, sorun mu var? Hayır. Index dosyası yoksa bu beklenen davranıştır.
2. Timeout daha da düşürülebilir mi? Evet, ancak çok düşük değerler kullanıcı deneyimini etkiler.
3. Bu ayarlar performansı düşürür mü? Aksine çoğu senaryoda performansı artırır.
4. CSP sonrası site bozulursa ne yapılmalı? Harici kaynaklar CSP içine eklenmelidir.
🏁 Sonuç
Bu rehberle Apache HTTP Server için temel ve etkili güvenlik önlemlerini uyguladınız. Sunucu bilgi sızıntısını azalttınız ve saldırı yüzeyini ciddi şekilde daralttınız.
FreeBSD tabanlı projelerinizde bu yapılandırmaları güvenle kullanabilirsiniz. Rabisu Bulut platformu üzerinde bu ayarları dakikalar içinde hayata geçirebilirsiniz 🚀