Attualmente sto usando iptables su un nuovo server Debian che esegue Asterisk.
Ogni giorno ho controllato auth.log per gli indirizzi IP e manualmente eseguendo iptables -A INPUT -s IPA.DRE.SS.0/24 -j DROP
Inizialmente stavo facendo solo indirizzi IP, ma molti risultati provenivano da indirizzi IP simili, quindi /24 ha funzionato meglio, ho usato /16 un paio di volte.
Ho già centinaia di voci iptables e questo sta andando fuori controllo! So che ci deve essere un modo più semplice per farlo.
fail2ban mi è stato consigliato ma sembra che blocchi gli IP solo temporaneamente dopo un certo # tentativi.
I due principali tentativi di intrusione che vedo sono l'utilizzo di nomi utente falsi e porte casuali.
È possibile, se si tenta di accedere con un nome utente che non sto attualmente utilizzando, bloccare automaticamente in modo permanente l'indirizzo IP? Lo stesso con le porte che non sono in uso?
Vedo anche molto così:
Did not receive identification string from (malicious IP) port 48334
Vorrei bannare anche quegli IP.
Non bloccherò automaticamente i tentativi di accesso errati come se immettessi un dito grasso sulla password che potrebbe bloccarmi. Ma forse basterà un ban permanente su un IP dopo 3 tentativi.
Posso farlo con iptables? Non ho trovato nulla riguardo ai "ban permanenti" che funzionino in questo modo, sembra che funzioni di più al momento.
Mi piacerebbe più o meno realizzare ciò che ho fatto manualmente; blocco permanente degli intervalli IP dopo un singolo accesso con nome utente errato, una singola connessione alla porta errata o 3 tentativi di accesso errati (con nome utente corretto). Spero che questo eviterà che auth.log venga spammato.
Risposta accettata:
fail2ban
può essere configurato per ban permanenti impostando bantine
a -1
In jail.conf
bantime = -1
Questi andranno persi al riavvio, ma non è necessariamente una cosa negativa perché così tanti tentativi saranno temporanei da macchine domestiche pwned in una botnet...
Se desideri la persistenza, https://arno0x0x.wordpress.com/2015/12/30/fail2ban-permanent-persistent-bans/ potrebbe fornire alcune indicazioni.
Sostanzialmente modificando il fail2ban
config per creare un file di configurazione persistente di tutti gli IP vietati e fare in modo che iptables carichi questo elenco al riavvio...
Quindi, se controlli il tuo jail.conf
predefinito potresti scoprire che l'azione predefinita è iptables-multiport
. Questo corrisponde al file di configurazione /etc/fail2ban/ction.d/iptables-multiport.conf
Possiamo aggiungere le seguenti voci:
[Definition]
# Option: actionstart
# Notes.: command executed once at the start of Fail2Ban.
# Values: CMD
#
actionstart = iptables -N fail2ban-<name>
iptables -A fail2ban-<name> -j RETURN
iptables -I <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name>
cat /etc/fail2ban/persistent.bans | awk '/^fail2ban-<name>/ {print $2}' \
| while read IP; do iptables -I fail2ban-<name> 1 -s $IP -j <blocktype>; done
# Option: actionstop
# Notes.: command executed once at the end of Fail2Ban
# Values: CMD
#
actionstop = iptables -D <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name>
iptables -F fail2ban-<name>
iptables -X fail2ban-<name>
# Option: actioncheck
# Notes.: command executed once before each actionban command
# Values: CMD
#
actioncheck = iptables -n -L <chain> | grep -q 'fail2ban-<name>[ \t]'
# Option: actionban
# Notes.: command executed when banning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: See jail.conf(5) man page
# Values: CMD
#
actionban = iptables -I fail2ban-<name> 1 -s <ip> -j <blocktype>
echo "fail2ban-<name> <ip>" >> /etc/fail2ban/persistent.bans
Ora, quando fail2ban
contrassegna una voce aggiungerà una riga a /etc/fail2ban/persistent.bans
(tramite actionban
configurazione). Quando fail2ban
si avvia chiama actionstart
che legge questo file e costruisce iptables
regole necessarie.
Naturalmente, fail2ban
deve essere riavviato dopo aver modificato uno qualsiasi dei file di configurazione.
Tutto il merito di "arno0x0x" e del suo sito wordpress per questa ricetta.