Il blocco Fail2ban con IPtables non funziona su Debian Lenny. [porta ssh spostata]


11

Di recente ho deciso di fare un po 'di manutenzione di sicurezza. Ho visto i miei registri e ci sono stati alcuni tentativi contro il mio server SSH. All'inizio, ho rimosso la porta SSH dal 22 predefinito. Dopo di ciò, ho letto qualcosa su Fail2ban , BlockHosts e DenyHosts .

Ho dato un'occhiata al primo: è semplice da configurare, tutto è comprensibile; ma quando ho provato a "sondare la sua protezione", i test sono falliti . Tutto sembra essere buono, ma posso ancora accedere al server.

Ho anche testato gli IPtables: # iptables -I INPUT -j DROP- dopo che la mia connessione SSH è stata persa (quindi, quello che volevo). Quindi # iptables -I INPUT -s 84.x.y.z -j DROP, che ha funzionato anche.

Ma quali regole ha fatto Fail2ban, che non funziona: ( $ sudo iptables -L)

Chain INPUT (policy ACCEPT)
target     prot opt source               destination        
fail2ban-apache  tcp  --  anywhere             anywhere            multiport dports www,https
fail2ban-ssh  tcp  --  anywhere             anywhere            multiport dports ssh
fail2ban-ssh-ddos  tcp  --  anywhere             anywhere            multiport dports ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        

Chain fail2ban-apache (1 references)
target     prot opt source               destination        
RETURN     all  --  anywhere             anywhere            

Chain fail2ban-ssh (1 references)
target     prot opt source               destination        
DROP       all  --  84.x.y.z           anywhere            
RETURN     all  --  anywhere             anywhere            

Chain fail2ban-ssh-ddos (1 references)
target     prot opt source               destination        
RETURN     all  --  anywhere             anywhere

Moduli del kernel caricati: ( $ lsmod | grep ip)

iptable_nat             4680  0
nf_nat                 15576  1 iptable_nat
nf_conntrack_ipv4      12268  3 iptable_nat,nf_nat
nf_conntrack           55540  4 xt_state,iptable_nat,nf_nat,nf_conntrack_ipv4
xt_multiport            2816  2
iptable_filter          2624  1
ip_tables              10160  2 iptable_nat,iptable_filter
x_tables               13284  5 xt_state,xt_tcpudp,iptable_nat,xt_multiport,ip_tables
ipv6                  235396  24

versioni:

  • Debian Lenny 5.06, kernel 2.6.26-2-686
  • IPtables 1.4.2-6
  • Fail2ban 0.8.3-2sid1
  • openssh-server 1: 5.1p1-5

Test n. 1 passo dopo passo:

  1. Configurare Fail2ban su bassa durata. 60 secondi Quindi ricaricare.
  2. Tentativo di accesso (con SSH), direttamente con passwd errato.
  3. Per la sesta volta inserisci il passwd corretto (il numero massimo di tentativi è solo 4 qui). Ho effettuato l'accesso. Posso anche accedere alla pagina Web ospitata da quel server.
  4. iptables -Lmi ha mostrato come sopra menzionato. Quindi il divieto era attivo, quando mi sono connesso, comandava il mio server.

Test n. 2 passo dopo passo:

  1. Stop Fail2ban. Crea uno atscript per rimuovere la seguente regola di divieto scritta in futuro. ( iptables -D INPUT 1)
  2. Crea una regola di divieto: iptables -I INPUT 1 -s 84.x.y.z -j DROP
  3. Non ho potuto digitare nient'altro, la connessione SSH è inutilizzabile. Non ho potuto accedere alla pagina Web. Quindi, quello che volevo da iptables.
  4. Dopo lo atscript, posso accedere al mio server.

Non vedo la soluzione, cosa devo fare per far funzionare il mio ban IPtables (creato da Fail2ban)?


Domanda modificata! Qualche idea?
antivirtel,

Risposte:


8

Ho trovato il problema, cosa ho fatto, prima di installare fail2ban. Mi dispiace per il tuo tempo.

