Pages : 1
#1 Le 24/05/2017, à 06:46
- Negan
Iptables et proftpd
Bonjour,
J'ai un serveur FTP sous Proftpd et j'utilise iptables comme pare-feu.
Le serveur FTP fonctionne parfaitement.
J'ai un script qui s'active au démarrage du serveur et qui bloque toutes les connexions sur le pare-feu, ensuite il accepte seulement quelques connexions : ssh, proftpd ...
Le problème c'est que le proftpd ne fonctionne pas. J'arrive à me connecter mais le dossier FTP n'est pas récupéré, filezilla me dit ça
Statut :
Connexion à 192.168.1.23:21...
Statut : Connexion établie, attente du message d'accueil...
Statut : Serveur non sécurisé, celui-ci ne supporte pas FTP sur TLS.
Statut : Connecté
Statut : Récupération du contenu du dossier..,
Les règles de filtrage dans le script sont :
# FTP Out
iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 20 -j ACCEPT
# FTP In
iptables -t filter -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "ftp ok"
Je vois pas trop ou est le problème, si quelqu'un pourrait m'expliquer.
A noter que si je désactive le pare feu, ça fonctionne, le problème vient donc des commandes ici
Merci
Modération : merci à l'avenir d'utiliser les balises code (explications ici).
Dernière modification par cqfd93 (Le 24/05/2017, à 07:20)
Hors ligne
#2 Le 24/05/2017, à 07:34
- robindesbois
Re : Iptables et proftpd
Salut, à vue de nez le truc qui me dérange le plus pour le moment c'est dans tes règles INPUT, tu as mis --dport au lieu de --sport. Tu peux rectifier ces deux règles pour le port 20 et 21 et dire si ça va mieux déjà stp ?
Hors ligne
#3 Le 24/05/2017, à 08:06
- bruno
Re : Iptables et proftpd
Les règles de pare-feu pour autoriser le FTP c'est très casse-pied… (au passage dport est correct)
C'est dommage de ne pas utiliser SFTP (avec openssh et oublier proftpd) qui est bien plus sécurisé et ne nécessite que l'ouverture du port 22.
Il semble que la connexion s'établisse (port 21) mais pas le transfert de données. Il est probable qu tu aies besoin d'autoriser FTP en mode passif. Je te laisse faire une recherche sur "iptables + FTP".
#4 Le 24/05/2017, à 08:47
- Negan
Re : Iptables et proftpd
Salut,
Merci pour vos réponses.
J'ai regardé sur internet et pas mal de monde ont rencontré ce problème.
Beaucoup de monde également parle du mode passif mais je ne comprends pas très bien quelles sont les conf à faire.
Il faut activer le mode passif sur le client (Filezilla) mais y'a il des conf à faire dans proftpd.conf ?
Hors ligne
#5 Le 24/05/2017, à 09:02
- bruno
Re : Iptables et proftpd
Pour le mode passif ce doit être activé par défaut aussi bien côté client (Filezilla) que côté serveur (proFTPd).
Pour le pare-feu regarde le premier résultat ici : https://duckduckgo.com/?q=iptables+%2B+ … ical&ia=qa
Mais encore un fois pose-toi les questions :
- ai-je vraiment besoin d'un pare-feu et pourquoi ?
- n'aurai-je pas tout intérêt à utiliser le SFTP intégré de openssh -server ?
Dernière modification par bruno (Le 24/05/2017, à 09:02)
#6 Le 24/05/2017, à 09:16
- Negan
Re : Iptables et proftpd
Merci pour ta réponse, je tenterais la commande ce soir, je te donnerais des nouvelles.
Je n'ai clairement pas besoin d'un pare feu c'est un FTP juste pour utiliser en local chez moi, mais je tente juste des manip simplement par intêret et pour ma culture. Je ne n'aime pas me contenter d'un "oh ça marche tant pis si c'est pas sécurisé".
Enfin, j'utilise proftpd par habitude, j'ai commencé la dessus, mais également parce que j'utilise tout un tas de configuration du style :
<Directory /path/to/dir>
<Limit DELE>
AllowUser ftpadm
DenyAll
</Limit>
</Directory>
A ce soir !
Hors ligne
#7 Le 24/05/2017, à 17:10
- robindesbois
Re : Iptables et proftpd
(au passage dport est correct).
Oups... J'ai dit une bêtise, pardon
Dernière modification par robindesbois (Le 24/05/2017, à 17:11)
Hors ligne
#8 Le 24/05/2017, à 20:11
- Negan
Re : Iptables et proftpd
Re !
Merci, grâce à ta commande ça fonctionne. Mon dossier est bien récupéré.
Cependant lorsque j'active mon certificat SSL pour chiffrer les données (Wireshark), il ne veut plus me récupérer le dossier.
Il le re-récupère quand je le désactive.
Y'a il une règle à ajouter dans le firewall pour le SSL ?
Voici le retour de Filezilla :
Statut : Connexion à 192.168.1.23:21...
Statut : Connexion établie, attente du message d'accueil...
Statut : Initialisation de TLS...
Statut : Vérification du certificat...
Statut : Connexion TLS établie.
Statut : Connecté
Statut : Récupération du contenu du dossier...
Commande : PWD
Réponse : 257 "/" est le répertoire courant
Commande : TYPE I
Réponse : 200 Type paramétré à I
Commande : PASV
Réponse : 227 Entering Passive Mode (192,168,1,23,227,120).
Commande : MLSD
Erreur : Connection interrompue après 20 secondes d'inactivité
Erreur : Impossible de récupérer le contenu du dossier
Dernière modification par Negan (Le 24/05/2017, à 20:20)
Hors ligne
#9 Le 24/05/2017, à 21:07
- Compte anonymisé
Re : Iptables et proftpd
Salut,
heu, tu fais du SSL mais tu n'ouvres pas les ports correspondants ?
cat /etc/services
Tu devrais avoir dans ta liste : ftps-data 989/tcp # FTP over SSL(data)
ftps 990/tcp
Ouvre déjà ces ports 989 et 990 en tcp et si ce n'est pas suffisant, ajoute également, ouvre la range de port de 989 à 995 en tcp.
Ceci dit, pourquoi un firewall ? Comme tu peux le voir, c'est bien lui qui bloque la négociation SSL !
#10 Le 24/05/2017, à 21:39
- Negan
Re : Iptables et proftpd
Salut,
A première vue ca n'a pas l'air de changer grand chose, peut être que j'ai pas fais comme il faut.
Peut tu s'il te plaît m'écrire les commandes que tu aurais tapé au cas ou ?
Merci
Hors ligne
#11 Le 24/05/2017, à 22:51
- jean-luc5629
Re : Iptables et proftpd
Salut,
A première vue ca n'a pas l'air de changer grand chose, peut être que j'ai pas fais comme il faut.
Peut tu s'il te plaît m'écrire les commandes que tu aurais tapé au cas ou ?Merci
Bonsoir,
Tu ouvres des ports dans ton firewall, mais as tu fait les redirections dans ta box ??? c'est peu être là que ça bloque ?? sinon tu t'emmerdes vraiment avec ce firewall qui ne sert strictement à rien et en plus derrière une box...
Hors ligne
#12 Le 26/05/2017, à 10:13
- pires57
Re : Iptables et proftpd
Tu ouvres des ports dans ton firewall, mais as tu fait les redirections dans ta box ??? c'est peu être là que ça bloque ??
Je n'ai clairement pas besoin d'un pare feu c'est un FTP juste pour utiliser en local chez moi
Si c'est en local, pas besoin de redirection au niveau de la box.
Sinon pour FTPS, par défaut il faut ouvrir les ports 989 (réponse) et 990 (connection).
Ceci dit, il aurait été beaucoup plus simple d'activer les logs iptables et de les analyser.
Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn
Hors ligne
#13 Le 26/05/2017, à 10:17
- Compte anonymisé
Re : Iptables et proftpd
@ Negan:
J'ai un script qui s'active au démarrage du serveur et qui bloque toutes les connexions sur le pare-feu, ensuite il accepte seulement quelques connexions : ssh, proftpd ...
Puis:
A première vue ca n'a pas l'air de changer grand chose, peut être que j'ai pas fais comme il faut.
Peut tu s'il te plaît m'écrire les commandes que tu aurais tapé au cas ou ?
J'en déduis que tu n'as pas écrit ce script... Utiliser quelque chose que l'on trouve sur Internet (tuto) sans en comprendre les fondements n'est jamais une bonne chose. Alors dans un premier temps, stop ton Iptables et refait des tests de négociation SSL... Dans le fichier.conf de Proftpd, tu as bien indiqué le SSL ?
Dernière modification par Compte anonymisé (Le 26/05/2017, à 10:20)
#14 Le 26/05/2017, à 17:16
- Negan
Re : Iptables et proftpd
Bonjour,
En effet je suis en local donc pas besoin de redirection.
Je viens d'éteindre mon firewall et de tester, la connexion SSL s'établie et j'ai accès à mon FTP sans problème.
C'est donc bien à priori le firewall qui me bloque le SSL.
Mon script c'est pas moi qui l'ai fait je l'ai pris sur internet, le voilà :
#!/bin/sh
### BEGIN INIT INFO
# Provides: Firewall maison
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start:
# Default-Stop:
# X-Interactive: false
# Short-Description: Firewall maison
### END INIT INFO
# Mise à 0
iptables -t filter -F
iptables -t filter -X
echo "Mise à 0"
# On bloque tout
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
echo "Interdiction"
# Ne pas casser les connexions établies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Autorise le loopback (127.0.0.1)
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
echo "Loopback"
# ICMP (le ping)
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
echo "Ping ok"
# SSH IN/OUT
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT
echo "SSH ok"
# DNS In/Out
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
echo "dns ok"
# NTP Out
iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT
echo "ntp ok"
# HTTP + HTTPS Out
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT
# HTTP + HTTPS In
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 8443 -j ACCEPT
echo "http ok"
#Modules pour FTP
modprobe ip_conntrack_ftp
echo "module chargé"
# FTP Out
iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 20 -j ACCEPT
# FTP In
# imodprobe ip_conntrack_ftp # ligne facultative avec les serveurs OVH
iptables -t filter -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "ftp ok"
Je veux bien essayer d'ouvrir les ports SSL mais je ne sais pas faire ...
Merci !
Hors ligne
#15 Le 28/05/2017, à 16:53
- Compte anonymisé
Re : Iptables et proftpd
@ Negan:
#Modules pour FTP
modprobe ip_conntrack_ftp
echo "module chargé"
# FTP Out
iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 20 -j ACCEPT
# FTP In
# imodprobe ip_conntrack_ftp # ligne facultative avec les serveurs OVH
iptables -t filter -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "ftp ok"
J'essayerai avec ceci:
# FTP Out
iptables -t filter -A OUTPUT -p tcp -m multiport\ --dport 21,990 -m conntrack --ctstate\ NEW,RELATED,ESTABLISHED -j ACCEPT
# FTP In
# imodprobe ip_conntrack_ftp # ligne facultative avec les serveurs OVH
iptables -t filter -A INPUT -p tcp -m multiport\ --dport 20,989 -m conntrack --ctstate\ RELATED,ESTABLISHED -j ACCEPT
Quel est le retour après reboot de Iptables ?
Dernière modification par Compte anonymisé (Le 28/05/2017, à 16:54)
#16 Le 02/06/2017, à 19:18
- Negan
Re : Iptables et proftpd
Bonjour,
Merci pour la réponse.
J'ai essayé de remplacer les lignes FTP de mon script par les tiennes.
# FTP Out
iptables -t filter -A OUTPUT -p tcp -m multiport\ --dport 21,990 -m conntrack --ctstate\ NEW,RELATED,ESTABLISHED -j ACCEPT
# FTP In
# imodprobe ip_conntrack_ftp # ligne facultative avec les serveurs OVH
iptables -t filter -A INPUT -p tcp -m multiport\ --dport 20,989 -m conntrack --ctstate\ RELATED,ESTABLISHED -j ACCEPT
A première vue, les commandes sont acceptées.
Le reboot de mon firewall se passe également correctement.
Cependant je l'ai plus aucun accès a mon FTP, avant je pouvais me connecter, le dossier n'était pas récupéré.
Maintenant plus rien.
Je joints je iptables -L au cas ou
root@server:/etc/init.d# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT tcp -- anywhere anywhere tcp dpt:8443
ACCEPT tcp -- anywhere anywhere multiport dports ftp-data,ftps-data ctstate RELATED,ESTABLISHED
ufw-before-logging-input all -- anywhere anywhere
ufw-before-input all -- anywhere anywhere
ufw-after-input all -- anywhere anywhere
ufw-after-logging-input all -- anywhere anywhere
ufw-reject-input all -- anywhere anywhere
ufw-track-input all -- anywhere anywhere
Chain FORWARD (policy DROP)
target prot opt source destination
ufw-before-logging-forward all -- anywhere anywhere
ufw-before-forward all -- anywhere anywhere
ufw-after-forward all -- anywhere anywhere
ufw-after-logging-forward all -- anywhere anywhere
ufw-reject-forward all -- anywhere anywhere
ufw-track-forward all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:ntp
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT tcp -- anywhere anywhere multiport dports ftp,ftps ctstate NEW,RELATED,ESTABLISHED
ufw-before-logging-output all -- anywhere anywhere
ufw-before-output all -- anywhere anywhere
ufw-after-output all -- anywhere anywhere
ufw-after-logging-output all -- anywhere anywhere
ufw-reject-output all -- anywhere anywhere
ufw-track-output all -- anywhere anywhere
Chain ufw-after-forward (1 references)
target prot opt source destination
Chain ufw-after-input (1 references)
target prot opt source destination
ufw-skip-to-policy-input udp -- anywhere anywhere udp dpt:netbios-ns
ufw-skip-to-policy-input udp -- anywhere anywhere udp dpt:netbios-dgm
ufw-skip-to-policy-input tcp -- anywhere anywhere tcp dpt:netbios-ssn
ufw-skip-to-policy-input tcp -- anywhere anywhere tcp dpt:microsoft-ds
ufw-skip-to-policy-input udp -- anywhere anywhere udp dpt:bootps
ufw-skip-to-policy-input udp -- anywhere anywhere udp dpt:bootpc
ufw-skip-to-policy-input all -- anywhere anywhere ADDRTYPE match dst-type BROADCAST
Chain ufw-after-logging-forward (1 references)
target prot opt source destination
LOG all -- anywhere anywhere limit: avg 3/min burst 10 LOG level warning prefix "[UFW BLOCK] "
Chain ufw-after-logging-input (1 references)
target prot opt source destination
LOG all -- anywhere anywhere limit: avg 3/min burst 10 LOG level warning prefix "[UFW BLOCK] "
Chain ufw-after-logging-output (1 references)
target prot opt source destination
Chain ufw-after-output (1 references)
target prot opt source destination
Chain ufw-before-forward (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere icmp destination-unreachable
ACCEPT icmp -- anywhere anywhere icmp source-quench
ACCEPT icmp -- anywhere anywhere icmp time-exceeded
ACCEPT icmp -- anywhere anywhere icmp parameter-problem
ACCEPT icmp -- anywhere anywhere icmp echo-request
ufw-user-forward all -- anywhere anywhere
Chain ufw-before-input (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ufw-logging-deny all -- anywhere anywhere ctstate INVALID
DROP all -- anywhere anywhere ctstate INVALID
ACCEPT icmp -- anywhere anywhere icmp destination-unreachable
ACCEPT icmp -- anywhere anywhere icmp source-quench
ACCEPT icmp -- anywhere anywhere icmp time-exceeded
ACCEPT icmp -- anywhere anywhere icmp parameter-problem
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT udp -- anywhere anywhere udp spt:bootps dpt:bootpc
ufw-not-local all -- anywhere anywhere
ACCEPT udp -- anywhere 224.0.0.251 udp dpt:mdns
ACCEPT udp -- anywhere 239.255.255.250 udp dpt:1900
ufw-user-input all -- anywhere anywhere
Chain ufw-before-logging-forward (1 references)
target prot opt source destination
Chain ufw-before-logging-input (1 references)
target prot opt source destination
Chain ufw-before-logging-output (1 references)
target prot opt source destination
Chain ufw-before-output (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ufw-user-output all -- anywhere anywhere
Chain ufw-logging-allow (0 references)
target prot opt source destination
LOG all -- anywhere anywhere limit: avg 3/min burst 10 LOG level warning prefix "[UFW ALLOW] "
Chain ufw-logging-deny (2 references)
target prot opt source destination
RETURN all -- anywhere anywhere ctstate INVALID limit: avg 3/min burst 10
LOG all -- anywhere anywhere limit: avg 3/min burst 10 LOG level warning prefix "[UFW BLOCK] "
Chain ufw-not-local (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere ADDRTYPE match dst-type LOCAL
RETURN all -- anywhere anywhere ADDRTYPE match dst-type MULTICAST
RETURN all -- anywhere anywhere ADDRTYPE match dst-type BROADCAST
ufw-logging-deny all -- anywhere anywhere limit: avg 3/min burst 10
DROP all -- anywhere anywhere
Chain ufw-reject-forward (1 references)
target prot opt source destination
Chain ufw-reject-input (1 references)
target prot opt source destination
Chain ufw-reject-output (1 references)
target prot opt source destination
Chain ufw-skip-to-policy-forward (0 references)
target prot opt source destination
DROP all -- anywhere anywhere
Chain ufw-skip-to-policy-input (7 references)
target prot opt source destination
DROP all -- anywhere anywhere
Chain ufw-skip-to-policy-output (0 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Chain ufw-track-forward (1 references)
target prot opt source destination
Chain ufw-track-input (1 references)
target prot opt source destination
Chain ufw-track-output (1 references)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere ctstate NEW
ACCEPT udp -- anywhere anywhere ctstate NEW
Chain ufw-user-forward (1 references)
target prot opt source destination
Chain ufw-user-input (1 references)
target prot opt source destination
Chain ufw-user-limit (0 references)
target prot opt source destination
LOG all -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning prefix "[UFW LIMIT BLOCK] "
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain ufw-user-limit-accept (0 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Chain ufw-user-logging-forward (0 references)
target prot opt source destination
Chain ufw-user-logging-input (0 references)
target prot opt source destination
Chain ufw-user-logging-output (0 references)
target prot opt source destination
Chain ufw-user-output (1 references)
target prot opt source destination
Une autre idée ?
Hors ligne
#17 Le 15/10/2019, à 08:36
- nel23FX
Re : Iptables et proftpd
bonjour,
je déterre le sujet désolé, mais quand tu fait du multiport en iptables tu dois utiliser dports avec un s sinon il ne te prends que le premier port inscrit. Sauf erreur de ma part
Concernant proftpd il va te faire une connexion sur 21/tcp (oui ftp quoi) pour la connexion ...... mais aussi sur un plage de port annexe avec iptables genre 1024:65535 pour faire large :-) . Fait un log de ton iptables tu verra tout de suite quelles trames tcp sont bloquées... C'est un peu ancien mais bon...
Hors ligne
Pages : 1