Forum Linux.debian/ubuntu Accès ssh par un VPN

Posté par  . Licence CC By‑SA.
Étiquettes :
1
9
août
2013

Bonjour à tous !

J'ai 3 serveurs DEBIAN 6/7 qui sont reliés par un VPN (fait avec OpenVPN).
Ces 3 serveurs hébergent des containers OpenVZ.
Ils sont sur le réseau (VPN) 10.10.110.0 avec comme IP respective 10.10.110.10, 10.10.110.100 et 10.10.110.150 .
Chaque container à une IP dans ce réseau, par exemple 10.10.110.101 ou 10.10.110.152 .

Mon problème (ben oui, sinon je ne viendrais pas m'en remettre à votre sagacité hein), je peux me connecter en ssh sur tous les containers, avec leur adresse du VPN, mais je n'arrive pas me connecter sur leur hôte correspondant.
C'est à dire que ssh [user]@10.10.110.10.101 me connecte sur le container '101', mais ssh [user]@10.10.110.100 (IP de son hôte) me retourne un "ssh: connect to host 10.10.110.100 port 22: Connection refused".

Par contre je me connecte parfaitement sur l'hôte en utilisant son IP publique.

Alors c'est plutot une histoire de config de iptables ? (j'avoue ne pas être le plus à l'aise avec ça)

Ou c'est "normal" ?

Pour info, tout ce petit monde (hôtes et containers) se ping entre eux convenablement.

P.S.: si y'a besoin je peux poster un dump des règles iptables

P.P.S.: j'ai posté dans linux.debian, parce que à ma grande surprise je n'ai pas trouvé de linux.[reseau|network]

  • # ton serveur hote n'ecoute pas sur l'IP VPN

    Posté par  . Évalué à 2.

    quand tu as installé le serveur SSH, il se configure pour ecouter sur toutes les interfaces.

    par contre ton administrateur a peut-etre limité cette ecoute à la seule inteface publique
    - soit dans la config ssh
    ca peut se verifier en etant sur le serveur (via son ip locale)
    et en demandant un

    netstat -puant | grep 22

    chez moi ca me donne

    ~# netstat -puant | grep 22
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      265/sshd        
    tcp        0      0 192.168.1.219:22        192.168.1.6:33508       ESTABLISHED 31172/sshd: user1
    tcp6       0      0 :::22                   :::*                    LISTEN      265/sshd

    on voit donc bien qu'il ecoute sur toutes les interfaces ipv4 (0.0.0.0:22) et ipv6 (:::22)

    • soit avec une regle iptable

    à voir avec la commande
    sudo iptables-save

    • [^] # Re: ton serveur hote n'ecoute pas sur l'IP VPN

      Posté par  . Évalué à 0.

      J'avais déjà pensé à ça (j'ai fais quelques recherches/tests avant de "forumer").

      Mais à priori

      tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1906/sshd       
      tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      8257/sshd       
      tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      5602/sshd       
      tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      417932/sshd     
      tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      10966/sshd      
      tcp6       0      0 :::22                   :::*                    LISTEN      1906/sshd       
      tcp6       0      0 :::22                   :::*                    LISTEN      8257/sshd       
      tcp6       0      0 :::22                   :::*                    LISTEN      5602/sshd       
      tcp6       0      0 :::22                   :::*                    LISTEN      417932/sshd     
      tcp6       0      0 :::22                   :::*                    LISTEN      10966/sshd      
      
      SSH écoute bien sur toutes les interfaces.
      
      • [^] # Re: ton serveur hote n'ecoute pas sur l'IP VPN

        Posté par  . Évalué à 2.

        il reste donc à savoir s'il y a des regles iptables qui bloquerait l'entrée (INPUT) sur le port 22 à l'adresse du VPN

        • [^] # Re: ton serveur hote n'ecoute pas sur l'IP VPN

          Posté par  . Évalué à 0. Dernière modification le 09 août 2013 à 17:15.

          # Generated by iptables-save v1.4.8 on Fri Aug  9 15:11:41 2013
          *nat
          :PREROUTING ACCEPT [2193980:169780406]
          :POSTROUTING ACCEPT [6823211:592020009]
          :OUTPUT ACCEPT [6597700:581565837]
          :none-postrouting - [0:0]
          :none-prerouting - [0:0]
          :zFive-postrouting - [0:0]
          :zFive-prerouting - [0:0]
          :zFour-postrouting - [0:0]
          :zFour-prerouting - [0:0]
          :zOne-postrouting - [0:0]
          :zOne-prerouting - [0:0]
          :zSrv-postrouting - [0:0]
          :zSrv-prerouting - [0:0]
          :zThree-postrouting - [0:0]
          :zThree-prerouting - [0:0]
          :zTwo-postrouting - [0:0]
          :zTwo-prerouting - [0:0]
          -A PREROUTING -j zSrv-prerouting 
          -A PREROUTING -j zOne-prerouting 
          -A PREROUTING -j zTwo-prerouting 
          -A PREROUTING -j zThree-prerouting 
          -A PREROUTING -j zFour-prerouting 
          -A PREROUTING -j zFive-prerouting 
          -A POSTROUTING -j zSrv-postrouting 
          -A POSTROUTING -j zOne-postrouting 
          -A POSTROUTING -j zTwo-postrouting 
          -A POSTROUTING -j zThree-postrouting 
          -A POSTROUTING -j zFour-postrouting 
          -A POSTROUTING -j zFive-postrouting 
          -A zFive-postrouting -s 10.10.110.0/24 -o vmbr0 -j SNAT --to-source 178.33.171.175 
          -A zFour-postrouting -s 10.10.110.0/24 -o vmbr0 -j SNAT --to-source 178.33.171.174 
          -A zFour-prerouting -d 178.33.171.174/32 -i vmbr0 -p tcp -m tcp --dport 22 -j DNAT --to-destination 10.10.110.204:22 
          -A zFour-prerouting -d 178.33.171.174/32 -i vmbr0 -p tcp -m tcp --dport 21 -j DNAT --to-destination 10.10.110.204:21 
          -A zFour-prerouting -d 178.33.171.174/32 -i vmbr0 -p tcp -m tcp --dport 3306 -j DNAT --to-destination 10.10.110.204:3306 
          -A zOne-postrouting -s 10.10.110.0/24 -o vmbr0 -j SNAT --to-source 178.33.171.171 
          -A zOne-prerouting -d 178.33.171.171/32 -i vmbr0 -p tcp -m tcp --dport 22 -j DNAT --to-destination 10.10.110.201:22 
          -A zSrv-postrouting -s 10.10.110.0/24 -o vmbr0 -j SNAT --to-source 37.59.19.187 
          -A zSrv-prerouting -d 37.59.19.187/32 -i vmbr0 -p tcp -m tcp --dport 22203 -j DNAT --to-destination 10.10.110.203:22 
          -A zSrv-prerouting -d 37.59.19.187/32 -i vmbr0 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 10.10.110.203:8080 
          -A zSrv-prerouting -d 37.59.19.187/32 -i vmbr0 -p tcp -m tcp --dport 22202 -j DNAT --to-destination 10.10.110.202:22 
          -A zSrv-prerouting -d 37.59.19.187/32 -i vmbr0 -p tcp -m tcp --dport 3306 -j DNAT --to-destination 10.10.110.202:3306 
          -A zSrv-prerouting -d 37.59.19.187/32 -i vmbr0 -p tcp -m tcp --dport 22204 -j DNAT --to-destination 10.10.110.204:22 
          -A zSrv-prerouting -d 37.59.19.187/32 -i vmbr0 -p tcp -m tcp --dport 21 -j DNAT --to-destination 10.10.110.204:21 
          -A zSrv-prerouting -d 37.59.19.187/32 -i vmbr0 -p tcp -m tcp --dport 22201 -j DNAT --to-destination 10.10.110.201:22 
          -A zThree-postrouting -s 10.10.110.0/24 -o vmbr0 -j SNAT --to-source 178.33.171.173 
          -A zThree-prerouting -d 178.33.171.173/32 -i vmbr0 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 10.10.110.203:8080 
          -A zThree-prerouting -d 178.33.171.173/32 -i vmbr0 -p tcp -m tcp --dport 22 -j DNAT --to-destination 10.10.110.203:22 
          -A zTwo-postrouting -s 10.10.110.0/24 -o vmbr0 -j SNAT --to-source 178.33.171.172 
          -A zTwo-prerouting -d 178.33.171.172/32 -i vmbr0 -p tcp -m tcp --dport 22 -j DNAT --to-destination 10.10.110.202:22 
          -A zTwo-prerouting -d 178.33.171.172/32 -i vmbr0 -p tcp -m tcp --dport 3306 -j DNAT --to-destination 10.10.110.202:3306 
          COMMIT
          # Completed on Fri Aug  9 15:11:41 2013
          # Generated by iptables-save v1.4.8 on Fri Aug  9 15:11:41 2013
          *mangle
          :PREROUTING ACCEPT [205336522:51813689510]
          :INPUT ACCEPT [164126014:42464207017]
          :FORWARD ACCEPT [40538740:9276177158]
          :OUTPUT ACCEPT [179321481:41392494593]
          :POSTROUTING ACCEPT [225946990:55166703834]
          COMMIT
          # Completed on Fri Aug  9 15:11:41 2013
          # Generated by iptables-save v1.4.8 on Fri Aug  9 15:11:41 2013
          *filter
          :INPUT DROP [0:0]
          :FORWARD DROP [0:0]
          :OUTPUT DROP [0:0]
          :after-forwarding - [0:0]
          :after-input - [0:0]
          :after-output - [0:0]
          :before-forwarding - [0:0]
          :before-input - [0:0]
          :before-output - [0:0]
          :fail2ban-ssh - [0:0]
          :none-brforward - [0:0]
          :none-forwarding - [0:0]
          :none-input - [0:0]
          :none-output - [0:0]
          :zFive-brforward - [0:0]
          :zFive-forwarding - [0:0]
          :zFive-input - [0:0]
          :zFive-output - [0:0]
          :zFour-brforward - [0:0]
          :zFour-forwarding - [0:0]
          :zFour-input - [0:0]
          :zFour-output - [0:0]
          :zOne-brforward - [0:0]
          :zOne-forwarding - [0:0]
          :zOne-input - [0:0]
          :zOne-output - [0:0]
          :zSrv-brforward - [0:0]
          :zSrv-forwarding - [0:0]
          :zSrv-input - [0:0]
          :zSrv-output - [0:0]
          :zThree-brforward - [0:0]
          :zThree-forwarding - [0:0]
          :zThree-input - [0:0]
          :zThree-output - [0:0]
          :zTwo-brforward - [0:0]
          :zTwo-forwarding - [0:0]
          :zTwo-input - [0:0]
          :zTwo-output - [0:0]
          -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
          -A INPUT -p udp -m state --state NEW -m multiport --dports 5404,5405 -j ACCEPT 
          -A INPUT -p icmp -j ACCEPT 
          -A INPUT -m state --state INVALID -j DROP 
          -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
          -A INPUT -p tcp -m tcp ! --tcp-option 2 --tcp-flags SYN SYN -j DROP 
          -A INPUT -j before-input 
          -A INPUT -j none-input 
          -A INPUT -j zSrv-input 
          -A INPUT -j zOne-input 
          -A INPUT -j zTwo-input 
          -A INPUT -j zThree-input 
          -A INPUT -j zFour-input 
          -A INPUT -j zFive-input 
          -A INPUT -j after-input 
          -A INPUT -i lo -j ACCEPT 
          -A INPUT -p icmp -j ACCEPT 
          -A INPUT -p tcp -j REJECT --reject-with tcp-reset 
          -A INPUT -j REJECT --reject-with icmp-port-unreachable 
          -A FORWARD -m state --state INVALID -j DROP 
          -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
          -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 
          -A FORWARD -j before-forwarding 
          -A FORWARD -j zSrv-forwarding 
          -A FORWARD -j zOne-forwarding 
          -A FORWARD -j zTwo-forwarding 
          -A FORWARD -j zThree-forwarding 
          -A FORWARD -j zFour-forwarding 
          -A FORWARD -j zFive-forwarding 
          -A FORWARD -j after-forwarding 
          -A FORWARD -j zSrv-brforward 
          -A FORWARD -j zOne-brforward 
          -A FORWARD -j zTwo-brforward 
          -A FORWARD -j zThree-brforward 
          -A FORWARD -j zFour-brforward 
          -A FORWARD -j zFive-brforward 
          -A OUTPUT -m state --state INVALID -j DROP 
          -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
          -A OUTPUT -j before-output 
          -A OUTPUT -j zSrv-output 
          -A OUTPUT -j zOne-output 
          -A OUTPUT -j zTwo-output 
          -A OUTPUT -j zThree-output 
          -A OUTPUT -j zFour-output 
          -A OUTPUT -j zFive-output 
          -A OUTPUT -j after-output 
          -A OUTPUT -j ACCEPT 
          -A after-forwarding -i openvpnbr+ -o venet+ -j ACCEPT 
          -A after-forwarding -i venet+ -o openvpnbr+ -j ACCEPT 
          -A fail2ban-ssh -j RETURN 
          -A none-input -i vmbr0 -p tcp -m tcp --dport 22 -j ACCEPT 
          -A none-input -i vmbr0 -p tcp -m tcp --dport 8006 -j ACCEPT 
          -A none-input -i vmbr0 -p udp -m udp --dport 1194 -j ACCEPT 
          -A none-input -i vmbr0 -p tcp -m tcp --dport 80 -j ACCEPT 
          -A zFive-brforward -i venet0 -o vmbr0 -j ACCEPT 
          -A zFive-brforward -i vmbr0 -o venet0 -j ACCEPT 
          -A zFive-brforward -i venet0 -o venet0 -j ACCEPT 
          -A zFive-input -i venet0 -j ACCEPT 
          -A zFour-brforward -i venet0 -o vmbr0 -j ACCEPT 
          -A zFour-brforward -i vmbr0 -o venet0 -j ACCEPT 
          -A zFour-brforward -i venet0 -o venet0 -j ACCEPT 
          -A zFour-input -i venet0 -j ACCEPT 
          -A zFour-input -d 178.33.171.174/32 -i vmbr0 -p tcp -m tcp --dport 22 -j ACCEPT 
          -A zFour-input -d 178.33.171.174/32 -i vmbr0 -p tcp -m tcp --dport 21 -j ACCEPT 
          -A zFour-input -d 178.33.171.174/32 -i vmbr0 -p tcp -m tcp --dport 3306 -j ACCEPT 
          -A zOne-brforward -i venet0 -o vmbr0 -j ACCEPT 
          -A zOne-brforward -i vmbr0 -o venet0 -j ACCEPT 
          -A zOne-brforward -i venet0 -o venet0 -j ACCEPT 
          -A zOne-input -i venet0 -j ACCEPT 
          -A zOne-input -d 178.33.171.171/32 -i vmbr0 -p tcp -m tcp --dport 22 -j ACCEPT 
          -A zSrv-brforward -i venet0 -o vmbr0 -j ACCEPT 
          -A zSrv-brforward -i vmbr0 -o venet0 -j ACCEPT 
          -A zSrv-brforward -i venet0 -o venet0 -j ACCEPT 
          -A zSrv-input -i venet0 -j ACCEPT 
          -A zSrv-input -d 37.59.19.187/32 -i vmbr0 -p tcp -m tcp --dport 22203 -j ACCEPT 
          -A zSrv-input -d 37.59.19.187/32 -i vmbr0 -p tcp -m tcp --dport 8080 -j ACCEPT 
          -A zSrv-input -d 37.59.19.187/32 -i vmbr0 -p tcp -m tcp --dport 22202 -j ACCEPT 
          -A zSrv-input -d 37.59.19.187/32 -i vmbr0 -p tcp -m tcp --dport 3306 -j ACCEPT 
          -A zSrv-input -d 37.59.19.187/32 -i vmbr0 -p tcp -m tcp --dport 22204 -j ACCEPT 
          -A zSrv-input -d 37.59.19.187/32 -i vmbr0 -p tcp -m tcp --dport 21 -j ACCEPT 
          -A zSrv-input -d 37.59.19.187/32 -i vmbr0 -p tcp -m tcp --dport 22201 -j ACCEPT 
          -A zThree-brforward -i venet0 -o vmbr0 -j ACCEPT 
          -A zThree-brforward -i vmbr0 -o venet0 -j ACCEPT 
          -A zThree-brforward -i venet0 -o venet0 -j ACCEPT 
          -A zThree-input -i venet0 -j ACCEPT 
          -A zThree-input -d 178.33.171.173/32 -i vmbr0 -p tcp -m tcp --dport 8080 -j ACCEPT 
          -A zThree-input -d 178.33.171.173/32 -i vmbr0 -p tcp -m tcp --dport 22 -j ACCEPT 
          -A zTwo-brforward -i venet0 -o vmbr0 -j ACCEPT 
          -A zTwo-brforward -i vmbr0 -o venet0 -j ACCEPT 
          -A zTwo-brforward -i venet0 -o venet0 -j ACCEPT 
          -A zTwo-input -i venet0 -j ACCEPT 
          -A zTwo-input -d 178.33.171.172/32 -i vmbr0 -p tcp -m tcp --dport 22 -j ACCEPT 
          -A zTwo-input -d 178.33.171.172/32 -i vmbr0 -p tcp -m tcp --dport 3306 -j ACCEPT 
          COMMIT
          # Completed on Fri Aug  9 15:11:41 2013
          

          Me suis demandé si y avait des trucs à cacher là-dedans et j'ai décidé que non …

          Alors, j'utilise un script (Fridu-Firewall) pour me simplifier la config de iptables, parce que avec des containers, un nginx en load-balancer et quelques autres joyeusetés je m'en sortais pas (surtout au début tout ça n'avait qu'une IP publique).

          Donc sur ce serveur (37.59.19.187 et 10.10.110.10), il y a 4 containers qui tournent sur 10.10.110.201 à 204 et des IP publiques (178.33.171.171 à 175) pour les services dispatchés sur les containers (du web, de la BDD, du git, etc …).

          Y a aussi quelques règles à la mimine, notamment :

          -A after-forwarding -i openvpnbr+ -o venet+ -j ACCEPT 
          -A after-forwarding -i venet+ -o openvpnbr+ -j ACCEPT 
          

          Pour que justement, chaque "zone" (@IP publique) accède au VPN et vice-versa.

          Mais ca reste pas non plus, super clair our moi :(.

          Y traine aussi quelques trucs, plus vraiment utiles, genre les accès SSH en 22XXX.

          • [^] # Re: ton serveur hote n'ecoute pas sur l'IP VPN

            Posté par  . Évalué à 3.

            *filter
            :INPUT DROP [0:0]

            Forcément, ça drope :-)

            Tu as bloqué le port 22. Mais tu as bien autorisé les paquets qui transitent, donc tes containers sont accessibles.

            • [^] # Re: ton serveur hote n'ecoute pas sur l'IP VPN

              Posté par  . Évalué à 3.

              j'irais meme plus loin,

              par defaut tu drop tout

              :INPUT DROP [0:0]

              puis plus loin tu autorises seulement certains trafics, dont le SSH vers l'IP Publique

              -A none-input -d 178.33.171.171/32 -i vmbr0 -p tcp -m tcp --dport 22 -j ACCEPT
              -A zOne-input -d 178.33.171.171/32 -i vmbr0 -p tcp -m tcp --dport 22 -j ACCEPT
              etc
              etc

              • [^] # Re: ton serveur hote n'ecoute pas sur l'IP VPN

                Posté par  . Évalué à 0.

                Je me doutais (mais juste un peu) que ca vient de par là.

                Et donc pour rendre disponible SSH sur l'adresse VPN de l'hôte (dans le cas ci-dessus 10.10.110.10), il faudrait quoi comme règles en gros ?

                • [^] # Re: ton serveur hote n'ecoute pas sur l'IP VPN

                  Posté par  . Évalué à 4.

                  en faisant simple :

                  -A INPUT -d 10.10.110.10/32 -i vmbr0 -p tcp -m tcp --dport 22 -j ACCEPT

                  en faisant compliquer

                  -A none-input -d 10.10.110.10/32 -i vmbr0 -p tcp -m tcp --dport 22 -j ACCEPT

                  • [^] # Re: ton serveur hote n'ecoute pas sur l'IP VPN

                    Posté par  . Évalué à 0.

                    Merci pour toutes les réponses.

                    Je vais essayer ça lundi et je reviendrais te faire un bisou (enfin te pertinenter hein ;-) ) si c'est bon.

                  • [^] # Re: ton serveur hote n'ecoute pas sur l'IP VPN

                    Posté par  . Évalué à 1.

                    Comme promis je reviens te faire un bisou pertinenter.

                    Ca marche … juste eu besoin de changer l'interface d'entrée, pas "vmbr0" (le bridge sur eth0) mais "openvpnbr0" (le bridge du VPN).

                    Merci !

Suivre le flux des commentaires

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