cara terbaik untuk menghapus semua aturan iptables


83

Saat ini saya memiliki cuplikan ini:

# flush all chains
iptables -F
iptables -t nat -F
iptables -t mangle -F
# delete all chains
iptables -X

Apakah ada kemungkinan bahwa beberapa aturan kedap akan tetap hidup setelah menjalankan ini?

Idenya adalah untuk memiliki konfigurasi iptables yang benar-benar bersih, yang dapat dengan mudah diganti dengan aturan baru (parameter nevermind / parameter ifconfig).

Jawaban:


107

Untuk menjawab pertanyaan Anda dengan singkat, tidak: tidak akan ada aturan "sisa" setelah menyiram setiap tabel. Untuk kepentingan menyeluruh, Anda mungkin ingin mengatur kebijakan untuk built-in INPUTdan FORWARDrantai ACCEPT, juga:

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t mangle -F
iptables -F
iptables -X

Hapus aturan ip6tables:

ip6tables -P INPUT ACCEPT
ip6tables -P FORWARD ACCEPT
ip6tables -P OUTPUT ACCEPT
ip6tables -t nat -F
ip6tables -t mangle -F
ip6tables -F
ip6tables -X

... dan itu harus dilakukan. iptables -nvLharus menghasilkan output ini (atau sangat mirip):

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

9
Anda lupa tentang 'mentah': iptables -t mentah -F iptables -t mentah -X
— kK-Storm

there would not be any "leftover" rules after flushing every tableOP tidak menyiram setiap tabel. Anda juga tidak. Ini terlihat seperti jika Anda ingin teliti . Dan Anda mungkin ingin menambahkan iptables -t "$table" -Z. Harap perhatikan bahwa dengan cara ini Anda membuat hardcoding daftar tabel dan rantai mereka. Jadi saya serius akan mempertimbangkan solusi save-restore . Atau Anda bisa membongkar iptables .
— x-yuri

23

Ini akan benar-benar mereset sistem iptables Anda menjadi sangat mendasar:

iptables-save | awk '/^[*]/ { print $1 } 
                     /^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; }
                     /COMMIT/ { print $0; }' | iptables-restore

Semua kebijakan akan disetel ulang ke ACCEPT serta membilas setiap tabel yang sedang digunakan. Semua rantai selain rantai bawaan tidak akan ada lagi.


1
Retas yang rapi! Saya tidak akan bergantung padanya, karena selalu ada kemungkinan bahwa perubahan kecil pada format save / restore mungkin merusaknya. Mungkin yang terbaik untuk tetap menggunakan API yang iptablesdisediakan alat secara eksplisit, IMO.
— Steven Monday

3
Saya berubah pikiran: format data tidak mungkin berubah banyak lagi, karena ini digunakan secara luas. +1.
— Steven Monday

2
+1, retas yang menarik
— Sam Halicke

Ini berhasil menghilangkan sisa rantai UFW, sesuatu yang tidak diterima oleh jawaban yang diterima.
— l0b0

Itu detail kecil, tetapi Anda mungkin ingin mengganti yang pertama print $1dengan print $0menjadi konsisten :)
— x-yuri

2

Setiap kali saya perlu firewall dinonaktifkan adalah sesuatu seperti ini:

  • iptables-save > iptables.bak
  • service iptables stop (saya menggunakan fedora)

1

Anda cukup membongkar iptablesmodul dari kernel:

modprobe -r iptable_raw iptable_mangle iptable_security iptable_nat iptable_filter

Sayangnya, UPD terlalu bagus untuk menjadi kenyataan. Selama ada aturan atau rantai yang ditentukan pengguna dalam tabel, jumlah referensi modul yang sesuai adalah 1, dan modprobe -rgagal. Anda mungkin menghapus aturan dan rantai yang ditentukan pengguna seperti:

echo $'*raw\nCOMMIT\n*mangle\nCOMMIT\n*security\nCOMMIT\n*nat\nCOMMIT\n*filter\nCOMMIT' | iptables-restore

atau:

iptables-save | awk '/^[*]/ { print $1 "\nCOMMIT" }' | iptables-restore

Selain itu, Anda mungkin ingin membongkar modul dengan cara ini (tidak ada nama modul hardcoding):

lsmod | egrep ^iptable_ | awk '{print $1}' | xargs -rd\\n modprobe -r

Sisi baiknya, setelah ini iptables-savemenghasilkan output kosong yang bagus :)


Itu bisa menjadi palu di sini. Terima kasih.
— Konrad Gajewski

0

Seseorang dapat melakukan ini dalam 1 atau 2 perintah:

 $ sudo iptables-save > iptables.bak
 $ sudo iptables -F

Hasil:

$ sudo iptables -nvL
Chain INPUT (policy ACCEPT 3138 packets, 5567K bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 3602 packets, 6547K bytes)
pkts bytes target     prot opt in     out     source               destination         

5
Jika kebijakan default saat ini diatur ke DROP, ini adalah cara cepat untuk dikunci dari server. Jadi, tidak, ini bukan proses perintah 1 atau 2. Anda harus terlebih dahulu mengatur untuk MENERIMA jika itu tidak saat ini.
— RyanH

0

Saya harus memblokir semua koneksi baru-baru ini yang akhirnya saya lakukan

iptables-policy INPUT DROP
iptables-policy OUTPUT DROP
iptables-policy FORWARD DROP

untuk menghemat saya akan merekomendasikan yang berikut ini

Ubuntu:

/etc/init.d/iptables save
/sbin/service iptables save

RedHat / CentOS:

/etc/init.d/iptables save
/sbin/iptables-save

Selain cadangan semua aturan ufw saat ini saya pernah menggunakan ini di masa lalu

cp /lib/ufw/{user.rules,user6.rules} /<BACKUP LOCATION> 
cp /lib/ufw/{user.rules,user6.rules} ./

Saya pikir ini mungkin berguna untuk referensi di masa mendatang. Kupikir aku akan berbagi.


0

Cadangkan konfigurasi ke iptables_backup.conf dan bersihkan semua aturan.

iptables-save | tee iptables_backup.conf | grep -v '\-A' | iptables-restore

Untuk mengembalikan konfigurasi sebelumnya:

iptables-restore < iptables_backup.conf
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.