Iptables
snoopy
-
nrm -
nrm -
Bonjour,
Je voudrais savoir ce que vous pensez de mon script iptables.. Il devra servir de passerelle entre un réseau internet et un réseau local.
Je pense qu'il y a des erreurs .. dite moi ce que vous en pensez.:
#!/bin/sh
#Declaration des variables
eth1 = "wan"
eth0 = "lan"
# Nous vidons toutes les chaines
iptables -F
# Nous supprimons les chaines non standards
iptables -X
# Par defaut tout est ferme
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# reinitialisation table 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
# Translation d'adresse pour tout ce qui sort vers l'internet
iptables -t nat -A POSTROUTING -o $wan -j MASQUERADE
#Activation du Forward pour pouvoir router tous les paquets vers l'internet
echo 1 > /proc/sys/net/ipv4/ip_forward
# La machine locale est sure
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Resolution DNS pour les machines du LAN
iptables -A FORWARD -i $wan -o $lan --protocol udp --source-port 53 -j ACCEPT
iptables -A FORWARD -i $lan -o $wan --protocol udp --destination-port 53 -j ACCEPT
iptables -A FORWARD -i $wan -o $lan --protocol tcp --source-port 53 -j ACCEPT
iptables -A FORWARD -i $lan -o $wan --protocol tcp --destination-port 53 -j ACCEPT
# connexions LAN-Internet (www)
iptables -A FORWARD -p tcp --dport 80 -i $lan -o $wan -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -i $lan -o $wan -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --sport 80 -i $wan -o $lan -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --sport 443 -i $wan -o $lan -m state --state ESTABLISHED,RELATED -j ACCEPT
# connexions LAN-Internet (pop)
iptables -A FORWARD -p tcp --dport 110 -i $lan -o $wan -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --sport 110 -i $wan -o $lan -m state --state ESTABLISHED,RELATED -j ACCEPT
# connexions LAN-Internet (imap)
iptables -A FORWARD -p tcp --dport 143 -i $lan -o $wan -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --sport 143 -i $wan -o $lan -m state --state ESTABLISHED,RELATED -j ACCEPT
# connexions LAN-Internet (imaps)
iptables -A FORWARD -p tcp --dport 993 -i $lan -o $wan -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --sport 993 -i $wan -o $lan -m state --state ESTABLISHED,RELATED -j ACCEPT
# connexions LAN-Internet (smtp)
iptables -A FORWARD -p tcp --dport 25 -i $lan -o $wan -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --sport 25 -i $wan -o $lan -m state --state ESTABLISHED,RELATED -j ACCEPT
Je voudrais savoir ce que vous pensez de mon script iptables.. Il devra servir de passerelle entre un réseau internet et un réseau local.
Je pense qu'il y a des erreurs .. dite moi ce que vous en pensez.:
#!/bin/sh
#Declaration des variables
eth1 = "wan"
eth0 = "lan"
# Nous vidons toutes les chaines
iptables -F
# Nous supprimons les chaines non standards
iptables -X
# Par defaut tout est ferme
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# reinitialisation table 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
# Translation d'adresse pour tout ce qui sort vers l'internet
iptables -t nat -A POSTROUTING -o $wan -j MASQUERADE
#Activation du Forward pour pouvoir router tous les paquets vers l'internet
echo 1 > /proc/sys/net/ipv4/ip_forward
# La machine locale est sure
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Resolution DNS pour les machines du LAN
iptables -A FORWARD -i $wan -o $lan --protocol udp --source-port 53 -j ACCEPT
iptables -A FORWARD -i $lan -o $wan --protocol udp --destination-port 53 -j ACCEPT
iptables -A FORWARD -i $wan -o $lan --protocol tcp --source-port 53 -j ACCEPT
iptables -A FORWARD -i $lan -o $wan --protocol tcp --destination-port 53 -j ACCEPT
# connexions LAN-Internet (www)
iptables -A FORWARD -p tcp --dport 80 -i $lan -o $wan -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -i $lan -o $wan -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --sport 80 -i $wan -o $lan -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --sport 443 -i $wan -o $lan -m state --state ESTABLISHED,RELATED -j ACCEPT
# connexions LAN-Internet (pop)
iptables -A FORWARD -p tcp --dport 110 -i $lan -o $wan -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --sport 110 -i $wan -o $lan -m state --state ESTABLISHED,RELATED -j ACCEPT
# connexions LAN-Internet (imap)
iptables -A FORWARD -p tcp --dport 143 -i $lan -o $wan -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --sport 143 -i $wan -o $lan -m state --state ESTABLISHED,RELATED -j ACCEPT
# connexions LAN-Internet (imaps)
iptables -A FORWARD -p tcp --dport 993 -i $lan -o $wan -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --sport 993 -i $wan -o $lan -m state --state ESTABLISHED,RELATED -j ACCEPT
# connexions LAN-Internet (smtp)
iptables -A FORWARD -p tcp --dport 25 -i $lan -o $wan -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --sport 25 -i $wan -o $lan -m state --state ESTABLISHED,RELATED -j ACCEPT
10 réponses
Bonjour,
je suis pas un grand spécialiste, dutout.
mais j'ai 2 remarques, comme ça.
Vous autorisez les requetes DNS entrantes WAN->LAN.
Y a t'il une raison ? parce que ça me semble une faille de sécurité.
Moi au taf j'utilise mon DNS en local+relai pour le 50 postes des LAN. Mais j'ai pas besoin d'ouvrir un port entrant pour cela.
Dans les ACL, on place d'abord les règles d'autorisation et a la fin on place un "deny all" pour bloquer le reste.
Enfin je fais comme cela sur les switchs. C'est pas indispensable avec iptables ?
Dans l'ensemble, on sent que c'est construit méthodiquement.
Cordialement
je suis pas un grand spécialiste, dutout.
mais j'ai 2 remarques, comme ça.
Vous autorisez les requetes DNS entrantes WAN->LAN.
Y a t'il une raison ? parce que ça me semble une faille de sécurité.
Moi au taf j'utilise mon DNS en local+relai pour le 50 postes des LAN. Mais j'ai pas besoin d'ouvrir un port entrant pour cela.
Dans les ACL, on place d'abord les règles d'autorisation et a la fin on place un "deny all" pour bloquer le reste.
Enfin je fais comme cela sur les switchs. C'est pas indispensable avec iptables ?
Dans l'ensemble, on sent que c'est construit méthodiquement.
Cordialement
J'ai autorisé le dns dans les deux sens car il faut q'il y ait une demande et une reponse il me semble?
Il serait suffisant d'autoriser d'atteindre les serveurs dns seulement dans le sens LAN ->WAN ?
Il serait suffisant d'autoriser d'atteindre les serveurs dns seulement dans le sens LAN ->WAN ?
Pour ce qui est de l'ordre des règles , la logique est bien de tout fermer par défaut, et d'ouvrir seulement de ce qu'on a besoin.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pour le DNS, seul les acces sortants sont utiles. Quand le serveur dns ou un client fait une requete, le routeur initialise un port pour la connexion et mémorise afin que la réponse soit possible.
Donc l'initiative de la connexion est toujours sortante.
Un DNS entrant est utilisé s'il y a un serveur local DNS qui fait autorité pour son domaine. Mais derrière un NAT, c'est vraiment pas utile... Ou alors il faut le faire entre plusieurs LAN a travers un VPN.
Pour l'ordre des ACL, il semble qu'iptables n'en ai pas.
Sur les switchs 3Com par exemple, dans les acl, il faut les ordonner car elles sont appliquées les unes après les autres.
Cordialement,
Donc l'initiative de la connexion est toujours sortante.
Un DNS entrant est utilisé s'il y a un serveur local DNS qui fait autorité pour son domaine. Mais derrière un NAT, c'est vraiment pas utile... Ou alors il faut le faire entre plusieurs LAN a travers un VPN.
Pour l'ordre des ACL, il semble qu'iptables n'en ai pas.
Sur les switchs 3Com par exemple, dans les acl, il faut les ordonner car elles sont appliquées les unes après les autres.
Cordialement,
Merci des réponses, mais dans mon cas ce n'est pas un routeur, c'est une machine qui fait office de firewall (ubuntu). Cela marche de la meme facon? ou alors faudrait-il faire un new,established, related, justement pour entre guillemet "que le firewall initialise un port" comme un routeur?
Sans doute. D'autant que vous n'aurez pas de serveur DNS. Donc aucune raison d'ouvrir un port statique.
Quand on ouvre un port WAN entrant, il faut qu'il y ait un serveur a l'écoute au bout.
Cordialement,
Quand on ouvre un port WAN entrant, il faut qu'il y ait un serveur a l'écoute au bout.
Cordialement,
Effectivement le DNS dans les deux sens ne sert a rien sinon l'ensemble parait correcte.
Juste une chose qui me parait bizarre c'est :
# Par defaut tout est ferme
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
si tu veut vraiment fermé met en DROP ou en LOG avec dans ta table log un DROP
Pour les log tu peut crée une chaine avec
iptables -N LOG
iptables -A LOG -j LOG -(... voir pour l'help pour plus de detail)
iptables -A LOG -j DROP
tu peut ajouter a la fin de ton script une règle qui concerne tout et tu l'envoi dans la chaine LOG.
Voila amuse toi bien
Juste une chose qui me parait bizarre c'est :
# Par defaut tout est ferme
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
si tu veut vraiment fermé met en DROP ou en LOG avec dans ta table log un DROP
Pour les log tu peut crée une chaine avec
iptables -N LOG
iptables -A LOG -j LOG -(... voir pour l'help pour plus de detail)
iptables -A LOG -j DROP
tu peut ajouter a la fin de ton script une règle qui concerne tout et tu l'envoi dans la chaine LOG.
Voila amuse toi bien
J'aurais une autre question... comment marchent les logs sous iptables... et comment en mettre en place de facon intelligente?
iptables dispose d'une cible LOG :
https://netfilter.org/documentation/HOWTO/fr/packet-filtering-HOWTO-7.html#ss7.4
https://netfilter.org/documentation/HOWTO/fr/packet-filtering-HOWTO-7.html#ss7.4