OpenVPN .pdf



Nom original: OpenVPN.pdf
Auteur: Alexis

Ce document au format PDF 1.5 a été généré par Microsoft® Word 2010, et a été envoyé sur fichier-pdf.fr le 04/06/2017 à 12:37, depuis l'adresse IP 82.232.x.x. La présente page de téléchargement du fichier a été vue 463 fois.
Taille du document: 657 Ko (11 pages).
Confidentialité: fichier public




Télécharger le fichier (PDF)










Aperçu du document


OpenVPN
apt-get install xfce4
apt-get install cifs-utils
apt-get install gvfs
apt-get install iceweasel
apt-get install leafpad
apt-get install lxterm

apt-get install openvpn (installe aussi easy-rsa)
apt-get install openssl (déjà installé avec ssh-server)

Le répertoire /etc/openvpn contient :
└── update-resolv-conf

L'installation de easy-rsa a créé le répertoire /usr/share/easy-rsa

On copie ce répertoire dans /etc/openvpn pour ne pas risquer
d'endommager par une éventuelle mise à jour ces fichiers qui
contiennent les scripts dont on aura besoin.
cp -R /usr/share/easy-rsa/ /etc/openvpn/easy-rsa/

On se place maintenant dans le répertoire /etc/openvpn/easy-rsa
Le fichier vars contient des variables relatives aux certificats qui seront créés et utilisés par
notre vpn. On affiche son contenu utile par :
root@debian8:/etc/openvpn/easy-rsa# grep -v "^\($\|#\)" vars

export EASY_RSA="`pwd`"
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
export KEY_DIR="$EASY_RSA/keys"

echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR
export PKCS11_MODULE_PATH="dummy"
export PKCS11_PIN="dummy"
export KEY_SIZE=2048
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"
export KEY_NAME="EasyRSA"

On trouve dans ce fichier les valeurs par défaut qui seront proposées plus loin dans la création
des clés. La durée de validité des certificats et la longueur des clés doit être modifiée dans ce
fichier si nécessaire avant la création des clés. Par défaut c'est 2048 bits et 3650 jours.

Les clés seront placées dans le répertoire /etc/openvpn/easy-rsa/ keys
Ce répertoire n'existe pas pour l'instant.
1. Initialisation des variables pour les scripts
root@debian8:/etc/openvpn/easy-rsa# source vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys

La commande set permet de voir toutes les variables du shell.
On vérifie par exemple que les variables KEY_ sont bien présentes :
root@debian8:/etc/openvpn/easy-rsa# set | grep KEY
KEY_CITY=SanFrancisco
KEY_CONFIG=/etc/openvpn/easy-rsa/openssl-1.0.0.cnf
KEY_COUNTRY=US
KEY_DIR=/etc/openvpn/easy-rsa/keys
KEY_EMAIL=me@myhost.mydomain
KEY_EXPIRE=3650
KEY_NAME=EasyRSA
KEY_ORG=Fort-Funston
KEY_OU=MyOrganizationalUnit
KEY_PROVINCE=CA
KEY_SIZE=2048

2. Initialisation des clés
root@debian8:/etc/openvpn/easy-rsa# ./clean-all
Ceci crée le répertoire keys et efface toutes les clés qui pourraient s'y trouver

3. Création du certificat de l'autorité de certification
root@debian8:/etc/openvpn/easy-rsa# ./build-ca
Generating a 2048 bit RSA private key
.........+++
.....................+++
writing new private key to 'ca.key'
Ceci crée les
----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) [US]:FR
State or Province Name (full name) [CA]:IDF
Locality Name (eg, city) [SanFrancisco]: COMBS
Organization Name (eg, company) [Fort-Funston]:LinkPower
Organizational Unit Name (eg, section) [MyOrganizationalUnit]:certificats
Common Name (eg, your name or your server's hostname) [Fort-Funston CA]:autorite
Name [EasyRSA]:LinkPower
Email Address [me@myhost.mydomain]:admin.network@LinkPower.fr

fichiers ca.crt et ca.key

4. Création du certificat et clés de notre serveur openvpn
root@debian8:/etc/openvpn/easy-rsa# ./build-key-server cle-serveur-openvpn (nom de la
clé privé)

