Fail2Ban Portscan – Brute force

Noterete dai log di sistema quanti tentativi di accessi sono presenti nel server, da persone che spesso cercano di ottenere informazioni sulle operazioni della vostra macchina per poterne usare Loro per scopi per lo piu loschi.

Iniziamo con la protezione contro i sistemi automatizzati che ispezionano il server per trovare porte aperte Portscan!

  • PORTSCAN PROTECTION

Cosa vogliamo ottenere?

Il blocco delle scansioni delle porte del server,  noterete che analizzando i log digitando dmesg compare una o più righe come questa [UFW BLOCK] IN=enps0 OUT= MAC=e0:cb:4e:1a:e1:bc:a4:91:b1:22:44:2e:08:00 SRC=213.6.149.30More Information DST=192.168.x.xMore Information {iltuoserver.itMore Information} LEN=44 TOS=0x00 PREC=0x00 TTL=49 ID=52235 PROTO=TCP SPT=59102 DPT=23 WINDOW=48693 RES=0x00 SYN URGP=0

Il compito! programmare fail2ban per leggere questi log identificare le intrusioni ed applicare i ban!

Creiamo il file del filtro:

nano /etc/fail2ban/filter.d/ufw-portscan.conf

[Definition]
failregex = .*\[UFW BLOCK\] IN=.* SRC=
ignoreregex =

Ora il file delle jail

nano /etc/fail2ban/jail.d/ufw-port-scan.local

[ufw-port-scan]
enabled = true
port = all
filter = ufw-portscan
banaction = ufw-action
action =
sendmail-whois[name=ufw-port-scan, dest=systemd-network, sender=fail2ban]
logpath = /var/log/ufw.log
maxretry = 0

Noterete subito che sono molto simili ad alcuni impostazioni già presenti, personalmente le maxretry le ho impostate a 0, per evitare qualsiasi intruso, il logpath invece viene preso dai log di UFW – Uncomplicated FireWall configuratelo se non lo avete gia fatto!

sudo service fail2ban restart

Eseguiamo un test:

fail2ban-regex /var/log/ufw.log ‘.*\[UFW BLOCK\] IN=.* SRC=<HOST>’

Quando si verificherano scansioni di questo genere si attiverà fail2ban aggiungendo regole al firewall!

 

  • BRUTE FORCE PROTECTION

Altra cosa è la protezione contro attacchi di tipo bruto, spesso e volentieri vengono effettuate contro la porta ssh.  In questa guida mi sono concentrato per mitigare questo tipo di intrusioni.

Cosa vogliamo ottenere?

Il blocco degli indirizzi degli attaccanti per un tempo sufficientemente lungo.

Iniziamo con l’ attivazione della jail ssh sshd come da guida precedente , poi creare la jail:

nano /etc/fail2ban/jail.d/repeater.local

[repeatoffender]

enabled = false
filter = repeatoffender
action = repeatoffender[name=repeatoffender]
sendmail-whois[name=Repeat-Offender, dest=news@localhost, sender=fail2ban@localhost]
logpath = /var/log/fail2ban*
maxretry = 10
findtime = 31536000
bantime = -1

Come si comporta questa configurazione?

I log contenuti in /var/log/fail2ban* saranno tenuti sotto controllo per un bell annetto, se ripeteranno dopo 5 minuti a riconnettersi alla porta ssh sbagliando autenticazione questa configurazione bannerà permanentemente l ‘ip impedendone la connessione di nuovo bantime = -1.

Procediamo con il filtro:

nano /etc/fail2ban/filter.d/repeatoffender.conf

#Fail2Ban configuration file
#
# Author: WireFlare
#
# This filter monitors the fail2ban log file, and permanently
# bans the ip addresses of persistent attackers.
#
# As of this version this ban only works with iptables.
#


[Definition]
_jailname = repeatoffender
failregex = fail2ban.actions:\s+WARNING\s+\[(?:.*)\]\s+Ban\s+<HOST>
ignoreregex = fail2ban.actions:\s+WARNING\s+\[%(_jailname)s\]\s+Ban\s+<HOST>

Come si comporta?

Fail2ban letti i log comparerà gli indirizzi bannati conosciuti, se corrispondono si attivarà il ban!