Auteur Sujet: VPN L2TP sous linux  (Lu 3987 fois)

0 Membres et 1 Invité sur ce sujet

coco

  • Abonné Sosh fibre
  • *
  • Messages: 1 566
VPN L2TP sous linux
« le: 04 juin 2018 à 16:07:03 »
Bonjour,

J'ai une liaison VPN L2TP / Ipsec à mettre en place entre un serveur Linux et un fournisseur. Je possède un clé PSK mais pas d'utilisateur/mot de passe (apparement pas besoin)
Je n'arrive pas vraiment à trouver un moyen simple d'y mettre en place sous Linux (alors que ça à l'air totalement l'inverse sous windows / mac). Je n'arrive pas à y configurer avec strongswan / lx2tp.

J'ai quelques paramètres fournis IP /KeyExchange / Ike lifetime / psk... mais j'avoue que je suis un peu perdu... Et tous les outils/tuto que je trouve fonctionnent avec un couple user/password en plus du PSK.
Existe t'ils outils pour configurer cela sous Linux ?
Je cherche éventuellement du docker si ça peut être plus simple.

Merci :)

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
VPN L2TP sous linux
« Réponse #1 le: 04 juin 2018 à 16:25:36 »
faut juste modif  /etc/ipsec.conf  avec les bon params:

supprimer les lignes eap_identity et rightsendcert
mettre "rightauth=secret"

et dans /etc/ipsec.secrets mettre une ligne "ip distante: PSK ta-cle-PSK"

puis recharger:

sudo ipsec rereadsecrets
sudo ipsec reload
sudo ipsec restart



coco

  • Abonné Sosh fibre
  • *
  • Messages: 1 566
VPN L2TP sous linux
« Réponse #2 le: 04 juin 2018 à 16:28:41 »
Merci kgersen :) Je vais regarder ça.

Je suis tombé sur VyOS, ça à l'air relativement nouveau mais pas trop compliqué, on dirait du Cisco Like en linux.
Si je n'arrive pas à configurer directement sur la machine, je testerai avec ça. https://wiki.vyos.net/wiki/User_Guide#Site-to-Site_IPsec

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
VPN L2TP sous linux
« Réponse #3 le: 04 juin 2018 à 16:34:23 »
vyOS c'est juste un ensemble de scripts Perl qui partant d'un fichier de config avec syntaxe propriétaire génère la configuration d'un OS linux en dessous. T'as OpenWRT/LEDE dans le meme genre avec en plus, en option, une interface web. Sinon y'a pfsense/opnsense aussi.
Tout ses trucs sont des surcouches sur un OS. pour une config simple, souvent il suffit juste de configurer l'OS directement.

pour ton besoin il faudrait en savoir plus pour voir ce qui correspond le mieux (tu parles de "serveur Linux" mais c'est une vm ou pas ? dans quoi ? pour quoi faire ? as tu le choix de l'OS, etc).

coco

  • Abonné Sosh fibre
  • *
  • Messages: 1 566
VPN L2TP sous linux
« Réponse #4 le: 04 juin 2018 à 16:46:25 »
J'avais à peu près compris que VyOs et compagnie sont justes des surcouches, ça me dérange pas trop si ça peut simplifier / accélérer la configuration.

Je vais détailler un peu plus:

