Fail2ban je daemon, který slouží k blokaci IP adres, ze kterých dochází k pokusu o neoprávněný přístup na server. Typicky dochází ke snahám uhádnout hesla pro získání přístupu přes SSH a FTP (pokud služba na serveru běží a je přístupná - viz. příspěvek
Omezení přístupu přes SSH na VPS). K tomuto skenování dochází nepřetržitě a hromadně. Kromě jiného spotřebovává prostředky přidělené každému serveru.
Ve fail2ban lze nastavit, po kolika neúspěšných pokusech se přidá pravidlo na firewall, a na jak dlouho se IP adresa zablokuje. Dále lze nastavit mailové upozornění na výskyt pokusu o napadení.
Instalace:
Před jakoukoliv instalací si přečtěte velmi důležitý příspěvek popisující možné problémy jakékoliv instalace na VPS:
Instalace softwaru všeobecně
- V případě, že je na serveru yum a přidali repozitář RPMForge, stačí napsat
yum install fail2ban
a yum vyřeší potřebné závislosti.
- Pokud nemáte yum, je nutné nejprve stáhnout rpm balíčky (lze použít vyhledávač http://rpm.pbone.net/, nebo balíčky stáhnout z repozitáře RPMForge http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/ (tento zdroj je lepší - fail2ban neobsahuje závislost na balíčku shorewall) + potřebné závislosti (gamin-python + gamin).
Instalace pak probíhá standardně, jak je popsáno v příspěvku Instalace softwaru všeobecně
- Můžete použít i námi připravené balíčky (ke stažení - archiv fail2ban.zip), u kterých byla upravena konfigurace tak, že okamžitě po startu daemona bude funkční kontrola FTP i SSH (konfigurace byla upravena speciálně pro naše VPS). Jediné, co je po nainstalování potřeba je daemon nastartovat a zajistit jeho automatické startování Postup je popsán o něco níže v tomto příspěvku.
POZOR: Naše balíčky jsou testovány pouze pro CentOS 5.5. U jiných verzí je nutné instalovat podle jednoho z předchozích 2 bodů.
Konfigurace:
Pokud nepoužijete naše balíčky, je nutné provést několik úprav v následujících souborech:
1. /etc/fail2ban/filter.d/proftpd.conf nahradit původní failregex (=maska, na základě které se kontrolují neúspěšné pokusy - původní není funkční) na:
failregex = ^(.)+proftpd(.)+[<HOST>](.)*no such user found from (.)* to (.)*$
^(.)+proftpd(.)+[<HOST>](.)*USER(.)*Login failed(.)*Incorrect password(.)*$
^(.)+proftpd(.)+[<HOST>](.)*SECURITY VIOLATION:(.)*login attempted(.)*$
^(.)+proftpd(.)+[<HOST>](.)*Maximum login attempts(.)*exceeded(.)*$
2. /etc/fail2ban/jail.conf nastavit pro proftp-iptables a ssh-iptables toto:
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/secure
maxretry = 3
[proftpd-iptables]
enabled = false
filter = proftpd
action = iptables[name=ProFTPD, port=ftp, protocol=tcp]
logpath = /var/log/secure
maxretry = 5
v tomto případě dojde k zablokování IP adresy po 3 neúspěšných pokusech pro SSH a 5 pokusech u FTP.
Na začátku řádku v definici jailu (například [ssh-iptables]) NESMÍ být před hranatou závorkou mezera!
Start, autostart a kontrola funkčnosti:
služba se nastartuje příkazem
/etc/init.d/fail2ban start
automatické spouštění se zajistí přidáním do startovacích skriptů (spustíte následující příkazy)
chkconfig --add fail2ban
chkconfig fail2ban on
správnou funkci vyzkoušejte například několikerým úmyslným špatným zadáním hesla v FTP klientu - po nastaveném počtu špatných přístupů bude Vaše IP adresa dočasně zablokována. K odblokování dojde po nastaveném čase - podle /etc/fail2ban/jail.conf je to standardně 10 minut (bantime = 600). Podle toho, kam je nastaveno logování najdete informace o činnosti daemona buď v systémovém logu (/var/log/messages), nebo /var/log/fail2ban.log. (nastavuje se v /etc/fail2ban/fail2ban.conf - položka logtarget)
Upozorňování:
program umožňuje zasílání informací o své činnost mailem (stop, start, zablokování adresy...). K tomu je potřeba přidat do sekce pro příslušný filtr ([ssh-iptables] nebo [proftpd-iptables]) v action následující řádek:
sendmail[name=SSH, dest=EMAIL_PRIJEMCE, sender=fail2ban@VASEDOMENA]
POZOR! je nutné nastavit existující příjemce a adresu odesílatele
Sekce pro SSH pak může vypadat takto
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail[name=SSH, dest=admin@domena.cz, sender=fail2ban@mujvps.cz]
logpath = /var/log/secure
maxretry = 3
Fail2ban může kontrolovat mnohem více logů - je nutné je povolit v jail.conf. Důležité je nastavit správnou masku (regexp) v /etc/fail2ban/filter.d/* a cestu k logu. Bližší informace najdete v dokumentaci.