Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | |||
090_applicatifs:205ftp:900pureftpd:30_ftp_iptables [le 16/02/2025 à 14:36] – supprimée - modification externe (Date inconnue) 127.0.0.1 | 090_applicatifs:205ftp:900pureftpd:30_ftp_iptables [le 16/02/2025 à 14:36] (Version actuelle) – ↷ Page déplacée de 050_applicatifs:205ftp:900pureftpd:30_ftp_iptables à 090_applicatifs:205ftp:900pureftpd:30_ftp_iptables prof | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== FTP et Netfilter ====== | ||
+ | Mettons en place un pare-feu sur l' | ||
+ | ===== SSH sinon rien ===== | ||
+ | Au départ, sur l' | ||
+ | < | ||
+ | # iptables-save | ||
+ | # Generated by iptables-save v1.4.8 on Mon Jan 23 11:26:11 2012 | ||
+ | *filter | ||
+ | :INPUT DROP [1:76] | ||
+ | :FORWARD ACCEPT [0:0] | ||
+ | :OUTPUT ACCEPT [1:76] | ||
+ | -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT | ||
+ | -A INPUT -i lo -j ACCEPT | ||
+ | COMMIT | ||
+ | </ | ||
+ | Par défaut, rien ne peut entrer par aucune interface. Il est quand même judicieux de laisser passer SSH (port 22) et de laisser tout entrer sur '' | ||
+ | ===== FTP et son suivi de connexion ===== | ||
+ | Dans de telles conditions, FTP ne peut bien entendu pas fonctionner. Nous allons ajouter ces deux règles : | ||
+ | iptables -A INPUT -p tcp --dport 21 -m state --state NEW, | ||
+ | ceci afin de laisser entrer les connexions des clients FTP sur le port 21 | ||
+ | iptables -A INPUT -m conntrack --ctstate RELATED, | ||
+ | ceci afin d' | ||
+ | Mais le suivi de connexions sur FTP est, nous l' | ||
+ | modprobe nf-conntrack-ftp | ||
+ | |||
+ | Autrefois, ce module s' | ||
+ | |||
+ | Il n'y a pas ici de NAT puisque nous sommes toujours dans le cas de deux réseaux locaux routés entre eux. Au final, nous avons : | ||
+ | < | ||
+ | # iptables-save | ||
+ | # Generated by iptables-save v1.4.8 on Mon Jan 23 11:42:34 2012 | ||
+ | *filter | ||
+ | :INPUT DROP [0:0] | ||
+ | :FORWARD ACCEPT [0:0] | ||
+ | :OUTPUT ACCEPT [1:76] | ||
+ | -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT | ||
+ | -A INPUT -i lo -j ACCEPT | ||
+ | -A INPUT -p tcp -m tcp --dport 21 -m state --state NEW, | ||
+ | -A INPUT -m state --state RELATED, | ||
+ | COMMIT | ||
+ | </ | ||
+ | Et, en ce qui concerne les modules de suivi : | ||
+ | < | ||
+ | # lsmod | grep conntrack | ||
+ | nf_conntrack_ipv4 | ||
+ | nf_defrag_ipv4 | ||
+ | xt_conntrack | ||
+ | x_tables | ||
+ | <span class=" | ||
+ | nf_conntrack | ||
+ | </ | ||
+ | ===== Essais FTP ===== | ||
+ | Essayons maintenant une connexion FTP active : | ||
+ | < | ||
+ | Statut : Connexion à 192.168.10.76: | ||
+ | Statut : Connexion établie, attente du message d' | ||
+ | Réponse : | ||
+ | Réponse : 220-You are user number 1 of 3 allowed. | ||
+ | Réponse : 220-Local time is now 11:48. Server port: 21. | ||
+ | Réponse : 220-This is a private system - No anonymous login | ||
+ | Réponse : 220-IPv6 connections are also welcome on this server. | ||
+ | Réponse : 220 You will be disconnected after 15 minutes of inactivity. | ||
+ | Commande : USER test | ||
+ | Réponse : 331 User test OK. Password required | ||
+ | Commande : PASS ******** | ||
+ | Réponse : 230-Your bandwidth usage is restricted | ||
+ | Réponse : 230-User test has group access to: ftpgroup | ||
+ | Réponse : 230 OK. Current directory is / | ||
+ | Commande : SYST | ||
+ | Réponse : 215 UNIX Type: L8 | ||
+ | Commande : FEAT | ||
+ | Réponse : | ||
+ | Réponse : EPRT | ||
+ | Réponse : IDLE | ||
+ | Réponse : MDTM | ||
+ | Réponse : SIZE | ||
+ | Réponse : REST STREAM | ||
+ | Réponse : MLST type*; | ||
+ | Réponse : MLSD | ||
+ | Réponse : AUTH TLS | ||
+ | Réponse : PBSZ | ||
+ | Réponse : PROT | ||
+ | Réponse : UTF8 | ||
+ | Réponse : TVFS | ||
+ | Réponse : ESTA | ||
+ | Réponse : PASV | ||
+ | Réponse : EPSV | ||
+ | Réponse : SPSV | ||
+ | Réponse : ESTP | ||
+ | Réponse : 211 End. | ||
+ | Commande : OPTS UTF8 ON | ||
+ | Réponse : 200 OK, UTF-8 enabled | ||
+ | Statut : Connecté | ||
+ | Statut : | ||
+ | Commande : PWD | ||
+ | Réponse : 257 "/" | ||
+ | Commande : TYPE I | ||
+ | Réponse : 200 TYPE is now 8-bit binary | ||
+ | Commande : PORT 192, | ||
+ | Réponse : 200 PORT command successful | ||
+ | Commande : MLSD | ||
+ | Réponse : 150 Connecting to port 44011 | ||
+ | Réponse : | ||
+ | Réponse : 226 8 matches total | ||
+ | Statut : Succès de la lecture du contenu du dossier | ||
+ | </ | ||
+ | Ça marche. Essayons maintenant en mode passif : | ||
+ | < | ||
+ | Statut : Connexion à 192.168.10.76: | ||
+ | Statut : Connexion établie, attente du message d' | ||
+ | Réponse : | ||
+ | Réponse : 220-You are user number 1 of 3 allowed. | ||
+ | Réponse : 220-Local time is now 11:51. Server port: 21. | ||
+ | Réponse : 220-This is a private system - No anonymous login | ||
+ | Réponse : 220-IPv6 connections are also welcome on this server. | ||
+ | Réponse : 220 You will be disconnected after 15 minutes of inactivity. | ||
+ | Commande : USER test | ||
+ | Réponse : 331 User test OK. Password required | ||
+ | Commande : PASS ******** | ||
+ | Réponse : 230-Your bandwidth usage is restricted | ||
+ | Réponse : 230-User test has group access to: ftpgroup | ||
+ | Réponse : 230 OK. Current directory is / | ||
+ | Commande : OPTS UTF8 ON | ||
+ | Réponse : 200 OK, UTF-8 enabled | ||
+ | Statut : Connecté | ||
+ | Statut : | ||
+ | Commande : PWD | ||
+ | Réponse : 257 "/" | ||
+ | Statut : Succès de la lecture du contenu du dossier | ||
+ | </ | ||
+ | Ça fonctionne aussi. Pas vraiment étonnant, le '' | ||
+ | iptables -A INPUT -m state --state RELATED, | ||
+ | ===== Essais FTPES ===== | ||
+ | Essayons en FTPES mode actif : | ||
+ | < | ||
+ | Statut : Connexion à 192.168.10.76: | ||
+ | Statut : Connexion établie, attente du message d' | ||
+ | Réponse : | ||
+ | Réponse : 220-You are user number 1 of 3 allowed. | ||
+ | Réponse : 220-Local time is now 11:58. Server port: 21. | ||
+ | Réponse : 220-This is a private system - No anonymous login | ||
+ | Réponse : 220-IPv6 connections are also welcome on this server. | ||
+ | Réponse : 220 You will be disconnected after 15 minutes of inactivity. | ||
+ | Commande : AUTH TLS | ||
+ | Réponse : 234 AUTH TLS OK. | ||
+ | Statut : | ||
+ | Statut : | ||
+ | Commande : USER test | ||
+ | Statut : Connexion TLS/SSL établie. | ||
+ | Réponse : 331 User test OK. Password required | ||
+ | Commande : PASS ******** | ||
+ | Réponse : 230-Your bandwidth usage is restricted | ||
+ | Réponse : 230-User test has group access to: ftpgroup | ||
+ | Réponse : 230 OK. Current directory is / | ||
+ | Commande : SYST | ||
+ | Réponse : 215 UNIX Type: L8 | ||
+ | Commande : FEAT | ||
+ | Réponse : | ||
+ | Réponse : EPRT | ||
+ | Réponse : IDLE | ||
+ | Réponse : MDTM | ||
+ | Réponse : SIZE | ||
+ | Réponse : REST STREAM | ||
+ | Réponse : MLST type*; | ||
+ | Réponse : MLSD | ||
+ | Réponse : AUTH TLS | ||
+ | Réponse : PBSZ | ||
+ | Réponse : PROT | ||
+ | Réponse : UTF8 | ||
+ | Réponse : TVFS | ||
+ | Réponse : ESTA | ||
+ | Réponse : PASV | ||
+ | Réponse : EPSV | ||
+ | Réponse : SPSV | ||
+ | Réponse : ESTP | ||
+ | Réponse : 211 End. | ||
+ | Commande : OPTS UTF8 ON | ||
+ | Réponse : 200 OK, UTF-8 enabled | ||
+ | Commande : PBSZ 0 | ||
+ | Réponse : 200 PBSZ=0 | ||
+ | Commande : PROT P | ||
+ | Réponse : 200 Data protection level set to " | ||
+ | Statut : Connecté | ||
+ | Statut : | ||
+ | Commande : PWD | ||
+ | Réponse : 257 "/" | ||
+ | Commande : TYPE I | ||
+ | Réponse : 200 TYPE is now 8-bit binary | ||
+ | Commande : PORT 192, | ||
+ | Réponse : 200 PORT command successful | ||
+ | <span class=" | ||
+ | Réponse : 150 Connecting to port 34913 | ||
+ | Réponse : | ||
+ | Réponse : 226 7 matches total | ||
+ | Statut : Succès de la lecture du contenu du dossier</ | ||
+ | </ | ||
+ | Pas de soucis. Mais en mode passif : | ||
+ | < | ||
+ | Statut : Connexion à 192.168.10.76: | ||
+ | Statut : Connexion établie, attente du message d' | ||
+ | Réponse : | ||
+ | Réponse : 220-You are user number 1 of 3 allowed. | ||
+ | Réponse : 220-Local time is now 12:00. Server port: 21. | ||
+ | Réponse : 220-This is a private system - No anonymous login | ||
+ | Réponse : 220-IPv6 connections are also welcome on this server. | ||
+ | Réponse : 220 You will be disconnected after 15 minutes of inactivity. | ||
+ | Commande : AUTH TLS | ||
+ | Réponse : 234 AUTH TLS OK. | ||
+ | Statut : | ||
+ | Statut : | ||
+ | Commande : USER test | ||
+ | Statut : Connexion TLS/SSL établie. | ||
+ | Réponse : 331 User test OK. Password required | ||
+ | Commande : PASS ******** | ||
+ | Réponse : 230-Your bandwidth usage is restricted | ||
+ | Réponse : 230-User test has group access to: ftpgroup | ||
+ | Réponse : 230 OK. Current directory is / | ||
+ | Commande : SYST | ||
+ | Réponse : 215 UNIX Type: L8 | ||
+ | Commande : FEAT | ||
+ | Réponse : | ||
+ | Réponse : EPRT | ||
+ | Réponse : IDLE | ||
+ | Réponse : MDTM | ||
+ | Réponse : SIZE | ||
+ | Réponse : REST STREAM | ||
+ | Réponse : MLST type*; | ||
+ | Réponse : MLSD | ||
+ | Réponse : AUTH TLS | ||
+ | Réponse : PBSZ | ||
+ | Réponse : PROT | ||
+ | Réponse : UTF8 | ||
+ | Réponse : TVFS | ||
+ | Réponse : ESTA | ||
+ | Réponse : PASV | ||
+ | Réponse : EPSV | ||
+ | Réponse : SPSV | ||
+ | Réponse : ESTP | ||
+ | Réponse : 211 End. | ||
+ | Commande : OPTS UTF8 ON | ||
+ | Réponse : 200 OK, UTF-8 enabled | ||
+ | Commande : PBSZ 0 | ||
+ | Réponse : 200 PBSZ=0 | ||
+ | Commande : PROT P | ||
+ | Réponse : 200 Data protection level set to " | ||
+ | Statut : Connecté | ||
+ | Statut : | ||
+ | Commande : PWD | ||
+ | Réponse : 257 "/" | ||
+ | Commande : TYPE I | ||
+ | Réponse : 200 TYPE is now 8-bit binary | ||
+ | Commande : PASV | ||
+ | Réponse : 227 Entering Passive Mode (192, | ||
+ | <span class=" | ||
+ | Erreur : Délai d' | ||
+ | Erreur : Échec lors de la récupération du contenu du dossier</ | ||
+ | </ | ||
+ | Ici, ça coince au moment d' | ||
+ | |||
+ | A ma connaissance il n'y a pas de solution du côté de Netfilter. Il existe cependant une solution de contournement que nous allons voir maintenant. | ||
+ | ===== FTPES en mode passif ===== | ||
+ | Si l'on souhaite que le serveur fonctionne en FTPES passif, il faut abandonner le suivi de connexion, indiquer au serveur une plage de ports à ouvrir en mode passif et de laisser entrer les paquets '' | ||
+ | * nous n' | ||
+ | * ces ports seront normalement fermés en dehors d'une connexion DATA qui en utiliserait. | ||
+ | ==== Spécifier les ports ==== | ||
+ | Nous avons une configuration '' | ||
+ | pure-ftpd -j -lpuredb:/ | ||
+ | ==== Ouvrir les ports concernés ==== | ||
+ | Il faut le dire à Netfilter : | ||
+ | iptables -A INPUT -p tcp --dport 65525:65535 -m state --state NEW, | ||
+ | ==== Vérification ==== | ||
+ | Connexion en FTPES mode passif : | ||
+ | < | ||
+ | Statut : Connexion à 192.168.10.76: | ||
+ | Statut : Connexion établie, attente du message d' | ||
+ | Réponse : | ||
+ | Réponse : 220-You are user number 1 of 3 allowed. | ||
+ | Réponse : 220-Local time is now 15:13. Server port: 21. | ||
+ | Réponse : 220-This is a private system - No anonymous login | ||
+ | Réponse : 220-IPv6 connections are also welcome on this server. | ||
+ | Réponse : 220 You will be disconnected after 15 minutes of inactivity. | ||
+ | Commande : USER test | ||
+ | Réponse : 331 User test OK. Password required | ||
+ | Commande : PASS ******** | ||
+ | Réponse : 230-Your bandwidth usage is restricted | ||
+ | Réponse : 230-User test has group access to: ftpgroup | ||
+ | Réponse : 230 OK. Current directory is / | ||
+ | Commande : OPTS UTF8 ON | ||
+ | Réponse : 200 OK, UTF-8 enabled | ||
+ | Statut : Connecté | ||
+ | Statut : | ||
+ | Commande : PWD | ||
+ | Réponse : 257 "/" | ||
+ | Commande : TYPE I | ||
+ | Réponse : 200 TYPE is now 8-bit binary | ||
+ | Commande : PASV | ||
+ | Réponse : 227 Entering Passive Mode (192, | ||
+ | Commande : MLSD | ||
+ | Réponse : 150 Accepted data connection | ||
+ | Réponse : | ||
+ | Réponse : 226 7 matches total | ||
+ | Statut : Succès de la lecture du contenu du dossier | ||
+ | Statut : | ||
+ | Statut : Connexion à 192.168.10.76: | ||
+ | Statut : Connexion établie, attente du message d' | ||
+ | Réponse : | ||
+ | Réponse : 220-You are user number 1 of 3 allowed. | ||
+ | Réponse : 220-Local time is now 15:22. Server port: 21. | ||
+ | Réponse : 220-This is a private system - No anonymous login | ||
+ | Réponse : 220-IPv6 connections are also welcome on this server. | ||
+ | Réponse : 220 You will be disconnected after 15 minutes of inactivity. | ||
+ | Commande : AUTH TLS | ||
+ | Réponse : 234 AUTH TLS OK. | ||
+ | Statut : | ||
+ | Statut : | ||
+ | Commande : USER test | ||
+ | Statut : Connexion TLS/SSL établie. | ||
+ | Réponse : 331 User test OK. Password required | ||
+ | Commande : PASS ******** | ||
+ | Réponse : 230-Your bandwidth usage is restricted | ||
+ | Réponse : 230-User test has group access to: ftpgroup | ||
+ | Réponse : 230 OK. Current directory is / | ||
+ | Commande : SYST | ||
+ | Réponse : 215 UNIX Type: L8 | ||
+ | Commande : FEAT | ||
+ | Réponse : | ||
+ | Réponse : EPRT | ||
+ | Réponse : IDLE | ||
+ | Réponse : MDTM | ||
+ | Réponse : SIZE | ||
+ | Réponse : REST STREAM | ||
+ | Réponse : MLST type*; | ||
+ | Réponse : MLSD | ||
+ | Réponse : AUTH TLS | ||
+ | Réponse : PBSZ | ||
+ | Réponse : PROT | ||
+ | Réponse : UTF8 | ||
+ | Réponse : TVFS | ||
+ | Réponse : ESTA | ||
+ | Réponse : PASV | ||
+ | Réponse : EPSV | ||
+ | Réponse : SPSV | ||
+ | Réponse : ESTP | ||
+ | Réponse : 211 End. | ||
+ | Commande : OPTS UTF8 ON | ||
+ | Réponse : 200 OK, UTF-8 enabled | ||
+ | Commande : PBSZ 0 | ||
+ | Réponse : 200 PBSZ=0 | ||
+ | Commande : PROT P | ||
+ | Réponse : 200 Data protection level set to " | ||
+ | Statut : Connecté | ||
+ | Statut : | ||
+ | Commande : PWD | ||
+ | Réponse : 257 "/" | ||
+ | Commande : TYPE I | ||
+ | Réponse : 200 TYPE is now 8-bit binary | ||
+ | Commande : PASV | ||
+ | Réponse : 227 Entering Passive Mode (192, | ||
+ | Commande : MLSD | ||
+ | Erreur : Délai d' | ||
+ | Erreur : Échec lors de la récupération du contenu du dossier | ||
+ | Statut : Connexion à 192.168.10.76: | ||
+ | Statut : Connexion établie, attente du message d' | ||
+ | Réponse : | ||
+ | Réponse : 220-You are user number 1 of 3 allowed. | ||
+ | Réponse : 220-Local time is now 15:54. Server port: 21. | ||
+ | Réponse : 220-This is a private system - No anonymous login | ||
+ | Réponse : 220-IPv6 connections are also welcome on this server. | ||
+ | Réponse : 220 You will be disconnected after 15 minutes of inactivity. | ||
+ | Commande : AUTH TLS | ||
+ | Réponse : 234 AUTH TLS OK. | ||
+ | Statut : | ||
+ | Statut : | ||
+ | Commande : USER test | ||
+ | Statut : Connexion TLS/SSL établie. | ||
+ | Réponse : 331 User test OK. Password required | ||
+ | Commande : PASS ******** | ||
+ | Réponse : 230-Your bandwidth usage is restricted | ||
+ | Réponse : 230-User test has group access to: ftpgroup | ||
+ | Réponse : 230 OK. Current directory is / | ||
+ | Commande : OPTS UTF8 ON | ||
+ | Réponse : 200 OK, UTF-8 enabled | ||
+ | Commande : PBSZ 0 | ||
+ | Réponse : 200 PBSZ=0 | ||
+ | Commande : PROT P | ||
+ | Réponse : 200 Data protection level set to " | ||
+ | Statut : Connecté | ||
+ | Statut : | ||
+ | Commande : PWD | ||
+ | Réponse : 257 "/" | ||
+ | Commande : TYPE I | ||
+ | Réponse : 200 TYPE is now 8-bit binary | ||
+ | Commande : PASV | ||
+ | <span class=" | ||
+ | <span class=" | ||
+ | Réponse : 150 Accepted data connection | ||
+ | Réponse : | ||
+ | Réponse : 226 7 matches total | ||
+ | Statut : Succès de la lecture du contenu du dossier</ | ||
+ | </ | ||
+ | Ça fonctionne sans surprise, mais sans le '' |
FTP et Netfilter: Dernière modification le: 01/01/1970 à 00:00 par