Web sunucuları, siber saldırganların en çok hedef aldığı sistemlerden biridir. Nginx ve Apache, dünyanın en popüler web sunucuları arasında yer alırken, bu sistemlerin güvenliğini sağlamak büyük önem taşır. Yanlış yapılandırılmış bir web sunucusu, DDoS saldırılarına, yetkisiz erişimlere ve veri sızıntılarına yol açabilir.
1. Varsayılan Ayarları Güçlendirme
Varsayılan web sunucu yapılandırmaları genellikle güvenlik açısından eksik olabilir. İlk adım, temel yapılandırmaları güçlendirmek olmalıdır.
1.1. Apache İçin Varsayılan Ayarları Güçlendirme
Apache’nin güvenliğini artırmak için /etc/apache2/apache2.conf veya /etc/httpd/conf/httpd.conf dosyasını düzenleyin:
sudo nano /etc/apache2/apache2.conf
Aşağıdaki ayarları ekleyin veya düzenleyin:
ServerTokens Prod # Sunucu hakkında minimum bilgi gösterir
ServerSignature Off # Hata sayfalarında Apache bilgilerini gizler
TraceEnable Off # TRACE HTTP metodunu devre dışı bırakır
Options -Indexes # Dizin listelemeyi devre dışı bırakır
Header always unset X-Powered-By # PHP ve Apache sürüm bilgisini gizler
Yapılandırma değişikliklerini kaydettikten sonra Apache’yi yeniden başlatın:
sudo systemctl restart apache2
1.2. Nginx İçin Varsayılan Ayarları Güçlendirme
Nginx için /etc/nginx/nginx.conf dosyasını düzenleyin:
sudo nano /etc/nginx/nginx.conf
Aşağıdaki satırları ekleyin veya güncelleyin:
server_tokens off; # Nginx sürüm bilgisini gizler
add_header X-Frame-Options SAMEORIGIN; # Clickjacking saldırılarını önler
add_header X-XSS-Protection "1; mode=block"; # XSS saldırılarına karşı koruma sağlar
add_header X-Content-Type-Options nosniff; # MIME tipi sahtekarlığını önler
Nginx’i yeniden başlatın:
sudo systemctl restart nginx
2. Yetkisiz Erişimi Önleme
Yetkisiz erişim, saldırganların sunucuya giriş yapmasını ve hassas verileri ele geçirmesini sağlayabilir.
2.1. Apache İçin Yetkisiz Erişimi Kısıtlama
Önemli dizinlere yetkisiz erişimi engellemek için .htaccess dosyasını kullanabilirsiniz:
sudo nano /var/www/html/.htaccess
Şu satırları ekleyin:
Order Deny,Allow
Deny from all
Allow from 192.168.1.100 # Sadece belirli IP adreslerine izin ver
2.2. Nginx İçin Yetkisiz Erişimi Kısıtlama
Özel bir IP adresine erişimi sınırlandırmak için server bloğuna aşağıdaki satırları ekleyin:
location /admin {
allow 192.168.1.100;
deny all;
}
Bu ayar, yalnızca 192.168.1.100 IP adresinin /admin dizinine erişmesine izin verecektir.
3. Güçlü SSL/TLS Yapılandırması
HTTPS kullanımı, web sunucularının güvenliğini artırmanın en önemli yollarından biridir.
3.1. Apache İçin SSL/TLS Güçlendirme
SSL kullanımını zorunlu hale getirmek için /etc/apache2/sites-available/default-ssl.conf dosyasını düzenleyin:
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!aNULL:!MD5
SSLHonorCipherOrder on
Apache’yi yeniden başlatın:
sudo systemctl restart apache2
3.2. Nginx İçin SSL/TLS Güçlendirme
/etc/nginx/sites-available/default dosyasına aşağıdaki satırları ekleyin:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
Nginx’i yeniden başlatın:
sudo systemctl restart nginx
4. Güvenlik Duvarı ile Web Sunucusunu Koruma
Nginx ve Apache, güvenlik duvarı kurallarıyla daha güvenli hale getirilebilir.
4.1. UFW Kullanarak Web Sunucusunu Koruma
Ubuntu/Debian sistemlerinde UFW kullanarak yalnızca belirli portları açabilirsiniz:
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
4.2. iptables Kullanarak Web Sunucusunu Koruma
Alternatif olarak iptables kullanarak yalnızca HTTP ve HTTPS bağlantılarını kabul edebilirsiniz:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -j DROP # Diğer tüm trafiği engeller
5. DDoS Saldırılarına Karşı Koruma
Web sunucunuzu DDoS saldırılarından korumak için rate limiting (hız sınırlandırma) kuralları ekleyebilirsiniz.
5.1. Apache İçin DDoS Koruma
mod_evasive modülüyle Apache’ye hız sınırlama ekleyebilirsiniz:
sudo apt install libapache2-mod-evasive -y
/etc/apache2/mods-available/evasive.conf dosyasına şu satırları ekleyin:
DOSHashTableSize 2048
DOSPageCount 10
DOSSiteCount 50
DOSBlockingPeriod 600
Apache’yi yeniden başlatın:
sudo systemctl restart apache2
5.2. Nginx İçin DDoS Koruma
Nginx’in limit_req_zone modülüyle hız sınırlandırma ekleyebilirsiniz:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
}
server {
location / {
limit_req zone=one burst=10 nodelay;
}
}
Nginx’i yeniden başlatın:
sudo systemctl restart nginx
💡 Unutmayın: Web sunucularını düzenli olarak güncellemek ve güvenlik açıklarını taramak, en iyi güvenlik uygulamalarından biridir!