SoftEther VPN a blokování brute force hádání hesel pomocí fail2ban

Autor: | 15. 5. 2020 | IT, Linux

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

Další články