Home page

www.gelpi.it

Clusit image

home

area tecnica

articoli

eventi

2node2node1

FTP active mode dietro un firewall Linux

12 Aprile 2002

Il contenuto di questo testo è 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.



copyfree/privacy

contatto

curriculum


Ultimo aggiornamento il 26 August 2021 14:59:58.