Bagaimana saya bisa membuat seperangkat aturan iptables tertentu permanen?

42

Apakah ada "praktik terbaik" atau standar untuk membuat beberapa aturan iptables permanen? Maksud saya: secara otomatis diterapkan pada reboot sistem?

Saya menggunakan VPS dengan Ubuntu Server 10.04 LTS (Lucid Lynx).

Terima kasih.

EDIT BESAR: Saya tidak ingin aturan APAPUN untuk dipertahankan (seperti halnya iptables-persistentpaket). Saya hanya ingin set spesifik saya untuk dimuat ulang ... jika aturan lain akhirnya ditambahkan dengan menjalankan iptables, ini harus dibuang ...

J. Bruni
sumber

Jawaban:

52

Metode paling sederhana adalah dengan menggunakan iptables-save dan iptables-restore untuk menyimpan aturan iptables yang saat ini didefinisikan untuk sebuah file dan (kembali) memuatnya (misalnya, saat reboot).

Jadi, misalnya, Anda akan lari

sudo iptables-save | sudo tee /etc/iptables.conf

untuk menyimpan aturan iptables Anda saat ini ke /etc/iptables.confdan kemudian masukkan baris ini di /etc/rc.local:

# Load iptables rules from this file
iptables-restore < /etc/iptables.conf
Riccardo Murri
sumber
3
+1 Jawaban Anda sempurna untuk pertanyaan awal saya. Itu juga membuat saya menyadari apa yang sebenarnya saya inginkan, jadi saya harus mengubah pertanyaan dari "Bagaimana saya bisa membuat aturan iptables permanen?" ke "Bagaimana saya bisa membuat seperangkat aturan iptables tertentu menjadi permanen?"
J. Bruni
Jika Anda bisa, tolong, lakukan sedikit edit pada jawaban Anda untuk mencerminkan perubahan dalam pertanyaan ... Saya akan dengan senang hati menerimanya! Saya perlu menggunakan iptables-savesekali, dan memuat ulang selalu (iptables-restore di /etc/rc.local terdengar bagus).
J. Bruni
1
Jika Anda mendapatkan permission deniedketika Anda mencoba untuk menggunakan >maka jawaban Stack Overflow ini akan berguna.
David Tuite
2
Gunakan sudo sh -c "iptables-save > /etc/iptables.conf"sebagai gantisudo iptables-save > /etc/iptables.conf
Rajat Gupta
31

Pembaruan cepat untuk ini karena Anda mungkin menggunakan 12,04 sekarang dan semuanya lebih baik.

The iptables-persistentpaket sekarang memecahkan masalah ini. Untuk memasang,

sudo apt-get install iptables-persistent

Aturan yang ditentukan saat paket diinstal disimpan dan digunakan pada setiap boot berikutnya. Aturan baru yang dimuat dibuang saat reboot.

File konfigurasi jika Anda perlu untuk mengubah mereka (sekali iptables-persistentdiinstal) adalah /etc/iptables/rules.v4atau /etc/iptables/rules.v6untuk IPv4 dan IPv6 iptables masing-masing.

pengguna172020
sumber
Jika Anda mengedit /etc/iptables/rules.v4, bagaimana Anda menerapkannya [secara resmi]? Saat ini saya sedang melakukansudo iptables-restore < /etc/iptables/rules.v4
Bruno Bronosky
24

Lebih baik daripada /etc/rc.localmenambahkan baris /etc/network/interfacessetelah menyimpan aturan iptable, seperti ini

post-up iptables-restore < /etc/iptables.up.rules

atau sama dengan menaruh file di dalam /etc/network/if-down.d/atau /etc/network/if-post-down.d/atau /etc/network/if-pre-up.d/atau /etc/network/if-up.d/.

Kreker
sumber
1
@ Kreker: tolong lakukan klarifikasi, bagaimana pendekatan Anda lebih baik daripada menjalankan skrip pemulihan dari rc.local? Apakah pendekatan lain tidak berhasil dalam beberapa kasus?
Rajat Gupta
2
Menambahkannya ke konfigurasi jaringan menyebabkannya dimuat ulang setelah Anda menjalankan perintah "restart layanan jaringan". Ini tidak terbatas pada sistem mulai.
K. Darien Freeheart
4
Mengapa satu iptables post-up-restore ketika sebuah antarmuka turun?
alphadogg