Melihat semua aturan iptables

145

Apakah ada cara untuk melihat iptablesaturan sedikit lebih detail?

Saya baru-baru ini menambahkan masquerade ke sejumlah IP:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
service iptables save
service iptables restart

Yang telah melakukan apa yang saya inginkan, tetapi ketika saya menggunakan:

iptables -L

Saya mendapatkan output yang sama seperti biasanya:

Chain INPUT (policy ACCEPT)
target    prot opt source        destination

Chain FORWARD (policy ACCEPT)
target    prot opt source        destination

Chain OUTPUT (policy ACCEPT)
target    prot opt source        destination

Bagaimana saya bisa melihat aturan termasuk yang saya tambahkan? (sistem adalah CentOS 6)

TheLovelySosisage
sumber

Jawaban:

117

Bila menggunakan -L, --listpilihan untuk daftar aturan firewall saat ini, Anda juga perlu menentukan tabel Netfilter yang tepat (salah filter, nat, mangle, rawatau security). Jadi, jika Anda telah menambahkan aturan untuk natmeja, Anda harus secara eksplisit menentukan tabel ini menggunakan -t, --tableopsi:

iptables --table nat --list

Atau menggunakan formulir singkat opsi:

iptables -t nat -L

Jika Anda tidak menentukan tabel tertentu, filtertabel tersebut digunakan sebagai default.


Untuk hasil yang lebih cepat, ada baiknya juga menyertakan opsi -n, --numericuntuk mencetak alamat IP numerik alih-alih nama host, sehingga menghindari kebutuhan untuk menunggu pencarian DNS terbalik.

Anda bisa mendapatkan informasi lebih dengan termasuk -v, --verbosepilihan.

Anthony Geoghegan
sumber
113

iptablesmengontrol lima meja yang berbeda: filter, nat, mangle, rawdan security. Pada panggilan yang diberikan, iptableshanya menampilkan atau memodifikasi salah satu dari tabel ini, ditentukan oleh argumen ke opsi -t(default ke filter). Untuk melihat kondisi lengkap firewall, Anda harus memanggil iptablessetiap tabel secara berturut-turut.

Selain itu, untuk mendapatkan representasi aturan yang akurat, Anda harus memberikan opsi -v. Kalau tidak, beberapa kriteria penting dihilangkan dalam output, seperti antarmuka dalam aturan filter (misalnya aturan yang mengatakan "terima semuanya" dan aturan yang mengatakan "terima semua pada antarmuka loopback" hanya dapat dibedakan dengan -v).

Jadi, untuk mendapatkan presentasi lengkap dari aturan netfilter, Anda perlu

iptables -vL -t filter
iptables -vL -t nat
iptables -vL -t mangle
iptables -vL -t raw
iptables -vL -t security

Atau, Anda dapat memanggil iptables-saveprogram, yang menampilkan semua aturan di semua tabel dalam format yang dapat diuraikan iptables-restore. Format ini juga cukup dapat dibaca oleh manusia (cukup banyak seperti serangkaian panggilan ke iptablesperintah untuk membangun tabel).

Gilles
sumber
56

iptables -Smelakukan trik untukku. Tampaknya daftar semua aturan aktif, bahkan ketika layanan tidak aktif.

Dari halaman manual:

-S, --list-rules [rantai] Cetak semua aturan dalam rantai yang dipilih. Jika tidak ada rantai yang dipilih, semua rantai dicetak seperti iptables-save. Seperti setiap perintah iptables lainnya, ini berlaku untuk tabel yang ditentukan (filter adalah default).

Cameron
sumber
Ini adalah jawaban yang sangat kwl, saya juga memperhatikan bahwa / sbin / service iptables status memberikan output yang serupa
TheLovelySausage
6
+1. Tidak ada 'tampaknya' tentang hal itu- dari halaman manual: "-S, Cetak semua aturan dalam rantai yang dipilih. Jika tidak ada rantai yang dipilih, semua rantai dicetak seperti iptables-save". Inilah yang biasanya saya butuhkan.
Mike S
3
saya tidak menemukan ini menjadi kasusnya. iptables -Stidak menunjukkan semua aturan nat saya, yang dapat saya lihat ketika saya menjalankaniptables -L -t nat
mulllhausen
1
@ MikeS Dari halaman manual, KEDUA perintah beroperasi hanya pada tabel yang ditentukan, filter secara default. "Seperti setiap perintah iptables lainnya, ini berlaku untuk tabel yang ditentukan (filter adalah default)." Kata-kata dalam dokumentasi disalin hampir identik untuk -S dan -L, mereka hanya berbeda dalam memformat output, bukan aturan yang dicetak. Ini berlaku setidaknya pada Ubuntu 16.04 yang pada sistem saya adalah iptables v1.6.0.
Scott
Setuju dengan @ullullhausen di sini. Saya membutuhkan "sudo iptables --table nat --list" untuk menunjukkan aturan tabel nat saya. bendera "-S" dengan sendirinya tidak menunjukkannya.
Robert Oschler
15

Apa yang saya lakukan adalah mengeksekusi iptables-save > iptables_bckp, ini akan membuat cadangan semua layer, lalu mengedit file dan mengembalikan iptablesiptables-restore < iptables_bckp

# iptables-save > iptables_bckp
# vim iptables_bckp
# iptables-restore < iptables_bckp

Anda dapat membuat cadangan ganda sehingga Anda dapat memodifikasi salah satunya tanpa kehilangan iptables masa lalu Anda.

Ini adalah praktik pribadi, saya tidak mengatakan ini adalah cara terbaik tetapi bagi saya bekerja dengan baik.

Cobalah

Takomi
sumber
Ini adalah satu-satunya jawaban realistis yang saya temukan sejauh ini yang sebenarnya membuang semua tabel juga.
Chris Harrington
4

The iptablesperintah juga mengharuskan Anda untuk menentukan tabel dinyatakan default untuk menyaring meja. Jadi cobalah:

iptables -t nat -L
pengguna425
sumber
1

Anda dapat gunakan:

# lsmod | grep ip_tables
ip_tables              13193  4 iptable_raw,iptable_mangle,iptable_nat,iptable_filter

Untuk menemukan semua tabel dan menampilkan aturan khusus dalam tabel.

Tur Le
sumber
1

Jika itu benar-benar membantu Anda bisa menulis skrip bash dan meletakkannya di folder yang direferensikan oleh jalur Anda atau referensi melalui alias di file ~ / .bashrc.

AllRules.sh

#!/bin/bash

 echo "Filter table:"
 iptables -t filter -vL

 echo "Nat table:"
 iptables -t nat -vL

 echo "Mangle table:"
 iptables -t mangle -vL

 echo "Raw table:"
 iptables -t raw -vL

 echo "Security table:"
 iptables -t security -vL

 echo 
 echo "All rules in all tables printed"

Ingatlah untuk memberikan skrip bash baru Anda dengan izin chmod

Jika izin merupakan masalah, Anda mungkin harus menambahkan sudo di depan semua iptablesperintah.

ob1
sumber
0
iptables -vnxL
iptables -vnxL -tnat

mungkin tambahan, meskipun ini sangat jarang digunakan:

iptables -vnxL -traw
iptables -vnxL -tmangle
iptables -vnxL -tsecuriy
sja
sumber