Firewall iptables simple web dns pour lan

Bonjour,
Cela fait plusieurs jour que je cherche une configuration pour iptables ne trouvant rien je vous supplies de m aider car je n’ai plus de doliprane pour ma pauvre tete :wink:

ma version debian est 2.6 26-2-686
ma version iptables v1.4.2

mon reseau BOX internet adresse 192.168.7.254 ==> eth0 192.168.7.150 debian eth1 192.168.200.20 ================> wan 192.168.200.10 routeur d-link lan 192.168.207.8 ==> pc1 192.168.207.100 pc2 192.168.207.101

Je voudrai bloquer tout le trafic sauf l accès au page web et dns pour les pc1 et pc2

voici ma configuration

#Remise à zero
iptables -t filter -F
iptables -t filter -X
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

#bloque tout
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -P INPUT DROP

#boucle local accept
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A FORWARD -i lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT

#joindre les cartes reseaux et partager la connexion
echo > 1 /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

le reste ne fonction pas j’ai essayé plein de solution mais je n arrive pas à trouver.

#derniere config testé pour web et dns
#web
iptables -t filter -A OUTPUT -p tcp -d 192.168.200.0 --dport 80 -j ACCEPT

#dns
iptables -t filter -A OUTPUT -p tcp -d 192.168.200.0 --dport 53 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p udp --sport 53 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p udp --dport 53 -j ACCEPT

D’avance merci beaucoup pour votre aide

[quote=“asmodaisda”]Bonjour,
Cela fait plusieurs jour que je cherche une configuration pour iptables ne trouvant rien je vous supplies de m aider car je n’ai plus de doliprane pour ma pauvre tete :wink:

ma version debian est 2.6 26-2-686
ma version iptables v1.4.2

mon reseau BOX internet adresse
192.168.7.254 ==>

eth0 192.168.7.150
debian
eth1 192.168.200.20 ==> wan 192.168.200.10

routeur d-link lan 192.168.207.8 ==>
pc1 192.168.207.100
pc2 192.168.207.101
[/quote]

Je ne comprend pas le système, ta description est vraiment minimale, on a deux PC en lan, bon. C’est quoi debian? Il semble n’y avoir aucune passerelle en le lan et le reste.

Si pc1 et pc2 passe par le routeur pour accéder à debian puis à la freebox, c’est rapé si le routeur se comporte comme un point d’accès usuel en faisant du masquerading: tous les paquets arriveront avec une adresse source valant 192.168.200.10, tu n’auras aucun moyen de différencier pc1 et pc2 (du moins sauf à faire un tunnel, je ne vois pas comment c’est faisable).

Salut,

Trucs et Astuces est un forum dédié aux trucs et astuces, non à l’assistance :slightly_smiling:

il était dans T&A?? Pas fait attention sur ce coup là…

Re,

Faut bien m’en laisser un de temps en temps sinon je ne saurais jamais faire :slightly_smiling:

en faite j aurai du m arrêter la mon réseau BOX internet adresse 192.168.7.254 ==> eth0 192.168.7.150 debian eth1 192.168.200.20 ================> lan 192.168.200.10 pc1

Je voudrai seulement que le pc1 et accès au page internet et à la résolution dns et seulement cela. Mais en ayant une politique de blocage de input output et forward sur le reste des ports et protocole.

D’avance merci

Je n’ai rien compris, tu voudrais que pc1 quoi (il manque un truc)
et avoir (j’imagine) accès au(x) pages internet … certes mais à partir de quoi? Bref il manque des mots.

Désolé je vais reformuler

INTERNET PAR BOX (IP 192.168.7.254) celui-ci connecté en rj45 à l’interface eth0 (ip 192.168.7.150) du PC FIREWALL PASSERELLE DEBIAN celui ci connecté par son autre interface eth1 (IP 192.168.200.20) en rj45 au PC1 qui à comme ip 192.168.200.10

