Vous n'êtes pas identifié.
Bonjour,
voilà, mon PC central me sert généralement de passerelle pour le reste de mon LAN qui compte actuellement 3 postes.
D'habitude, je créé ce réseau à l'aide des deux seules règles suivantes :
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MASQUERADE
Ce qui me permettait d'avoir internet sur tout mes postes.
Cette technique étant je le sais, insécurisée, j'ai donc décidé de sécurisé un peu plus mon accèss à internet.
Mais il se pose un problême de taille quand j'utilise les règles présentées si dessous, c'est que mon PC faisant office de passerelle ne peu plus accéder à internet correctement
Pourtant, les autres postes de mon réseau local peuvent y accéder !
Le problême vient je pense de la résolution des noms de domaines sur mon PC.
Sachant que ma connexion est chez wanadoo, que j'utilise donc les serveurs de nom de domaine de wanadoo, qui sont donc externes à mon réseau local, comment cela se fait-il que je ne puisse plus résoudre ces noms de domaines?
Voici mon fichier de configuration pour Iptables :
####### FORWARDING ####### echo 1 > /proc/sys/net/ipv4/ip_forward ###### MODULES CHARGING ###### /sbin/modprobe ip_conntrack_ftp /sbin/modprobe ip_nat_ftp /sbin/modprobe ip_conntrack_irc /sbin/modprobe ip_conntrack /sbin/modprobe iptable_nat /sbin/modprobe iptable_filter ###### RULES CLEANING ####### # SIMPLE iptables -F iptables -X iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # NAT 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 # MANGLE iptables -t mangle -F iptables -t mangle -X iptables -t mangle -P PREROUTING ACCEPT iptables -t mangle -P INPUT ACCEPT iptables -t mangle -P OUTPUT ACCEPT iptables -t mangle -P FORWARD ACCEPT iptables -t mangle -P POSTROUTING ACCEPT ######## RULES ESTABLISHING ######## # LOCAL iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # LAN iptables -A INPUT -i eth0 -j ACCEPT iptables -A OUTPUT -o eth0 -j ACCEPT # CONNEXION SHARING iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE # Toutes les connexions qui sortent du LAN vers le Net sont acceptées iptables -A FORWARD -i eth0 -o ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT # Seules les connexions déjà établies ou en relation avec des connexions établies sont acceptées venant du Net vers le LAN iptables -A FORWARD -i ppp0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT # ICMP iptables -A INPUT -p icmp -m state --state RELATED -j ACCEPT # Autorisation des requêtes DNS locales #iptables -A OUTPUT -o ppp0 -p udp --sport 1024: --dport 53 -m state --state ! INVALID -j ACCEPT #iptables -A INPUT -i ppp0 -p udp --sport 53 --dport 1024: -m state --state RELATED,ESTABLISHED -j ACCEPT # Accès SSH depuis le Net #iptables -A INPUT -p tcp --dport ssh -i ppp0 -j ACCEPT #iptables -A OUTPUT -p tcp --sport ssh -o ppp0 -j ACCEPT ######## RULES PRINTING ######### iptables -L iptables -t nat -L
Que lorsque j'essait de me connecter à un shell ssh, j'ai un message d'erreur de non résolution de nom de domaine, et que lorsque j'essait de pinger un host à partir de ma passerelle, même en ne pingant qu'une IP, le résultat est
# ping 83.192.102.113 PING 83.192.102.113 (83.192.102.113) 56(84) bytes of data. ping: sendmsg: Operation not permitted ping: sendmsg: Operation not permitted --- 83.192.102.113 ping statistics --- 2 packets transmitted, 0 received, 100% packet loss, time 999ms
Mon resolv.conf :
nameserver 80.10.246.1 nameserver 80.10.246.132
Si vous avez besoin d'avantage d'informations, n'hésitez pas à me demander.
Merci d'avance pour votre aide
Bonne journée.
Hors ligne
Hello,
Pour le ping en sortie, ça me parait normal: tu n'as pas de règle autorisant l'ICMP en sortie et la policy est drop.
Pour la résolution DNS, c'est le port local 1024 qui me paraît louche: vu ton resolv.conf, tu n'
utilises pas de serveur DNS local, et les requêtes dns sortantes n'utilisent pas de port fixe.
Le plus simple serait d'enlever les clauses --sport 1024 pour ta règle sur le DNS.
Si tu tiens absolument à ce que les requêtes DNS originent d'un port fixe, je ne connais pas de méthode pour le faire avec le resolver système (a part trifouiller dans les sources peut-être), mais tu pourrais par contre installer bind sur ta passerelle, tu auras un cache DNS local en plus.
Ensuite, il te faut considérer qui à accès a ta passerelle. Si un attaquant réussit a s'introduire dessus, il pourra supprimer toutes les règles qu'il veut. Donc, le filtrage en sortie est utile si des utilisateurs à qui tu ne fais pas confiance ont accès a la passerelle, et a condition que tu sois certain que ton système est blindé contre les escalations de privilège locales. Il peut aussi théoriquement servir a te rendre inutilisable comme relais dans un portscan aveuge, mais en principe la stack tcp de linux est déja résistante à cette attaque.
[/code]
Hors ligne
Pour le ping en sortie, ça me parait normal: tu n'as pas de règle autorisant l'ICMP en sortie et la policy est drop.
Pour la résolution DNS, c'est le port local 1024 qui me paraît louche: vu ton resolv.conf, tu n'
utilises pas de serveur DNS local, et les requêtes dns sortantes n'utilisent pas de port fixe.
Le plus simple serait d'enlever les clauses --sport 1024 pour ta règle sur le DNS.
Pour ce qui est du ping, un
iptables -A OUTPUT -p icmp -j ACCEPT
fonctionnerait-il ?
Pour ce qui est du DNS, si tu regardes bien mon script, tu verra qu'en fait les deux lignes qui le concerne sont commentés. Le fait est que j'ai suivit le tuturiel de Christian Caleca (cf : http://christian.caleca.free.fr/) et que celui ci décrit ces deux lignes comme ne servant qu'en cas d'un serveur DNS interne au réseaux. Ce qui n'est pas le cas ici. Mais si tu me dis qu'il suffit d'appliquer ces deux règles sans le --sport 1024, cela voudrait-il dire que ceci arrangerait mes problêmes ? :
# Autorisation des requêtes DNS locales iptables -A OUTPUT -o ppp0 -p udp --dport 53 -m state --state ! INVALID -j ACCEPT iptables -A INPUT -i ppp0 -p udp --sport 53 -m state --state RELATED,ESTABLISHED -j ACCEPT
Merci
Hors ligne
Oui et Oui. En fait, j'avais mal lu, si la clause est --sport 1024: (avec le : a la fin) tu peux la laisser.
Le resolver n'utilisera pas de ports inférieurs a 1024 comme clients.
Le tuto mentionne que cette ligne n'est nécessaire qu'avec un serveur dns local, parce que dans
un contexte à haute sécurité la passerelle ne doit pas être utilisée pour un autre usage et n'a pas
besoin de faire de résolutions DNS. donc on les bloque en vertu du principe de la minimisation des droits d'accès. C'est aussi pourquoi l'ICMP n'était pas autorisé.
Hors ligne
je viens d'essayer avec ces règles. Cela ne fonctionne pas comme prévu, mais nous avance cependant.
Maintenant, quand j'essais de me connecter à un shell ssh distant, je n'ai plus d'erreur de résolution de nom, mais rien n'est afficher, comme si mes packets étaient bien envoyés mais que je ne reçoit rien en retour.
Quand j'essais de me connecter à un site web, c'est pareil, je ne reçois rien en retour.
Hors ligne
Bon, si tu as l'intention de te servir de la passerelle comme machine de travail, le plus simple est
probablement de mettre
iptables -P OUTPUT ACCEPT
et d'oublier toutes les règles concernant OUTPUT.
Hors ligne
Ca marche, merci
Hors ligne
Cela dis, j'ai encore un ptit probleme.
Je ne peu pas accéder aux FTP. Ca ne passe pas :?
Je n'ai aucune idée du probleme, donc si on pouvait me filer un dernier coup de main, cela serait extremement appréciable.
Le fichier que j'utilise actuellement se limite à ça
# http://www.labo-linux.org/cours/module-3/chapitre-04-firewalling # http://sid.rstack.org/index.php/Tuto_Netfiler1 # http://sid.rstack.org/index.php/Tuto_Netfilter2 # http://www.pcinpact.com/forum/sujet_45212.htm # http://www.linuxpourlesnuls.org/modules.php?name=Forums&file=viewtopic&t=2553 # http://www.labo-linux.org/articles-fr/iptables-par-l-exemple/mix-it-together # http://lea-linux.org/cached/index/Reseau-secu-iptables.html# ######################### LOCAL RULES ######################### /sbin/modprobe ip_tables /sbin/modprobe ip_nat_ftp /sbin/modprobe ip_conntrack_ftp /sbin/modprobe ip_nat_irc /sbin/modprobe ip_conntrack_irc /sbin/modprobe ip_conntrack /sbin/modprobe iptable_nat /sbin/modprobe iptable_mangle /sbin/modprobe iptable_filter iptables -F iptables -X iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT iptables -A OUTPUT -o ppp0 -j ACCEPT iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT # ICMP # iptables -A INPUT -p icmp -m limit --limit 3/second -J ACCEPT # accpetera 3 icmp par seconde, le 4eme sera rejeter. #iptables -A INPUT -i ppp0 -p icmp -j ACCEPT iptables -A INPUT -i ppp0 -p icmp --icmp-type 8 -j DROP # Refuse les icmp echo-request iptables -A OUTPUT -p icmp -j ACCEPT iptables -A OUTPUT -o ppp0 -p icmp --icmp-type 0 -j DROP # Refuse les icmp echo-reply sortant sur ppp0 ######################### NAT RULES ######################### echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MASQUERADE
Merci d'avance.
Hors ligne
FTP_PORT=21 FTP_DATA_PORT=20 modprobe ip_conntrack_ftp iptables -A INPUT -p tcp --dport $FTP_DATA_PORT -j ACCEPT iptables -A INPUT -p tcp --dport $FTP_PORT -j ACCEPT
Hors ligne
Hello,
Tant que tu -j ACCEPT ESTABLISHED,RELATED en output aussi, et que tu charges conntrack_ftp, il n'y a pas besoin d'ouvrir le data port (et il ne faudrait d'ailleurs pas)
Hors ligne