Saya baru memulai dengan iptables dan menemukan sesuatu yang tidak saya mengerti.
FYI, saya mengikuti instruksi IptablesHowTo dari wiki Ubuntu .
Tabel nat dan mangle kosong, saya hanya bekerja dengan tabel filter sekarang.
Masalah
Jika saya menambahkan aturan iptables berikut:
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j DROP
... maka saya masih memiliki akses ke mesin saya melalui ssh, namun semua perintah iptables membutuhkan waktu sekitar satu atau dua menit untuk berjalan. Ini bukan masalah DNS, -n
tidak mengubahnya.
Solusinya
Jika saya menyiram tabel dan menambahkan tiga aturan ini sebagai gantinya, semuanya berfungsi dengan baik:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j DROP
Adakah yang bisa menjelaskan kepada saya, mengapa aturan pertama berdampak besar pada iptables? Saya mengerti bahwa ini memungkinkan sesi yang ditetapkan untuk menerima lalu lintas, tetapi mengapa saya membutuhkannya jika ssh terbuka?
sudo
apakah pencarian DNS dan jika ini diblokir, perintah akan lambat. Apakah semuaiptables
perintah Anda lainnya diawalisudo
?sudo strace …
(dari shell root) untuk melihat apa yang diblokir.Jawaban:
Itu melakukan pencarian DNS dan karena respon diblokir, perlu waktu untuk kehabisan waktu.
Coba lakukan iptables -n ... untuk mencegah pencarian DNS.
Conntrack memungkinkan koneksi diterima pada port ephemeral yang dibuat untuk respons terhadap permintaan yang diprakarsai oleh mesin Anda (dalam hal ini permintaan DNS). Tanpa mengizinkan koneksi ESTABLISHED atau TERKAIT, bahkan respons terhadap permintaan Anda diblokir.
EG: Jika Anda mencoba untuk pergi ke situs web, meskipun Anda akan dapat mengirim permintaan untuk situs web, respons situs web akan diblokir.
sumber
Dengan
mesin Anda akan menjatuhkan setiap paket yang masuk kecuali berasal dari port SSH. Ide yang bagus jika Anda ingin mesin itu berkomunikasi hanya melalui SSH. Kalau tidak, Anda perlu menambahkan
itu akan membuat Anda yakin Anda akan terhubung ke beberapa server web daripada terhubung dari seseorang.
sumber
-m conntrack
Anda dapat memiliki "kesempatan" lain bahwa paket dapat diterima sebelum mereka akan jatuh pasti. Di mesin klien, Anda harus memilikiiptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
jika ingin melihat beberapa jawaban. Di sisi server, izinkan saja koneksi masuk SSH dan lepaskan yang lainnya (jika server bertindak hanya sebagai koneksi SSH). Semoga semuanya jelas.