« Serveur OpenVPN » : différence entre les versions

Aller à la navigation Aller à la recherche
m
 
(12 versions intermédiaires par 3 utilisateurs non affichées)
Ligne 5 : Ligne 5 :
OpenVPN est un système de réseau privé virtuel développé par James Yonan (jim@yonan.net) sur le protocole SSL et non sur le protocole IPSEC comme la plupart des VPN.
OpenVPN est un système de réseau privé virtuel développé par James Yonan (jim@yonan.net) sur le protocole SSL et non sur le protocole IPSEC comme la plupart des VPN.


VPN est l'acronyme de Virtual Private Network. Il s'agit d'un tube virtuel qui crée un réseau privé au travers d'un réseau public.Openvpn est utilisé pour relier deux ordinateurs (ou deux réseaux) de façon sécurisée au travers d'un tunnel crypté.
VPN est l'acronyme de Virtual Private Network. Il s'agit d'un tube virtuel qui crée un réseau privé au travers d'un réseau public. Openvpn est utilisé pour relier deux ordinateurs (ou deux réseaux) de façon sécurisée au travers d'un tunnel crypté.


Son rôle est de "tunneliser", de manière sécurisée, des données sur un seul port TCP/UDP à travers un réseau non sûr comme Internet et ainsi établir des VPNs.
Son rôle est de "tunneliser", de manière sécurisée, des données sur un seul port TCP/UDP à travers un réseau non sûr comme Internet et ainsi établir des VPNs.
Ligne 11 : Ligne 11 :
Il existe deux méthodes pour faire tourner OpenVPN:
Il existe deux méthodes pour faire tourner OpenVPN:


