Outils pour utilisateurs

Outils du site


Panneau latéral

Accueil

Menu Linux

Menu Windows

iPhone

Raspberry

I. Partie LINUX

  • Préliminaire

Introduction Linux

LiveCD Linux

  • Installation

LiveCD Ubuntu

Installation Ubuntu

Ubuntu Studio

Cubuntu

Ubuntu-Mate

Ubuntu sur Netbook

Installation sur support USB

Installation sur support USB

Installation sans CD-ROM

Installation Second Ubuntu

Réinstallation sur mono-partition

Installations, mises à jour

Réinstallation/Migration version Ubuntu

Conversion Desktop->Serveur

Applications Ubuntu

Documentation-Aides

  • Aller plus loin

Arborescence Ubuntu

Recherche Ubuntu

Edition Linux

Shell/Terminal/Super Utilisateur

Commandes Linux (1)

Commandes Linux (2)

Utilisateurs, groupes, droits

Imprimante/Scanner Linux

Compression-Archivage

Déplacer le /home

Fusion de deux /homes

Changement d'ordinateur

Bureau-Gnome

Environnement graphique

Imagemagick

Dokuwiki

Second Dokuwiki

  • Réseau

Connexion Linux

Réseau Linux

Partage connexion

Paramétrage routeur

Répéteur Wifi

Analyse Réseau - Gestion parc

Partages Linux

Partage anonyme Samba

Exemple Partage Samba

Fichier partage Samba

Exemple Réseau NFS

Webmin

Usermin

Transferts Linux

Contrôle à distance

Contrôle à distance Linux

Authentification SSH

Ajaxplorer

Analyse Réseau - Gestion parc

Thunderbird sur un réseau

Inventaire informatique

Disque-Réseau

Serveur NAS DNS320

Disque USB

Serveur Linux

Serveur Ubuntu

Changement de serveur

Diffusion Multmedia

Serveur Proxy

Serveur de Proxy

Management serveur HP Proliant G6

OpenVPN

Sécurité Linux

Wake-on-LAN

Migration Linux Petite entreprise

Ubuntu One

  • Courrier

Courrier en Terminal

Hébergement comptes

  • Utiliser des applications Windows ou d'autres OS

Virtualisation (1): VirtualBox

Virtualisation (2): Proxmox

Wine: Applications Windows sous Linux

  • Téléphonie VOIP

Asterisk, TrixBox

Elastix

Routeur double Wan

  • Maintenance, dépannage

Sauvegarde

Sauvegarde Linux(1): Backup-Manager

Sauvegarde Linux(2)

Sauvegarde Partitions

Sauvegarde Nuage

Synchronisation Linux

Automatisation tâches cron

Rsyncd

Dépannage Ubuntu

Antivirus Linux

Spam & Publicité

Grub

Grub2

Grub-rescue

Partitions Linux

Fichier fstab

LVM

RAID

Installation RAID1

Installation RAID sur installation Ubuntu

Récupération de fichiers, partitions

  • BDD

BDD Linux

Access/MySQL

Talend Open Studio

II. Partie commune

Présentation

  • Internet/Réseau

Navigation Internet

Thunderbird (1)

Thunderbird (2)

Thunderbird (3)

Courrier GMail

Jabber

Fonctions Freebox

  • Création de site/blog

Joomla

Blog: Dotclear

Dreamweaver

  • Bureautique

OpenOffice/LibreOffice

  • Graphisme

Picasa

  • Photo

Photo: Théorie

Photo: Pratique

Diaporama, site photos

Retouche: Gimp

  • Gravure

Gravure CD

  • Vidéo

YouTube

  • BDD

BDD Linux

Access/MySQL

Gestion Bibliothèque/Archives

Généalogie

Redmine

III. Partie WINDOWS

  • Préliminaire

Logiciels Windows

Utilitaires Windows

Commandes DOS

  • Internet

Connexion Internet

Export OutlookExpress

Changement d'ordinateur

Agenda

Exploration/Dépannage Internet

  • Réseau

Partage Connexion

Partage Fichiers

Partage Imprimante

Transfert Fichiers

Transfert Windows

Analyse Réseau Windows

  • Dépannage

Prévention-dépannage Windows

  • Divers

Anti-virus

Installation périphérique Windows

Partitions Windows

Organisation disque dur

Sauvegarde-Synchronisation Windows

Putty

Connexion-SSH-Windows

Contrôle à distance

BDD Windows

IV. Divers

Liseuse Kindle