Per motivi di sicurezza, ho spostato il mio SSH dalla porta 22 a un'altra. Il riferimento in si iptablesriferisce solo alla porta 22. Ho pensato, che è una variabile, ciò che si riferisce sempre all'attuale porta sshd. Ma NON .

La soluzione esatta (se hai spostato il tuo demone dalla sua porta originale):

  1. Apri jail.local (o .conf).
  2. Trova il tuo servizio (tra parentesi graffe).
  3. Risolvi la portsezione a tutti . Esempio:port = all
  4. Aggiungi o modifica una banactionlinea esistente dopo la linea di porta, con valore iptables-allports . Esempio: banaction = iptables-allports.
  5. Riavvia il demone. Esempio: # service fail2ban restart.

Non sono riuscito a trovare una soluzione per modificare la port sshdirettiva o scrivere un numero lì. Se hai una soluzione non per tutte le porte, la ascolterò!


1
Tutto quello che devi fare è fornire il numero di porta anziché il nome.
Julian Knight,

Si noti inoltre che il nome iptable deve contenere meno di 32 caratteri per poter essere aggiunto correttamente.
Adrian Lopez,

2

Ho avuto lo stesso problema con fail2ban che non si è vietato dopo aver spostato il mio server SSH sulla porta 12345 non standard (diciamo).

Per fare in modo che fail2ban producesse le giuste regole dopo una serie di tentativi di autenticazione falliti, ho modificato /etc/fail2ban/jail.conf.

port = ssh 

in

port = 12345

Presumo che un approccio simile funzionerebbe per altri servizi su porte non standard.


0

Sono presenti le impostazioni per fail2ban /etc/fail2ban/jail.local. Su un'installazione predefinita non sono sicuro che sia lì. Allora ciò che si fa è copia jail.confper jail.local, in modo da avere entrambi i file in /etc/fail2ban/. Modifica jail.local, vai alla riga contenente [ssh]e abilitalo in questo modo:

enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6

Successivamente, riavvia fail2ban:

sudo /etc/init.d/fail2ban restart

È possibile che funzioni ora, l'ho impostato in questo modo e funziona.


Penso che non hai capito la mia domanda! Fail2ban fa quello che voglio: guardare i registri e mettere al bando gli aggressori. Ma quel divieto, cosa dovrebbe fare IPtables, non funziona. Posso ANCORA ACCEDERE al server, con la configurazione delle regole sopra menzionata.
antivirtel,

Siamo spiacenti, avevo fretta, quindi ho capito male e dato che avevo lo stesso problema, che ho risolto con l'aggiunta di jail.local, ho pensato che sarebbe stato d'aiuto. Sfortunatamente, se hai impostato tutto correttamente, non so quale sia il problema, ma spero che qualcun altro lo faccia.
enedene,

0

Hai elencato "Fail2ban 0.8.3-2sid1" come installato. Questa è una configurazione non supportata. I pacchetti Sid non devono essere installati in un ambiente stabile.

Corro Debian 6 (Squeeze), che è stato aggiornato da Lenny, in una macchina virtuale specificamente come server SSH per la mia casa. Uso anche fail2ban. Ho eseguito il tuo test n. 1 e tutto ha funzionato come dovrebbe. Non riesco ad accedere per il numero massimo di tentativi, quindi le mie richieste di accesso sono state eliminate per 60 secondi.

Il mio elenco di versioni:

  • / etc / debian_version = 6.0.1
  • fail2ban = 08..4-3
  • iptables = 1.4.8
  • openssh-server = 1: 5.5p1-6


In tal caso, ti consiglio di fare un dist-upgrade.
James Sumners,

oh, non è troppo facile, ma riuscirò a farlo in qualche modo ... - forse una reinstallazione pulita
antivirtel

sed -i 's/lenny/squeeze/' /etc/apt/sources.list && apt-get update && apt-get dist-upgrade. È abbastanza semplice.
James Sumners,

sì, ma c'è qualche possibilità di non avviarsi la prossima volta ... le note di rilascio hanno scritto, che il nuovo kenel + il nuovo sistema udev ... - ha avuto successo con la tua macchina?
antivirtel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.