Rehber 11 Ekim 2026 · 7 dakika okuma

Fail2ban Kurulumu: Sunucunuzu Otomatik Koruma Rehberi (2026)

Fail2ban ile SSH ve web servislerini brute-force denemelerine karşı otomatik koruyun. Adım adım kurulum, jails, log analizi ve doğrulama.

Fail2ban, sunucunuza yönelik tekrarlı başarısız denemeleri (özellikle brute-force) tespit edip ilgili IP’yi otomatik olarak engelleyen bir güvenlik aracıdır. Bu sayede saldırganın deneme sayısı arttıkça sunucu kaynaklarınız boşa harcanmaz ve loglarda “sürekli hata” yükü azalır. Bu rehberde 11.10.2026 tarihli pratik senaryolarla Fail2ban’ı Linux VDS/VPS sunucunuza kuracak, doğru jail (kural seti) seçecek, loglardan çalıştığını doğrulayacak ve en sık yapılan kurulum hatalarını düzelteceksiniz.

Aşağıdaki adımlar Debian/Ubuntu tabanlı sistemler için yazılmıştır; RHEL/CentOS türevlerinde paket adı ve servis komutları küçük farklarla ilerler.

Fail2ban neyi engeller, neyi engellemez?

Fail2ban’ın yaptığı iş “uygulama katmanı” seviyesindeki girişimlere göre hareket etmektir. Yani temel mantık şudur: - Belirli bir servisin (SSH, Apache, Nginx, Postfix vb.) loglarında belirli desenler aranır. - Aynı IP adresinden belirlenen sayıda başarısız deneme olursa Fail2ban o IP’yi banned durumuna alır. - Ban süresi (bantime) bitince otomatik olarak çözülür.

Bu yaklaşım şunlarda etkilidir: - SSH brute-force - Web sunucusunda sürekli 404/401/403 denemeleri (siteyi bulma veya kimlik deneme) - Bazı mail servislerinde tekrarlı yanlış girişler

Şunlarda tek başına yeterli değildir: - Aynı anda çok sayıda IP’den gelen “dağıtık” (DDoS) saldırılar - Zafiyet (exploit) üzerinden alınan sistemler - Yanlış parola politikası, güncelleme yapılmaması gibi temel güvenlik riskleri

Fail2ban’ı, güncel işletim sistemi + doğru firewall + güçlü parola/anahtar yönetimi ile birlikte kullanın.

Kurulum öncesi net kontrol listesi

Fail2ban kurulumundan önce şu 6 noktayı netleştirin. Bunlar yanlış jails yüzünden “Fail2ban çalışmıyor” şikayetlerinin çoğunu çözer.

1) Log kaynağı doğru mu?

Fail2ban jails, doğrudan log dosyalarına bakar. Örneğin SSH için genellikle /var/log/auth.log veya /var/log/secure kullanılır. - Debian/Ubuntu: çoğunlukla /var/log/auth.log - CentOS/RHEL: çoğunlukla /var/log/secure

Kontrol için: - tail -n 200 /var/log/auth.log

2) Paket yöneticisi güncel mi?

  • sudo apt update

3) Sunucuda firewall var mı?

Fail2ban, IP engellemelerini iptables/nftables üzerinden uygular. Sunucunuzda UFW varsa Fail2ban genelde onunla uyumlu şekilde ayarlanabilir. UFW kullanmıyorsanız bile iptables/nftables hedefi önemlidir.

4) SSH kullanıyor musunuz?

Fail2ban SSH için en değerli sonuçları verir. Ancak yönetim paneli dışından SSH erişimi kapalıysa (sadece VPN’den SSH gibi) SSH jail gereksizleşebilir.

5) Portlar özelleştirildi mi?

SSH portu 22 değilse, jail ayarında portun geçtiği satırların hedefini doğru belirtin.

6) Fail2ban’ı “test modunda” çalıştırma

İlk kurulumda kısa süreli test edin; yanlış bir regex tüm IP’leri banlatabilir. Bu yüzden önce logları inceleyin.

Debian/Ubuntu’da Fail2ban kurulum adımları

1) Fail2ban paketini yükleyin

  • sudo apt update
  • sudo apt install -y fail2ban

2) Servisi başlatın ve etkinleştirin

  • sudo systemctl enable --now fail2ban

3) Durum kontrolü

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

Bu noktada paket kurulu ama hangi jails’in aktif olduğunu görmeniz gerekir.

4) Aktif jails listesini inceleyin

  • sudo fail2ban-client status

Ek olarak: - sudo fail2ban-client status sshd

“ssh/sshd jail is not defined” gibi mesajlar görürseniz bir sonraki bölümde jail dosyalarını kontrol edin.

