Notice: Undefined index: style in /home/admins/lab3w/web_sites/wwweball.com/www2/wiki/history.php on line 117
Accès Rapide :
Navigation Sécurisée | M'identifier | M'inscrire | Rechercher |
Imprimer |
Webmail
Refaire cette page : WWWEBALL > ARTICLES (UNIX) > VPN qui a était fait avec le daemon Freeswan sur un noyeau 2.4. Depuis le noyeau 2.6 les modules IPSEC sont fournis dans celui-ci ! Il reste qu'à les activer et installer un deamon (freeswan, openswan
L'acronyme VPN correspond à Virtual Private Network, c'est-à -dire un réseau privé virtuel.
Extension du principe proposé par SSH  ; le réseau privé virtuel repose sur des protocoles établis, renforçant le principe de sécurité des transmissions.
Dans les faits, cela correspond à une liaison permanente, distante et sécurisée entre deux sites d'une organisation. Cette liaison autorise la transmission de données cryptées par le biais d'un réseau non sécurisé, comme Internet.
Malgré cette description valide pour les deux technologies, le VPN est bien différent de SSH. Ce dernier donne un accès à un ordinateur à distance de manière sécurisée, tandis que le VPN permet d'utiliser l'ensemble du réseau depuis une machine tierce.
L'un ouvre une passerelle depuis un ordinateur vers un autre, l'autre fait en sorte que la machine de l'utilisateur fasse partie intégrante du réseau distant.
Ainsi, grâce à un VPN, toutes les adresses internes du réseau distant sont accessibles depuis la machine qui y est reliée par VPN. Le VPN n'est d'ailleurs pas limité à une machine accédant un réseau ; il est parfaitement possible de lier plusieurs réseaux à un réseau central avec ce système, et combiner ainsi les différentes machines en un ensemble homogène.
VPN repose ainsi principalement sur le protocole IPSec (protocole de niveau 3, issu des travaux de l'IETF, permettant de transporter des données chiffrées pour les réseaux IP), un standard de sécurité standard au sein d'IPv6, ainsi que d'autres protocoles de cryptage, comme SSH, et de tunnellisation. Pour ce dernier, PPTP (pour Point To Point Tunneling Protocol) reste la principale méthode d'implémentation de VPN, malgré le fait qu'il reste un protocole non ratifié par l'IETF.
Tu as 2 machine gateway (passerelle, routeur) chacunes sur un site différent, tu généres tes certificats 2048 bits SSL (clé privé et clé publique). Après tu envoies des 2 machines, la clé publique sur chacune d'elles, tu config tes ipsec.conf en déclarant l' IP internet et le réseau local puis tu lances la connexion. Et hop, les données circulant entre les 2 passerelles Internet sont cryptées et donc ton FAI ne poura pas savoir quels paquets transitent entre ces 2 réseaux.
C'est bien, après tu peut installer par exemple, un serveur SMB ou FTP qui tu accédes directement grâce à l'ip local. Donc dans ton explo, tu connectes un serveur \\192.168.45.2\Homes alors que cette machine se trouve chez ton pote à marseille ! Ou encore un serveur de tchat styll Team-Speak et coser mieux qu'au téléphone et tout cela encodé avec des clés 2048 bits ^^
En fait dès que tu essaies d'accéder à une IP en dehors de ton vrai Local, tu utiliseras le tunnel et donc les connexions seront sécurisées (à ce moment tu peut lancer un VNC mais en IP Local (intranet))
PSÂ : il faut modifier/ajouter des routes dans ton firewall selon les services accessibles -- iptables
Je sais que si tu as un noyeau 2.4 sur une de tes machines client/serveur tu dois installer les modules IPSEC dans ton noyeau, sinon depuis le 2.6, IPSEC est deja fournis ! Il te faut seulement installer ipsec-tools et le daemon (openswan ou freeswan)
Après pour des amis sous windows tu peut aussi leur générer une clé publique au format P12 (pour win).
Chaque point d'un réseau VPN est relié au réseau central par le biais d'un tunnel, reliant la machine à un gateway. Ainsi, tous les utilisateurs passent par le même "portail", ce qui permet de gérer la sécurité des accès, ainsi que le trafic utilisé par chacun. En effet, malgré son aspect sécurisé, un réseau VPN reste une extension du réseau principal vers chaque employé qui y accède, ce qui augmente d'autant le risque de failles. Centraliser les entrées au réseau permet de renforcer la sécurité, et de mieux gérer la taille prise par le réseau étendu.
Le système VPN doit donc prendre en charge tous les aspects de la sécurité : authentification, cryptage, intégrité des données transmises, vérification des transactions. Tous ces points sont pris en charge par des protocoles spécialisés.
CF : une petite photo d'un début de réseau VPN.
L'encapsulation des données (en orange sur la photo) se fait entre les 2 serveurs VPN, où sont stokées les clés SSL permettant l'authentification entre les 2 machines ! Les données qui transitent (par le tunnel au travers d'internet) donc entre ces 2 passerelles/routeur/firewall sont sécurisées (et seulement à ce niveau). Le réseau 192.168.38.0/24 à accés (forward) au réseau 192.168.92.0/24. Le réseau wifi 172.16.92.0/24 lui n'a pas accés aux réseaux 192.168.92.0/24 ni au réseau 192.168.38.0/24 à moins de forwarder des routes soit vers une machine soit vers tout le réseau !
Sur les firewalls, il faut ouvrir les ports 500 en UDP (SPI) et 50 en TCP (ESP)Â :
001 iptables -A INPUT -i eth0 -p udp --dport 500 -j ACCEPT
002 iptables -A OUTPUT -o eth0 -p udp --sport 500 -j ACCEPT
003 iptables -A INPUT -i eth0 -p tcp --dport 50 -j ACCEPT
004 iptables -A OUTPUT -o eth0 -p tcp --sport 50 -j ACCEPT
005 iptables -A INPUT -i eth0 -p 50 -m esp -j ACCEPT
bon j'ajoute vite fait 2, 3 trucs...
Aller sur la passerelle (où se trouve le CA) et proposer votre requete pour cet host (le client win qui souhaite se connecter à votre VPN) :
001 openssl req -new -keyout newreq.pem -out newreq.pem -days 365
Faites signer la requete par le CA
001 openssl ca -policy policy_anything -out newcert.pem -infiles newreq.pem
Nous avons donc maintenant notre certif signé. Il ne reste plus qu'a le transformer en .p12
001 openssl pkcs12 -export -in newcert.pem -inkey newreq.pem -certfile cacert.pem -out newcert.p12
Ce fichier doit être copié de façon sécurisée sur la machine MS Windows.
On installe à présent l'utilitaire ipsec.exe de Marcus Muller, par exemple dans le répertoire c:ipsec.
On ouvre la console de gestion Microsoft (Microsoft Management Console/MMC) puis on clique sur « Add/Remove Snap-in », « Add », « Certificates », « Add », « Computer Account » et « Next ». On choisit alors « Local computer » et « Finish ». Dans « IP Security Policy Management », choisir « Add », « Local Computer » puis « Finish », « Close » et enfin « OK ».
On peut à présent ajouter le certificat .p12.
On clique sur la flèche d'ajout pour « Certificates (Local Computer) » puis avec le bouton droit sur « Personal » avant de cliquer sur « All Tasks », « Import » et « Next ». On renseigne ensuite le chemin d'accès au fichier .p12 (ou on navigue pour atteindre le fichier) et on clique sur « Next ». On rentre alors le mot de passe de protection du fichier puis on clique sur « Next ». On choisit « Automatically select the certificate store based on the type of certificate », « Next », « Finish » et on répond positivement à toutes les questions qui se présentent. On sort de la console et on enregistre la séquence correspondante dans un fichier pour ne pas avoir à se la farcir à chaque fois.
On installe ipsecpol.exe (Windows 2000) ou ipseccmd.exe (Windows XP) comme indiqué dans la documentation de l'utilitaire ipsec. On édite le fichier ipsec.conf de la machine MS Windows en remplaçant "RightCA" par la sortie de la commande « openssl x509 -in cacert.pem -noout -subject »; mise en forme comme indiqué ci dessous (il faut remplacer les / par des virgules et changer le nom de quelques champs comme indiqué dans l'exemple) :
001 conn roadwarrior
002 left=%any
003 right=(ip_du_systeme_distant)
004 rightca="C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root"
005 network=auto
006 auto=start
007 pfs=yes
008
009 conn roadwarrior-net
010 left=%any
011 right=(ip_du_systeme_distant)
012 rightsubnet=(sous_reseau)/(masque_de_sous_reseau)
013 rightca="C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root"
014 network=auto
015 auto=start
016 pfs=yes
On démarre à présent le lien.
Pour cela on invoque la commande « ipsec.exe ». Voici un exemple de sortie de cette commande :
001 C:\ipsec>ipsec