Rehber 11 Temmuz 2026 · 5 dakika okuma

Fail2ban Kurulumu: Sunucunuzu Otomatik Koruyun (Net Rehber)

Fail2ban ile SSH ve web servislerini otomatik korumak için kurulumu, filtreleri, jail ayarlarını ve test adımlarını net şekilde görün.

Fail2ban, saldırı denemelerini gerçek zamanlı izleyip belirli sayıda başarısız denemeden sonra IP’leri otomatik engelleyen (banning) bir güvenlik aracıdır. Bu rehberde, Linux tabanlı bir VDS/VPS sunucuda Fail2ban kurulumundan başlayarak en sık kullanılan jail’leri (SSH, nginx/apache, Postfix vb.) net ayarlarla yapılandıracaksınız. Ayrıca yapılandırmayı doğrulamak için test planı ve günlük (log) kontrol adımları da var.

Amaç: “Kuruldu ama işe yarıyor mu?” sorusunu karşılaştırılabilir kanıtlarla kapatmak.

Fail2ban tam olarak ne yapar? (Kurulum öncesi net çerçeve)

Fail2ban; /var/log/* benzeri log dosyalarını izler, ön tanımlı veya kendi yazdığınız kurallara (regex/filter) göre eşleşme yakaladığında eylem (action) çalıştırır. Bu eylem çoğunlukla firewall üzerinden IP banlamak şeklindedir.

Banal ama kritik farklar

  • Fail2ban log okur, canlı trafiği “otomatik engellemez”: Eşleşme sonrası ban tetiklenir.
  • Jail = kural seti + hangi log + hangi eylem: Bir sunucuda birden fazla jail paralel çalışabilir.
  • Engelleme süresi (bantime) ve “kaç denemede ban” (findtime/maxretry) saldırganın davranışına göre netleştirilmelidir.

Desteklenen senaryolar ve gereksinimler

Fail2ban genellikle Debian/Ubuntu ve CentOS/RHEL türevlerinde sorunsuz çalışır. Aşağıdaki paketler çoğu sistemde yeterlidir:

  • Python tabanlı paket: fail2ban
  • Loglar: Sisteminizin servis loglarını üretecek şekilde ayarlı olması
  • Firewall: Fail2ban genelde iptables veya nftables ile uyumlu çalışır (sisteminize göre)

Log konumları neden önemlidir?

Fail2ban filtrelerinin doğru çalışması için log dosyası yolu doğru olmalıdır. Örneğin: - SSH başarısız denemeleri çoğu sistemde /var/log/auth.log veya /var/log/secure içinde olur. - nginx/Apache için web hata logları ilgili vhost bazlı dizinlerde olabilir.

Bu yüzden bir sonraki adımda log yolunu doğrulayacağız.

Adım adım Fail2ban kurulumu

Aşağıdaki komutlar dağıtıma göre değişir.

Ubuntu/Debian

1) Güncelleme: - sudo apt update

2) Paket kurulumu: - sudo apt install -y fail2ban

3) Servisi aktif etme: - sudo systemctl enable --now fail2ban

CentOS/RHEL/AlmaLinux/Rocky

1) Paket kurulumu: - sudo dnf install -y fail2ban (veya bazı sürümlerde yum)

2) Servisi aktif etme: - sudo systemctl enable --now fail2ban

Hızlı durum kontrolü

  • sudo systemctl status fail2ban --no-pager
  • sudo fail2ban-client status

Bu çıktılar, servisin ayağa kalktığını ve jail’lerin tanımlı olduğunu gösterir.

En pratik jail ayarları: SSH + web servisleri

Fail2ban kurulunca tek başına “her şeyi doğru yapar” demek doğru değildir. En azından SSH ve sunucuda çalıştırdığınız web sunucusu için jail’leri netleştirmek gerekir.

1) Varsayılan yapılandırmayı koruyup özelleştirin

Direkt /etc/fail2ban/jail.conf üzerinde oynamayın. Bunun yerine override yaklaşımını kullanın: - sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Ardından sadece jail.local içinde düzenleme yapın.

2) SSH jail (varsayılan ama net ayarlarla)

Aşağıdaki parametreler “otomatik koruma” hedefini doğrudan etkiler: - maxretry: kaç başarısız denemede ban - findtime: bu denemelerin ölçüldüğü pencere - bantime: IP’nin kaç saniye engelleneceği

/etc/fail2ban/jail.local içine (örnek):

  • enabled = true
  • port = ssh
  • maxretry = 5
  • findtime = 10m
  • bantime = 1h

Ayrıca SSH’de kimlik doğrulama yanlışlarında hedef ülke/ülke değil, deneme sayısı üzerinden ölçüm yapılır. Bu ayar, brute-force girişimlerini “gereksiz uzatmadan” keser.

3) nginx veya Apache jail

Web servislerinde saldırılar çoğunlukla: - çok sayıda 401/403 - sık denenen /wp-login.php veya benzeri endpoint’ler - anormal 404/400 kombinasyonları üzerinden tetiklenir.

Fail2ban filtreleri genelde hazır gelir. Örneğin nginx için nginx-http-auth, Apache için apache-auth gibi isimler kullanılabilir.

Net yaklaşım: 1) Sunucunuz hangi web sunucusunu çalıştırıyor belirleyin (nginx mi Apache mi). 2) İlgili logları doğrulayın. 3) Jail’i açın ve minumum banttime/maxretry ile başlayın.

Örnek mantık (değerleri kendinize göre net ayarlayın): - maxretry = 6 - findtime = 10m - bantime = 30m

Bu, normal bot trafiği ile gerçek saldırıyı karıştırma riskini azaltır.

4) Postfix (eğer mail sunucusu varsa)

Eğer Postfix gibi bir MTA kullanıyorsanız brute-force denemelerinde SMTP kaynaklı log eşleşmeleri oluşur. Fail2ban’ın mail odaklı jail’leri bu logları izler.

Buradaki net kural: - Mail trafiğinde yüksek hacimli meşru denemeleriniz varsa banttime’ı agresif artırmayın. - Önce test edin; yanlış pozitif (false positive) riskini azaltın.

Eylem (action) ve firewall uyumu: Ban gerçekten uygulanıyor mu?

Fail2ban’ın banı ne ile uyguladığı çok önemlidir. Birçok dağıtımda iptables uyumu vardır; modern sistemlerde nftables da olabilir.

Kurulumdan sonra kontrol listesi

  • Fail2ban logu: /var/log/fail2ban.log
  • Aktif jail durumu:
  • sudo fail2ban-client status
  • sudo fail2ban-client status sshd
  • Banlanan IP’lerin görülmesi:
  • nftables/iptables tabloları (sisteminize göre)

Önemli: Eğer fail2ban çalışıyor ama firewall’da kural oluşmuyorsa, action tarafında uyumsuzluk vardır. Bu durumda ban “sadece logda kalır”.

Yapılandırmayı test etme: “Çalışıyor mu?” kanıt planı

Kurulumun işe yaradığını görmek için kontrollü test yapın.

1) Fail2ban yeniden yükleyin

Yapılandırma dosyasını güncellediğinizde: - sudo fail2ban-client reload

Ardından: - sudo fail2ban-client status

2) SSH için gerçek başarısız deneme simülasyonu

  • Bir süre boyunca yanlış kullanıcı/yanlış parola ile SSH denemesi yapın.
  • Fail2ban logunda eşleşme satırlarını arayın.

Log kontrol komutu: - sudo tail -n 200 /var/log/fail2ban.log

Eşleşme beklenen işaretler: - “Ban” tetiklendiğine dair satır - Hangi jail’in devreye girdiği

3) Ban süresinin dolduğunu doğrulayın

Ban süresini (bantime) 30-60 dk gibi test edilebilir seviyede ayarlayın. - Bant süresi dolunca IP’nin tekrar erişim alıp alamadığını doğrulayın.

Bu adım kritik çünkü bazen yanlış action nedeniyle kural kalkmaz.

Log ve dashboard kontrolü: Operasyonel bakım için net yol

Fail2ban “set and forget” gibi görünür; ancak operasyon için düzenli kontrol gerekir.

Fail2ban loglarını periyodik izleme

  • /var/log/fail2ban.log

Dikkat edilecek noktalar: - Sürekli “unknown filter” hataları (yanlış filter adı) - Log path eşleşmemesi (jail aktif ama hiç fail yakalanmaması) - Aşırı ban sayısı (yanlış pozitif veya saldırı büyüklüğü)

Gereksiz banları azaltma stratejisi

1) maxretry ve findtime dengesini kademeli ayarlayın. 2) nginx/apache jail’lerinde sadece doğrulanmış hata türlerini kullanın. 3) Meşru bot trafiği varsa ilgili endpoint’leri ayrı jail mantığıyla koruyun.

Sık hatalar ve net çözümleri

Hata 1: Jail çalışıyor ama hiçbir IP banlanmıyor

Muhtemel nedenler: - Yanlış log dosyası yolu - Fail2ban’a doğru filter eklenmemesi - Servisin log formatı farklı (dağıtım/konfig farkı)

Çözüm: - Hangi logların geldiğini doğrulayın. - Fail2ban jail’inde ilgili logpath veya filtreyi doğru seçin.

Hata 2: SSH’ye bağlanamıyorum, kendi IP’m de banlandı

Muhtemel neden: - Kendi IP’niz test sırasında banlandı - bantime çok uzun ayarlandı

Çözüm: - Acil durumda ban’ı kaldırın (örnek: jail bazlı unban). - Testleri kendi IP’nizden yaparken bantime’ı düşük tutun.

Hata 3: Firewall kuralları oluşmuyor

Muhtemel neden: - action tarafında sisteminizin firewall motoru ile uyumsuzluk

Çözüm: - action ayarını sistem firewall’una göre netleştirin. - nftables/iptables durumunu kontrol edin.

Sonuç: Otomatik koruma için doğru başlangıç planı

Fail2ban kurulumunu tek seferlik bir işlem gibi düşünmeyin. En doğru yol şu: (1) SSH jail’i net ayarlarla açın, (2) web servisiniz için ilgili jail’i doğru log üzerinden bağlayın, (3) yapılandırmayı fail2ban-client reload ile yeniden yükleyin, (4) kontrollü testle ban’ın loglandığını ve firewall’da gerçekten uygulandığını doğrulayın. Son olarak bant davranışını (maxretry/findtime/bantime) log sonuçlarına göre kademeli düzenleyin.

Aksiyona öneri: Bu rehberdeki sırayı uygulayıp ilk 24 saatte /var/log/fail2ban.log üzerinden hangi jail’lerin çalıştığını kontrol edin; ardından web endpoint’leri ve SSH için ban hassasiyetini tek tek netleştirerek kalıcı hale getirin.

Etiketler: #fail2ban #güvenlik #vds #vps #ssh #nginx #apache

Hosting karşılaştırması yapmaya hazır mısın?

100+ firmanın fiyatlarını tek tıkla karşılaştır, en uygun paketi bul.

Hosting Karşılaştır →

İlgili Yazılar

0 ürün seçildi
NetKıyas AI
Hosting danışmanınız
Merhaba! Ben NetKıyas yapay zekâ asistanı. Hosting, VDS, VPS veya sunucu seçiminde size yardımcı olabilirim. Ne arıyorsunuz?