Iptables / dns

Bonjour,

Depuis pas mal de temps, j’utilisais ipcop sur mon reseau afin de le protéger.
Ajourd’hui je voudrais me jeter à l’eau et essayer par moi-même de configurer mon firewall.
J’ai une debian sur laquelle est pour l’instant configurée deux interfaces réseaux (eth0—>le lan ; eth1---->l’interface vers le routeur).
eth0 : 192.168.0.1
eth1 : 192.168.10.90

J’essaye d’avancer pas à pas. J’ai potassé pas mal de choses mais il doit avoir un truc que je pige pas.
Par defaut, je veux tt interdire, ca c’est facile :slightly_smiling:
J’ai installe sur mon lan , un serveur dns et dhcp dynamlique (192.168.0.2).
J’ai essaye d’ouvrir les ports du pare feu pour que cette machine execute les requetes dns, mais je n’y arrive pas :frowning:
Pour l’instant mon pare feu ne doit repondre qu’aux requetes dns, et ssh.
Je ne veux pas non plus que mon lan est acces à tout sur le net, j’ouvrirai les ports un à un.

Voici mon script :

[code]#/bin/sh
#variables
modprobe ip_conntrack

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t filter -F
iptables -t filter -X

iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP
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 nat -A POSTROUTING -o eth1 -j MASQUERADE

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -i eth0 -s 192.168.0.2 -m state --state NEW,ESTABLISHED -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o eth0 -d 192.168.0.2 -m state --state ESTABLISHED -p tcp --sport 22 -j ACCEPT

iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT[/code]

Merci d’avance de m’aider sur ce problème qui me pose pas mal de questions.

Quel type de requêtes DNS ? Pour des domaines locaux pour lequel le serveur fait autorité ou pour des domaines extérieurs (dans ce cas il faut autoriser le serveur à faire des requêtes DNS vers l’extérieur, et à recevoir les réponses) ? Pour des clients locaux ou pour des clients extérieurs (dans ce cas il faut rediriger et autoriser les requêtes DNS de l’extérieur, et autoriser les réponses à sortir).

PS: il manque un ! dans la première ligne : #!/bin/sh
PS2 : la commande modprobe est inutile, le module sera chargé automatiquement lorsqu’une règle en aura besoin.

merci beaucoup pour la rapidité de la réponse.
Il s’agit de requêtes dns, pour les clients locaux vers le domaine locale (la y’ a pas de problèmes) et de requêtes des clients locaux vers l’extérieur (requêtes dns pour naviguer par ex).
J’autorise bien eth0 sur la passerelle mais pour eth1 (vers l’extérieur, je n’y parviens pas).

Comme je l’ai écrit il faut autoriser le serveur à faire des requêtes DNS vers l’extérieur, et à recevoir les réponses. Cela concerne des paquets qui traversent le routeur, donc la chaîne FORWARD.

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -s 192.168.0.2 -p udp --dport 53 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -s 192.168.0.2 -p tcp --dport 53 -m state --state NEW -j ACCEPT
Je mets aussi une règle pour TCP car certaines requêtes DNS peuvent se faire en TCP.

C’était donc la chaine forward.
Merci beaucoup de ton aide et de ta rapidité.
Si je pouvais je t’offrirai une pression bien fraiche :slightly_smiling:

Pas de regret, je n’aime pas la bière.