J'ai un serveur Ubuntu sur un VPS avec dessus quelques Docker : Un serveur web apache/php, une bdd, un système de gestion de bdd.
J'ai des reçources web qui necessitent une connexion directe au serveur via le VPN L2TP. Idéalement, je souhaite donc mettre en place un conteneur qui est connecté au VPN avec des rêgles de routage si besoin de l'API. Je pédale dans la semoule pour la config du VPN :/ (tous les tutos/ config étant comme je l'ai expliqué avec user/pswd alors que je n'ai qu'une clé PSK).
J'ai le choix de l'OS, oui.

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
VPN L2TP sous linux
« Réponse #5 le: 04 juin 2018 à 17:05:48 »
J'ai un serveur Ubuntu sur un VPS avec dessus quelques Docker : Un serveur web apache/php, un bdd, un système de gestion de bdd.
J'ai des reçources web qui necessitent une connexion directe au serveur via le VPN L2TP. Idéalement, je souhaite donc mettre en place un conteneur qui est connecté au VPN avec des rêgles de routage si besoin de l'API. Je pédale dans la semoule pour la config du VPN :/ (tous les tutos/ config étant comme je l'ai expliqué avec user/pswd alors que je n'ai qu'une clé PSK).

"J'ai des reçources web qui nécessitent une connexion directe au serveur via le VPN L2TP"
"qui est connecté au VPN avec des rêgles de routage si besoin de l'API"

t'accède comment a ses ressources , qui les utilisent ? quelle API? c'est pas clair clair  ;D

t'as quoi comme 'networks' crées dans Docker ? ("docker network ls")


coco

  • Abonné Sosh fibre
  • *
  • Messages: 1 566
VPN L2TP sous linux
« Réponse #6 le: 04 juin 2018 à 17:10:07 »
C'est une API rest, j'ai pas spécialement de doc dessus...
Concernant les docker, j'ai crée un réseau bridge pour qu'ils communiquent entre eux et j'expose les ports si c'est utile vers l'exterieur.

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
VPN L2TP sous linux
« Réponse #7 le: 04 juin 2018 à 17:28:54 »
C'est une API rest, j'ai pas spécialement de doc dessus...
Concernant les docker, j'ai crée un réseau bridge pour qu'ils communiquent entre eux et j'expose les ports si c'est utile vers l'exterieur.

ah donc si je comprend bien :l'API est distante, de type REST et accessible uniquement par le VPN ?

Il y a que ton conteneur apache/php qui va utiliser l'API? y'a t'il de l'authentification sur l'API ?

Ton lien VPN permet du réseau a réseau ou c'est juste qu'un client distant (une IP) vers le serveur distant ? La sécurité retour (réseau distant accédant a tes serveurs) est -elle importante ?

Le plus propre, sécurisé et simple c'est d'isoler le VPN dans un container spécial ou il n'y a qu'un client vpn et un proxy web. Comme ca tu ne cause qu'a ce conteneur en REST et ca se propage via le VPN sur le serveur REST a l'autre bout. Conceptuellement tu rapproche la ressource REST distante pour qu'elle devienne locale , les détails (réseau, vpn,etc) étant cachés dans le conteneur.

si la sécurité n'est pas un souci, tu peux aussi mettre directement le client vpn dans le container apache/php.


coco

  • Abonné Sosh fibre
  • *
  • Messages: 1 566
VPN L2TP sous linux
« Réponse #8 le: 04 juin 2018 à 19:12:41 »
Tu as tout compris :)
Je cherche de préférence à faire la conf dans un conteneur séparé, histoire que ce soit propre.

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
VPN L2TP sous linux
« Réponse #9 le: 04 juin 2018 à 22:41:03 »
oui dans ce cas un simple conteneur avec:

FROM nginx:alpine ( voir https://hub.docker.com/r/library/nginx/ )

RUN set -x && \
    apk add --no-cache \
              strongswan \
              xl2tpd \
              ppp \
    && mkdir -p /var/run/xl2tpd \
    && touch /var/run/xl2tpd/l2tp-control

COPY startup.sh /
CMD ["/startup.sh"]

montage des fichiers de conf a l’extérieur du conteneur
/etc/ipsec.conf
/etc/ipsec.secrets
/etc/xl2tpd/xl2tpd.conf
/etc/ppp/options.l2tpd.client

fichier de startup.sh:
# startup ipsec tunnel
PIDFILE=/var/run/charon.pid /usr/sbin/ipsec start
sleep 2
ipsec up L2TP-PSK
sleep 2
ipsec statusall
sleep 2

# startup xl2tpd ppp daemon then send it a connect command
(sleep 3 && echo "c myVPN" > /var/run/xl2tpd/l2tp-control) &
/usr/sbin/xl2tpd -p /var/run/xl2tpd.pid -c /etc/xl2tpd/xl2tpd.conf -C /var/run/xl2tpd/l2tp-control -D
(adapté myVPN a ce qu'on veut)

tester si le vpn se monte et marche.

il convient ensuite de rajouter (montage) la config de nginx (/etc/nginx/nginx.conf) , d'y configurer le reverse proxy et de démarrer nginx dans startup.sh.


location / {
    proxy_pass http://ip_du_serveur_au_bout_du_vpn/;
}

tu peux ensuite appeler l'API via le nom dns de ce container :

  http://nomduconteneur/.... va aller sur le nginx qui va l'envoyer sur http://ip_du_serveur_au_bout_du_vpn/.... ce qui va marche car nginx tourne dans le meme container ou le tunnel vpn est monté

coco

  • Abonné Sosh fibre
  • *
  • Messages: 1 566
VPN L2TP sous linux
« Réponse #10 le: 05 juin 2018 à 08:51:41 »
Merci,
Pour tout ce qui est fichier de conf je vais aller voir dans la doc de https://wiki.strongswan.org/projects/strongswan/wiki/UsableExamples, il me semble que les paramètres utilisés sont un peu exotiques.

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
VPN L2TP sous linux
« Réponse #11 le: 05 juin 2018 à 17:19:24 »
Merci,
Pour tout ce qui est fichier de conf je vais aller voir dans la doc de https://wiki.strongswan.org/projects/strongswan/wiki/UsableExamples, il me semble que les paramètres utilisés sont un peu exotiques.

les apps utilisés (ipsec, xl2tpd) ont des fichiers de conf par défaut donc en general ce qu'on fait: on crée une instance du conteneur et on copie a l’extérieur les fichiers par défaut qu'on souhaite externaliser (par exemple /etc/ipsec.conf). Ensuite on customise ces fichiers directement sur l’hôte (en plus de les rendre permanents).

docker cp <nom ou id du container>:/etc/ipsec.conf /root/vpn/ipsec.conf
ou via un cp depuis le container.

Une fois en prod, quand on lancera le container on utilisera le fichier externe:

docker run ... -v /root/vpn/ipsec.conf:/etc/ipsec.conf ...

c'est plus propre d'avoir la conf 'dehors' ca permet de recréer et mettre a jour le conteneur (la philosophie Docker est qu'un container doit être 'jetable' donc ne contenir aucune donnée permanente/customisée).