Comme pour les autres services, il faudra ouvrir le port correspondant au service ftp (21/tcp).
# # ###################################### # TCP entrant # Il faudra ouvrir des ports au fil de l'eau # lors de la mise en place de # services TCP (ssh, apache, ...). # ###################################### # -A TCP_IN -j TCP_INLIMITS -A TCP_IN -j STATEFUL -A TCP_IN -j TCP_SYNLIMITS -A TCP_IN -p tcp -m tcp ! --tcp-flags SYN,RST,ACK SYN -m limit --limit 10/min -j LOG --log-prefix "TCP_IN:" --log-level 6 -A TCP_IN -p tcp -m tcp ! --tcp-flags SYN,RST,ACK SYN -j DROP # # Ajouter les rêgles ici lors de l'installation de services TCP si ces services # doivent être ouverts # -A TCP_IN -s adresse_ip_autorisée -p tcp --dport 21 -j ACCEPT ❶ # on peut aussi débloquer le port 21 pour tout le monde -A TCP_IN -p tcp --dport 21 -j ACCEPT ❷ #
❶ | Régle autorisant l'accès au port 21/tcp (ftp) pour l'adresse adresse_ip_autorisée (qui peut aussi être un subnet). Cette règle peut être répétée autant de fois que nécessaire. |
❷ | Régle autorisant l'accès au port 21/tcp (ftp) pour tout le monde. |
Mais concernant le protocole FTP, il y a une subtilité que l'on ne trouve pas ailleurs. Ce protocole nécessite deux connexions pour fonctionner. Un connexion de contrôle, qui est initiée par le client vers le port 21 du serveur. C'est par elle que transite l'authentification et les ordres envoyés par le client. Mais FTP à aussi besoin d'une connexion data. C'est par cette connexion que transiteront les données. La situation pour l'établissment de ce canal de données est moins simple, puisque protocole FTP a deux mode de fonctionnement, et que selon ce mode, c'est le client ou le serveur qui va se connecter à l'autre partie pour établir le canal de données.
mode passif : dans ce mode, le client établira une deuxième connexion vers le serveur pour le transfert de données (quel que soit l'emetteur de ces données). Le port d'écoute sur le serveur est négocié dans le protocle et sera > 1023. Coté client, le port source sera bien sur aussi > 1023.
mode actif : dans ce mode, c'est le serveur qui va initier la connexion ftp-data vers le client à partir du port 20.
Ces deux modes sont parfaitement supportés par netfilter/iptables. Un module
spécialisé (nf_conntrack_ftp
) scrute les connexion FTP
et permet aux canaux de contrôle de s'établir sans problème, aussi bien en mode passif
qu'en mode actif. Mais nous reviendrons là dessus plus tard dans le chapitre sur
le chiffrement (Section 10.3.2, « FTP/TLS »), car cette particularité du
protocole FTP nous posera alors un réèl problème.