openvpn

OpenVPN

OpenVPN permet la création de réseau privé virtuel VPN (Virtual Private Network).

Il permet à des pairs de s'authentifier entre eux à l'aide d'une clé privée partagée à l'avance, de certificats ou de couples de noms d'utilisateur/mot de passe. Il utilise OpenSSL (Secure Sockets Layer) pour l'authentification. Logiciel libre, il existe sous Linux, Mac OS X et Windows.

L'architecture comprend d'un côté un client et de l'autre un serveur.

Procédure d'installation

Installer d'abord les paquets easy-rsa, openvpn, openssh-server, openssl. Au préalable, activer si besoin le dépôt Universe.

sudo apt-get install easy-rsa openvpn ssh openssl

Infrastructure des Clés Publiques

Une Infrastructure des Clés Publiques (ICP) fonctionne grâce à :

  • une clé publique pour le serveur et une clé privée pour chacun des clients
  • un certificat de l’Autorité de Certification maître et des clés qui sont utilisées pour identifier (signer, identifier…) chaque certificat serveur et client.

OpenVPN supporte une authentification bidirectionnelle basée sur les certificats, donc le client doit authentifier le certificat du serveur et le serveur doit authentifier le certificat du client avant qu’une confiance mutuelle puisse être établie.

Création du certificat de l’autorité de certification (CA)

Installation avec Ubuntu 14.04 Avec Ubuntu 14.04, il faut au préalable, installer easy-rsa et créer le dossier de certificats.

sudo apt-get install easy-rsa
make-cadir /home/<login>/my_ca  # crée un dossier de certificats
cd my_ca/

  • On commence par copier le répertoire easy-rsa dans le répertoire /etc/openvpn
sudo cp -R /usr/share/easy-rsa/ /etc/openvpn/
cd /etc/openvpn/easy-rsa
  • Se connecter en root et éditer le fichier vars
sudo -s
nano vars 
  • Initialiser les variables KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, and KEY_EMAIL, par exemple :
- export KEY_COUNTRY=FR
- export KEY_PROVINCE=France
- export KEY_CITY=Toulon
- export KEY_ORG="AssoXYZ"
- export KEY_EMAIL="contact@AssoXYZ.fr"
  • Une fois le fichier modifié, la ligne suivante permet d’initialiser les variables pour les scripts:
source ./vars  
  • Le script suivant permet de réinitialiser, si besoin, le sous-dossier keys:
./clean-all  # pour nettoyer toutes les clés et certificats existants
  • Le script suivant permet de créer dans keys le certificat principal du serveur ca.crt et la clé correspondante ca.key :
./build-ca

Création du certificat et de la clé du serveur

Le script suivant permet de créer dans le répertoire keys le certificat userv.crt et la clé userv.key pour le serveur VPN nommé par exemple userv:

 ./build-key-server userv
Generating a 1024 bit RSA private key
...........++++++
................................................++++++
writing new private key to 'userv.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) [France]:
Locality Name (eg, city) [Toulon]:
Organization Name (eg, company) [USERV]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [userv]:  # à remplir impérativement
Email Address [...@free.fr]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:  # laisser blanc
An optional company name []:
Using configuration from /usr/share/doc/openvpn/examples/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'FR'
stateOrProvinceName   :PRINTABLE:'France'
localityName          :PRINTABLE:'Toulon'
organizationName      :PRINTABLE:'USERV'
commonName            :PRINTABLE:'userv'  # à remplir impérativement
Name [EasyRSA]:
emailAddress          :IA5STRING:'...@free.fr'
Certificate is to be certified until Apr 21 17:17:18 2019 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

Création du certificat et de la clé pour un client OpenVPN

Le script suivant permet de créer dans keys le certificat Client01.crt et la clé Client01.key pour le client VPN nommé par exemple Client01:

 ./build-key Client01

Bien choisir le nom du client pour retrouver facilement le serveur et le client auxquels il se rapporte, surtout si on correspond avec plusieurs serveurs et/ou plusieurs clients

Ce script doit afficher à l’écran quelque chose comme:

 ./build-key Client01
Generating a 1024 bit RSA private key
..++++++
....................++++++
writing new private key to 'Client01.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.
-----
## Idem ne pas entrer de "challenge password"
-----
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Si besoin, on crée des clés pour un second client Client02:

 ./build-key Client02 

Création du paramètre Diffie Hellman

Le script build-dh permet de créer le fichier dh2048.pem

./build-dh

