Linux.debian : DMZ
Posté par ceseb () le 27 septembre 2006
bonjour, suite à mon poste: http://linuxfr.org/forums/12/18806.html, j'ai configuré le routeur ethernet en DMZ vers mon pc.
J'ai une table de routagedu noyau qui donne:
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1(rézeau wifi)
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0(cartethernet)
0.0.0.0 192.168.0.250 0.0.0.0 UG 0 0 0 eth0(gw=routeur)
je voudrais donner à apache un accès au worldwideweb, apache tourne en local (donc sur loopback 127.0.0.1), le routeur 192.168.0.250 possède lui même une table de routage ! :
Destination Masque de sous-réseau Passerelle Interface
0.0.0.0 0.0.0.0 213.44.14.1 ppp1
192.168.0.0 255.255.255.0 192.168.0.250 br0
127.0.0.1 255.0.0.0 127.0.0.1 lo0
213.44.14.1 255.255.255.255 213.44.97.210 ppp1
213.44.97.210 c'est mon adresse WAN celle que l'isp m'attribue et donc celle visible sur le réseau international, seulement une URL du type http://213.44.97.210 sollicite le serveur http du routeur(c'est nul) et pas mon ptit apache2.
Je sais pas changer ça.
Je me rend pas compte de quelles règles iptables j'ai besoin pour y parvenir.
Globalement administrer un réseau en DMZ ça me parle pas.
J'ai une table de routagedu noyau qui donne:
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1(rézeau wifi)
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0(cartethernet)
0.0.0.0 192.168.0.250 0.0.0.0 UG 0 0 0 eth0(gw=routeur)
je voudrais donner à apache un accès au worldwideweb, apache tourne en local (donc sur loopback 127.0.0.1), le routeur 192.168.0.250 possède lui même une table de routage ! :
Destination Masque de sous-réseau Passerelle Interface
0.0.0.0 0.0.0.0 213.44.14.1 ppp1
192.168.0.0 255.255.255.0 192.168.0.250 br0
127.0.0.1 255.0.0.0 127.0.0.1 lo0
213.44.14.1 255.255.255.255 213.44.97.210 ppp1
213.44.97.210 c'est mon adresse WAN celle que l'isp m'attribue et donc celle visible sur le réseau international, seulement une URL du type http://213.44.97.210 sollicite le serveur http du routeur(c'est nul) et pas mon ptit apache2.
Je sais pas changer ça.
Je me rend pas compte de quelles règles iptables j'ai besoin pour y parvenir.
Globalement administrer un réseau en DMZ ça me parle pas.
> Lire le message (10 commentaires, moyenne: 1,4).
Vous avez demandé le commentaire #759796.



