Forum Linux.debian/ubuntu DMZ

Posté par  .
Étiquettes : aucune
0
28
sept.
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.
  • # essai rapide

    Posté par  . Évalué à 1.

    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

      Posté par  . Évalué à 1.

      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

        Posté par  (site web personnel) . Évalué à 2.

        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...)
        • [^] # Re: ca marche pas

          Posté par  . Évalué à 0.

          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

            Posté par  (site web personnel) . Évalué à 2.

            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)
          • [^] # Re: ca marche pas

            Posté par  (site web personnel) . Évalué à 2.

            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)
      • [^] # Re: ca marche pas

        Posté par  . Évalué à 1.

        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

          Posté par  . Évalué à 0.

          Merci, bon en pompant la config shorewall sur mandriva, j'en arrive au résultat:

          /var/log/shorewall-init.log

          (..............) Processing /etc/shorewall/rules...
          Processing Actions...
          Generating Transitive Closure of Used-action List...
          Processing /usr/share/shorewall/action.Drop for Chain Drop...
          ..Expanding Macro /usr/share/shorewall/macro.Auth...
          Rule "REJECT - - tcp 113 - -" added.
          ..End Macro
          Rule "dropBcast " added.
          ..Expanding Macro /usr/share/shorewall/macro.AllowICMPs...
          Rule "ACCEPT - - icmp fragmentation-needed - -" added.
          Rule "ACCEPT - - icmp time-exceeded - -" added.
          ..End Macro
          Rule "dropInvalid " added.
          ..Expanding Macro /usr/share/shorewall/macro.SMB...
          Rule "DROP - - udp 135,445 - -" added.
          Rule "DROP - - udp 137:139 - -" added.
          Rule "DROP - - udp 1024: 137 -" added.
          Rule "DROP - - tcp 135,139,445 - -" added.
          ..End Macro
          ..Expanding Macro /usr/share/shorewall/macro.DropUPnP...
          Rule "DROP - - udp 1900 - -" added.
          ..End Macro
          Rule "dropNotSyn - - tcp " added.
          ..Expanding Macro /usr/share/shorewall/macro.DropDNSrep...
          Rule "DROP - - udp - 53 -" added.
          ..End Macro
          Processing /usr/share/shorewall/action.Reject for Chain Reject...
          ..Expanding Macro /usr/share/shorewall/macro.Auth...
          Rule "REJECT - - tcp 113 - -" added.
          ..End Macro
          Rule "dropBcast " added.
          ..Expanding Macro /usr/share/shorewall/macro.AllowICMPs...
          Rule "ACCEPT - - icmp fragmentation-needed - -" added.
          Rule "ACCEPT - - icmp time-exceeded - -" added.
          ..End Macro
          Rule "dropInvalid " added.
          ..Expanding Macro /usr/share/shorewall/macro.SMB...
          Rule "REJECT - - udp 135,445 - -" added.
          Rule "REJECT - - udp 137:139 - -" added.
          Rule "REJECT - - udp 1024: 137 -" added.
          Rule "REJECT - - tcp 135,139,445 - -" added.
          ..End Macro
          ..Expanding Macro /usr/share/shorewall/macro.DropUPnP...
          Rule "DROP - - udp 1900 - -" added.
          ..End Macro
          Rule "dropNotSyn - - tcp " added.
          ..Expanding Macro /usr/share/shorewall/macro.DropDNSrep...
          Rule "DROP - - udp - 53 -" added.
          ..End Macro
          Processing /etc/shorewall/policy...
          Policy ACCEPT for fw to net using chain fw2net
          Policy ACCEPT for fw to loc using chain fw2loc
          Policy ACCEPT for loc to fw using chain loc2fw
          Policy ACCEPT for loc to net using chain loc2net
          Setting up Traffic Control Rules...
          Validating /etc/shorewall/tcdevices...
          Validating /etc/shorewall/tcclasses...
          Activating Rules...
          Shorewall Restarted
          touch: cannot touch `/var/lock/subsys/shorewall': No such file or directory


          Je continue à creuser c'est important...
          • [^] # mais non, mais non

            Posté par  . Évalué à 1.

            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

              Posté par  (site web personnel) . Évalué à 2.

              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 !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.