Les fichiers clés et certificats

Le tableau suivant récapitule les clés et les certificats qui seront fraîchement générés dans le dossier keys. Suit une explication de ce que contiennent les fichiers du dossier keys.

Nom de fichier Besoin pour Utilité Secret
ca.crt Serveur et tous les clients Certificat racine CA NON
ca.key Clé signant la machine seulement Clé racine CA OUI
dh{n}.pem Serveur Paramètres Diffie Hellman NON
server.crt Serveur Certificat serveur NON
server.key Serveur Clé serveur OUI
client1.crt Client1 Certificat Client1 NON
client1.key Client1 Clé Client1 OUI
client2.crt Client2 Certificat Client2 NON
client2.key Client2 Clé Client2 OUI

Mise en place des certificats et des clés

Déplacer maintenant les certificats et clés du répertoire /etc/openvpn/easy-rsa/keys dans /etc/openvpn:

cd keys/
cp ca.crt ca.key userv.crt userv.key dh2048* /etc/openvpn/

Création d’un utilisateur OpenVPN

Pour limiter les risques d’attaques sur OpenVPN, il est important que le processus d’OpenVPN fonctionne sur un utilisateur n’ayant aucun droit sur le système.

Souvent, l’utilisateur nobody est utilisé par défaut, mais il est encore plus sécurisant de faire tourner chaque processus avec un utilisateur différent. Donc, pour le processus OpenVPN, créer plutôt l’utilisateur openvpn:

 groupadd openvpn
 useradd -d /dev/null -g openvpn -s /bin/false openvpn

Configuration du serveur OpenVPN

Par défaut OpenVPN est fourni avec plusieurs fichiers d’exemples enregistrés dans le dossier /usr/share/doc/openvpn/examples/sample-config-files/

Pour configurer le serveur, partir du fichier d’exemple server.conf.gz, qu’il faut donc décompresser et mettre en place dans /etc/openvpn:

cd /usr/share/doc/openvpn/examples/sample-config-files/
gunzip server.conf.gz
cp server.conf /etc/openvpn/ 

Il suffit ensuite d'éditer maintenant le fichier /etc/openvpn/server.conf et de l’adapter en fonction des besoins.

sudo nano /etc/openvpn/server.conf 

Voici par exemple le fichier de configuration à utiliser:

;Port en écoute utilisé pour la connexion VPN
port 1194

;Protocole utilisé (Le protocole udp est plus sécurisé que le tcp)
proto udp

;Type d'interface réseau virtuelle créée
dev tun

;Nom des fichiers servant à l'authentification des clients via OpenSSL
ca ca.crt
cert server.crt     # bien vérifier le nom du certificat du serveur VPN
key server.key      # idem pour la clé du serveur VPN
dh dh2048.pem      # bien corriger dh1024 en dh2048

;Adresse du réseau virtuel (Le serveur aura l'adresse 10.8.0.1)
server 10.8.0.0 255.255.255.0

;Cette ligne ajoute sur le client la route du réseau du serveur
push "route 192.168.123.0 255.255.255.0"

;Ces lignes indiquent aux clients l'adresse des serveur DNS et WINS
push "dhcp-option DNS 192.168.123.254"
push "dhcp-option DOMAIN MonDomaine.com"
push "dhcp-option WINS 192.168.0.3"

# Cette ligne permet aux clients de voir les autres clients
client-to-client 208.67.222.222

keepalive 10 120

;Cette ligne active la compression
comp-lzo

;Ces lignes indiquent un user et un groupe particulier pour le processus
user openvpn
group openvpn

;Ces lignes permettent de rendre persistante la connexion
persist-key
persist-tun

status openvpn-status.log

;Cette ligne permet d'indiquer le niveau de log souhaité (de 1 à 9)
verb 4
  • corriger la ligne suivante pour avoir un fichier log (une seule des 2 lignes décommentée):
;log         openvpn.log
log-append /var/log/openvpn.log
  • Vérifier la redirection 1194 sur le routeur et la Box du côté du serveur OpenVPN.
  • Ajouter une route statique openvpn en 10.8.0.0 vers le serveur
# route add -net 10.8.0.0 netmask 255.255.255.0 gw <ip_locale_serveur>

Démarrage du serveur OpenVPN

La commande suivante permet de démarrer ou redémarrer le serveur :

service openvpn restart 

ou autrement:

sudo openvpn /etc/openvpn/server.conf &

Ne pas hésiter à regarder dans les logs que tout s’est bien passé :

tail -100 /var/log/syslog 

Bien vérifier également que le processus tourne sous l’utilisateur « openvpn »

ps aux | grep openvpn 

Pour finir, si tout c’est bien passé, l’interface « tun0 » doit apparaître dans la configuration du réseau :

# ifconfig
...
...
tun0     Lien encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
         inet adr:10.8.0.1  P-t-P:10.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)

