Je dispose d'une machine sous fedora 8 qui me sert de passerelle vers internet pour mon réseau local. Je voudrais que les clients de mon LAN puissent uploader des fichiers sur la passerelle via ftp.
Sur le serveur il ya apache php mysql, ssh et FTP (VSFTPD).
Toutes les règles de iptables marchent sauf celle du FTP, lorsque j'essaie de me connecter avec FileZilla j'arrive à me connecter avec un utilisateur du système mais je n'arrive pas à lister le contenu du repertoire et j'obtiens l'Erreur 425. je signale au passage qu'avant l'établissement des règles de iptables VSFTPD marchait parfaitement
voici la règle pour iptables :
iptables -A INPUT -i eth1 -p TCP --dport 21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Certains tutos conseillent l'activation du module ip_conntrack_ftp mais je n'arrive pas a charger ce module, de plus il semble que ce module a été remplacé par nf_conntrack_ftp qui lui est chargé.
Veuillez m'aider à résoudre ce problème.
# Mon script
Posté par Thomas Bourdon (site web personnel) . Évalué à 0.
J'ai également mon propre serveur ftp/web... et j'ai un script qui s'occupe des règles du firewall. Je n'explique pas trop car j'ai du mal avec iptables et les firewall.
Voici mon script :
#!/bin/sh
WAN="eth1"
LAN="eth0"
IP_LAN="192.168.0.0/24"
firewall_start() {
# Initialisation de la table filter
iptables -F
iptables -X
# Politique par défaut de la table filter
# On ignore tout ce qui entre ou transite par la passerelle
iptables -P INPUT DROP
iptables -P FORWARD DROP
# On accepte, ce qui sort
iptables -P OUTPUT ACCEPT
# Pour éviter les mauvaises suprises, on va
# autoriser l'accès à la loopback, c'est vital !
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# On autorise les clients à accéder à internet
# On créé une nouvelle chaîne, le nom est indifférent
# appelons-la "local-internet"
iptables -N local-internet
# On définit le profil de ceux qui appartiendront à "local-internet"
# "local-internet" concerne toutes les connections sauf celles venant d'internet ( ! = non)
# En gros avec ça, vous rendez, vos serveurs inaccessibles depuis internet.
# Pas de panique, certains serveurs seront autorisés explicitement dans la suite.
iptables -A local-internet -m state --state NEW -i ! $WAN -j ACCEPT
# Evidemment, une fois acceptées comme "local-internet", les connections peuvent continuer
# et faire des petits :-)
iptables -A local-internet -m state --state ESTABLISHED,RELATED -j ACCEPT
# On termine en indiquant que les connections appartenant à "local-internet"
# accèdent à internet de manière transparente.
iptables -A INPUT -j local-internet
iptables -A FORWARD -j local-internet
# Initialisation des tables nat et mangle
iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
# Mise en place du masquerading
iptables -t nat -A POSTROUTING -s $IP_LAN -o $WAN -j MASQUERADE
# Activation de la passerelle
echo 1 > /proc/sys/net/ipv4/ip_forward
# Pas de spoofing
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ] ; then
for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 1 > $filtre
done
fi
# Pas de synflood
if [ -e /proc/sys/net/ipv4/tcp_syncookies ] ; then
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
fi
# Pas ping
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
if [ -e /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ] ; then
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
fi
# Proxy Transparent
#iptables -t nat -A PREROUTING -i $IP_LAN -p tcp --dport 80 -j REDIRECT --to-port 3128
# A ce stade, tous vos clients du réseau local et de la passerelle ont accès à internet. Mieux,
# vos clients du réseau local, ont accès à vos serveurs apache, proftp ... localement. Mais personne
# depuis internet ne peux accéder à l'un des serveurs que vous hébergés.
# Il est bien-sûr possible de déverrouiller pontuellement l'accès à un serveur depuis internet,
# en décommentant les 2 ou 3 lignes correspondantes.
########### ACTIVATION DES SERVEURS SUR INTERNET ##############
# autorisation du serveur ftp(20 et 21) ...
#iptables -A INPUT -p tcp --dport ftp-data -j ACCEPT
iptables -A INPUT -p tcp --dport ftp -j ACCEPT
# autorisation du serveur ssh(22) ...
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
# autorisation du serveur smtp(25) ...
#iptables -A INPUT -p tcp --dport smtp -j ACCEPT
# autorisation du serveur http(80) ...
iptables -A INPUT -p tcp --dport www -j ACCEPT
# autorisation du serveur ntp(123) ...
#iptables -A INPUT -p tcp --dport 123 -j ACCEPT
# autorisation du serveur https(443) ...
#iptables -A INPUT -p tcp --dport https -j ACCEPT
# autorisation du serveur DNS(53) ...
#iptables -A INPUT -p udp --dport domain -j ACCEPT
#iptables -A INPUT -p tcp --dport domain -j ACCEPT
# autorisation du serveur irc(6667) ...
#iptables -A INPUT -p tcp --dport ircd -j ACCEPT
# autorisation du serveur cvs (2401) ...
#iptables -A INPUT -p tcp --dport cvspserver -j ACCEPT
# autorisation du serveur tor (9001)...
#iptables -A INPUT -p tcp --dport 9001 -j ACCEPT
}
firewall_stop() {
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
}
firewall_restart() {
firewall_stop;
sleep 2;
firewall_start;
}
case "$1" in
'start')
firewall_start
;;
'stop')
firewall_stop
;;
'restart')
firewall_restart
;;
'status')
iptables -L
iptables -t nat -L
iptables -t mangle -L
;;
*)
echo "Usage: firewall {start|stop|restart|status}"
esac
# Passer en mode passif
Posté par DonKiShoot (site web personnel) . Évalué à 1.
Si tu n'arrives pas à charger les modules de tracking de connexion ftp, tu t'amputes des connexion "actives" si je me souviens bien.
Cependant il te reste le mode de connexion passif qui est d'ailleurs préférable voir obligatoire lorsque l'on traverse un firewall.
Pour configurer celui-ci, tu dois sélectionner un range de ports passifs ouvert aux utilisateurs.
Ce range servira à recevoir les connexions "data" (listing du répertoire entre autres).
Le nombre de port correspond aux nombres de connexions simultanées que ton serveur ftp devra accepter.
Si on part sur 3 port par ex, tu ouvres en permanence sur ton firewall les ports 65001 à 65003 en provenance de tes utilisateurs.
Puis tu configures dans ton vsftpd.conf ces quelques paramètres :
#
pasv_address — Specifies the IP address for the public facing IP address of the server for servers behind Network Address Translation (NAT) firewalls. This enables vsftpd to hand out the correct return address for passive mode connections.
There is no default value for this directive.
#
pasv_enable — When enabled, passive mode connects are allowed.
The default value is YES.
#
pasv_max_port — Specifies the highest possible port sent to the FTP clients for passive mode connections. This setting is used to limit the port range so that firewall rules are easier to create.
The default value is 0, which does not limit the highest passive port range. The value must not exceed 65535.
#
pasv_min_port — Specifies the lowest possible port sent to the FTP clients for passive mode connections. This setting is used to limit the port range so that firewall rules are easier to create.
The default value is 0, which does not limit the lowest passive port range. The value must not be lower 1024.
#
pasv_promiscuous — When enabled, data connections are not checked to make sure they are originating from the same IP address. This setting is only useful for certain types of tunneling
Bonne continuation ...
# Ouvre aussi les autres ports pour le suivi de connexion...
Posté par Jacques L'helgoualc'h (site web personnel) . Évalué à 4.
donc ajoute la règle générale
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
(ou sinon, ouvre aussi le port 20 vers le réseau local...).
[^] # Re: Ouvre aussi les autres ports pour le suivi de connexion...
Posté par papa35 . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.