- Le mode "routed" plus simple, est généralement utilisé pour connecter des utilisateurs depuis l'extérieur d'un réseau (les roadwarriors");
- Le mode "routed" plus simple, est généralement utilisé pour connecter des utilisateurs depuis l'extérieur d'un réseau (les "roadwarriors");


- Le mode "Bridged" plus compliqué à installer, mais un peu plus rapide. Il est généralement utilisé pour interconnecter deux réseaux entre eux.
- Le mode "Bridged" plus compliqué à installer, mais un peu plus rapide. Il est généralement utilisé pour interconnecter deux réseaux entre eux.
Ligne 31 : Ligne 31 :


Sur le serveur Debian:
Sur le serveur Debian:
  # apt-get install openvpn openssl
  # apt install openvpn openssl easy-rsa


Sur le client Debian:
Sur le client Debian:
  # apt-get install openvpn
  # apt install openvpn


== Mise en oeuvre de la PKI (Génération des certificats et clefs avec Openvpn) ==
== Mise en œuvre de la PKI (Génération des certificats et clefs avec Openvpn) ==


PKI ( "Public Key Infrastructure"=Infrastructure de clé publique )
PKI ( "Public Key Infrastructure"=Infrastructure de clé publique )
Ligne 42 : Ligne 42 :
Nous utiliserons évidemment les utilitaires fournis par openvpn qui simplifient grandement le travail...
Nous utiliserons évidemment les utilitaires fournis par openvpn qui simplifient grandement le travail...


  # cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn
  # cp -R /usr/share/easy-rsa/ /etc/openvpn/server
  # cd /etc/openvpn/easy-rsa/2.0
  # cd /etc/openvpn/server


Quelques modifications pour coller à nos besoins:
Quelques modifications pour coller à nos besoins:
Ligne 49 : Ligne 49 :
  # nano vars
  # nano vars
  export KEY_COUNTRY="MG"
  export KEY_COUNTRY="MG"
  export KEY_PROVINCE="IH"export KEY_CITY="Quelquepart"
  export KEY_PROVINCE="IH"
export KEY_CITY="Quelquepart"
  export KEY_ORG="serveur.domaine.org"
  export KEY_ORG="serveur.domaine.org"
  export KEY_EMAIL="admin@domaine.org"
  export KEY_EMAIL="admin@domaine.org"


  # . ./vars NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys
Vérifions la configuration SSL: vérifier la présence de /etc/openvpn/server/openssl.cnf<br />
Si le fichier openssl.cnf est absent, mais que que plusieurs fichiers openssl-x.x.x.cnf<br />
Alors on crée un lien vers la dernière version (exécuter la commande suivante en remplaçant les x.x.x par la dernière version).
 
# ln -s openssl-x.x.x.cnf openssl.cnf
 
Puis on charge le paramétage
 
  # . ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys
  # ./clean-all
  # ./clean-all


Ligne 114 : Ligne 124 :
  Write out database with 1 new entriesData Base Updated
  Write out database with 1 new entriesData Base Updated


Attention, il est important de répondre Y (oui) aux deux question suivantes:
Attention, il est important de répondre Y (oui) aux deux questions suivantes:
  Sign the certificate? [y/n]:y
  Sign the certificate? [y/n]:y
  commit? [y/n]y
  commit? [y/n]y
Ligne 192 : Ligne 202 :
  -rw------- 1 root root  887 10 mai  10:17 server.key (Server Key - SECRET - server only)
  -rw------- 1 root root  887 10 mai  10:17 server.key (Server Key - SECRET - server only)
  -rw------- 1 root root  636 16 mai  17:37 ta.key
  -rw------- 1 root root  636 16 mai  17:37 ta.key
{| class="wikitable"
|+ Tableau des clefs
! Nom
! Utilisée par:
! Description
! Secret
|-
| ca.crt
| Serveur et tous les clients
| Certificat racine du serveur
| NON
|- {{ligne grise}}
| ca.key
| Serveur seulement
| Clef du certificat racine du serveur
| OUI
|- {{ligne grise}}
| dh1024.pem
| Serveur seulement
| Paramètres Diffie Hellman
| NON
|- {{ligne grise}}
| client1.crt
| Client1 seulement
| Certificat du client
| NON
|- {{ligne grise}}
| client1.key
| Client1 seulement
| Clef du certificat du client
| OUI
|- {{ligne grise}}
| server.crt
| Serveur seulement
| Certificat du serveur
| NON
|- {{ligne grise}}
| server.key
| Serveur seulement
| Clef du certificat du serveur
| OUI
|}


== Configuration du serveur ==
== Configuration du serveur ==
Ligne 240 : Ligne 293 :
Règles nécessaires au bon fonctionnement d’OpenVPN en full-tunneling :
Règles nécessaires au bon fonctionnement d’OpenVPN en full-tunneling :


Évidemment changez l'interface (ici eth0) et l'IP par celle de votre système.
iptables -A INPUT -i eth0 -p udp -m udp --dport 1194 -j ACCEPT
  iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
  iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
  iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Ligne 247 : Ligne 303 :
  echo 1 > /proc/sys/net/ipv4/ip_forward
  echo 1 > /proc/sys/net/ipv4/ip_forward


Attention, l'ip_forwarding ne sera pas conservé au prochain démarrage, il faudra éditer le fichier et changer manuellement le 0 en 1
Attention, l'ip_forwarding ne sera pas conservé au prochain démarrage, il faudra éditer le fichier /etc/sysctl.conf et dé-commenter la ligne suivante:


  # nano /proc/sys/net/ipv4/ip_forward 1
  # Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1


== Configuration du client ==
== Configuration du client ==
Ligne 255 : Ligne 312 :
Avec une clef usb récupérez les fichiers suivants sur le serveur:
Avec une clef usb récupérez les fichiers suivants sur le serveur:
# ca.crt
# ca.crt
# client1.crt# client1.key
# client1.crt
# client1.key


Que vous copierez directement dans le dossier /etc/openvpn/
Que vous copierez directement dans le répertoire /etc/openvpn/


Puis vous créez un fichier de configuration:
Puis vous créez un fichier de configuration:
Ligne 360 : Ligne 418 :
Au prochain démarrage des machines (serveur et clients) le service sera automatiquement lancé avec tous les fichiers de configurations qui se trouvent dans le répertoire /etc/openvpn.
Au prochain démarrage des machines (serveur et clients) le service sera automatiquement lancé avec tous les fichiers de configurations qui se trouvent dans le répertoire /etc/openvpn.
Vous pouvez ainsi lancer plusieurs instances de serveurs ou de clients.
Vous pouvez ainsi lancer plusieurs instances de serveurs ou de clients.
= Une interface Web pour contrôler le serveur =
Vous avez plusieurs outils vous permettant d'avoir une vision d'ensemble du fonctionnement de votre serveur OpenVPN.
J'ai choisi OpenVPN Web GUI:
[http://sourceforge.net/projects/openvpn-web-gui/ Téléchargement]
# apt-get install libapache2-mod-python
# mkdir /var/www/openvpn
# tar xvzf openvpn-web-gui-0.3.2.tgz -C /var/www/openvpn
# chown -R www-data:www-data /var/www/openvpn
Installation de [http://www.smarty.net/download Smarty] :
# wget http://www.smarty.net/files/Smarty-3.0.7.tar.gz
# tar xvzf Smarty-3.0.7.tar.gz
# mkdir /usr/share/php5/Smarty
# cp -r ~/Smarty-3.0.7/libs/* /usr/share/php5/Smarty/
# nano /etc/php5/apache2/php.ini
# service apache2 restart
...
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
include_path = ".:/usr/share/php5:/usr/share/php5/Smarty"
...
Configuration de OpenVPN Web GUI en fonction de vos besoins:
# nano /var/www/openvpn
Sécurisez le répertoire avec le fichier .htaccess:
# nano /var/www/openvpn/.htaccess
Order Deny,Allow
Deny  from all
Allow from 10.9.8.2
Rendez-vous dans votre navigateur:
http://10.9.8.1/openvpn/
[[Fichier:Openvpn-status.jpeg]]
Si vous rencontrez des difficultés, allez visiter [http://linkbidouilles.wordpress.com/2010/04/10/openvpn-status-sur-ubuntu-jaunty-server-notes-perso/ ce blog]


= A faire =
= A faire =
Administrators, autoreview, Vérificateurs d’utilisateurs, checkuser-log, editor, reviewer, usersnoop
3 321

modifications

Menu de navigation