Configuration Iptables de DomU Xen en Nat -- Debian --
Résolu
duff4
Messages postés
38
Statut
Membre
-
duff4 Messages postés 38 Statut Membre -
duff4 Messages postés 38 Statut Membre -
Bonjour,
Je suis débutant et j'ai un problème avec mon firewall iptables car je n'arrive pas à le configurer. J'ai activé le mode Nat de Xen, créé un DomU d'ip 10.10.10.1. Mon objectif est de fermer TOUS les ports du firewall puis de les ouvrir un par un. Pour comprendre le principe, j'ai réussi à faire un apt-get update sur le Dom0 en ouvrant les chaines INPUT/OUTPUT des ports 80 (tcp) et 53 (tcp/udp) et ça marche! Mais Je n'arrive pas à configurer la table FILTER et NAT pour l'apt-get sur les DomU (et ouvrir et rediriger le port 80 vers le DomU d'ip 10.10.10.1).
Je voudrais procéder ainsi:
# Bloquage des ports
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
# ouverture des ports du Dom0
[...] <- ça marche
# ouverture des ports du DomU d'ip 10.10.10.1
iptables -A FORWARD -p tcp -d 10.10.10.1 --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -d 10.10.10.1 --dport 53 -j ACCEPT
iptables -A FORWARD -p udp -d 10.10.10.1 --dport 53 -j ACCEPT
iptables -A PREROUTING -t nat -p tcp --dport 80 -j DNAT --to 10.10.10.1:80
iptables -A PREROUTING -t nat -p tcp --dport 53 -j DNAT --to 10.10.10.1:53
iptables -A PREROUTING -t nat -p udp --dport 53 -j DNAT --to 10.10.10.1:53
et... ça marche pas! (pas de apt-get ni possibilité d'acccéder au port 80 du DomU de l'extérieur...)
Pouvez-vous m'aider? Merci infiniement
Je suis débutant et j'ai un problème avec mon firewall iptables car je n'arrive pas à le configurer. J'ai activé le mode Nat de Xen, créé un DomU d'ip 10.10.10.1. Mon objectif est de fermer TOUS les ports du firewall puis de les ouvrir un par un. Pour comprendre le principe, j'ai réussi à faire un apt-get update sur le Dom0 en ouvrant les chaines INPUT/OUTPUT des ports 80 (tcp) et 53 (tcp/udp) et ça marche! Mais Je n'arrive pas à configurer la table FILTER et NAT pour l'apt-get sur les DomU (et ouvrir et rediriger le port 80 vers le DomU d'ip 10.10.10.1).
Je voudrais procéder ainsi:
# Bloquage des ports
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
# ouverture des ports du Dom0
[...] <- ça marche
# ouverture des ports du DomU d'ip 10.10.10.1
iptables -A FORWARD -p tcp -d 10.10.10.1 --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -d 10.10.10.1 --dport 53 -j ACCEPT
iptables -A FORWARD -p udp -d 10.10.10.1 --dport 53 -j ACCEPT
iptables -A PREROUTING -t nat -p tcp --dport 80 -j DNAT --to 10.10.10.1:80
iptables -A PREROUTING -t nat -p tcp --dport 53 -j DNAT --to 10.10.10.1:53
iptables -A PREROUTING -t nat -p udp --dport 53 -j DNAT --to 10.10.10.1:53
et... ça marche pas! (pas de apt-get ni possibilité d'acccéder au port 80 du DomU de l'extérieur...)
Pouvez-vous m'aider? Merci infiniement
4 réponses
-
Hello,
Votre DomU étant local, vous devez utiliser la chaine OUTPUT et non FORWARD.-
Bonsoir,
suite à votre remarque, j'ai modifié le code... ça donne ça:
#! /bin/bash
# Affichage du message d'accueil:
echo -e "\n\n--- SCRIPT DE PARAMÊTRAGE DU FIREWALL ---\n"
# reinitialisation du firewall...
echo "reinitialisation du firewall"
sleep 1
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
echo " [fait]"
# Bloquage des ports
echo "bloquage des ports..."
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
echo " [fait]"
# Ouverture des ports Dom0:
echo "ouverture des ports Dom0..."
# autorisation des connexions établies
echo " - aurositation des connexions établies..."
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
echo " [fait]"
# Autorisation du loopback
echo " - autorisation du loopback..."
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
echo " [fait]"
# Autorisation HTTP
echo " - autorisation HTTP..."
iptables -t filter -d 192.168.0.1 -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -s 192.168.0.1 -A OUTPUT -p tcp --dport 80 -j ACCEPT
echo " [fait]"
# Autorisation HTTPS
echo " - autorisation HTTPS..."
iptables -t filter -d 192.168.0.1 -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -s 192.168.0.1 -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -d 192.168.0.1 -A INPUT -p tcp --dport 8443 -j ACCEPT
echo " [fait]"
# Autorisation SSH
echo " - autorisation SSH..."
iptables -t filter -d 192.168.0.1 -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -t filter -s 192.168.0.1 -A OUTPUT -p tcp --dport 22 -j ACCEPT
echo " [fait]"
# Autorisation DNS
echo " - autorisation DNS..."
iptables -t filter -s 192.168.0.1 -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -s 192.168.0.1 -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -d 192.168.0.1 -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -d 192.168.0.1 -A INPUT -p udp --dport 53 -j ACCEPT
echo " [fait]"
# Ouverture des ports DomU:
echo "ouverture des ports DomU..."
# Autorisation HTTP
echo " - autorisation HTTP..."
iptables -t filter -d 10.10.10.1 -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -s 10.10.10.1 -A OUTPUT -p tcp --dport 80 -j ACCEPT
echo " [fait]"
# Autorisation HTTPS
echo " - autorisation HTTPS..."
iptables -t filter -d 10.10.10.1 -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -s 10.10.10.1 -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -d 10.10.10.1 -A INPUT -p tcp --dport 8443 -j ACCEPT
echo " [fait]"
# Autorisation DNS
echo " - autorisation DNS..."
iptables -t filter -s 10.10.10.1 -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -s 10.10.10.1 -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -d 10.10.10.1 -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -d 10.10.10.1 -A INPUT -p udp --dport 53 -j ACCEPT
echo " [fait]"
sysctl -p
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -s 10.10.10.1 -j MASQUERADE
iptables -A PREROUTING -t nat -p tcp --dport 80 -j DNAT --to 10.10.10.1:80
iptables -A PREROUTING -t nat -p tcp --dport 53 -j DNAT --to 10.10.10.1:53
iptables -A PREROUTING -t nat -p udp --dport 53 -j DNAT --to 10.10.10.1:53
Résultat: le serveur HTTP du DomU est accessible, mais le DomU n'arrive toujours pas à se connecter à internet (comme pour apt-get update)
Deux questions: comment accorder l'accès du DomU à internet ? et laisser la chaîne FORWARD avec la politique ACCEPT n'est-il pas un peu risque?
Merci!
-
-
Ok, avant de vous faire partir dans une mauvaise direction, je préfère checker une chose de plus.
Quelle est la configuration du réseau entre votre dom0 et les domU ? Vous utilisez une config particulière ou la méthode standard du bridge ?-
J'utilise Xen en mode nat:
/etc/xen/xend-config.sxp
(network-script network-nat)
(vif-script vif-nat)
[...]
netmask = 255.255.255.0
broadcast = 10.10.10.255
[...]
lors de la création des DomU je précise l'adresse ip comme 10.10.10.1.
Je cherche à filtrer les connexions aux DomU avec l'iptables du Dom0 -
!
! eth0
! 192.168.0.1
-------------
!Serveur Xen!
!__Dom0___!
-------------
!
!
! NAT
! 10.10.10.1
-------------
!Domaine_1!
!__DomU__!
-------------
Mon but est de filtrer les échanges des Domaines via l'iptables du Dom0:
Permettre à tous les DomU de se connecter à internet (port 80 tcp) et au DNS (53 tcp/udp), mais que les ordinateurs à l'extérieur ne puissent accéder à ces DomU que par des ports spécifiques par exemple le port 80 pour le Domaine_1
-
-
Ok, je suppose que l'interface de sortie de votre dom0 est "eth0".
Dans ce cas il vous faut modifier votre script en remplaçant la ligne "iptables -t nat -A POSTROUTING -s 10.10.10.1 -j MASQUERADE" par "iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE".
Normalement, vous n'avez pas à faire tout ça. C'est fait automatiquement par les scripts de Xen. Je viens de réinstaller un Xen et de tester la création d'une machine avec du NAT. Cela a marché sans que je n'ai eu besoin de faire du tunning de config. -
Merci de ta contribution...
J'ai mis beaucoup de temps, je mes suis fait aider... mais finalement j'ai réussi à pondre quelquechose qui marchait. Je le poste ici si jamais celà peut aider quelqu'un qui avait un bloquage comme moi:
#! /bin/bash # Affichage du message d'accueil: echo -e "nn--- SCRIPT DE PARAMÊTRAGE DU FIREWALL ---n" # reinitialisation du firewall... echo "reinitialisation du firewall" sleep 1 iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT echo " [fait]" # Bloquage des ports echo "bloquage des ports..." iptables -t filter -P INPUT DROP iptables -t filter -P OUTPUT DROP echo " [fait]" # Configuration iptables pour le DomO: echo "Configuration iptables pour le DomO" # autorisation des connexions établies echo " - aurositation des connexions établies..." iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT echo " [fait]" # Autorisation du loopback echo " - autorisation du loopback..." iptables -t filter -A INPUT -i lo -j ACCEPT iptables -t filter -A OUTPUT -o lo -j ACCEPT echo " [fait]" # Ouverture des ports... echo " - ouverture des ports vers l'exterieur..." echo " -> HTTP (OUT)" iptables -t filter -s 192.168.0.1 -A OUTPUT -p tcp --dport 80 -j ACCEPT echo " -> HTTPS (OUT)" iptables -t filter -s 192.168.0.1 -A OUTPUT -p tcp --dport 443 -j ACCEPT echo " -> SSH (IN/OUT)" iptables -t filter -d 192.168.0.1 -A INPUT -p tcp --dport 22 -j ACCEPT iptables -t filter -s 192.168.0.1 -A OUTPUT -p tcp --dport 22 -j ACCEPT echo " -> DNS (OUT)" iptables -t filter -s 192.168.0.1 -A OUTPUT -p tcp --dport 53 -j ACCEPT iptables -t filter -s 192.168.0.1 -A OUTPUT -p udp --dport 53 -j ACCEPT echo " [fait]" # Configuration iptables pour les DomU: echo "Configuration iptables pour les DomU..." # autorisation du forwarding echo " - aurositation du forwarding..." iptables -P FORWARD ACCEPT echo " [fait]" # autorisation de l'accès des DomU vers l'exterieur echo " - aurositation de l'accèes vers l'exterieur des DomU..." iptables -t nat -A POSTROUTING -s 10.10.10.1/24 -o eth0 -j MASQUERADE echo " [fait]" # autorisation de la laison de Dom0 vers les DomU echo " - autorisation de laison du Dom0 vers les DomU..." iptables -t filter -A OUTPUT -s 10.10.10.128/10.10.10.142 -j ACCEPT echo " [fait]" # ourevture des ports vers l'exterieur echo " - ouverture des ports vers l'exterieur..." echo " -> HTTP (OUT)" iptables -A OUTPUT -o 192.168.0.1 -d 10.10.10.1/24 -p tcp --dport 80 -j ACCEPT echo " -> DNS (OUT)" iptables -A OUTPUT -o 192.168.0.1 -d 10.10.10.1/24 -p tcp --dport 53 -j ACCEPT iptables -A OUTPUT -o 192.168.0.1 -d 10.10.10.1/24 -p udp --dport 53 -j ACCEPT echo " [fait]" # redirection des ports du Dom0 vers les services DomU echo " - redirection des ports du Dom0 vers les services DomU..." echo " -> port 80 vers VM apache" iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.10.10.1:80 echo " -> port 23 vers VM apache" iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 23 -j DNAT --to-destination 10.10.10.1:22 echo " [fait]"
Have fun!