fail2ban bir kayıt dosyasını belirli bir örüntü için izler, adres başına eşleşmeleri sayar ve sayı aşıldığında bir güvenlik duvarı kuralı ekler. Yaptığı bundan ibarettir ve bunu bilmek, neye yarayıp neye yaramadığını size tam olarak söyler.

Neyi durdurur

  • Yinelenen SSH parola denemelerini — gerçi anahtarlar bunları zaten durdurur.
  • Bir formdaki yinelenen başarısız oturum açmaları — yeter ki bu başarısızlıklar kaydedilsin.
  • Bilinen yollar listesini tek tek gezen basit tarayıcıları.

Neyi durdurmaz

Tepkiseldir: birkaç başarısızlıktan sonra harekete geçer, dolayısıyla tek seferde tutan bir tahmini asla görmez. Bin adrese yayılmış ve her biri ikişer kez deneyen bir girişime karşı da bir şey yapamaz — ciddi bir girişim tam olarak böyle görünür.

Web oturum açma için bir hücre

# /etc/fail2ban/filter.d/mysite-login.conf
[Definition]
failregex = ^<HOST> .* "POST /login" 401
ignoreregex =
# /etc/fail2ban/jail.local
[mysite-login]
enabled  = true
filter   = mysite-login
logpath  = /var/log/nginx/access.log
maxretry = 5
findtime = 600
bantime  = 3600

Etkinleştirmeden önce örüntüyü sınayın

fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/mysite-login.conf

Kaç satırın eşleştiğini yazdırır. Sıfır eşleşme, hücrenin hiç ateşlenmeyeceği ve sizin kendinizi korunuyor sanacağınız anlamına gelir.

Kendinizi yasaklamayın

ignoreip = 127.0.0.1/8 ::1 YOUR.OFFICE.IP.HERE
Bir dağıtım ağının arkasında her istek vekilin adresini taşır; dolayısıyla ilk yasak vekili, onunla birlikte de bütün ziyaretçilerinizi engeller. Önce gerçek istemci adresini ayarlayın — dağıtım ağının arkasında olmakla ilgili yazıya bakın.
fail2ban-client status mysite-login
fail2ban-client set mysite-login unbanip 1.2.3.4
Kalıcı değil, bir saatlik bir yasakla başlayın. Kalıcı yasak listesi büyür, hiç gözden geçirilmez ve sonunda içinde bir müşteri barındırır.