Fail2ban analizuje logi usług i tymczasowo blokuje adresy IP przy nadużyciach (wielokrotne błędy SSH, skanowanie HTTP itd.). Uzupełnia UFW i twardy SSH.
Wymagania
- Ubuntu/Debian (lub pochodna) z
sudo - Chroniona usługa już działa (np.
sshd,nginx)
Instalacja
Bashsudo apt update && sudo apt install -y fail2ban sudo systemctl enable fail2ban sudo systemctl start fail2ban
Podstawowa konfiguracja
Własne pliki umieść w /etc/fail2ban/jail.d/, żeby aktualizacje ich nie nadpisywały.
Utwórz /etc/fail2ban/jail.d/local.conf:
INI1[DEFAULT] 2bantime = 1h 3findtime = 10m 4maxretry = 5 5ignoreip = 127.0.0.1/8 ::1 6 7[sshd] 8enabled = true 9port = ssh 10logpath = %(sshd_log)s 11backend = %(sshd_backend)s
Jeśli zmieniłeś port SSH, ustaw np. port = 2222 zamiast ssh.
Przeładuj Fail2ban:
Bashsudo systemctl restart fail2ban sudo fail2ban-client status sudo fail2ban-client status sshd
Nginx (agresywne żądania HTTP)
Przykład:
INI[nginx-http-auth] enabled = true port = http,https logpath = /var/log/nginx/error.log
Dostosuj ścieżki logów do swojej konfiguracji.
Dobre praktyki
- Dodaj stałe IP do
ignoreippodczas testów. - Sprawdzaj
sudo fail2ban-client status sshdpo wdrożeniu. - Bany są czasowe (
bantime); dostosuj do tolerancji.
Ręczne odblokowanie IP
Bashsudo fail2ban-client set sshd unbanip 198.51.100.10
Rozwiązywanie problemów
- Brak banów: sprawdź
enabled = true, poprawnylogpathoraz czy usługa loguje niepowodzenia. - Wykluczenie z serwera: użyj konsoli dostawcy / IPMI lub innego IP, potem popraw
ignoreiplub odblokuj IP.