Asumming baik untuk server dan client bersifat restriktif INPUT
dan terbuka OUTPUT
, yaitu:
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
Dan dari iptables-extensions (8) di atas contoh FTP dalam mode aktif:
1. BARU
BARU Paket telah memulai koneksi baru atau dikaitkan dengan koneksi yang belum melihat paket di kedua arah.
Client on port 50000
(sembarang port unprivileged acak) terhubung ke server FTP pada port 21
, server akan memerlukan setidaknya ini untuk menerima koneksi masuk ini:
iptables -A INPUT --dport 21 -m state --state NEW -j ACCEPT
2. DIDIRIKAN
DIDIRIKAN Paket ini dikaitkan dengan koneksi yang telah melihat paket di kedua arah.
Sekarang di sisi klien, ia membuka koneksi keluar ke server pada port 21
menggunakan port lokal 50000
dan ia membutuhkan iptables berikut untuk memungkinkan tanggapan datang dari server (21)
ke client (50000)
:
sudo iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
3. TERKAIT
TERKAIT Paket memulai koneksi baru, tetapi dikaitkan dengan koneksi yang ada, seperti transfer data FTP atau kesalahan ICMP.
Sekarang setelah koneksi FTP telah dibuat dan koneksi data akan dilakukan, klien akan membuka soket server (ya, dengan klien FTP aktif menjadi server untuk koneksi data) pada port 60000
(menurut pemahaman saya klien akan menandai port ini 60000
sebagai RELATED
untuk koneksi lain dari 50000->21
) dan akan mengirimkan nomor port ini ke server menggunakan FTP PORT
perintah. Kemudian server FTP akan membuka koneksi baru dari port-nya 20
ke port 60000
pada klien, dan yah, klien sekarang memerlukan yang berikut untuk memungkinkan koneksi baru ini berhasil:
sudo iptables -A INPUT -m state --state RELATED -j ACCEPT
Akhirnya, agar ini berfungsi, Anda perlu mengaktifkan ip_conntrack_ftp
modul kernel untuk memungkinkan sistem menandai koneksi / paket sebagai RELATED
(ini adalah pemahaman saya, saya belum menggali terlalu banyak tentang ini):
modprobe ip_conntrack_ftp