[RISOLTO] Regola fail2ban disattesa da iptables

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
roberto67
Packager
Packager
Messaggi: 349
Iscritto il: lun 14 set 2009, 18:55
Slackware: 15.0 multilib
Desktop: plasma 5
Contatta:

[RISOLTO] Regola fail2ban disattesa da iptables

Messaggio da roberto67 »

Ho un jail di fail2ban (versione 0.11.2) che scrive una regola su iptables. Il mio problema è che l'IP dell'intruso non viene bannato.

La regola iptables è questa:

Codice: Seleziona tutto

# iptables -n -L --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    f2b-SQL    tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 80,443

Chain f2b-SQL (1 references)
num  target     prot opt source               destination         
1    REJECT     all  --   1.2.3.4          0.0.0.0/0            reject-with icmp-port-unreachable
2    RETURN     all  --  0.0.0.0/0            0.0.0.0/0 
Naturalmente le porte che sto chiamando sono le 80 e 443.

La regola in questione viene generata da una action di fail2ban. Questo è il mio jail

Codice: Seleziona tutto

[SQLinjection]
enabled  = true
filter   = SQLinjection
action = iptables-multiport[name=SQL, port="80,443"]
         sendmail-whois-lines[name=SQL, logpath="%(logpath)s"]
logpath  = /path/to/file.log
maxretry = 1
bantime  = 30d
La "action" di fail2ban non l'ho nemmeno toccata e come si vede anche sopra è la "iptables-multiport" che sta dentro la directory action.d:

Codice: Seleziona tutto

[Definition]

# Option:  actionstart
# Notes.:  command executed on demand at the first ban (or at the start of Fail2Ban if actionstart_on_demand is set to false).
# Values:  CMD
#
actionstart = <iptables> -N f2b-<name>
              <iptables> -A f2b-<name> -j <returntype>
              <iptables> -I <chain> -p <protocol> -m multiport --dports <port> -j f2b-<name>
Qualche dritta? Grazie in anticipo.
Ultima modifica di roberto67 il ven 18 nov 2022, 14:31, modificato 1 volta in totale.

roberto67
Packager
Packager
Messaggi: 349
Iscritto il: lun 14 set 2009, 18:55
Slackware: 15.0 multilib
Desktop: plasma 5
Contatta:

Re: Regola fail2ban disattesa da iptables

Messaggio da roberto67 »

Provo a sintetizzare la soluzione. Il problema è che nella mia rete c'è un bridge, che serve per la rete lxc. Ho scoperto che è necessario passare al kernel questa istruzione, senza la quale i pacchetti che attraversano il bridge non vengono girati prima a iptables:

Codice: Seleziona tutto

net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
accertarsi anche che il modulo br_netfilter sia stato caricato.

Le regole di fail2ban hanno bisogno di una aggiustatina. Normalmente fail2ban scrive le sue regole nella catena INPUT. Se invece bisogna bloccare i pacchetti che attraversano il bridge è necessario metterle su FORWARD. E' quindi necessario modificare la propria "action", che nel mio caso è gestita dal file iptables.conf, per esempio in questo modo

Codice: Seleziona tutto

[Init]

# Option:  chain
# Notes    specifies the iptables chain to which the Fail2Ban rules should be
#          added
# Values:  STRING  Default: INPUT
chain = FORWARD
# era INPUT

Rispondi