fail2ban ile kaba kuvvet denemelerini durdurmak
İnternete açık her sunucu, ilk dakikadan itibaren parola deneme saldırıları alır. fail2ban, logları izleyip tekrar tekrar hata yapan IP adreslerini geçici olarak engeller. Kurulumu, doğru ayar dosyasını ve sık yapılan hataları anlatıyorum.
Yeni açtığınız bir sunucunun SSH loglarına bir saat sonra bakın: dünyanın dört bir yanından root, admin, test kullanıcılarıyla giriş denemeleri göreceksiniz. Anahtar tabanlı giriş kullanıyorsanız bunlar başarılı olamaz ama log kirliliği ve gereksiz yük oluşturur.
fail2ban ne yapar?
Belirlediğiniz log dosyalarını izler. Bir IP adresi, belirli bir süre içinde belirli sayıda başarısız deneme yaparsa güvenlik duvarına bir kural ekleyerek onu bir süreliğine engeller.
Kurulum
sudo apt install fail2ban
Önemli: jail.conf dosyasını düzenlemeyin; güncellemelerde ezilir. Ayarlarınızı /etc/fail2ban/jail.local dosyasına yazın:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
bantime.increment = true
ignoreip = 127.0.0.1/8 ::1
[sshd]
enabled = true
backend = systemd
- bantime.increment: Tekrar eden saldırganların engel süresi her seferinde uzar.
- ignoreip: Kendi sabit IP'nizi ekleyin; parolayı yanlış yazıp kendinizi kilitlemeyin.
- backend = systemd: Yeni dağıtımlarda SSH logları dosyada değil journal'dadır.
Durumu görmek
sudo fail2ban-client status sshd
sudo fail2ban-client set sshd unbanip 203.0.113.5
Sık yapılan hatalar
- CDN arkasında çalışmak: Web sunucusu loglarında ziyaretçi yerine CDN'in IP'si görünüyorsa, fail2ban CDN'i engeller ve siteniz herkese kapanır. Önce gerçek IP'yi loglara yazdırın.
- Docker: Konteynerlere giden trafik farklı iptables zincirlerinden geçer; web jail'leri için
DOCKER-USERzincirini kullanmanız gerekebilir.
Sonuç
fail2ban, parolayla girişin kapalı olmasının yerini tutmaz; onun üstüne eklenen bir katmandır. Ama on dakikalık kurulumu, logları okunur hale getirir ve saldırı yüzeyini azaltır.