Apache Web Sunucusunda Mod_Reqtimeout ile Yavaş İstek Saldırılarına Karşı Korunma 
Selam sistemciler!
Bugün, gözden kaçabilen ama oldukça sinsi bir saldırı türüne ve onu durdurmak için Apache'nin güçlü ama az bilinen bir modülüne bakacağız. DDoS dendiğinde aklımıza genelde saniyede binlerce istek gelir, peki ya saniyede sadece birkaç istekle sunucunuzdaki tüm bağlantıları tıkayabilecek bir saldırı? İşte tam da bu noktada mod_reqtimeout devreye giriyor.
Yavaş İstek (Slowloris) Saldırısı Nedir?
Bu saldırı türü, bir web sunucusunun nasıl çalıştığını çok iyi bilen birinin işidir. Saldırgan, sunucuya çok sayıda bağlantı açar ve HTTP isteklerini çok yavaş bir şekilde](örneğin, 10 saniyede bir bayt göndererek) göndermeye başlar. Sunucu, bu bağlantıları "aktif istek" olarak görür ve onları tamamlanana veya zaman aşımına uğrayana kadar açar tutar. Sınırlı sayıdaki eşzamanlı bağlantı kapasitesi bu şekilde doldurulduğunda, sunucu gerçek kullanıcılar için hizmet veremez hale gelir. Klasik bir "az malzeme ile çok iş yapma" numarası!
Kurtarıcımız: mod_reqtimeout Modülü
Apache, bu tür saldırılara karşı doğal bir savunma mekanizmasıyla gelir: mod_reqtimeout. Bu modülün görevi basittir: İstemciden gelen istek başlıklarının ve gövdesinin belirli zaman aralıklarında gelmesini bekler. Eğer istemci bu zaman sınırlarını aşarsa, bağlantıyı keser. Böylece yavaş gönderilen istekler sunucunuzu esir alamaz.
Modülü Etkinleştirme ve Yapılandırma
Öncelikle, modülün yüklü ve etkin olduğundan emin olalım. Modern Apache dağıtımlarında genellikle önceden yüklüdür. Kontrol etmek için:
Eğer `reqtimeout_module (shared)` çıktısını görüyorsanız, modül hazır demektir. 
Şimdi asıl işe, yapılandırmaya gelelim. Ana Apache yapılandırma dosyanıza (`apache2.conf` veya `httpd.conf`) veya bir sanal host konfigürasyonuna aşağıdaki direktifleri ekleyebilirsiniz.
Temel ve Etkili Bir Yapılandırma Örneği:
Bu satırı ne yapıyor, parçalayalım:
Ayarları İhtiyacınıza Göre İnce Ayarlamak
Her sunucunun yapısı farklıdır. Daha agresif veya daha toleranslı olmak isteyebilirsiniz.
Önemli Uyarı: Eğer sitenizde çok büyük dosya yükleyen (video, yedekleme vs.) ve yavaş internet bağlantısına sahip gerçek kullanıcılar varsa, `body` zaman aşımını çok düşük tutmak onları da etkileyebilir. Bu durumda `header` kısmını sıkı, `body` kısmını daha esnek tutabilir veya büyük dosya yükleme işlemleri için ayrı bir yapılandırma düşünebilirsiniz.
Değişiklikleri Test Etme ve Uygulama
1. Önce Apache yapılandırma dosyanızın sözdizimini kontrol edin:
2. "Syntax OK" mesajını aldıysanız, Apache'yi yeniden başlatın:
Reload (`reload`) komutunu kullanmak, mevcut bağlantıları sonlandırmadan yeni ayarları yükler, bu nedenle tercih edilir.
Sonuç
mod_reqtimeout, Apache sunucunuzu Slowloris gibi düşük bant genişlikli ancak son derece etkili saldırılara karşı korumanın hafif ve etkili bir yoludur. Birkaç satırlık bir yapılandırmayla sunucu güvenliğinizde ciddi bir iyileştirme sağlayabilirsiniz. Tabii ki güvenlik katmanlı bir yaklaşımdır; bunu bir güvenlik duvarı (firewall) ve diğer DDoS azaltma stratejileriyle birlikte kullanmak en iyisidir.
Peki ya siz? Sunucularınızda yavaş istek saldırılarıyla hiç karşılaştınız mı? Veya bu tür saldırılara karşı farklı hangi yöntemleri kullanıyorsunuz? Yorumlarda deneyimlerinizi paylaşın, tartışalım!
Selam sistemciler!
Yavaş İstek (Slowloris) Saldırısı Nedir?
Bu saldırı türü, bir web sunucusunun nasıl çalıştığını çok iyi bilen birinin işidir. Saldırgan, sunucuya çok sayıda bağlantı açar ve HTTP isteklerini çok yavaş bir şekilde](örneğin, 10 saniyede bir bayt göndererek) göndermeye başlar. Sunucu, bu bağlantıları "aktif istek" olarak görür ve onları tamamlanana veya zaman aşımına uğrayana kadar açar tutar. Sınırlı sayıdaki eşzamanlı bağlantı kapasitesi bu şekilde doldurulduğunda, sunucu gerçek kullanıcılar için hizmet veremez hale gelir. Klasik bir "az malzeme ile çok iş yapma" numarası!
Kurtarıcımız: mod_reqtimeout Modülü
Apache, bu tür saldırılara karşı doğal bir savunma mekanizmasıyla gelir: mod_reqtimeout. Bu modülün görevi basittir: İstemciden gelen istek başlıklarının ve gövdesinin belirli zaman aralıklarında gelmesini bekler. Eğer istemci bu zaman sınırlarını aşarsa, bağlantıyı keser. Böylece yavaş gönderilen istekler sunucunuzu esir alamaz.
Modülü Etkinleştirme ve Yapılandırma
Öncelikle, modülün yüklü ve etkin olduğundan emin olalım. Modern Apache dağıtımlarında genellikle önceden yüklüdür. Kontrol etmek için:
Bash:
apache2ctl -M | grep reqtimeout # Debian/Ubuntu için
# veya
httpd -M | grep reqtimeout # CentOS/RHEL için
Şimdi asıl işe, yapılandırmaya gelelim. Ana Apache yapılandırma dosyanıza (`apache2.conf` veya `httpd.conf`) veya bir sanal host konfigürasyonuna aşağıdaki direktifleri ekleyebilirsiniz.
Temel ve Etkili Bir Yapılandırma Örneği:
Kod:
<IfModule reqtimeout_module>
RequestReadTimeout header=20-40,MinRate=500 body=20-40,MinRate=500
</IfModule>
Bu satırı ne yapıyor, parçalayalım:
- header=20-40,MinRate=500: İstemciden gelen istek başlıklarının (header) okunması için 20 saniyelik bir süre tanır. Ancak, istemci saniyede en az 500 bayt (MinRate) göndermelidir. Eğer bu hızın altına düşerse, Apache 40. saniyede bağlantıyı keser.
- body=20-40,MinRate=500: Aynı kural, isteğin gövdesi (body) için de geçerlidir. Örneğin, bir POST isteğinde form verisi gönderiliyorsa, bu verinin de belirlenen hızda gelmesi gerekir.
Ayarları İhtiyacınıza Göre İnce Ayarlamak
Her sunucunun yapısı farklıdır. Daha agresif veya daha toleranslı olmak isteyebilirsiniz.
Kod:
<IfModule reqtimeout_module>
# Daha agresif koruma (Hızlı tepki verir, daha az toleranslı)
# RequestReadTimeout header=10-20,MinRate=1000 body=10-20,MinRate=1000
# Daha toleranslı koruma (Yavaş ama dürüst bağlantılar için)
# RequestReadTimeout header=30-120,MinRate=100 body=30-120,MinRate=100
</IfModule>
Önemli Uyarı: Eğer sitenizde çok büyük dosya yükleyen (video, yedekleme vs.) ve yavaş internet bağlantısına sahip gerçek kullanıcılar varsa, `body` zaman aşımını çok düşük tutmak onları da etkileyebilir. Bu durumda `header` kısmını sıkı, `body` kısmını daha esnek tutabilir veya büyük dosya yükleme işlemleri için ayrı bir yapılandırma düşünebilirsiniz.
Değişiklikleri Test Etme ve Uygulama
1. Önce Apache yapılandırma dosyanızın sözdizimini kontrol edin:
Bash:
sudo apache2ctl configtest # veya `sudo httpd -t`
Bash:
sudo systemctl reload apache2 # veya `sudo systemctl reload httpd`
Sonuç
mod_reqtimeout, Apache sunucunuzu Slowloris gibi düşük bant genişlikli ancak son derece etkili saldırılara karşı korumanın hafif ve etkili bir yoludur. Birkaç satırlık bir yapılandırmayla sunucu güvenliğinizde ciddi bir iyileştirme sağlayabilirsiniz. Tabii ki güvenlik katmanlı bir yaklaşımdır; bunu bir güvenlik duvarı (firewall) ve diğer DDoS azaltma stratejileriyle birlikte kullanmak en iyisidir.
Peki ya siz? Sunucularınızda yavaş istek saldırılarıyla hiç karşılaştınız mı? Veya bu tür saldırılara karşı farklı hangi yöntemleri kullanıyorsunuz? Yorumlarda deneyimlerinizi paylaşın, tartışalım!