GNU/Linux >> Linux Esercitazione >  >> Linux

Come far scadere le regole di iptables?

Soluzione 1:

Se intendi che iptables rimuova completamente la regola da solo, non sarai in grado di farlo, per quanto ne so. Qual è lo scopo di questo? Se hai bisogno di una sorta di ban temporaneo automatico, la soluzione standard è fail2ban.

In alternativa puoi usare un cron job per rimuovere la regola che stai aggiungendo, o, meglio se vuoi farlo in modo interattivo, un at lavoro:

iptables -I INPUT -s 192.168.1.100 -j DROP
echo "iptables -D INPUT -s 192.168.1.100 -j DROP" | at @10pm 

Dai anche un'occhiata al recent modulo di iptables. Questo con il suo --seconds opzione può essere di aiuto, a seconda delle vostre effettive esigenze. man iptables per ulteriori informazioni.

Soluzione 2:

Metti un commento con un timestamp (probabilmente secondi dall'epoca) nelle regole. Controlla periodicamente le regole scadute.

Si noti che il kernel Linux più recente ha il supporto per il caricamento dinamico degli indirizzi IP in una cache consultata dalle regole iptable invece che come regole iptables dirette.

Esempio:

iptables  -A INPUT -s 192.168.200.100/32 -m comment --comment "expire=`date -d '+ 5 min' +%s`" -j DROP 
iptables -L INPUT -n --line-numbers | tac | perl -ne 'next unless /(^\d+).*expire=(\d+)/; if ($2 < time) { print "iptables -D INPUT $1\n"; }'

Ovviamente puoi iptables -D INPUT $1 invece di stampare il comando.

Soluzione 3:

iptables ha un metodo per aggiungere automaticamente gli indirizzi IP a un elenco se vengono soddisfatte le condizioni definite dall'utente. Uso quanto segue per evitare tentativi di hacking automatizzati alla mia porta ssh:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --name ssh --seconds 60 --reap -j DROP

Questo aiuta a limitare i tentativi automatici di ottenere l'accesso al server limitando i tentativi di connessione dallo stesso indirizzo IP a uno ogni 60 secondi.

Se vuoi consentire un determinato numero di tentativi in ​​un intervallo di tempo, ad esempio 4 in 5 minuti, e in caso di errore inserirli nella blacklist per un periodo più lungo, ad esempio 24 ore, puoi fare qualcosa del genere:

iptables -X black
iptables -N black
iptables -A black   -m recent --set   --name blacklist   -j DROP

iptables -X ssh
iptables -N ssh
iptables -I ssh 1   -m recent --update    --name blacklist   --reap   --seconds 86400     -j DROP
iptables -I ssh 2   -m recent --update    --name timer       --reap   --seconds   600     --hitcount 4   -j black
iptables -I ssh 3   -m recent --set       --name timer   -j ACCEPT

iptables -A INPUT   -p TCP --dport ssh   -m state --state NEW -j ssh

In quanto sopra, creiamo 2 catene; "ssh" e "black" e 2 liste; "timer" e "lista nera".

Brevemente; l'ultima catena mostrata sopra è la "porta" nella catena ssh.

  • La regola 1 nella catena ssh verifica se l'IP di origine è nella lista "lista nera". In tal caso, la connessione viene interrotta e il timer della lista nera di 24 ore viene riavviato. Se la regola 1 è falsa, passiamo alla regola 2.
  • La regola 2 nella catena ssh verifica se l'IP di origine ha effettuato più di 4 tentativi di connessione in 5 minuti. In tal caso, invia il pacchetto alla catena "nera" dove viene aggiunto alla lista "lista nera". La catena "nera" interrompe quindi la connessione e il gioco è fatto.
  • La regola 3 nella catena "ssh" viene raggiunta solo se le regole 1 e 2 sono false. In tal caso, il pacchetto viene ACCETTATO e l'IP di origine viene aggiunto all'elenco "timer" in modo da poter monitorare la frequenza dei tentativi di connessione.

L'opzione "--reap" dice al kernel di cercare nell'elenco ed eliminare tutti gli elementi che sono più vecchi del limite di tempo impostato; 5 minuti per la lista "timer", e 24 ore per la lista "blacklist".

nota:gli spazi extra sono per la leggibilità e sono facoltativi nel tuo script di shell.

Soluzione 4:

IPTables ha una caratteristica fatta apposta per questo:IP Set. Fai la regola una volta e persiste come al solito ma controlla un insieme di ips (o porte) per le corrispondenze. La cosa interessante è che questo set può essere aggiornato in modo dinamico ed efficiente senza disturbare il resto del firewall.

Il sito principale, esempi.

Quindi, per usarlo, dovresti comunque usare at o cron per programmare la rimozione.

Soluzione 5:

Puoi utilizzare fail2ban per vietare gli indirizzi IP e configurare il periodo di tempo per cui un indirizzo verrà bannato.


Linux
  1. Come svuotare le regole di iptables

  2. Come svuotare le regole di iptables

  3. Come visualizzare ed eliminare le regole di Iptables:elenco e svuotamento

  4. CentOS / RHEL:come rendere le regole iptable persistenti durante i riavvii

  5. Come (ulteriormente) garantire la sicurezza SSH?

Come usare Port Knocking su Ubuntu per nascondere la porta SSH

Come configurare iptables Firewall in Linux

Procedura:Configurazione di base del file IPTables

Come bloccare il tuo server CentOS con IPtables

Come proteggere un firewall Linux con le regole IPtables

Come fare in modo che ssh acceda come l'utente giusto?