Jails mantığı: SSH ve web için doğru başlangıç seti

Fail2ban’ın ana çalışma birimi jail’dir. Jails, hangi log dosyasının taranacağını, hangi “fail” desenlerinin yakalanacağını ve ban davranışının nasıl olacağını belirler.

Tavsiye edilen başlangıç jails (pratik ve dengeli)

Aşağıdaki seti ilk kurulum için temel kabul edin. Sonra log yoğunluğunuza göre süreleri güncelleyin.

  • sshd (SSH brute-force)
  • nginx-http-auth veya nginx-badbots (web kimlik doğrulama/otomatik bot denemeleri)
  • nginx-https-auth (TLS üzerinden aynı tür denemeler varsa)
  • apache-auth (Apache Basic/Digest auth denemeleri)

Hangi sunucu yazılımını kullandığınıza göre sadece ilgili jails’i etkinleştirin.

Fail2ban config dosyaları (net dosya yolu)

Fail2ban yapılandırmasında genelde şunları görürsünüz: - /etc/fail2ban/jail.conf (paket tarafından yönetilir; düzenlemeyin) - /etc/fail2ban/jail.d/*.local veya *.conf (düzenlemeniz önerilir)

En doğru yaklaşım: Özelleştirmeyi /etc/fail2ban/jail.d/ altına koymak.

Örnek: SSH jail ayarı ile daha kontrollü banlama

İlk hedef: SSH denemelerinde hem agresif hem de “yanlış ban” riskini yönetmek.

1) Özel SSH jail dosyası oluşturun

  • sudo nano /etc/fail2ban/jail.d/sshd.local

İçeriğe şu mantıkla başlayın (portunuz 22 ise):

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

Örnek yapı (dağıtımınıza göre satır adları paket sürümüne göre değişebilir):

[sshd]
enabled = true
port = ssh
maxretry = 5
findtime = 10m
bantime = 1h

2) SSH portu farklıysa

SSH portu 2222 gibi farklı bir portsa: - port = 2222

3) Fail2ban’ın SSH loglarını gerçekten gördüğünü doğrulayın

Önce şu komutla log akışını izleyin: - sudo tail -F /var/log/auth.log

Ardından yeni bir terminalde Fail2ban durumunu kontrol edin: - sudo fail2ban-client status sshd

Bu şekilde logların jailbreak davranışına doğru bağlandığını anlarsınız.

Web servislerinde (Nginx/Apache) jail seçimi: yanlış banı azaltın

Web tarafında jails’i seçerken iki şeyi dengeleyin: 1) Gerçek saldırı paternini yakalamak 2) Gerçek kullanıcı davranışını “fail”e çevirmemek

Nginx için sık başlangıç senaryosu

  • Basic auth hataları
  • Sürekli 401/403 denemeleri
  • Bazı bot paternleri

Örnek: nginx-http-auth gibi jails, auth hatalarında çalışır. Site admin paneliniz Basic auth ile korunuyorsa değerlidir.

Apache için sık başlangıç senaryosu

  • Basic auth
  • Yanlış parola tekrarları

Apache tarafında “siteyi boşa düşürecek ban” istemiyorsanız maxretry değerini SSH’ye göre daha düşük riskli olacak şekilde ayarlayın (ör. 3-6 bandı gibi).

Ban/Unban davranışını netleştiren parametreler

Jail dosyalarında sık kullanılan parametreleri sayısal düşünün.

  • maxretry: Belirlenen süre içinde kaç fail olursa ban
  • findtime: fail sayımının yapıldığı zaman penceresi
  • bantime: ban süresi
  • ignoreip: Whitelist (ör. kendi statik IP’niz)

Net öneri aralığı (ilk kurulum için)

Aşağıdaki aralıklar, “hızlı koruma” ile “yanlış ban” riskini dengeler: - SSH: maxretry = 5, findtime = 10m, bantime = 1h - Web auth: maxretry = 3, findtime = 10m, bantime = 30m (login denemesi az sitelerde) - Web bot paternleri: genelde bantime = 1h gibi daha uzun uygulanır

Kritik nokta: Deneme sayısı az ama uzun süreli saldırı varsa findtime uzatmak daha doğru sonuç verir; anlık çok sayıda deneme varsa maxretry düşürülebilir.

Fail2ban log doğrulama: “çalışıyor mu, çalışmıyor mu?” sorusunu bitirin

Kurulumdan sonra şu kontrol akışını uygulayın.

1) Fail2ban log seviyesini geçici artırın

  • /etc/fail2ban/jail.d/ altına geçici ayar eklemek yerine servis loglarını izlemek yeterli olabilir.

Temel olarak şunları izleyin: - sudo journalctl -u fail2ban --no-pager -n 200

2) Aktif ban listesini kontrol edin

  • sudo fail2ban-client status
  • sudo fail2ban-client status sshd

Ek olarak, ban listesini sistem firewall tarafında da görmek istersiniz (iptables/nftables). Fail2ban’ın bulunduğu mekanizmayı değiştirmemek önemlidir.

3) Gerçek test: kontrollü bir başarısız deneme üretin

  • Kendi test IP’nizden (yani ignoreip içinde olmayan) 4-6 kez başarısız deneme yapın.
  • Ardından fail2ban-client status sshd çıktısında “Currently banned” artışını izleyin.

Not: Test sırasında üretimde kritik hesabı kullanmayın.

Yaygın kurulum hataları (Net çözümler)

Hata 1: Jail aktif değil

Belirti: - fail2ban-client status çıktısında jail görünmüyor.

Çözüm: - jail.d/*.local dosyasında enabled = true kontrol edin.

Hata 2: Yanlış log dosyası

Belirti: - Fail2ban çalışır ama ban oluşmaz.

Çözüm: - Sunucunuzda SSH hatalarının hangi loga düştüğünü doğrulayın (auth.log vs secure). - Gerekirse ilgili jail ayarında logpath değerini doğru loga çekin.

Hata 3: Whitelist (ignoreip) sorunları

Belirti: - İstediğiniz IP banlanmıyor.

Çözüm: - ignoreip içine istemeden kendi IP’nizin eklendiğini kontrol edin.

Hata 4: Bantime çok kısa, saldırı devam ediyor

Belirti: - Ban geliyor ama çok çabuk bitiyor.

Çözüm: - bantime değerini artırın (ör. 15m yerine 1h).

Hata 5: Aynı anda çok fail üretimi (yanlış regex/uygunsuz jail)

Belirti: - Normal kullanıcı trafiği “fail” gibi algılanıyor.

Çözüm: - Web tarafında doğru jail’i seçin (auth vs bot). Yanlış bir jail yüzünden banlar çok genişliyorsa maxretry ve regex hedefini gözden geçirin.

İleri seviye: Fail2ban’ı kontrollü büyütün

Ban süresi + yeniden deneme toleransı ile denge kurun

Eğer saldırılar sürüyorsa “tek seferde maksimum etki” yerine kademeli etki tercih edilebilir. Bu, kullanıcı kilitlenmesi riskini azaltır.

Özel IP’leri yönetmek için ignoreip’i net kullanın

  • Statik IP’nizi ekleyin
  • VPN çıkış IP’niz değişiyorsa ignoreip ile kalıcı whitelist kurmayı standart hâle getirmeyin; yerine sadece yönetim IP’sini kullanın.

İlgili portları sadece gerekli servislerde açın

Fail2ban tek başına port güvenliği değildir. SSH’nin sadece gerekli ağlardan erişilebilir olması, brute-force riskini düşürür.

Sağlayıcıdan gelen uygulama saldırıları için karar matrisi

Aşağıdaki tablo, “hangi jail”in neye odaklandığını netleştirir:

Jail Tipik hedef En çok işe yaradığı durum Yanlış ban riski
sshd Başarısız SSH oturum denemeleri SSH açık sunucular Düşük (genelde doğru log/regex ile)
nginx-http-auth / apache-auth Basic/Digest auth başarısızlıkları Admin panel auth ile korunuyorsa Orta (login yapan kullanıcılar etkilenebilir)
nginx-https-auth TLS üstünden auth denemeleri HTTPS tarafında sürekli auth hatası Orta
nginx-badbots (varsa) Şüpheli bot/desenler Yaygın otomatik istekleri azaltmak Orta (siteye göre değişir)

Sonuç: 30 dakikada uygulanabilir, ölçülebilir koruma planı

Bugün yapacağınız en net aksiyon planı şöyle: 1) Fail2ban’ı kurun (apt install -y fail2ban) ve servisi aktif edin. 2) sshd jail için maxretry, findtime, bantime değerlerini üretim trafiğinize uygun şekilde ayarlayın. 3) Nginx/Apache kullanıyorsanız web auth jails’iyle başlayın; bot jails’i tek başına geniş kapsamlı kullanmayın. 4) journalctl ve fail2ban-client status çıktılarıyla “ban geliyor mu?” sorusunu doğrulayın. 5) İlk gün yanlış ban/yan etki görürseniz ignoreip, findtime ve maxretry değerlerini güncelleyerek düzeltin.

Bu adımları uyguladığınızda Fail2ban, sunucunuzun otomatik savunma katmanını güçlendirir ve özellikle SSH tarafındaki brute-force denemelerinde somut, ölçülebilir bir azalma sağlar.

Etiketler: #fail2ban #güvenlik #vps #vds #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