Fail2ban je daemon, který sleduje log soubory a vyhledává informace o neúspěšných přihlášení k nakonfigurovaným běžícím službám. Každou službu, která má být chráněna proti tzv. brute-force útoku je třeba ve fail2ban zapnout. Jakmile se útočník pokouší hádat hesla, generuje v logu velké množství neúspěšných pokusů pro přihlášení. Fail2ban zablokuje útoku úpravou firewallu – zablokuje IP adresu útočníka a tím i další pokusy.
Blokování IP adresy může být trvalé nebo dočasné. Záleží už na Vaší konfiguraci fail2ban. Nejčastěji používané služby mají v konfiguračním souboru fail2ban příklady nastavení. Příspěvek dokumentuje nastavení daemona fail2ban na ochranu proti brute-force útoku (hádaní hesel) pouze u služby SoftEther VPN.
Nastavení SoftEther VPN a logování
Nejprve je nezbytné zařídit, aby SoftEther VPN logovalo neúspěšné přihlášení do jednoho souboru. Standardně SoftEther VPN loguje do souboru podle aktuálního dne. Soubor má každý den jiný název a to je pro fail2ban problém. Jedna z cest je vytvořit symbolický link na konkrétní log a každý den symbolický link přepisovat a měnit odkaz na jiný soubor. Pomocí plánovače to není žádný problém.
Další cestou může být nastavení SoftEther VPN na zapisování do jednoho „nekonečného“ souboru. Nastavení je potřeba provést pro každý VPN HUB přes konfirugrační program vpncmd pro nastavování Soft Ether VPN.
VPN Server/DEFAULT> logswitchset LogSwitchSet command - Set Log File Switch Cycle Select Security or Packet: security Specify sec, min, hour, day, month or none: none
Zda se loguje do jednoho souboru je dobré si ověřit výpisem. Soubor by se měl jmenovat sec.log.
root@espressobin:/home/nosek# ls -l /usr/vpnserver/security_log/DEFAULT/ -rw------- 1 root root 118 kvě 15 16:46 sec.log
Nastavení fail2ban
Nejprve zkontrolovat přítomnost filtru ve fail2ban.
root@espressobin:/etc/fail2ban/filter.d# ls -l /etc/fail2ban/filter.d/vpnserver.conf -rw-r--r-- 1 root root 487 dub 10 19:04 /etc/fail2ban/filter.d/vpnserver.conf
Pak do konfiguračního souboru /etc/fail2ban/jail.local doplnit údaje pro každý VPN HUB, který chci chránit proti útokům. V hranatých závorkách si můžete službu pojmenovat dle uvážení, jen nesmíte mít 2 stejné názvy.
[vpnserver] enabled = true logpath = /usr/vpnserver/security_log/DEFAULT/sec.log port = all protocol = all banaction = iptables-allports # Uncomment the following line if you want to be notified about banned IP's #action= %(action_mwl)s filter=vpnserver [vpnserver-HUB2] enabled = true logpath = /usr/vpnserver/security_log/HUB2/sec.log port = all protocol = all banaction = iptables-allports # Uncomment the following line if you want to be notified about banned IP's #action= %(action_mwl)s filter=vpnserver
Pak už jen službu fail2ban restartovat, vygenerovat neúspěšné pokusy o přihlášení a zkontrolovat, jestli fail2ban funguje.
root@espressobin: systemctl restart fail2ban root@espressobin:/etc/fail2ban# fail2ban-client status vpnserver Status for the jail: vpnserver |- Filter | |- Currently failed: 0 | |- Total failed: 5 | `- File list: /usr/vpnserver/security_log/DEFAULT/sec.log `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 89.24.33.115
Vyjmutí adresy z banlistu
Jakmile jsem otestoval, jak dostat svoji IP adresu na banlist, určitě je dobré znát příkaz, jak ji z tohoto banlistu vyjmout, abych nemusel čekat na to, až vyprší timeout. K tomu slouží příkaz:
# fail2ban-client set vpnserver unbanip 89.24.33.115