Devo ripristinare le regole iptable ogni volta all'avvio?


18

Ogni volta che riavvio, perdo le regole di iptables che mi hanno portato così tanto ad entrare. So di poterli salvare e ripristinarli all'avvio , ma c'è comunque un modo per salvarli per sempre? Devo davvero ripristinarli all'avvio ogni volta? Sul serio?

Il problema è che ho un ENORME elenco di IP in cui uso un ciclo while per caricarli. Questo può richiedere fino a 10 minuti.

Questo è il mio server FTP di casa. È un piccolo vm con 1 GB di RAM e una potenza di elaborazione molto ridotta. Ci sono così tanti IP perché ho praticamente rinunciato al continente asiatico. Non ho bisogno che colpiscano il mio server FTP ogni giorno con forza bruta. Inoltre blocco gov. monitor, tracker e spammer.

Questo è il ciclo while che utilizzo per caricare nell'elenco.

grep INPUT block.list | while read LISTA; do sudo iptables -A $LISTA; done

La tua domanda è un po 'ambigua, quando dici "salvali per sempre" pensavo che volessi dire in un file, ma dopo aver letto il resto suona come quello che realmente intendi è che non vuoi ricaricarli manualmente all'avvio ogni volta. Inoltre, penso che il numero di regole che devono essere ricaricate sarà lo stesso, quindi ci vorrà ancora un po ', ma non dovrai farlo manualmente, seguendo la risposta di pankaj.
Jeff Welling,

Risposte:


21

Innanzitutto, crea un file con il contenuto di iptables-save:

sudo iptables-save > /etc/iptables_rules

Non importa dove metti il ​​file, tutto quello che devi fare è assicurarti che la riga successiva faccia riferimento allo stesso file. Quindi, apri /etc/rc.locale aggiungi questa riga:

/sbin/iptables-restore < /etc/iptables_rules

D'ora in poi, ogni volta che il computer si accende o riavvia iptables caricherà le regole dal file specificato.


1
Ottengo -bash: /etc/iptables_rules: Permission deniedil primo comando. Il che è strano usando sudo e tutto il resto.
capdragon,

5
Ho dovuto usare sudo sh -c '/sbin/iptables-save > /etc/iptables.save'per aggirare l' Permission deniederrore. Riferimento
capdragon

puoi creare file in qualsiasi directory non è obbligatorio creare file in / etc /
pankaj sharma

8
Non consiglierei di usarlo /etc/rc.localper questo. Viene eseguito più tardi rispetto al resto dell'avvio del sistema e potenzialmente lascia il sistema in uno stato senza firewall. Suggerirei di inserire questo script di una riga in /etc/network/if-up.d/firewall(nuovo file). Questo si assicura che verrà eseguito ogni volta che si abilitano le interfacce di rete.
gertvdijk,

2
L'errore di autorizzazione è normale / previsto. sudo si applica solo al comando prima di ">", il reindirizzamento dei file viene eseguito separatamente dalla shell.
ImaginaryRobots

16
apt-get install iptables-persistent

Al momento dell'installazione, dovrebbe salvare la tua attuale configurazione di iptables. Altrimenti puoi salvarli in questi file (a seconda della v4 o v6) e iptables-persistent li caricherà all'avvio :)

iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6

1

Se hai molte regole dovresti anche considerare di usare ipset insieme a iptables. Ipset utilizza una tabella di database indicizzata ed è molto più veloce di iptables quando cerca un indirizzo per decidere se accettare o rifiutare.

http://ipset.netfilter.org/index.html

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.