Et il doit même être possible de la pinguer :

ping 10.8.0.1 

Installation Client Linux

  • L’installation du client est identique à celle du serveur, car c’est le même logiciel qui fait office de serveur ou de client en fonction de sa configuration :
sudo -s  
apt-get install openvpn openssl network-manager-openvpn

La dépendance liblzo2.2 pour la compression s'installera automatiquement.

  • Transmettre au client à partir du serveur le certificat-racine, le certificat-client et la clé-client et les placer dans /etc/openvpn. A partir du serveur, entrer:
cd /home/<login>/my_ca/keys
sftp <login>@<IP-dest>
put ca.crt
put client1.key
put client1.crt

enfin déplacer sur le client ces nouveaux éléments de son /home-client vers /etc/openvpn

sudo cp ca.crt client1.key client1.crt /etc/openvpn/  
  • Le fichier de configuration-client et la gestion des clés seront identiques pour un client Windows. Déplacer le fichier-exemple client.conf dans /etc/openvpn/, l'éditer et le paramétrer.
cd /usr/share/doc/openvpn/examples/sample-config-files/
sudo cp client.conf /etc/openvpn/
nano /etc/openvpn/client.conf 
  • Vérifier en particulier dev (tun ou tap), proto (udp ou tcp), les noms des certificats (qui doivent être identiques à ceux créés par le serveur) et comp-lzo (sans changer "client" à la première ligne, qui indique la fonction client).
  • Au paragraphe remote hostname/port, introduire une ligne avec l'adresse publique du serveur
 remote <ip_publique_distante> 1194 
  • Ajouter à la fin la ligne suivante pour avoir un fichier openvpn.log:
log-append /var/log/openvpn.log

Finalisation

En Ubuntu, il faut redémarrer la machine pour finaliser l'installation.

Démarrage du client

  • Pour démarrer le client après configuration, lancer
cd /etc/openvpn && sudo openvpn client1.conf (si le fichier-client est client1.conf) 
  • Si on a plusieurs clients OpenVPN ou si on n'a pas besoin de lancer systématiquement OpenVPN au démarrage, il faut modifier le fichier /etc/default/openvpn pour décommenter la ligne suivante:
AUTOSTART="none" 

On lance alors le client par la commande:

sudo service openvpn start <fichier_conf-client>   # en mettant le nom du fichier de configuration voulu (sans le .conf)

Accès des clients VPN à l’ensemble du réseau distant

Avec la configuration précédente, les clients peuvent accéder au serveur OpenVPN, mais ils ne peuvent pas accéder au reste du réseau sur lequel est connecté le serveur OpenVPN.

Pour permettre aux clients d’accéder au reste du réseau, il faut effectuer deux opérations :

  • Autoriser le serveur Linux à transmettre les paquets au reste du réseau.

Pour cela, il faut activer le forwarding avec la commande suivante :

 echo 1 > /proc/sys/net/ipv4/ip_forward

Vérifier que le forwarding est bien activé :

 cat /proc/sys/net/ipv4/ip_forward
  • Indiquer aux autres postes du réseau la route vers le serveur OpenVPN

Linux

Pour ajouter une route sous Linux, il faut utiliser la commande suivante :

 route add -net 10.8.0.0 netmask 255.255.255.0 gw 192.168.0.1  

Pour avoir la liste des routes sous Linux, entrer :

 route

Pour supprimer une route sous Linux, entrer :

 route delete -net 10.8.0.0 netmask 255.255.255.0 gw 192.168.0.1 

Windows

Si le serveur VPN est sur l’adresse 192.168.0.1, il faut ajouter une route manuellement sur chaque poste du réseau Windows avec la commande suivante:

C:\>route add 10.8.0.0 mask 255.255.255.0 192.168.0.1

La commande suivante, permet d’avoir la liste des routes :

C:\>route print

La commande suivante permet de supprimer une route :

C:\>route delete 10.8.0.0 mask 255.255.255.0 192.168.0.1

Remarque : Pour éviter de devoir ajouter manuellement sur chaque poste du réseau une route, si c’est possible, il faut ajouter une route statique au niveau de la passerelle ou du routeur du réseau.

Accéder aux autres postes connectés derrière un client VPN

Avec la configuration précédente, le serveur OpenVPN peut accéder à l’adresse virtuelle du client, mais il ne peut pas accéder à l’adresse réelle et encore moins aux autres postes connectés derrière le client VPN.

Pour permettre au serveur d’accéder aux autres postes connectés derrière un client VPN, il faut ajouter des routes dans la configuration d’OpenVPN:

Dans le fichier de configuration du serveur OpenVPN, il faut ajouter ces lignes :

client-config-dir ccd
route 192.168.0.0 255.255.255.0 

La première ligne permet d’indiquer le sous-dossier de /etc/openvpn qui contiendra la configuration spécifique de chaque client (Remarque : Penser à créer ce dossier manuellement).

La deuxième ligne permet d’ajouter la configuration du réseau d’un client.

Ensuite, il faut créer un fichier dans le dossier /etc/openvpn/ccd ayant le même nom que le certificat du client (ex : Client01) en entrant la ligne suivante :

iroute 192.168.0.0 255.255.255.0 

Cette ligne permet d’indiquer le client connecté à ce réseau.

Pour finir, il faut redémarrer le serveur et le client pour que les routes soient correctement prises en compte.

A partir de ce moment, le serveur doit pouvoir accéder à tous les postes connectés au client VPN.

Révocation d’un certificat client

Si le certificat d’un client à été volé ou si ce dernier n’est plus nécessaire, il est important de le révoquer pour qu’il ne puisse plus être utilisé.

Pour révoquer un certificat, il faut disposer de celui-ci. Normalement, le dossier /usr/share/doc/openvpn/examples/easy-rsa/keys contient tous les certificats créés.

La commande suivante permet de révoquer un certificat :

 cd /usr/share/doc/openvpn/examples/easy-rsa/
 . ./vars
 ./revoke-crt Client01.crt 
Using configuration from /usr/share/doc/openvpn/examples/easy-sa/openssl.cnf
DEBUG[load_index]: unique_subject = "yes"
Revoking Certificate 16.
Data Base Updated 

Cette commande permet également de révoquer un certificat et vérifie ensuite que cette révocation est effective :

 ./revoke-full Client01
Using configuration from /usr/share/doc/openvpn/examples/easy-
sa/openssl.cnf
DEBUG[load_index]: unique_subject = "yes"
Revoking Certificate 17.
Data Base Updated
Using configuration from /usr/share/doc/openvpn/examples/easy-sa/openssl.cnf
DEBUG[load_index]: unique_subject = "yes"
Client01.crt: /
=FR/ST=France/O=Mondomaine/CN=Client01/emailAddress=tony@domaine.com
error 23 at 0 depth lookup:certificate revoked 

Remarque : Avec ce script, il ne faut pas mettre l’extension .crt du certificat.

A chaque révocation de certificat, son numéro est ajouté dans le fichier keys/crl.pem. Ce fichier contient donc la liste des certificats révoqués. Après chaque révocation de certificat, il faut donc copier ce fichier dans « /etc/openvpn »

La commande suivante permet de consulter la liste des certificats révoqués :

 openssl crl -in keys/crl.pem -text

Il faut également ajouter cette ligne dans etc/openvpn/server.conf du serveur OpenVPN :

crl-verify crl.pem

Pour information, le fichier keys/index.txt contient la liste des certificats créés et révoqués

Pour finir et pour information, lors de la création d’un client, les fichiers suivants sont créés ou modifiés dans keys/crl.pem:

Fichier Description
01.pem Les deux premiers caractères de fichier correspondent au numéro d’ordre sous forme hexadécimale du certificat (01=Le premier certificat créé, 0A=Le dixième créé)
serial Contient le numéro du prochain certificat à créer
LaCle.crt Certificat = Clé publique du client signée par le certificat du serveur.Le certificat permet de s’authentifier sur le serveur
LaCle.csr Fichier temporaire utilisé pour la création du certificat. Ce fichier permet de générer des certificats (c’est une demande de certification ne nécessitant pas la clé privée)
LaCle.key Clé privée du client. La clé permet de déchiffrer les données en provenance du serveur
index.txt Contient la liste des clés créées et révoquées
crl.pem Contient la liste des certificats révoqués

OpenVPN par la Freebox

Bibliographie

openvpn.txt · Dernière modification: 2015/04/16 11:44 par g.rnd@free.fr