Iptables Acces avec Dns (Dyndns/no-ip)

Salut à tous,

Voila c’est mon premier sujet sur le forum et je cherche de l’aide pour une configuration IPTABLES.

J’ai un serveur sous Debian et je voudrais bloqué l’accès au serveur sauf pour ceux qui ont une certaine DNS (Dyndns ou no-ip) j’ai fais pas mal de recherche sur le net mais sans résultat.

Je voudrais aussi précisé que je suis débutant avec linux (Debian) c’est pourquoi je vous pris de bien détailler les marches a suivre.

Merci à vous tous et à bientôt.

@++

Peux-tu préciser ta demande, avec un cas d’utilisation concret par exemple ?

Salut,

Ce que je veux c’est que pour avoir accès au serveur il faut avoir un client DYNDNS ou NP-IP installer sur le PC + une DNS, donc lorsque je veux me connecter au serveur si je ne suis pas avec une DNS (BABYduNET.dyndns.org par exemple) je n’aurais pas accès.

Merci.

Salut,

D’après ce que je voix cela est impossible a mettre en place.

Eh, je n’ai encore rien dit !

Certe tout n’est pas possible. En particulier les résolutions DNS ne sont pas utilisables pendant l’application des règles iptables à un paquet (car cela se passe dans le noyau, et le noyau ne fait pas de résolution DNS). On peut spécifier une source ou une destination avec un nom de domaine dans une adresse lors de la création d’une règle, mais alors le nom est résolu en adresse qui est inscrite dans la règle. Si le nom de domaine se résoud en plusieurs adresses, alors une règle est créée pour chaque adresse.

On voit immédiatement le problème avec un nom de domaine dynamique : on peut créer une règle avec l’adresse correspondante à un moment donné, mais cette règle ne sera plus valable si l’adresse change. Il faut donc remplacer la règle avec la nouvelle adresse à jour après chaque changement. Comme on ne peut pas savoir quand l’adresse change (à moins que le client DNS dynamique notifie le serveur d’une manière ou d’une autre), on n’a pas d’autre choix que de vérifier l’adresse périodiquement pour remplacer la règle iptables en cas de changement ou bien de mettre à jour la règle périodiquement. La période doit être réglée avec le temps minimum d’indisponibilité qu’on accepte (si l’adresse change juste après la vérification).

De façon très rustique, cela pourrait donner quelque chose comme ceci (j’omets volontairement le reste des règles iptables) :

[code]# periode de verification en secondes
periode=60

iptables -N acl_dyn
iptables -A INPUT -p tcp --dport 80 --syn -j acl_dyn
iptables -A INPUT -p tcp --dport 80 --syn -j REJECT --reject-with tcp-reset

boucle infinie

while true
do

effacement des regles de la chaine

iptables -F acl_dyn

creation des regles dynamiques

iptables -A acl_dyn domaine1.dyndns.org -j ACCEPT
iptables -A acl_dyn domaine2.no-ip.org -j ACCEPT

etc.

sleep $periode
done
[/code]
Edit : vider une chaîne = -F ; -X = supprimer la chaîne