essai rapide
Sur le routeur, que donne :
iptables -t nat -A PREROUTING -s ! 192.168.0.0/16 -d 213.44.97.210 -p tcp --dport 80 -j DNAT --to-destination [IP du serveur apache]
iptables -A FORWARD -s ! 192.168.0.0/16 -d [IP apache] -i ppp1 -o br0 -p tcp --dport 80 --sport 1024: -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s [IP apache] -o ppp1 -i br0 -p tcp --sport 80 --dport 1024: -m state --state ESTABLISHED -j ACCEPT
La première règle établit la translation d'adresse IP (la vraie cible de la connexion devient apache et non le routeur), les deux suivantes autorisent le transfert des paquets dans un sens puis dans l'autre.
Ces règles sont vaguement sévères, mais en sécurité, on n'en fait jamais assez. A adapter aux règles existantes sur le routeur bien sûr.
La gestion réseau de base n'a rien d'inquiétant. En cherchant un peu de doc, on tombe sur http://www.lea-linux.org/cached/index/Reseau-secu-iptables.h(...) qui donne exactement ce que tu veux faire.
[^]ca marche pas
je vais suivre tes conseils et travailler le tuto de léa, la config d'un firewall en ligne de commande me parait difficile, merci pour cette ébauche de code.
[^]Re: ca marche pas
Je te conseille d'installer le paquet shorewall.
Il te permet de simplement configurer ton firewall avec des fichiers assez simples...
Le problème de la version debian est que les fichiers de conf par défaut sont pas présent dans /etc/shorewall par défaut :'(
Mais tu récup ces fichiers sur une mandriva et ça roule.
(fait gaffe a bien utiliser la même version de shorewall sur les deux ou d'adapter car il y a eu des petits changements entre la 2, la 3 et suivantes...)
site perso : http://rapsys.free.fr/
[^]Re: ca marche pas
le problème c'est que je quitte mandriva à cause de prob réseau (le kernel crache des logs sans raison: table overflow...).
Et drakconf en mode partage internet met en branle shorewall et squid en même temps, ce qui aboutit à une perte de la connexion internet.
Pourquoi ne pas slmt utilisé les iptables pour arriver au but ?
[^]Re: ca marche pas
Met une mandriva 2007, le drakgw a été corrigé (en mode expert au moins) tu peux virer le squid et les autres bizareries...
Pour limiter le flooding des logs soit tu utiliser syslog-ng soit tu dois virer la verbosity de iptables, ça se fait en éditant le fichier :
/etc/shorewall/policy
En enlevant le info de l'avant dernière règle a la fin.
Après vérifie la configuration de shorewall, rappelle toi que la 2006 a été la première version avec shorewall et drakfirewall, soyons sérieux c'était pas au point !
(mais l'outil de la 2007 a été repensé et a réglé ces problèmes, chez moi en tout cas)
site perso : http://rapsys.free.fr/
[^]Re: ca marche pas
Met une mandriva 2007, le drakgw a été corrigé (en mode expert au moins) tu peux virer le squid et les autres bizareries...
Pour limiter le flooding des logs soit tu utiliser syslog-ng soit tu dois virer la verbosity de iptables, ça se fait en éditant le fichier :
/etc/shorewall/policy
En enlevant le info de l'avant dernière règle a la fin.
Après vérifie la configuration de shorewall, rappelle toi que la 2006 a été la première version avec shorewall et drakfirewall, soyons sérieux c'était pas au point !
(mais l'outil de la 2007 a été repensé et a réglé ces problèmes, chez moi en tout cas)
site perso : http://rapsys.free.fr/
[^]Re: ca marche pas
flûte, j'étais plutôt fier de moi :-)
Pour essayer, on pourrait simplifier en :
iptables -t nat -A PREROUTING -d 213.44.97.210 -p tcp --dport 80 -j DNAT --to-destination [IP apache]
iptables -A FORWARD -d [IP apache] -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s [IP apache] -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
Bien sûr, tu ne peux pas essayer cela depuis l'intérieur de ton LAN (peut-être sur la partie Wifi mais je garantie pas) puisque le serveur apache renverrait alors le paquet directement au destinataire sans repasser par le NAT et ton navigateur verrait revenir une connexion avec une IP source différente de celle demandée (en fait, il ne verra rien du tout, le noyau laissera tomber le paquet ou enverra un ICMP error/reset au serveur apache)
Pour comprendre à quel niveau ça peut bloquer, il faudrait essayer de faire des 'netstat -taupen' sur le poste client et le serveur. On verrait alors si le serveur reçoit le SYN ou non (pas de trace de connexion ou ACK sent ou même TIME_WAIT), puis si le client reçoit le ACK (SYN_SENT, ...), ou, encore mieux, tcpdump.
Vérifie bien dans ton 'iptables-save' que les règles ont bien été acceptées et qu'il n'y a pas un effet de précédence qui les rendraient inutiles.
Ceci dit, le conseil de Rapsys est bon car si tu établis les règles toi-même, il faudra penser à les charger au démarrage du routeur, alors que c'est sans doute pris en charge par un paquet Debian officiel.
[^]je suis chiant
Merci, bon en pompant la config shorewall sur mandriva, j'en arrive au résultat:
/var/log/shorewall-init.log
Je continue à creuser c'est important...
[^]mais non, mais non
Je connais pas shorewall mais là j'ai pas vu passer ce qui t'intéresse (à moins que j'ai mal compris)
D'ailleurs, FORWARD en ACCEPT par défaut, ça me semble un peu chaud pour un routeur...
Regarde dans la doc de shorewall s'il y a du NAT, plus particulièrement du DNAT (le SNAT ou masquerading permet au LAN d'aller sur Internet (Postrouting), le DNAT permet à Internet de taper sur une machine précise du LAN (prerouting))
Si tu veux retourner parmi les gros durs qui codent simultanément sur 3 claviers (un qwerty, un dvorak et un klingon) les yeux fermés, je t'assure que le script de la partie 3.3 du tuto de lea-linux fait exactement ce que tu recherches avec de bonnes explications.
[^]Re: mais non, mais non
En fait les fichiers de conf de shorewall sont beaucoup plus simple...
Je ne parle même pas du fait d'aller mettre un script en dur qui va lancer tes règles iptables une a une...
Avec shorewall sur ma 2007 je fais :
- dmz (enfin ma machine est dmz donc firewall)
- routage de port
- SNAT (masquerading) pour le réseau
- QOS (via tcrules, tcclasses, tcinterfaces)
Et ça tient dans 4-5 fichiers clairs !
site perso : http://rapsys.free.fr/