Installation d'un serveur dédié Debian Wheezy : OpenVPN

OpenVPN

L’installation d'OpenVPN n'est pas aussi compliquée qu'on le dit généralement et fournit un niveau de sécurité unique.

On commence par installer les paquets :

sudo apt-get install openvpn openssl

On copie le dossier easy-rsa dans le dossier d'OpenVPN et on modifie la valeur du paramètre EASY_RSA :

cd /etc/openvpn
sudo cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 ./easy-rsa
nano /easy-rsa/vars
export EASY_RSA="/etc/openvpn/easy-rsa"

On crée ensuite les clés :

cd easy-rsa
source vars
./clean-all
./pkitool --initca
ln -s openssl-1.0.0.cnf openssl.cnf
./build-ca OpenVPN
./build-key-server server
./build-key client1
./build-dh

Il est pertinent de renseigner correctement le pays (FR) et un CommonName, le reste peut être laissé par défaut.

On doit ensuite créer le fichier de configuration /etc/openvpn/openvpn.conf :

cd /etc/openvpn
touch openvpn.conf
nano openvpn.conf

En voici un exemple classique :

dev tun
proto udp
# C'est ici qu'on choisit le port (ici la valeur par défaut)
port 1194
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/dh1024.pem
user nobody
group nogroup
# On fixe ici l'adresse du serveur
server 10.8.0.0 255.255.255.0
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3
client-to-client
push "redirect-gateway def1 bypass-dhcp"
#push "route 10.8.0.0 255.255.252.0"
#J'utilise ici opendns, on pourra pointer sur le DNS de son choix
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
#push "dhcp-option DNS 10.8.0.1"
log-append /var/log/openvpn
comp-lzo

On active ensuite le transfert de port. On commence par décommenter la ligne net.ipv4.ip_forward=1 (enlever le #) du fichier /etc/sysctl.conf, puis :

sh -c ‘echo 1 > /proc/sys/net/ipv4/ip_forward’
iptables -t nat -A POSTROUTING -s 10.8.0.0/8 ! -d 10.8.0.0/8 -o eth0 -j MASQUERADE

La ligne iptables est nécessaire pour que le serveur OpenVPN transfère le trafic internet du client. On veillera à ce que la plage ip soit conforme au réseau et masque de sous-réseau définis dans le fichier openvpn.conf. Si on utilise une connexion wifi, on remplacera bien sûr la valeur eth0 par celle qui correspond.

On peut ajouter la fonction iptables au boot pour la préserver :

crontab -e
@reboot sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/8 ! -d 10.8.0.0/8 -o eth0 -j MASQUERADE

On va maintenant se préoccuper du client. On commence par créer le fichier de configuration monserveur.ovpn :

cd /etc/openvpn/easy-rsa/keys
nano monserveur.ovpn

dont voici un exemple :

dev tun
client
proto udp
remote IP-DU-SERVEUR 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
verb 3

On crée ensuite l'archive que l'on enverra au client :

tar czf openvpn-keys.tgz ca.crt ca.key client1.crt client1.csr client1.key monserveur.ovpn

Il suffit de récupérer l'archive depuis le client (avec un scp par exemple, attention alors aux droits), puis de la décompresser dans le dossier de son choix. Il ne faudra naturellement pas oublier d'installer le client OpenVPN sur l'ordinateur client. On se connectera par un simple openvpn monserveur.ovpn.

On terminera en relançant le serveur :

service openvpn start

Si l'on doit réinstaller suite à une réinitialisation du serveur, on peut se contenter après l'installation des paquets, de recopier le dossier openvpn sauvegardé. Cela permet de préserver les certificats et de ne pas avoir à reconfigurer le client.

Liens :
http://raspberrypi-hacks.com/29/

fleche-gauche.pngfleche-droite.png

Date de dernière mise à jourJan 23, 2014