mari kita lihat dua aturan iptables yang sering digunakan untuk mengizinkan DNS keluar:
iptables -A OUTPUT -p udp --sport 1024:65535 --dport 53
-m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --sport 53 --dport 1024:65535
-m state --state ESTABLISHED -j ACCEPT
Pertanyaan saya adalah: Bagaimana tepatnya saya harus memahami kondisi ESTABLISHED di UDP? UDP tidak memiliki kewarganegaraan.
Inilah intuisi saya - Saya ingin tahu, apakah atau di mana ini salah:
Halaman manual memberitahu saya ini:
negara
Modul ini, ketika dikombinasikan dengan pelacakan koneksi, memungkinkan akses ke status pelacakan koneksi untuk paket ini. - negara ...
Jadi, iptables pada dasarnya mengingat nomor port yang digunakan untuk paket keluar (apa lagi yang bisa diingat untuk paket UDP?) , Dan kemudian memungkinkan paket masuk pertama yang dikirim kembali dalam jangka waktu singkat? Seorang penyerang harus menebak nomor porta (apakah itu benar-benar terlalu sulit?)
Tentang menghindari konflik:
Kernel melacak port mana yang diblokir (baik oleh layanan lain, atau oleh paket UDP keluar sebelumnya), sehingga port ini tidak akan digunakan untuk paket DNS keluar baru dalam jangka waktu? (Apa yang akan terjadi, jika saya secara tidak sengaja mencoba memulai layanan pada port tersebut dalam jangka waktu - apakah upaya itu akan ditolak / diblokir?)
Temukan semua kesalahan dalam teks di atas :-) Terima kasih,
Chris
sumber
echo "net.netfilter.nf_conntrack_udp_timeout = 180" >> /etc/sysctl.conf
NB: Jawaban ini telah diedit.
Terlepas dari apa yang dikatakan halaman manual,
ESTABLISHED
tampaknya berarti "stateful". Untuk UDP yang berarti (seperti yang Anda sarankan) mengingat setiap paket UDP keluar ("src ip, src port dst ip, dst port" tuple) untuk sementara waktu dan mengenali responsnya.FWIW, aturan normal saya untuk lalu lintas DNS akan seperti ini:
yaitu mengontrol lalu lintas pada
OUTPUT
rantai, dan kemudian membiarkaniptables
modul negara menangani semua yang lain diINPUT
rantai.Lihat juga pertanyaan terkait ini .
sumber
RELATED
paket UDP mungkin ada untuk RTP.Pengembang iptables telah mempertimbangkan bahwa keadaan "ESTABLISHED" adalah situasi ketika paket telah dilihat di kedua arah, apa pun protokol antara dua klien.
ekstensi state adalah bagian dari conntrack. Kernel memahami status dari tabel
Contoh status iptable untuk UDP di tabel nf_conntrack dari sudut pandang pengirim. Bayangkan Anda mengirim permintaan DNS pada UDP
Paket telah dikirim. Tidak dibalas dan oh, tabel memiliki data untuk apa yang diharapkan sebagai balasan (paket untuk jawaban DNS).
Jawabannya telah tiba, bendera yang tidak dibalas hilang, itu berarti koneksi UDP ini dalam keadaan ESTABLISHED untuk sejumlah kecil waktu yang ditentukan dalam sistem Anda.
sumber