[Tuto] OpenVPN

OpenVPN est un logiciel libre permettant de créer un réseau privé virtuel (VPN) et permet à des pairs de s’authentifier entre eux à l’aide d’une clé privée partagée à l’avance, de certificats électroniques ou de couples de noms d’utilisateur/mot de passe. Il utilise de manière intensive la bibliothèque d’authentification OpenSSL ainsi que le protocole SSLv3/TLSv1. Disponible avec une multitude d’environnements tel que Solaris, OpenBSD, FreeBSD, NetBSD, Linux (Debian, Redhat, Ubuntu, etc…), Mac OS X, Windows 2000, XP, Vista, 7 et 8, il offre de nombreuses fonctions de sécurité et de contrôle.

1 – Installer et générer les clés
2 – Configuration du serveur
3 – Configuration du client
4 – Routage et NAT
5 – Lancement du programme

.

$ sudo -s
password :
# 

.

1 – Installation et configuration

# aptitude install openvpn easy-rsa openssl zip

# cd /etc/openvpn 

Pour Debian 7 - Wheezy :
# cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 ./easy-rsa 

Pour Debian 8 - Jessie :
# cp -r /usr/share/easy-rsa/ ./easy-rsa/

# cd easy-rsa 
# nano vars 
export KEY_SIZE=4096
[...]
[...]
export KEY_COUNTRY="US" 
export KEY_PROVINCE="CA" 
export KEY_CITY="SanFrancisco" 
export KEY_ORG="Fort-Funston" 
export KEY_EMAIL="me@myhost.mydomain" 
# source vars
# ./clean-all

# ./build-ca OpenVPN

Country Name (2 letter code) [FR]: 
State or Province Name (full name) [AU]: 
Locality Name (eg, city) [******]: 
Organization Name (eg, company) [****.net]: 
Organizational Unit Name (eg, section) [changeme]: 
Common Name (eg, your name or your server's hostname) [changeme]:
Name [changeme]: 
Email Address [mail@host.domain]: 

# ./build-key-server server

Country Name (2 letter code) [FR]: 
State or Province Name (full name) [AU]: 
Locality Name (eg, city) [*****]:
Organization Name (eg, company) [***.net]: 
Organizational Unit Name (eg, section) [changeme]: 
Common Name (eg, your name or your server's hostname) [server]: 
Name [changeme]: 
Email Address [mail@host.domain]: 

Please enter the following 'extra' attributes 
to be sent with your certificate request 
A challenge password []: 
An optional company name []:

Certificate is to be certified until Jan  8 19:15:38 2024 GMT (3650 days)
Sign the certificate? [y/n]: y

1 out of 1 certificate requests certified, commit? [y/n] y

# ./build-key HOME

Country Name (2 letter code) [FR]: 
State or Province Name (full name) [AU]: 
Locality Name (eg, city) [*****]:
Organization Name (eg, company) [***.net]: 
Organizational Unit Name (eg, section) [changeme]: 
Common Name (eg, your name or your server's hostname) [server]: 
Name [changeme]: 
Email Address [mail@host.domain]: 

Please enter the following 'extra' attributes 
to be sent with your certificate request 
A challenge password []: 
An optional company name []:

Certificate is to be certified until Jan  8 19:15:38 2024 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

# ./build-dh
**************************+*****+*****************************
*****+**************+**+*************************+***********+
**********************************+*****************+*********
*********+****************+***********************************
[...]
# openvpn --genkey --secret keys/ta.key 
# touch /etc/openvpn/crl.pem

.

2 – Configuration du serveur

Dans notre exemple nous utiliserons le prefix IPv6 2001:db8:abcd:1::/64, vous le remplacerez par l’adresse de sous reseau que vous voulez affectez à votre interfaces tun0.

# nano /etc/openvpn/openvpn.conf 

mode server
dev tun
tun-ipv6
proto udp
port 1194
tls-server

# Certificats et cles
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh4096.pem
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0

# Reseaux
server 172.16.0.0 255.255.255.0
server-ipv6 2001:db8:abcd:1::/64
push "redirect-gateway def1"
push "dhcp-option DNS 80.67.169.12"
push "dhcp-option DNS 2001:910:800::12"
push "route-ipv6 2000::/3"
client-to-client
keepalive 10 60

# Securite
user nobody
group nogroup
persist-key
persist-tun
comp-lzo
cipher AES-256-CBC
auth SHA512
tls-cipher DHE-RSA-AES256-SHA

# Log
verb 3
mute 20
log-append /var/log/openvpn
status /var/log/openvpn-status.log

.

3 – Configuration du client

# nano /etc/openvpn/easy-rsa/keys/client.ovpn

client
dev tun
tun-ipv6
proto udp
tls-client
remote IP 1194

ca ca.crt
key HOME.key
cert HOME.crt
tls-auth ta.key 1
auth SHA512
cipher AES-256-CBC
ns-cert-type server
tls-cipher DHE-RSA-AES256-SHA

nobind
comp-lzo
persist-key
persist-tun
resolv-retry infinite

verb 3

Compresser ca.crt, ta.key, HOME.crt, HOME.key et client.ovpn

$ cd keys 
# zip HOME.zip ca.crt ta.key HOME.crt HOME.key client.ovpn
# mv HOME.zip /home/USERNAME

Télécharger l’archive avec par FTP avec Filezilla par exemple et extraire l’archive dans : C:\Program Files (x86)\OpenVPN\config ou C:\Program Files\OpenVPN\config

.

4 – Routage et NAT

># echo 1 > /proc/sys/net/ipv4/ip_forward
# echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

# sysctl -p

Ajouter des règles au Pare-feu :

iptables -t nat -A POSTROUTING -o eth0 -s 172.16.0.0/24 -j MASQUERADE
iptables -t nat -A PREROUTING -p udp --dport 1194 -j ACCEPT
iptables -t filter -A INPUT -i tun0 -j ACCEPT
iptables -t filter -A FORWARD -i tun0 -j ACCEPT
iptables -t filter -A OUTPUT -o tun0 -j ACCEPT

ip6tables -t filter -A FORWARD -i tun0 -o eth0 -s 2001:db8:abcd:1::/64 -j ACCEPT
ip6tables -t filter -A INPUT -i tun0 -j ACCEPT
ip6tables -t filter -A FORWARD -i tun0 -j ACCEPT
ip6tables -t filter -A OUTPUT -o tun0 -j ACCEPT

.

5 – Lancement du programme

# service openvpn start

Enjoy, vous avez maintenant un serveur OpenVPN opérationnel, vous pouvez consulter les logs en directs et voir qu’une connexion s’est bien établie

/etc/rc.local & tail -f /var/log/openvpn

CTRL + z pour stopper 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *