Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Apache'de Mod_Evasive ile DDoS ve Brute Force Saldırılarına Karşı Temel Koruma 🛡️

webnix

Üye
Katılım
14 Mart 2026
Mesajlar
6
Apache'de Mod_Evasive ile DDoS ve Brute Force Saldırılarına Karşı Temel Koruma 🛡️

Selam sistemciler! 🖥️ Bugün, özellikle paylaşımlı hosting ortamlarında veya kendi sunucunuzda Apache çalıştırıyorsanız, başınızı ağrıtabilecek bir konuya değiniyoruz: DDoS ve Brute Force saldırıları. Bu tür saldırılar, sunucu kaynaklarınızı (CPU, RAM, bağlantı) tüketerek sitenizi erişilemez hale getirebilir veya güvenlik açıklarınızı zorlayarak sisteme sızmayı deneyebilir.

Neyse ki Apache'nin güçlü ve hafif bir modülü var: mod_evasive. Adından da anlaşılacağı gibi, "saldırıdan kaçınma" mantığıyla çalışır. Temel prensibi basit: Belirli bir zaman diliminde, aynı IP adresinden veya aynı siteye yapılan çok fazla isteği tespit eder ve bu IP'yi geçici olarak kara listeye alır. Böylece saldırganın kaynak tüketmesini engellerken, normal kullanıcılarınızın erişimini kesintiye uğratmaz. 🛡️

Mod_Evasive Kurulumu (Debian/Ubuntu Örneği) 🐧

İlk adım, modülü sistemimize kurmak. APT paket yöneticisini kullanacağız.

Bash:
sudo apt update
sudo apt install libapache2-mod-evasive

Kurulum tamamlandığında, modül otomatik olarak etkinleştirilmelidir. Etkin olduğunu kontrol etmek için şu komutu kullanabilirsiniz:

Bash:
sudo apache2ctl -M | grep evasive

Çıktıda `evasive20_module` (Apache 2.4 için) görmelisiniz. Eğer göremiyorsanız, manuel olarak etkinleştirebilirsiniz:

Bash:
sudo a2enmod evasive
sudo systemctl restart apache2

Yapılandırma Dosyasını Düzenleme ⚙️

Modülün davranışını, konfigürasyon dosyasını düzenleyerek kontrol ederiz. Ana yapılandırma dosyası genellikle `/etc/apache2/mods-enabled/evasive.conf` yolundadır. Bu dosyayı favori metin düzenleyicinizle açalım (nano, vim).

Bash:
sudo nano /etc/apache2/mods-enabled/evasive.conf

Dosya içeriği aşağıdakine benzer olacaktır. Şimdi en önemli direktifleri açıklayalım ve örnek bir yapılandırma yapalım:

Kod:
<IfModule mod_evasive20.c>
    # Aynı IP'nin, aynı sayfaya saniyede kaç istek yapabileceğini belirler.
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10

    # E-posta bildirimi için (opsiyonel, postfix/sendmail kurulu olmalı)
    # DOSEmailNotify    you@yourdomain.com

    # Engellenen IP'ler için bir sistem komutu çalıştırma (opsiyonel, örn: iptables ile engelleme)
    # DOSSystemCommand  "sudo /usr/bin/iptables -A INPUT -s %s -j DROP"

    # Beyaz liste dosyası (engelleme yapılmayacak IP'ler)
    DOSWhitelist        127.0.0.1

    # Loglama seviyesi
    DOSLogDir           "/var/log/mod_evasive"
</IfModule>

Direktif Açıklamaları:
  • DOSPageCount: Aynı IP'nin, DOSPageInterval saniyesi içinde aynı sayfaya (URI) yapabileceği maksimum istek sayısı. Örnekte 1 saniyede aynı sayfaya 2'den fazla istek yapılırsa şüpheli kabul edilir. Bu, Brute Force login saldırılarına karşı çok etkilidir.
  • DOSSiteCount: Aynı IP'nin, DOSSiteInterval saniyesi içinde tüm siteye yapabileceği toplam istek sayısı. Örnekte 1 saniyede 50'den fazla toplam istek.
  • DOSBlockingPeriod: Yukarıdaki limitler aşıldığında, o IP'nin kaç saniye boyunca engelleneceği. Örnekte 10 saniye.
  • DOSEmailNotify: Bir IP engellendiğinde e-posta bildirimi almak isterseniz bu satırın başındaki `#` işaretini kaldırıp e-posta adresinizi yazın.
  • DOSSystemCommand: Daha kalıcı bir engelleme için (örn: iptables firewall), bu satırın yorumunu kaldırıp bir komut tanımlayabilirsiniz. `%s` engellenen IP adresini temsil eder. **Dikkat:** Bu komutun `sudo` şifresiz çalışabilmesi için gerekli sudoers ayarlarını yapmalısınız, aksi halde çalışmaz.
  • DOSWhitelist: Asla engellemek istemediğiniz IP'leri buraya ekleyin. Sunucunun kendi IP'si (127.0.0.1) ve belki monitoring araçlarınızın IP'si varsayılan olarak eklenmelidir.

Ayarları yaptıktan sonra Apache'yi yeniden başlatmayı unutmayın:

Bash:
sudo systemctl restart apache2

Logları İzleme ve Test Etme 📝

Modül, engelleme olaylarını belirlediğiniz dizine (`/var/log/mod_evasive`) kaydeder. Bu dizin otomatik oluşturulmaz, o yüzden manuel oluşturup Apache'nin yazma izni vermemiz gerekir.

Bash:
sudo mkdir -p /var/log/mod_evasive
sudo chown www-data:www-data /var/log/mod_evasive

Artık test edebiliriz! Basit bir test için `ab` (Apache Bench) aracını veya bir bash döngüsü kullanabilirsiniz. Aşağıdaki komut, `ab` ile localhost'a hızlıca 100 istek atar (saniyede 10 istek ile). Limitlerimizi aşacaktır.

Bash:
ab -n 100 -c 10 http://localhost/

Komutu çalıştırdıktan sonra, log dizinini kontrol edin:

Bash:
sudo ls -la /var/log/mod_evasive/

İçinde engellenen IP'lere ait dosyalar görmelisiniz (dosya adı IP adresi olacaktır). Ayrıca, test sırasında `ab` komutunun çıktısında "403 Forbidden" hataları da görebilirsiniz. Bu, mod_evasive'nin çalıştığının kanıtıdır! 🌐

Önemli Uyarılar ve İpuçları ⚠️
  • Aşırı Hassas Ayarlardan Kaçının: `DOSPageCount` veya `DOSSiteCount` değerlerini çok düşük ayarlamak, özellikle CDN (Cloudflare, Sucuri) arkasındaysanız veya NAT arkasından çoklu kullanıcı erişimi olan bir IP'den (örneğin bir ofis ağı) gelen normal trafiği engelleyebilir. CDN kullanıyorsanız, gerçek kullanıcı IP'lerini Apache'ye doğru şekilde iletmek (`mod_remoteip`) ve CDN'nin IP aralıklarını beyaz listeye eklemek çok önemlidir.
  • Log Dizini Temizliği: `mod_evasive` log dosyalarını otomatik temizlemez. Eski log dosyalarının birikip inode tüketmesini engellemek için bir `cron` işi oluşturmayı düşünebilirsiniz.
  • Kapsamlı Bir Çözüm Değildir: `mod_evasive`, temel ve orta seviye saldırılar için harika bir ilk savunma hattıdır. Ancak büyük ölçekli DDoS saldırılarına karşı tek başına yeterli olmaz. Bu durumlarda donanım tabanlı firewall'lar, bulut tabanlı DDoS koruma hizmetleri ve yük dengeleyiciler devreye girmelidir.
  • Test Ortamında Deneyin: Bu ayarları canlı, yüksek trafikli bir sunucuda hemen uygulamadan önce, bir test/staging ortamında deneyip, normal trafik akışınızı etkilemediğinden emin olun.

Umarım bu rehber, Apache sunucunuzu biraz daha güvenli hale getirmenize yardımcı olur. Sizin `mod_evasive` veya benzeri koruma yöntemleriyle ilgili deneyimleriniz neler? Paylaşımlı hosting ortamlarında bu tür ayarları yapmakta zorluk yaşıyor musunuz? Yorumlarda buluşalım! 👨‍💻👩‍💻
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri