Saat ini saya memiliki rantai OUTPUT saya yang diatur ke DROP. Saya ingin mengubahnya menjadi TOLAK, sehingga saya memiliki petunjuk bahwa firewall saya menghentikan saya untuk mendapatkan suatu tempat daripada masalah dengan layanan apa pun yang saya coba akses (langsung menolak alih-alih waktu habis). Namun, iptables sepertinya tidak peduli dengan ini. Jika saya mengedit file aturan tersimpan saya secara manual dan mencoba mengembalikannya, saya mendapatkannya iptables-restore v1.4.15: Can't set policy 'REJECT' on 'OUTPUT' line 22: Bad policy name
dan menolak memuat aturan. Jika saya mencoba untuk mengatur ini secara manual ( iptables -P OUTPUT REJECT
), saya mendapatkan iptables: Bad policy name. Run 'dmesg' for more information.
tetapi tidak ada output di dmesg.
Saya telah mengkonfirmasi aturan yang sesuai dikompilasi ke dalam kernel dan saya telah reboot untuk memastikan itu dimuat:
# CONFIG_IP_NF_MATCH_TTL is not set
CONFIG_IP_NF_FILTER=y
***
CONFIG_IP_NF_TARGET_REJECT=y
***
CONFIG_IP_NF_TARGET_LOG=y
CONFIG_IP_NF_TARGET_ULOG=y
(Tanda bintang ditambahkan untuk menyoroti aturan yang berlaku)
Segala sesuatu yang saya dapat temukan menyatakan bahwa TOLAK adalah kebijakan / target yang valid (secara umum), tetapi saya tidak dapat menemukan apa pun yang mengatakan itu tidak valid untuk rantai INPUT, FORWARD, atau OUTPUT. Google-fu saya tidak membantu. Saya menggunakan Gentoo, jika itu ada bedanya. Adakah yang punya wawasan di sini?
sumber
iptables
aturan yang dipermasalahkan?Jawaban:
REJECT
adalah ekstensi target , sedangkan kebijakan berantai harus menjadi target . Halaman manual mengatakan bahwa (meskipun tidak benar-benar jelas), tetapi beberapa dari apa yang dikatakannya salah.Kebijakan hanya dapat
ACCEPT
atauDROP
pada rantai bawaan. Jika Anda ingin efek menolak semua paket yang tidak cocok dengan aturan sebelumnya, pastikan aturan terakhir cocok dengan semua dan menambahkan aturan denganREJECT
ekstensi target. Dengan kata lain, setelah menambahkan semua aturan yang relevan, lakukaniptables -t filter -A OUTPUT -j REJECT
.Lihat utas "apa kebijakan rantai yang mungkin" pada daftar netfilter untuk lebih jelasnya.
sumber
Saya tidak dapat menemukannya didokumentasikan, tetapi referensi di sini menunjukkan bahwa satu-satunya kebijakan yang diizinkan adalah ACCEPT atau DROP. Hal ini ditegaskan dengan melihat sumber dari
libiptc
(yang bertanggung jawab untuk memanipulasi aturan) sekitar garis 2429, di mana kode memilikiUtas asli menyarankan hal terbaik yang harus dilakukan adalah menambahkan TOLAK di akhir rantai yang seharusnya
iptables -A OUTPUT -j REJECT
.Perhatikan bahwa kode sebelum ini adalah:
Jadi, Anda tidak dapat menetapkan kebijakan pada rantai yang Ditetapkan Pengguna sama sekali.
sumber
-p
untuk mencocokkan protokol; maksudnya-A
seperti jawaban saya mengatakan.REJECT
padaOUTPUT
tidak masuk akal; aREJECT
akan mengembalikan paket ICMP yang perlu melintasi jaringan.Tambahkan baru
-j LOG
sebagai aturan terakhir Anda (karena itu sebelumDROP
kebijakan) untuk melihat apa yang sejauh ini dalamOUTPUT
rantai.sumber
REJECT
paket ICMP kembali pada antarmuka lo? Saya setuju bahwa aLOG
berguna untuk pemecahan masalah, tetapi apa yang saya benar-benar harapkan adalah cara untuk mengingatkan saya bahwa "Oh, ya ... itu mungkin diblokir olehDROP
iptables default saya " daripada memecahkan masalah selama 5 menit meminta rekan kerja untuk akses server XYZ menyadari itu mungkin lokal , yang merupakan pendekatan saya yang paling umum, karena hari kerja saya yang biasa jarang mengenai hal-hal yang belum pernah saya buka sebelumnya. Tentu saja mungkin saya perlu mengingatnya dengan lebih baik, tetapi flatREJECT
lebih jelas.ethX
antarmuka untuk menghasilkan lalu lintas dilo
antarmuka karena berbagai alasan. Mereka sangat mandiri; Anda dapat dengan mudah membuat rantai berlaku untuk yang satu dan bukan yang lain.