Czy muszę przywracać reguły iptable za każdym razem podczas uruchamiania?

18

Za każdym razem, gdy uruchamiam ponownie, tracę zasady iptables, które zajęły mi tak dużo czasu. Wiem, że mogę je zapisać i przywrócić podczas rozruchu , ale czy istnieje coś takiego, aby je zapisać na zawsze? Czy naprawdę muszę je przywracać przy każdym uruchomieniu? Poważnie?

Problem polega na tym, że mam OGROMNĄ listę adresów IP, w których używam pętli while, aby je załadować. Może to potrwać do 10 minut.

To jest mój domowy serwer FTP. Jest to mały VM z 1 GB RAM i bardzo małą mocą obliczeniową. Jest tak wiele adresów IP, ponieważ prawie zrezygnowałem z kontynentu azjatyckiego. Nie potrzebuję, żeby codziennie atakowały mój serwer FTP z brutalną siłą. Blokuję również rządowy. monitory, urządzenia śledzące i spamerzy.

To jest pętla while, której używam do ładowania listy.

grep INPUT block.list | while read LISTA; do sudo iptables -A $LISTA; done
capdragon
źródło
Twoje pytanie jest trochę dwuznaczne, kiedy mówisz „zapisz je na zawsze”, pomyślałem, że masz na myśli jak w pliku, ale po przeczytaniu reszty brzmi to tak, jakby to znaczyło, że nie chcesz ponownie ładować ich ręcznie przy starcie za każdym razem. Myślę też, że liczba reguł, które należy ponownie załadować, będzie taka sama, więc potrwa to trochę dłużej, ale nie będziesz musiał tego robić ręcznie, zgodnie z odpowiedzią pankaj.
Jeff Welling
możliwa duplikacja iptables resetuje się po
ponownym

Odpowiedzi:

21

Najpierw utwórz plik z zawartością iptables-save:

sudo iptables-save > /etc/iptables_rules

Tak naprawdę nie ma znaczenia, gdzie umieścisz plik, wszystko, co musisz zrobić, to upewnić się, że następny wiersz odnosi się do tego samego pliku. Następnie otwórz /etc/rc.locali dodaj ten wiersz:

/sbin/iptables-restore < /etc/iptables_rules

Odtąd za każdym razem, gdy komputer włącza się lub uruchamia ponownie, iptables będzie ładować reguły z określonego pliku.

pankaj sharma
źródło
1
Dostaję -bash: /etc/iptables_rules: Permission deniedpierwsze polecenie. Co jest dziwne przy użyciu sudo i wszystkich innych.
capdragon
5
Musiałem użyć, sudo sh -c '/sbin/iptables-save > /etc/iptables.save'aby obejść Permission deniedbłąd. Odniesienie
capdragon
możesz utworzyć plik w dowolnym katalogu tworzenie pliku w / etc /
pankaj sharma
8
Nie polecam używać /etc/rc.localdo tego. Jest wykonywany później niż reszta uruchamiania systemu i potencjalnie pozostawia system w stanie nie zapory. Sugerowałbym umieszczenie tego skryptu jednowierszowego w /etc/network/if-up.d/firewall(nowym pliku). Dzięki temu będzie on wykonywany przy każdym włączeniu interfejsów sieciowych.
gertvdijk
2
Błąd uprawnień jest normalny / oczekiwany. sudo stosuje się tylko do polecenia poprzedzającego „>”, przekierowanie pliku jest wykonywane osobno przez powłokę.
ImaginaryRobots
16
apt-get install iptables-persistent

Podczas instalacji powinien zapisać aktualną konfigurację iptables. W przeciwnym razie możesz zapisać je do tych plików (w zależności od wersji 4 lub 6), a iptables-persistent załaduje je przy starcie :)

iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
Matt Fletcher
źródło
1

Jeśli masz wiele reguł, powinieneś również rozważyć użycie ipset w połączeniu z iptables. Ipset korzysta z indeksowanej tabeli bazy danych i jest znacznie szybszy niż iptables, gdy szuka adresu, aby zdecydować, czy przyjąć, czy odmówić.

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

Bob Brunius
źródło