[Linuxtrent] iptables e ftp

  • From: "Gelpi Andrea - Liste" <liste@xxxxxxxx>
  • To: <liste@xxxxxxxx>
  • Date: Thu, 11 Apr 2002 23:50:41 +0200

Salve a tutti,
forse dirò cose ovvie, ma vedo che in altre mailing list sono molto
richieste.

Il contenuto di questo messaggio è su come far funzionare FTP in active mode
da un PC che sta su rete privata dietro un firewall Linux controllato via
iptables.

Il presupposto è che il firewall permetta qualsiasi connessione dall'interno
verso l'esterno e droppi tutte le nuove connessioni provenienti da fuori.
Detto in altre parole, supponendo eth1 sia l'interfaccia verso internet:

iptables -A FORWARD -i eth1 -m state --state establish,related -j ACCEPT
iptables -A FORWARD -i eth1 -m state --state new,invalid -j DROP

cioè sulla catena forward se il pacchetto arriva dall'interfaccia internet e
lo stato è nuovo o invalido buttalo via, se invece appartiene ad una
sessione già aperta o a una nuova sessione "related" ad una già aperta
accettalo. (I puristi non se la prendano, dato che mancano alcune regole per
chiudere bene le cose dall'esterno, ma per i fini di questo messaggio sono
sufficienti le due regole indicate).

Con queste due regole si chiudono di fatto tutte le porte da fuori verso
dentro.

Nel caso dell'active ftp, quindi il server non potrà mai contattare il
client dato che la data connection viene vista come una nuova sessione.
Inoltre se il PC sta su una rete privata il server non potrà contattare il
client così come indicato dal comando PORT.

Esistono due moduli di netfilter che risolvono il problema.

ip_conntrack_ftp = tiene traccia delle sessioni ftp e collega la control
session con la data session. Con questo modulo la data session non è più
vista come una nuova sessione, ma come una sessione "related" cioè collegata
ad una già aperta e quindi ora il server è in grado di passare dal firewall.

ip_nat_ftp = permette di nattare il contenuto del comando port, pemettendo
quindi al server di aprire la sessione con il client.

Per utilizzarli è sufficiente mettere la modprobe dei moduli in uno script
al boot.

Solo per completezza ricordo che il passive mode non necessita di questi
moduli dato che il client dopo aver aperto la control sesssion per aprire la
data session invia il comando PASV e il server gli ritorna l'IP e la porta
da chiamare per aprire la data connection. L'utilizzo di ip_conntrack_ftp
permette anche in questo caso di avere la data connection "related" alla
control e questo può essere interessante nell'analisi del traffico sul
firewall.

--
Gelpi ing. Andrea
--------------------------------------------------------------
It took the computing power of three C-64s to fly to the Moon.
It takes a 486 to run Windows 95. Something is wrong here.
--------------------------------------------------------------

-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con SOGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxxxxxx


Other related posts: