Administrators, autoreview, Vérificateurs d’utilisateurs, checkuser-log, editor, reviewer, usersnoop
3 321
modifications
m (→Tests) |
|||
(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 | # apt install openvpn openssl easy-rsa | ||
Sur le client Debian: | Sur le client Debian: | ||
# apt | # apt install openvpn | ||
== Mise en | == 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 | # cp -R /usr/share/easy-rsa/ /etc/openvpn/server | ||
# cd /etc/openvpn/ | # 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 | 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 | 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: | ||
# | # 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 | 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 = |
modifications