Je voudrai que le PC1 ai accès à au page internet et à la résolution dns; sauf que pour cela il faut configurer le firewall iptables du poste DEBIAN qui relie la BOX INTERNET au PC1.

D’avance merci

Finalement j’ai trouvé
Bon c est sur que c est pas le top securité mais bon ca fonctionne c est deja ca
Pour ceux qui chercherai voila ce que j’ai fait

#Remise à zero
iptables -t filter -F
iptables -t filter -X
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

#bloque tout
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -P INPUT DROP

#boucle local accept
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A FORWARD -i lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT

#joindre les cartes reseaux et partager la connexion
echo > 1 /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

#dns
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -j ACCEPT

#normalement le dns utilise pas le tcp donc ces deux lignes ne devrai pas etre obligatoire
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT

#page internet
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT

#maintenir les flux etablis (ces lignes sont vraiment pas top mais j’ai rien trouvé de mieu helas )
iptables -A OUTPUT --match state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT --match state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD --match state --state ESTABLISHED,RELATED -j ACCEPT

Les OUTPUT et INPUT ne concerne que la machine locale, pour le relais ne sont concernés que les PREROUTING, FORWARD et POSTROUTING. Les chaines suivantes sont inutlies

[quote]iptables -A FORWARD -i lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT

#dns

iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT

iptables -A INPUT -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
[/quote]parce qu’il n’y a pas de FORWARD dans le réseau loopback, que ta machine ne fait ni DNS ni serveur WEB (chaine INPUT) ni n’interroge les DNS et le serveur WEB (chaine OUTPUT mais ça me parait très restrictif, autorise le 53 en OUTPUT). Enfin tu oublies le https.

Autres observations :

[quote=“asmodaisda”]iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT[/quote]
Il y a belle lurette que la table “mangle” a aussi des chaînes INPUT, FORWARD et POSTROUTING.

[quote=“asmodaisda”]#normalement le dns utilise pas le tcp donc ces deux lignes ne devrai pas etre obligatoire
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT[/quote]

  1. DNS peut utiliser TCP dans certains cas particuliers (transfert de zone, réponse trop longue pour tenir dans un paquet).
  2. Ces deux règles n’ont aucun rapport avec le commentaire qui précède puisqu’elles concernent UDP et sont des doublons d’une règle précédente (et inutile, les paquets de réponse étant pris en charge par les règles de suivi de connexion).

[quote=“asmodaisda”]#maintenir les flux etablis (ces lignes sont vraiment pas top mais j’ai rien trouvé de mieu helas )
iptables -A OUTPUT --match state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT --match state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD --match state --state ESTABLISHED,RELATED -j ACCEPT[/quote]
“Pas top” ? Ces trois règles de suivi de connexion sont la base de tout bon jeu de règles, et devraient se trouver en début de chaînes et non à la fin, car en temps normal ce sont elles qui traitent la plus grande partie du trafic.

Je ne sais pas ce que tu entends par “ça fonctionne”, mais ce jeu de règles ne remplit pas le cahier des charges exprimé plus haut qui est certes des plus vagues. Les règles de filtrage ne tiennent pas compte des adresses sources ni des interfaces d’entrée et de sortie. Donc il est possible d’établir des connexion HTTP ou de faire des requêtes DNS depuis n’importe où vers n’importe où à travers le pare-feu (y compris de l’extérieur vers l’intérieur), et pas seulement depuis 192.168.200.10 vers n’importe où.

merci pour vos réponses je débute sous iptables donc je tatone pour que ca fonctionne sans être une passoire mais au vu de vos commentaire j’ai encore du boulot :slightly_smiling:

C’est fou mais tu as raison le dns et les pages internet fonctionnes uniquement avec ces trois règles
#dns
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -p tcp --dport 53 -j ACCEPT (le doublon était parce que j’ai oublié de mettre tcp)

#pages internet
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT

Je vais travailler aussi sur une politique plus stricte niveau adresse ip comme vous me lavez rappelé

Encore merci pour vos reponses