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.