[résolu RTFM] Problème de NAT iptables

Problème de NAT iptables [résolu RTFM] - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 08-03-2008 à 12:58:26    

Bonjour,
 
Depuis deux jours, impossible d'accéder depuis l'extérieur, à des machines derrière mon routeur (PC sous Debian Lenny).
Pourtant, je n'ai pas le souvenir d'avoir changé quelque chose de particulier dans mon fichier iptables.
192.168.0.1 est l'adresse du routeur.
 
Exemple, je veux rendre accessible 192.168.0.2 en ssh de l'extérieur. Logiquement, c'est cette règle :
 

Citation :

#ssh bravo
iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 118 -j DNAT --to-destination 192.168.0.2:22
iptables -A FORWARD -p tcp -i eth1 --dport 118 -j ACCEPT


 
D'ailleurs, iptables -L me dit bien que la règle existe :
 

Citation :

Chain FORWARD (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:118


 
 
Sauf, que si je regarde iptraf sur mon routeur, et sur l'interface connecté directement sur le net, quand j'essai de me connecter j'ai :
 

Citation :

hn-xx-xx.brookes.ac.uk:59699                =       2       120 S---   eth1  
xxxx-x-xx-xxx-xxx-xx.fbx.proxad:118        =       0         0  ----   eth1


 
Autrement dit, ça passe pas ! Un nmap quant à lui, m'indique un état filtered.  
 
Voici le contenu entier de mon fichier iptables :

Citation :

#!/bin/sh
start() {
 
# Mise en place du firewall
#vidage des chaines
iptables -F
#destruction des chaines personnelles
iptables -X
 
# strategie par defaut
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
 
#init des tables NAT et MANGLE (pas forcement necessaire)
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
 
 
# Acceptation de toutes les connexions en local (un process avec l'autre)
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
 
 
# ---------------------------------------
# PORT FORWARDING:
 
#VNCviewer
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 5900 -j DNAT --to-destination 192.168.0.5:5900
iptables -A FORWARD -p tcp -i eth1 --dport 5900 -j ACCEPT
 
#ssh bravo
iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 118 -j DNAT --to-destination 192.168.0.2:22
iptables -A FORWARD -p tcp -i eth1 --dport 118 -j ACCEPT
 
#ssh echo
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 119 -j DNAT --to-destination 192.168.0.5:119
iptables -A FORWARD -p tcp -i eth1 --dport 119 -j ACCEPT
 
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
# regles du firewall pour cette machine
 
#ssh
iptables -A INPUT -p tcp -i eth1 --dport 22 -j ACCEPT
#web
iptables -A INPUT -p tcp -i eth1 --dport 80 -j ACCEPT
#rtsp vlc
iptables -A INPUT -p udp -i eth1 --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp -i eth1 --dport 8080 -j ACCEPT
 
 
#vlc exterieur
iptables -A INPUT -p udp -i eth1 --dport 8081 -j ACCEPT
iptables -A INPUT -p tcp -i eth1 --dport 8081 -j ACCEPT
 
#blabla
iptables -A INPUT -p tcp --destination-port 49155:49180 -j ACCEPT
iptables -A INPUT -p udp --destination-port 49155:49180 -j ACCEPT
#?
iptables -A INPUT -p tcp -i eth1 --dport 554 -j ACCEPT
 
# --------------------------------------------------------------------------------
#creation d'une nouvelle regle
iptables -N reglesortie
 
#definition de la regle : accepter les nouvelles connexions ne venant pas de l'interface internet
# et accepter toutes les connexions etablies et reliees (ex: une demande de page HTML provoque l'ouverture
# d'une connexion reliee pour acheminer cette page vers l'ordinateur)
 
iptables -A reglesortie -m state --state NEW -i! eth1 -j ACCEPT
iptables -A reglesortie -m state --state ESTABLISHED,RELATED -j ACCEPT
 
#application de la regle au partage de connexion
iptables -A INPUT -j reglesortie
iptables -A FORWARD -j reglesortie
 
#pour eviter intrusions sur le ssh
iptables -I INPUT -p tcp --dport 22 -i eth1 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth1 -m state --state NEW -m recent --update --seconds 300 --hitcount 8 -j DROP
 
# QOS : pour prio les flux, on va inserer directement dans le champs TOS (donc on MANGLE)
iptables -A PREROUTING -t mangle -p tcp --sport ssh -i eth1 -j TOS --set-tos Minimize-Delay
 
 
# --------------------------------------------------------------------------------
# activation du forwarding dans le noyau
# mise en place du partage de connexion sur le reseau local
 
echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source **.**.**.**
 
}
 
stop() {
        echo 0 >/proc/sys/net/ipv4/ip_forward
}
 
case "$1" in
 start)
        start
        ;;
 
