[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [port] ouverture de port TFTP



Marc PERRUDIN a écrit :

comment ouvre t on un port sur un serveur tftp sous debian?

On lance le démon qui écoute sur le port en question. ;-)

iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED  -p tcp
--dport 21 -j ACCEPT

C'est plutot:
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED  -p UDP
--dport  69 -j ACCEPT

Ne serait-ce pas plutôt :
iptables -A INPUT -m state --state NEW -p UDP --dport 69 -j ACCEPT

tftp fonctionne en UDP sur le port 69 pour le canal de commande et comme
le ftp passif pour les datas (cf /etc/services)

Pas vraiment. Il n'y a pas à proprement parler de canal de commande mais un unique datagramme. Le premier datagramme UDP émis pas le client, qui contient la requête, a comme port destination 69. Le premier datagramme UDP émis par le serveur en réponse a un port source choisi par le serveur (différent de 69) et comme port destination le port source utilisé par le client dans le datagramme de requête. Les échanges suivants utilisent ces deux ports.

Il est donc inutile d'attendre des paquets dans l'état ESTABLISHED ou RELATED sur le port destination 69 puisque seul le premier paquet utilise ce port et a l'état NEW.

Attention : à cause du changement de port source, le suivi de connexion standard de Netfilter/iptables n'est pas capable de reconnaître le premier paquet de réponse du serveur comme lié au premier paquet de requête du client. S'il y a du filtrage en sortie du serveur, il est nécessaire de charger le module ip_conntrack_tftp afin que le premier paquet de réponse du serveur soit vu comme RELATED et puisse être accepté. S'il n'y a pas de filtrage en sortie, le premier paquet de réponse sera vu comme initiant une nouvelle connexion sortante. Ce même module peut être nécessaire sur le client s'il a du filtrage en entrée, pour la même raison.

Sauf erreur de ma part (non testé), les règles iptables suivantes devraient être nécessaires et suffisantes pour le serveur TFTP :


# accepte en entree le premier paquet de requete TFTP
iptables -A INPUT -m state --state NEW -p UDP --dport 69 -j ACCEPT

# accepte en sortie la réponse à la requête (RELATED)
# (nécessite ip_conntrack_tftp)
# et les paquets de données ou d'acquittement suivants (ESTABLISHED)
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -p UDP -j ACCEPT

# accepte en entrée les paquets de données ou d'acquittement suivants
iptables -A INPUT -m state --state ESTABLISHED -p UDP -j ACCEPT


S'il y a du filtrage sur le client TFTP, les chaînes INPUT et OUTPUT sont logiquement permutées :


# accepte en sortie le premier paquet de requête TFTP
iptables -A OUTPUT -m state --state NEW -p UDP --dport 69 -j ACCEPT

# accepte en entree la réponse à la requête (RELATED)
# (necessite ip_conntrack_tftp)
# et les paquets de données ou d'acquittement suivants (ESTABLISHED)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -p UDP -j ACCEPT

# accepte en sortie les paquets de données ou d'acquittement suivants
iptables -A OUTPUT -m state --state ESTABLISHED -p UDP -j ACCEPT



Reply to: