PDA

Visualizza la versione completa : iptables e ftp pasv


alfdev
09-01-2006, 11:39
salve a tutti,

ho una lan che esce su internet tramite un gw con linux, ho creato le regole con iptables per chiudere tutte le porte che non mi interessano (emule, torrent, ecc..) ma ho riscontrato un problemino: quando da un client mi collego ad un ftp con il passive mode a on, la connessione cade per via della porta random che viene utilizzata. Come posso ovviare a qst problema senza dover aprire tutte le porte?

Grazie!

Le0n
09-01-2006, 13:18
non puoi usare una porta predefinita con l'ftp ?!?
se si la usi e inserisci la regola su iptables di modo che non te la blocchi


Hasta!

Le0n
09-01-2006, 13:24
ho appena fatto una prova....
la porta locale usata dal programma è random mentre quella del server a cui mi sono connesso è sempre 21...

usa l'opzione --sport 21 -j ACCEPT in iptables :D

:ciauz:

alfdev
09-01-2006, 15:49
io già apro la porta 21 e anche quella 20, il problema è quella random.

prometeus
09-01-2006, 16:00
io aggiungerei una regola tipo

iptables -A OUTPUT -m state --state RELATED,ESTABILISHED -j ACCEPT.


In questo modo accetti in uscita tutto il traffico related o estabilished (ad esempio il traffico di trasferimento dati legato a ftp) e deleghi ad altre regole e alla poitica di default tutte le connessioni in stato NEW.
E' possibile ( ma non ricordo bene, consulta una guida) che sia necessario per ftp un modulo del kernel proprio di iptables. tipo ftp_nat o ftp_conntrack. Ovviamente devi avere abilitato anche gli i moduli base per il connection tracking e il natting.

Le0n
09-01-2006, 17:15
Originariamente inviato da alfdev
io già apro la porta 21 e anche quella 20, il problema è quella random.
il --sport è riferito alla porta sorgente della connessione, ovvero del server, che usa la 20 - 21...

esiste anche un --dport che indica le porte di destinazione del servizio...

ad esempio nella mia prova di stamattina avevo

Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.168.xx.yy:47271 aaa.bb.kk.zz:21 ESTABLISHED
in questo caso delle regole possibili sono (tralasciando -p tcp per il protocollo)
--sport 21
--dport 47271 (quella random locale)
--source aaa.bb.kk.zz (indirizzo del server ftp)
--destination 192.168.xx.yy (indirizzo del client ftp)

utilizzando anche "-m state RELATED,ESTABILISHED" si può creare una regola ad hoc...

giusto per curiosità: se usi linux come gateway tra internet e lan, la catena di FORWARD che regole ha?!?
hai permesso l'attraversamento tra le interfacce?!?

per il tracking dei pacchetti non saprei dirti...
@prometeus: quale guida sarebbe?!?


Hasta!

alfdev
09-01-2006, 17:32
La chain di forward semplicemente permette il passaggio dei dati solo attraverso alcune porte e altre le chiude.
Il problema è questo e cioè che per chiudere le porte ai p2p (emule&co) droppo le porte 1025:65535, invece permetto la 6667 per mirc per esempio. Visto che la porta per il passive mode è random non so come risolvere...

Le0n
09-01-2006, 17:47
devi permettere il forward dei pacchetti SYN su tutte le porte, altrimenti non combini nulla, usando "--tcp-flags SYN" ...

una volta che hai usato questa regola, dimmi se il p2p viene bloccato!

Hasta!

prometeus
09-01-2006, 17:49
Originariamente inviato da Le0n
@prometeus: quale guida sarebbe?!?


Questa (http://www.math.ucdavis.edu/~zjohnson/doc/iptables-tutorial.html ) la ritengo molto buona.

per alfdev: forse sarebbe il caso che ci posti le regole relative al natting.

alfdev
10-01-2006, 10:59
# Impostazione policy di default
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -P OUTPUT DROP
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT

# Regole di ingresso
/sbin/iptables -A INPUT -j ACCEPT -i lo
/sbin/iptables -A INPUT -p icmp -j ACCEPT
/sbin/iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
#/sbin/iptables -A INPUT -j DROP -p tcp --dport 4660:4670
#/sbin/iptables -A INPUT -j DROP -p udp --dport 4672

# Regole di uscita
#/sbin/iptables -A OUTPUT -j DROP -p tcp --dport 4660:4670
#/sbin/iptables -A OUTPUT -j DROP -p udp --dport 4672
#/sbin/iptables -A OUTPUT -j ACCEPT -p tcp --dport 6667
/sbin/iptables -A OUTPUT -j ACCEPT -p tcp --dport ! 1025:65535
/sbin/iptables -A OUTPUT -j ACCEPT -p udp

# Regole di forward
/sbin/iptables -A FORWARD -j ACCEPT -p tcp --dport 6667
/sbin/iptables -A FORWARD -j ACCEPT -p tcp --dport 3389
/sbin/iptables -A FORWARD -j ACCEPT -p tcp --dport 1080
/sbin/iptables -A FORWARD -j DROP -p tcp --dport 2500:9000


# Regole di nat
/sbin/iptables -t nat -A POSTROUTING -j MASQUERADE -s 192.168.0.0/24

Loading