Nastavení
Příkaz pro spuštění je fail2ban. Soubory s nastavením
jsou uložené v adresáři /etc/fail2ban. Nastavení
cest k logům anebo různé názvy se mohou lišit podle systému. Nápověda
se vyvolá příkazem fail2ban -h. Zrestartováním služby
se okamžitě provedou změny.
Jail.conf
Jail nebo-li žalář slouží k nastavení aktivních služeb
ochrany. Pokud chci vytvořit aktivní ochranu některého z
mnoha typů, edituji soubor /etc/fail2ban/jail.d/jail.conf.
Hodnoty se do konfiguračního souboru zapisují malými písmeny a
mohou být následující:
enabled | Zapne a vypne službu. |
filter | Určuje protokol či služby, které chceme chránit. |
action | Definuje vykonavatele (firewall) rozsudku blokace, může mít ještě hodnotu iptables apod. |
backend | Řekne programu jak funguje systém a z čeho brát data. |
logpath | Značí cestu k souboru záznamů(logů). |
maxretry | Udává počet pokusů k zablokování. |
port | Značí číslo portu služby (SSH=22, FTP=21 atd.). |
bantime | Určuje dobu pro blokaci v jednotkách: h, d, w (hodiny, dny, týdny). |
findtime | Je doba po kterou se sledují pokusy, opět udáváme v jednotkách: h, d, w (hodiny, dny, týdny). |
ignoreip | Jsou IP adresy, které chceme vynechat (mé a bezpečné IP adresy), oddělujeme mezerou. |
Nastavení pro SSH
Sleduje neúspěšná přihlášení z protokolu SSH.
V konfiguračním souboru protokolu SSH je třeba změnit u
parametru LogLevel hodnotu na VERBOSE. Fail2ban potřebuje
upovídaný log, aby mohl shromažďovat data.
LogLevel VERBOSE
Službu sshd(časté označení pro službu u unixových OS) zrestartuji pomocí:
sudo systemctl restart sshd.service
Do konfiguračního souboru jail.conf přidat pravidla
a zrestartovat PC nebo službu fail2ban. Pravidla zapíšeme do
souboru(cesta se může u některých systémů opět lišit) /etc/fail2ban/jail.d/jail.conf a
mohou(počítá se s firewallem UFW a SSH na portu 22) být následující:
[sshd]
enabled = true
filter = sshd
action = ufw
backend = systemd
maxretry = 2
port = 22
bantime = 12w
findtime = 5d
ignoreip = 198.168.40.50/16 10.21.45.09/24
Co předchozí nastavení dělá? Jestliže během pěti dnů dojde k
dvěma nezdařeným pokusům o přihlášení z protokolu SSH a portu 22,
nástroj je vyhodnotí jako nežádoucí a zablokuje danou IP adresu
na dobu dvanácti týdnů. Ignoruje IP adresy: 198.168.40.50/16, 10.21.45.09/24.
Zrestartujeme službu fail2ban. Ve většině případů pomocí příkazu
sudo systemctl restart fail2ban.service. Jestliže bychom chtěli
obnovit a aplikovat nastavení pouze pro nějakou službu, můžeme použít
příkaz: sudo fail2ban-client restart sshd.
Další nastavení pro SSH + UFW
Aby fail2ban spolupracoval s ufw,
je potřeba definovat akci banaction = ufw.
V souboru /etc/fail2ban/jail.local stačí poeditovat část sshd:
[sshd]
enabled = true
mode = aggressive
logpath = %(sshd_log)s
backend = %(sshd_backend)s
port = 20022
filter = sshd
maxretry = 1
findtime = 32d
bantime = 400w
ignoreip = 192.168.1.10/16 10.10.10.1. 81.100.105.98
banaction = ufw
Jak ověříme, že jsou nějaká nastavení aktivní? Jednoduše
pomocí:
sudo fail2ban-client status
Status
|- Number of jail: 2
`- Jail list: apache-noscript, sshd
Detailnější výpis stavu:
fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 3614
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: 179.60.147.157
Výpis pouze zablokovaných adres:
fail2ban-client banned
[{'sshd': ['122.175.32.226', '179.60.147.157', '182.70.116.97', '213.136.81.246', '103.122.201.124']}]
Za asi hodinu jsem měl hned zablokovaných 5 IP adres, které se pokoušely
přihlásit na mém serveru.
Mohu zkontrolovat pomocí ufw:
To Action From
-- ------ ----
Anywhere REJECT IN 131.100.36.21 # by Fail2Ban after 1 attempts against sshd
Anywhere REJECT IN 85.152.57.61 # by Fail2Ban after 1 attempts against sshd
Anywhere REJECT IN 103.122.201.124 # by Fail2Ban after 1 attempts against sshd
Anywhere REJECT IN 213.136.81.246 # by Fail2Ban after 1 attempts against sshd
Anywhere REJECT IN 182.70.116.97 # by Fail2Ban after 1 attempts against sshd
Anywhere REJECT IN 179.60.147.157 # by Fail2Ban after 1 attempts against sshd
Anywhere REJECT IN 122.175.32.226 # by Fail2Ban after 1 attempts against sshd
Každou chvíli mi v "žaláři" přistane nová zablokovaná IP adresa.
Nastavení pro Apache-noscript
Pokud provozuji server, bude se mi jistě hodit eliminovat nesmyslné
a chybné požadavky pro přístup k serveru. Na základě chyb URL budou
blokovány přístupy s danou specifikací a počtem chyb.
Nastavím si LogLevel pro Apache (httpd) alespoň na hodnotu warn,
to provedu v souboru /etc/httpd/conf/httpd.conf do kterého nastavím:
nano /etc/httpd/conf/httpd.conf
LogLevel warn
V souboru /etc/fail2ban/jail.d/jail.conf musí být něco jako:
[apache-noscript]
enabled = true
port = http, https
filter = apache-noscript
logpath = /var/log/httpd/error_log
maxretry = 2
bantime = 8w
findtime = 1h
Co přesně nastavení znamená? Po zadání dvou chybných URL
během jedné hodiny bude příslušná IP adresa zablokována po dobu
osmi týdnů. Pravidlo platí pro protokoly HTTP a HTTPS.
Nakonec zrestartuji službu fail2ban.service příkazem:
systemctl restart fail2ban.service
Anebo můžeme restartovat jen modul pomocí příkazu: sudo fail2ban-client restart apache-noscript.