Generating a 2048 bit RSA private key
......................................+++
..................+++
writing new private key to 'cle-serveur-openvpn.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) [US]:FR
State or Province Name (full name) [CA]:IDF
Locality Name (eg, city) [SanFrancisco]:COMBS
Organization Name (eg, company) [Fort-Funston]:LinkPower
Organizational Unit Name (eg, section) [MyOrganizationalUnit]: LPcertificats
Common Name (eg, your name or your server's hostname) [cle-serveur-openvpn]:vpn
Name [EasyRSA]: LinkPowerVPN
Email Address [me@myhost.mydomain]: admin.network@LinkPower.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-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'FR'
stateOrProvinceName :PRINTABLE:'IDF'
localityName :PRINTABLE:'COMBS'
organizationName :PRINTABLE:'LinkPower'
organizationalUnitName:PRINTABLE:'LPcertificats'
commonName :PRINTABLE:'vpn'
name :PRINTABLE:'LinkPower VPN'
emailAddress :IA5STRING:'admin.network@LinkPower.fr’
Certificate is to be certified until Nov 3 22:21:34 2026 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 répertoire keys contient maintenant :

5. Génération de la clé Diffie-Hellman pour les échanges entre le client et le serveur vpn
root@debian8:/etc/openvpn/easy-rsa# ./build-dh
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
..........+....................…

Ceci prend quelques minutes et crée le fichier dh2048.pem dans le répertoite keys.

6. Génération de la clé pour l'authentification TLS utilisée par les clients
root@debian8:/etc/openvpn/easy-rsa# openvpn --genkey --secret keys/tls.key
Ceci crée le fichier tls.key dans le répertoire keys.

7. Création de la base de données qui contiendra les certificats révoqués
Chaque client qui se connectera au serveur vpn aura son propre certificat qui sera généré
ultérieurement. Il est nécessaire de pouvoir révoquer un certificat en cas de besoin. Pour cela
openvpn utilise une base de données qui contient les certificats révoqués.
root@debian8:/etc/openvpn/easy-rsa# ./revoke-full dummy
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
Error opening dummy.crt dummy.crt
3074066108:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('dummy.crt','r')
3074066108:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
unable to load certificate
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
Error opening certificate file dummy.crt
3073849020:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('dummy.crt','r')
3073849020:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
unable to load certificate

On obtient un message d'errur, normal car dummy n'exite pas.
(Pour revoquer un certificat il suffira de remplacer dummy par le nom d’un certificat comme
« cle-serveur-openvpn » par exemple.)
Par contre la base a été créée.
Le répertoire keys contient maintenant crl.pem et revoke-test.pem :

8- Configurer le serveur (fichier /etc/openvpn/server.conf)

Créé un fichier /etc/openvpn/server.conf tel que :
root@debian8:/etc/openvpn# cat server.conf
mode server
# Définition du type de liaison (ici, c'est un serveur routé)
dev tun
# Protocole utilisé
proto tcp
# Port utilisé
port 443
# Utilise un sous-réseau global pour le VPN (par défaut : un sous-réseau par clients) + d'infos :
https://goo.gl/PJMFOW
topology subnet
# Certificats
# Autorité de certification
ca /etc/openvpn/easy-rsa/keys/ca.crt
# Certificat serveur
cert /etc/openvpn/easy-rsa/keys/cle-serveur-openvpn.crt
# Clé serveur
key /etc/openvpn/easy-rsa/keys/cle-serveur-openvpn.key
# Certificat DH (dh1024.pem pour Débian 7)
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
# Clé TLS d'authentification
tls-auth /etc/openvpn/easy-rsa/keys/tls.key 0
#Plage d'ip et masque réseau
server 192.168.0.0 255.255.255.0
persist-key
persist-tun
#Chemin du fichier qui contiendra le statut de chaque connexion active
status /var/log/openvpn-status.log
#Niveau de verbose
verb 2
# Autorise les clients a "voir" les autres clients
client-to-client
push "redirect-gateway bypass-dhcp"
# Définition des DNS qui seront utilisés par le client (ici DNS de Google
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
# Chemin des logs
log-append /var/log/openvpn.log
# Activation de la compression
comp-lzo
# Définition du type de chiffrage
cipher AES-128-CBC
# Activation des ip statiques des clients (stockées dans le fichier ipp.txt)
ifconfig-pool-persist ipp.txt 1
# Options de maintient de connexion (1 ping toutes les 10s et déconnexion si plus de contact pendant 120s)
keepalive 10 120

Redémarrer le serveur et regarder si le service openvpn est bien actif

9- vérifier que l’interface tun0 est présente
Some operating systems allow the generation of virtual network interfaces that do not connect to a wire but to a
process that simulates the network. Often these devices are called TUN or TAP.
tun0

Link 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.1 Masque:255.255.255.0
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)

10- configurer les iptables
Créé le fichier /etc/init.d/iptables_vpn tel que :
root@debian8:/etc/init.d# cat iptables_vpn
#!/bin/sh
# Autoriser le routage depuis et vers l'interface réseau du VPN :
iptables -I FORWARD -i tun0 -j ACCEPT
iptables -I FORWARD -o tun0 -j ACCEPT
iptables -I OUTPUT -o tun0 -j ACCEPT
# Translation d'adresses
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

chmod +x /etc/init.d/iptables_vpn
update-rc.d iptables_vpn defaults (à vérifier?)

11- Vérifier les

iptables

iptables -t nat -L -v -n
Chain PREROUTING (policy ACCEPT 333 packets, 21408 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 49 packets, 9888 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 10 packets, 1775 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 2 packets, 120 bytes)
pkts bytes target prot opt in out source destination
8 1655 MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0
0 0 MASQUERADE all -- * eth0 192.168.0.0/24 0.0.0.0/0

12- activer le routage
Modifier une ligne dans le fichier /etc/sysctl.conf comme suit :

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

12- vérifier le routage
Netstat -rn
Table de routage IP du noyau
Destination Passerelle Genmask Indic MSS Fenêtre irtt Iface
0.0.0.0 192.168.39.254 0.0.0.0 UG 0 0 0 eth0
10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
192.168.39.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
13- generer les cerfificats pour les clients (exemple pour client3)
cd /etc/openvpn/easy-rsa/
./build-key client3
Lors de la création des certificats pour les clients il vous sera demandé les mêmes types
d’information que pour les clés privé.
mkdir /root/Bureau/cles-client3/
cp client3.crt /root/Bureau/cles-client3/
cp client3.key /root/Bureau/cles-client3/

Client OpenVpn Ubuntu (avec Network Manager)

apt-get install network-manager-openvpn-gnome
(ceci installe automatiquement les dépendances suivantes : network-manager-openvpn et
openvpn )

apt-get install network-manager-openvpn-gnome
(ceci installe automatiquement les dépendances suivantes : network-manager-openvpn et
openvpn )
On copie dans le répertoire /etc/openvpn les fichiers de clés et certificats précédemment
générés sur le serveur openvpn.
Le contenu du répertoire /etc/openvpn est :
-r-------- 1 root root 1712 nov. 6 21:49 ca.crt
-r-------- 1 root root 5431 nov. 6 21:49 client2.crt
-r-------- 1 root root 1704 nov. 6 21:49 client2.key
-r-------- 1 root root 636 nov. 6 21:49 ta.key
-rwxr-xr-x 1 root root 1301 févr. 2 2016 update-resolv-conf
La connexion se configure avec le menu graphique :
On ajoute une interface VPN, on choisit openvpn puis on configure (voici un exemple) :

Un ifconfig donne :

La table de routage est : (netstat -rn)

Et le fichier client contient :

Client OpenVpn Windows

Le client est ; openvpn-install-2.3.11-I601-x86_64.exe
Fichiers dans le répertoire d’installation :

Le fichier client.ovpn contient :
client
#Mode routé
dev tun
#Protocole
proto tcp-client
# Ip du serveur
remote 192.168.42.91 443
resolv-retry infinite
nobind
persist-key
persist-tun
key-direction 1
cipher AES-128-CBC
ns-cert-type server
redirect-gateway
route-delay 2
comp-lzo
verb 1
#Certificats et clés
ca ca.crt
cert client3.crt
key client3.key
tls-auth tls.key 1



Documents similaires


openvpn
res correction
openvpn radius mysqlldap howto
tutorial installation configuration serveur ftp filezilla server version fr
crbackuppc
linuxfirewall