Apakah saya perlu mengembalikan aturan iptable setiap kali boot?

18

Setiap kali saya reboot saya kehilangan aturan iptables yang membuat saya begitu looong untuk masuk. Saya tahu saya bisa menyimpannya dan mengembalikannya saat boot , tetapi apakah ada cara untuk menyimpannya selamanya? Apakah saya benar-benar perlu mengembalikannya saat booting setiap waktu? Serius?

Masalahnya adalah saya memiliki daftar IP BESAR di mana saya menggunakan loop sementara untuk memuatnya. Ini bisa memakan waktu hingga 10 menit.

Ini adalah server FTP rumah saya. Ini adalah vm kecil dengan ram 1GB dan daya pemrosesan yang sangat sedikit. Ada begitu banyak IP karena saya sudah cukup banyak menyerah di benua Asia. Saya tidak perlu mereka memukul server FTP saya setiap hari dengan kekerasan. Saya juga memblokir pemerintah. monitor, pelacak dan pengirim spam.

Ini adalah loop sementara yang saya gunakan untuk memuat dalam daftar.

grep INPUT block.list | while read LISTA; do sudo iptables -A $LISTA; done
capdragon
sumber
Pertanyaan Anda agak ambigu, ketika Anda mengatakan 'selamatkan mereka selamanya' Saya pikir Anda bermaksud memasukkan ke dalam sebuah file, tetapi setelah membaca sisanya, sepertinya itu yang Anda maksud adalah Anda tidak ingin harus memuatnya secara manual. saat boot setiap kali. Juga, saya pikir jumlah aturan yang perlu dimuat ulang akan sama sehingga masih akan memakan waktu, tetapi Anda tidak harus melakukannya secara manual, mengikuti jawaban pankaj.
Jeff Welling
kemungkinan duplikat iptables diatur ulang saat server
dinyalakan

Jawaban:

21

Pertama, buat file dengan isi iptables-save:

sudo iptables-save > /etc/iptables_rules

Tidak masalah di mana Anda meletakkan file, yang harus Anda lakukan adalah memastikan bahwa baris berikutnya merujuk ke file yang sama. Selanjutnya, buka /etc/rc.localdan tambahkan baris ini:

/sbin/iptables-restore < /etc/iptables_rules

Mulai sekarang, setiap kali komputer Anda menghidupkan atau me-restart iptables akan memuat aturan dari file yang Anda tentukan.

pankaj sharma
sumber
1
Saya mendapatkan -bash: /etc/iptables_rules: Permission deniedperintah pertama. Yang aneh menggunakan sudo dan sebagainya.
capdragon
5
Saya harus menggunakan sudo sh -c '/sbin/iptables-save > /etc/iptables.save'untuk mengatasi Permission deniedkesalahan. Referensi
capdragon
Anda dapat membuat file di direktori mana pun, tidak wajib membuat file di / etc /
pankaj sharma
8
Saya tidak akan merekomendasikan menggunakan /etc/rc.localuntuk ini. Itu dieksekusi lebih lambat dari sisa startup sistem Anda dan berpotensi meninggalkan sistem Anda dalam keadaan non-firewall. Saya menyarankan untuk menempatkan skrip satu baris ini di /etc/network/if-up.d/firewall(file baru). Ini memastikan itu akan dieksekusi setiap kali Anda mengaktifkan antarmuka jaringan Anda.
gertvdijk
2
Kesalahan izin adalah normal / diharapkan. sudo hanya berlaku untuk perintah sebelum ">", pengalihan file dilakukan secara terpisah oleh shell Anda.
ImaginaryRobots
16
apt-get install iptables-persistent

Saat menginstal, ini akan menyimpan konfigurasi iptables Anda saat ini. Kalau tidak, Anda dapat menyimpannya di file-file ini (tergantung pada v4 atau v6) dan iptables-persistent akan memuatnya saat boot :)

iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
Matt Fletcher
sumber
1

Jika Anda memiliki banyak aturan, Anda juga harus mempertimbangkan menggunakan ipset bersamaan dengan iptables. Ipset menggunakan tabel basis data yang diindeks dan jauh lebih cepat daripada iptables ketika mencari alamat untuk memutuskan apakah akan menerima atau menolak.

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

Bob Brunius
sumber