Dans ce tutoriel je vais expliquer comment installer un VPN sous Debian Squeeze. OpenVPN est un logiciel libre qui permet de créer des réseaux privés virtuels chiffrés avec OpenSSL. Un VPN (Virtual Private Network) ou Réseau Privé Virtuel est une connexion permettant de relier deux réseaux locaux différents de façon sécurisée à travers un tunnel.
1 – Installation
Installation des paquets openvpn et openssl
aptitude install openvpn openssl
Copie des fichiers de configuration
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/
2 – Génération des certificats
A partir des fichiers récemment copiés dans /etc/openvpn/ modifier les variables suivantes dans le fichier vars comme ceci :
export KEY_COUNTRY= »FR »
export KEY_PROVINCE= »00 »
export KEY_CITY= »MAVILLE »
export KEY_ORG= »MONENTREPRISE »
export KEY_EMAIL= »monmail@mail.mail »
Se déplacer dans le dossier
cd /etc/openvpn/
Initialisation du fichier vars. Il y a un espace entre les deux point ( . ./vars)
. ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys
Nettoyage de toutes les clés et certificats existants :
./clean-all
Création du certificat et de la clé d’Autorisé de Certification.
./build-ca
Generating a 1024 bit RSA private key
……………………..++++++
……….++++++
writing new private key to ‘ca.key’
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [FR]:
State or Province Name (full name) [00]:
Locality Name (eg, city) [MAVILLE]:
Organization Name (eg, company) [MONENTREPRISE]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server’s hostname) [MONENTREPRISE]:
Name []:
Email Address [mon.mail@mail.fr]:
Les fichiers ca.key et ca.crt sont maintenant créés dans le dossier Keys
Création du certificat et la clé pour le serveur
IMPORTANT: quand le champ Common Name apparaît, il faut saisir le nom du serveur, dans mon cas debiantest. Ce n’est pas obligatoire mais vous pouvez saisir un mot de passe et un nom d’entreprise. Surtout si vous en saisissez un, ne le perdez pas. Il vous sera demandé à chaque manipulation des certificats clients.
./build-key-server debiantest
Generating a 1024 bit RSA private key
……………………++++++
………………….++++++
writing new private key to ‘debiantest.key’
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [FR]:
State or Province Name (full name) [00]:
Locality Name (eg, city) [MAVILLE]:
Organization Name (eg, company) [MASOCIETE]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server’s hostname) [debiantest]:
Name []:
Email Address [mon.mail@mail.fr]:
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
countryName :PRINTABLE:’FR’
stateOrProvinceName :PRINTABLE:’00’
localityName :PRINTABLE:’MAVILLE’
organizationName :PRINTABLE:’MASOCIETE’
commonName :PRINTABLE:’debiantest’
emailAddress :IA5STRING:’maon.mail@mail.fr’
Certificate is to be certified until Aug 27 11:33:10 2022 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Le certificat et la clé du serveur sont maintenant créés dans le dossier /etc/openvpn/keys. Il se nomme debiantest.crt
Construction des parameter Diffie Hellman
Les parameters Diffie Hellman est un moyen de sécuriser la négociation initiale effectué sur un lien non sécurisé
./build-dh
Construction de la Clé TLS
L’authentification TLS ajoute une signature HMAC à tous les packets de handshake afin de vérifier leur intégrité
openvpn –genkey –secret /etc/openvpn/keys/ta.key
2 – Générer les clés des clients
Se déplacer dans le dossier /etc/openvpn/
cd /etc/openvpn
Initialisation des variables pour les scripts (point|espace|point|vars)
. ./vars
Générer les certificats et les clés pour chaques clients.
La marche à suivre est identique à celle pour le serveur. IMPORTANT:, le champ Common Name doit être renseigné et unique par exemple pour client1 mettre client1 lorsque Common Name est demandé
Répéter l’opération pour d’autres clients
Ex :
./build-key client2
./build-key client3
Si vous souhaitez protéger les clés, générer avec un mot de passe, utiliser ./build-key-pass au lieu de ./build-key
./build-key client1
Generating a 1024 bit RSA private key
………++++++
…………………………………………………….++++++
writing new private key to ‘client1.key’
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [FR]:
State or Province Name (full name) [00]:
Locality Name (eg, city) [MAVILLE]:
Organization Name (eg, company) [MASOCIETE]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server’s hostname) [client1]:
Name []:
Email Address [mon.mail@mail.fr]:
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
countryName :PRINTABLE:’FR’
stateOrProvinceName :PRINTABLE:’00’
localityName :PRINTABLE:’MAVILLE’
organizationName :PRINTABLE:’MASOCIETE’
commonName :PRINTABLE:’client1′
emailAddress :IA5STRING:’mon.mail@mail.fr’
Certificate is to be certified until Aug 27 11:54:03 2022 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Les certificats et les clés sont créés dans /etc/openvpn/keys : client1.crt et client1.key
3 – Ajout de l’utilisateur OpenVpn
Afin de limiter le risque d’attaque sur le serveur, nous allons attribuer le processus Openvpn à un utilisateur qui n’a aucun droit sur le système
groupadd openvpn
useradd -d /dev/null -g openvpn -s /bin/false openvpn
4 – Création des fichiers de configuration pour le serveur et les clients
Dans le répertoire /usr/share/openvpn/examples/sample-config-files/ sont présents des fichiers de configuration clients et server.conf. Ces fichiers vont servir de base pour la configuration de nos clients et du client.
Si vous utilisez des ordinateurs sous Windows le fichier doit se nommer client.ovpn et non client.conf.
4-1 Création du fichier de configuration serveur
Le fichier de configuration est compressé.
Se déplacer dans le dossier sample-config-files
cd /usr/share/doc/openvpn/examples/sample-config-files
Décompression du fichier de configuration
gunzip server.conf.gz
Copie du fichier dans /etc/openvpn
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Modifier les lignes suivantes du fichier server.conf
cert debiantest.crt
key debiantest.key
tls-auth ta.key 0
user openvpn
group openvpn
log openvpn.log
# Ajout du serveur DNS
push « dhcp-option DNS VOTRE.SERVEUR.DNS »
# Ajout d’une route
push « route 192.168.0.0 255.255.255.0 »
4-2 Création du fichier de configuration pour le client
Copie du fichier dans le répertoire /etc/openvpn
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/
Modifier les lignes suivantes dans le fichier client.conf
remote ADRESSE.IP.DE.VOTRE.SERVEUR 1194
user openvpn
group openvpn
cert client1.crt
key client1.key
tls-auth ta.key 1
Démarrage automatique d’OpenVPN
Pour permettre à OpenVpn de se lancer automatiquement au démarrage il faut copier les fichiers de configuration à la racine du dossier /etc/openvpn
Pour le serveur :
- ca.crt
- ta.key
- dh1024.pem
- debiantest.crt
- debiantest.key
cp ca.crt ta.key debiantest.key debiantest.crt dh1024.pem /etc/openvpn
Pour le client :
- client1.crt
- client.key
cp client1.crt client1.key /etc/openvpn/
5 -Démarrage d’OpenVpn
cd /etc/openvpn
openvpn server.conf
Redémarrage du serveur
Vérification du bon lancement d’Openvpn
Ifconfig
Les lignes suivantes doivent apparaitre :
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet adr:15.8.0.1 P-t-P:15.8.0.2 Masque:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Test de ping sur l’interface Tun0
ping 15.8.0.1
Pour redémarrer le service openvpn
/etc/init.d/openvpn restart
6 – Permettre aux clients VPN d’accéder à l’ensemble du réseau distant
Avec la configuration actuelle, les utilisateurs du VPN ne pourront pas accéder au réseau sur lequel est connecté le serveur.
6-1 Autoriser Linux à transmettre les paquets
Activer le forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
Avec cette commande, le forwarding sera désactivé au redémarrage du serveur. Pour remédier à ce problème, modifier le fichier /etc/sysctl.conf.
Décommenter la ligne suivante :
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
7 – Installation du client Windows
Vous pouvez télécharger le client openvpn à l’adresse suivante :
http://openvpn.net/index.php/open-source/downloads.html
Une fois le fichier téléchargé, exécutez le.
Cliquer sur next
Cliquer sur I Agree
Cliquer sur Next
Cliquer sur Install
Installation en cours
Cliquer sur Next
Décocher Show Readme puis cliquer sur Finish
7-1 Configuration du client Windows
Dans C:\Program Files\OpenVPN\config créer un répertoire client1 et récupérer la clé et le certificat du client précédemment créés pour les mettre dans le dossier client1. Les fichiers à récupérer sont :
- ca.crt
- ta.key
- client1.key
- client1.crt
- client.conf
Renommer le fichier client.conf en client.ovpn pour qu’il puisse fonctionner sous Windows
Exécuter Openvpn, celui-ci se lance à côté de l’heure. Faire un clic droit sur les deux ordinateurs puis connect
Connexion en cours
Si le message apparaît, le message suivant apparait.
Le serveur VPN est maintenant opérationnel.
Auteur : POMENTE Guillaume
Partager la publication "INSTALLATION SERVEUR OPENVPN SUR DEBIAN SQUEEZE"
Simply desire to say your article is as amazing. The
clearness in your post is just nice and i can assume you are an expert on this subject.
Well with your permission allow me to grab your feed to keep updated with forthcoming post.
Thanks a million and please continue the enjoyable work.
Thx.