stop)
        stop
        ;;
restart)
        stop && start
        ;;
*)
        echo "Usage $0 {start|stop|restart}"
        exit 1
esac
 
exit 0


 
Je ne comprend pas pourquoi ça bloque. Bien entendu, la machine 192.168.0.2 est bien accessible en ssh depuis 192.168.0.1, une fois que j'y suis connecté.
Or, j'aurai vraiment besoin de rendre accessible directement le ssh de 192.168.0.2 :/
 
Merci pour votre aide, parce que là je capte pas pourquoi ça merde (et ça fait un bout de temps que j'utilise Iptables, j'ai jamais eu ce souci)


Message édité par Plam le 09-03-2008 à 00:22:46

---------------
Spécialiste du bear metal
Reply

Marsh Posté le 08-03-2008 à 12:58:26   

Reply

Marsh Posté le 08-03-2008 à 13:05:07    

Je rajoute que c'est la même chose en partant d'une autre ip externe (on sait jamais).


---------------
Spécialiste du bear metal
Reply

Marsh Posté le 08-03-2008 à 15:33:32    

Bon, je comprend vraiment pas :(


---------------
Spécialiste du bear metal
Reply

Marsh Posté le 08-03-2008 à 16:02:09    

Bon ça vient bien du nat, par exemple, si au lieu de :
 

Citation :

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 118 -j DNAT --to-destination 192.168.0.2:22
iptables -A FORWARD -p tcp -i eth1 --dport 118 -j ACCEPT


 
Je met :

Citation :

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 118 -j DNAT --to-destination 192.168.0.2
iptables -A FORWARD -p tcp -i eth1 --dport 118 -j ACCEPT


 
Et bien là le port est bien ouvert. Mais je voudrai router sur le port 22 sur 192.168.0.2...
 


---------------
Spécialiste du bear metal
Reply

Marsh Posté le 08-03-2008 à 22:44:58    

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 118 -j DNAT --to-destination 192.168.0.2:22
iptables -A FORWARD -i eth1 -p tcp --dport 22 -j ACCEPT

 

[:yveleu]


Message édité par Profil supprimé le 08-03-2008 à 22:49:14
Reply

Marsh Posté le 09-03-2008 à 00:13:37    

euh..
Avant de me lancer dans cette modif, j'ai un ssh sur le port 22 que je peux pas me permettre de perdre.. (sur le routeur). T'es sur que la règle de la chaine FORWARD va pas foutre le dawa sur le port 22 ? :??:

 

edit: hmm. C'est ok. J'avais mal compris le but de la chaine forward. Merki. La prochaine fois je relirai dans la journée mon précis et concis sur iptables (au lieu de le faire après minuit).


Message édité par Plam le 09-03-2008 à 00:22:12

---------------
Spécialiste du bear metal
Reply

Marsh Posté le 09-03-2008 à 01:28:02    

http://img120.imageshack.us/img120/8973/iptablesft6.png
 
En fait, quand un paquet arrive depuis l'extérieur vers le port 118, il traverse d'abord la chaine prerouting (où il est dnatté vers host:22).
Au moment où il arrive dans la table forward, le port de destination est déjà 22, c'était ton erreur.
Prends le temps de bien comprendre et mémoriser le schéma, il vaut tous les tutos/exemples du monde ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed