Apache ModSecurity Kurulumu: Web Uygulamanızı Ücretsiz WAF ile Koruyun 
Selam sistemciler!
Bugün, özellikle paylaşımlı hosting'ten VPS/dedike sunucuya geçen ve "güvenliği ben nasıl sağlayacağım?" diye düşünen arkadaşlar için harika bir konuya değiniyoruz: ModSecurity.
ModSecurity, Apache web sunucunuzun önüne ücretsiz, açık kaynak kodlu ve son derece güçlü bir Web Uygulama Güvenlik Duvarı (WAF) kurmanızı sağlayan bir modüldür. SQL Injection, Cross-Site Scripting (XSS), kötü niyetli bot taramaları gibi yaygın web saldırılarını gerçek zamanlı olarak tespit edip engeller. Kısacası, sitenizin kapısına profesyonel bir güvenlik görevlisi dikmek gibidir. Hadi başlayalım!
1. Adım: Ön Hazırlık ve ModSecurity'yi Kurma
Öncelikle, güncel bir Ubuntu/Debian sunucunuz olduğunu ve Apache'nin kurulu olduğunu varsayıyorum. Terminali açıp ilk iş paket listemizi güncelleyelim.
Şimdi, ModSecurity modülünü ve onunla birlikte gelecek temel kural setini (Core Rule Set - CRS) kuralım.
Kurulum tamamlandığında, ModSecurity modülünün Apache'de etkinleştiğinden emin olalım.
2. Adım: Yapılandırma Dosyalarını Hazırlama
ModSecurity, varsayılan olarak sadece "tespit" (DetectionOnly) modunda çalışır. Yani saldırıları loglar ama engellemez. Biz onu "engelleyici" moda alacağız ve güncel kuralları kullanacağız.
Öncelikle, örnek konfigürasyon dosyasını asıl konfigürasyon dosyamız olarak kopyalayalım.
Şimdi, bu dosyayı düzenlemek için nano veya favori editörünüzü kullanabilirsiniz.
Bu dosyada bulup değiştirmemiz gereken iki kritik satır var:
Değişikliklerden sonra dosyayı kaydedip kapatın (Ctrl+X, sonra Y, sonra Enter).
3. Adım: Güncel OWASP Core Rule Set (CRS) Kurallarını Yapılandırma
Kurduğumuz `modsecurity-crs` paketi biraz eski kurallar içerebilir. En güncel ve etkili kurallar için OWASP CRS'nin GitHub'dan çekilmesi daha iyidir. Ancak bu yazıda kurulu paket üzerinden devam edeceğiz. Kuralların dizin yapısını Apache'nin anlayacağı şekilde ayarlayalım.
Önce eski sembolik bağlantıyı silelim ve kurallar dizinimize gidelim.
Şimdi, CRS kurallarını etkinleştirelim. Örnek kural dosyalarını aktif kural dosyalarına kopyalayacağız.
Son adım olarak, Apache'nin ModSecurity konfigürasyonunu bu kuralları içerecek şekilde güncelleyelim. `/etc/apache2/mods-enabled/security2.conf` dosyasını düzenleyelim.
Dosyanın içeriğini aşağıdaki gibi yapılandırın:
4. Adım: Apache'yi Yeniden Başlatma ve Test Etme
Tüm değişiklikler bitti! Şimdi Apache'yi yeniden başlatarak ModSecurity'yi tam güçle çalıştıralım.
Test etmek için basit bir yöntem: Tarayıcınızdan web sitenize `/?id=1' OR '1'='1` gibi basit bir SQL Injection payload'ı ekleyerek gidin. Eğer bir `403 Forbidden` (Erişim Engellendi) hatası alıyorsanız, ModSecurity çalışıyor ve saldırıyı engelliyor demektir!
Logları kontrol etmek isterseniz:
Önemli Uyarı ve İpuçları
İşte bu kadar! Artık Apache sunucunuz, temel web saldırılarına karşı çok daha güçlü bir korumaya sahip.
Siz sunucularınızda güvenlik için hangi araçları veya yöntemleri kullanıyorsunuz? Özellikle ModSecurity ile yaşadığınız ilginç false positive vakaları veya kuralları nasıl incelttiğiniz konusunda deneyimlerinizi paylaşın, hep birlikte öğrenelim!
Selam sistemciler!
ModSecurity, Apache web sunucunuzun önüne ücretsiz, açık kaynak kodlu ve son derece güçlü bir Web Uygulama Güvenlik Duvarı (WAF) kurmanızı sağlayan bir modüldür. SQL Injection, Cross-Site Scripting (XSS), kötü niyetli bot taramaları gibi yaygın web saldırılarını gerçek zamanlı olarak tespit edip engeller. Kısacası, sitenizin kapısına profesyonel bir güvenlik görevlisi dikmek gibidir. Hadi başlayalım!
1. Adım: Ön Hazırlık ve ModSecurity'yi Kurma
Öncelikle, güncel bir Ubuntu/Debian sunucunuz olduğunu ve Apache'nin kurulu olduğunu varsayıyorum. Terminali açıp ilk iş paket listemizi güncelleyelim.
Bash:
sudo apt update
Şimdi, ModSecurity modülünü ve onunla birlikte gelecek temel kural setini (Core Rule Set - CRS) kuralım.
Bash:
sudo apt install libapache2-mod-security2 modsecurity-crs
Kurulum tamamlandığında, ModSecurity modülünün Apache'de etkinleştiğinden emin olalım.
Bash:
sudo a2enmod security2
sudo systemctl restart apache2
2. Adım: Yapılandırma Dosyalarını Hazırlama
ModSecurity, varsayılan olarak sadece "tespit" (DetectionOnly) modunda çalışır. Yani saldırıları loglar ama engellemez. Biz onu "engelleyici" moda alacağız ve güncel kuralları kullanacağız.
Öncelikle, örnek konfigürasyon dosyasını asıl konfigürasyon dosyamız olarak kopyalayalım.
Bash:
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
Şimdi, bu dosyayı düzenlemek için nano veya favori editörünüzü kullanabilirsiniz.
Bash:
sudo nano /etc/modsecurity/modsecurity.conf
Bu dosyada bulup değiştirmemiz gereken iki kritik satır var:
- `SecRuleEngine DetectionOnly` satırını `SecRuleEngine On` olarak değiştirin. (Artık engelleme yapacak!)
- `SecAuditLogParts` satırının başındaki `#` işaretini kaldırarak yorum satırı olmaktan çıkarın. Bu, log kayıtlarının daha detaylı olmasını sağlar.
Değişikliklerden sonra dosyayı kaydedip kapatın (Ctrl+X, sonra Y, sonra Enter).
3. Adım: Güncel OWASP Core Rule Set (CRS) Kurallarını Yapılandırma
Kurduğumuz `modsecurity-crs` paketi biraz eski kurallar içerebilir. En güncel ve etkili kurallar için OWASP CRS'nin GitHub'dan çekilmesi daha iyidir. Ancak bu yazıda kurulu paket üzerinden devam edeceğiz. Kuralların dizin yapısını Apache'nin anlayacağı şekilde ayarlayalım.
Önce eski sembolik bağlantıyı silelim ve kurallar dizinimize gidelim.
Bash:
sudo rm /etc/apache2/mods-enabled/security2.conf
sudo ln -s /usr/share/modsecurity-crs/modsecurity.conf /etc/apache2/mods-enabled/security2.conf
Şimdi, CRS kurallarını etkinleştirelim. Örnek kural dosyalarını aktif kural dosyalarına kopyalayacağız.
Bash:
sudo cp /usr/share/modsecurity-crs/crs-setup.conf.example /usr/share/modsecurity-crs/crs-setup.conf
sudo cp /usr/share/modsecurity-crs/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example /usr/share/modsecurity-crs/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
Son adım olarak, Apache'nin ModSecurity konfigürasyonunu bu kuralları içerecek şekilde güncelleyelim. `/etc/apache2/mods-enabled/security2.conf` dosyasını düzenleyelim.
Bash:
sudo nano /etc/apache2/mods-enabled/security2.conf
Dosyanın içeriğini aşağıdaki gibi yapılandırın:
Kod:
<IfModule security2_module>
SecDataDir /var/cache/modsecurity
Include /usr/share/modsecurity-crs/crs-setup.conf
Include /usr/share/modsecurity-crs/rules/*.conf
</IfModule>
4. Adım: Apache'yi Yeniden Başlatma ve Test Etme
Tüm değişiklikler bitti! Şimdi Apache'yi yeniden başlatarak ModSecurity'yi tam güçle çalıştıralım.
Bash:
sudo systemctl restart apache2
Test etmek için basit bir yöntem: Tarayıcınızdan web sitenize `/?id=1' OR '1'='1` gibi basit bir SQL Injection payload'ı ekleyerek gidin. Eğer bir `403 Forbidden` (Erişim Engellendi) hatası alıyorsanız, ModSecurity çalışıyor ve saldırıyı engelliyor demektir!
Logları kontrol etmek isterseniz:
Bash:
sudo tail -f /var/log/apache2/modsec_audit.log
Önemli Uyarı ve İpuçları
- False Positive (Yanlış Pozitif): ModSecurity, özellikle ilk başlarda, bazı meşru trafiği de (özellikle özel formlarınız, WordPress eklentileri) engelleyebilir. Panik yok! `REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf` dosyasına, kendi siteniz için kural istisnaları yazarak bu sorunu çözebilirsiniz.
- Performans: WAF kuralları CPU kullanımını bir miktar artırabilir. Sunucu kaynaklarınızı izlemeyi unutmayın.
- Güncelleme: OWASP CRS kuralları sürekli güncellenir. GitHub deposunu takip edip kuralları periyodik olarak güncellemeniz güvenliğiniz için çok önemlidir.
İşte bu kadar! Artık Apache sunucunuz, temel web saldırılarına karşı çok daha güçlü bir korumaya sahip.
Siz sunucularınızda güvenlik için hangi araçları veya yöntemleri kullanıyorsunuz? Özellikle ModSecurity ile yaşadığınız ilginç false positive vakaları veya kuralları nasıl incelttiğiniz konusunda deneyimlerinizi paylaşın, hep birlikte öğrenelim!