Openvpn

Serveur

1
apt-get install openvpn easy-rsa
echo 1 > /proc/sys/net/ipv4/ip_forward
sed -i "s/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/" /etc/sysctl.conf
cp -r /usr/share/easy-rsa/ /etc/openvpn
mkdir /etc/openvpn/easy-rsa/keys
openssl dhparam -out /etc/openvpn/dh2048.pem 2048
cd /etc/openvpn/easy-rsa/ # on se place dans le rep de travail
source vars # On charge les variables
./clean-all # On nettoie ce qui ne l'aurait pas été
./buid-ca # l'authorité de certification
./build-key-server server
cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt} /etc/openvpn

Conf

1
cat server.conf
#Configuration serveur

mode server # c'est le fichier de configuration du serveur
proto udp
port 1194
dev tun # mode routé

#Clefs
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh1024.pem
tls-auth keys/ta.key 0 # 0 pour le serveur
cipher AES-256-CBC # algorithme de chiffrement

#Configuration VPN
#client-to-client # permet la connexion entre clients
server 10.8.0.0 255.255.255.0 # adresse IP attribuées sur le VPN
#push "redirect-gateway def1 bypass-dhcp" # redirection du flux de données
#push "dhcp-option DNS 8.8.8.8" # utilisation de DNS alternatifs
#push "dhcp-option DNS 8.8.4.4"
keepalive 10 120 # ping toutes les 10 secondes,
                 # considéré comme down après 120 secondes sans réponses

#Divers
user nobody # on passe de l'utilisateur root à nobody
group nogroup # nogroup est typique d'Ubuntu, groupe nobody pour les autres
chroot /etc/openvpn/ovpn_jail # chroot de openvpn
persist-key # n'accède plus à certaines options,
persist-tun # car réduction des privilèges utilisateur
comp-lzo # compression des données

#Log
verb 3 # verbosité du log (1-9, 4 recommandé)
mute 20 # ne répète pas plus de 20 fois un message
status openvpn-status.log # fichier de statut
log-append /var/log/openvpn_append.log # fichier de log
log  /var/log/openvpn.log

Test de la conf

1
openvpn --config /etc/openvpn/server.conf

Start

1
systemctl start openvpn

Client

Certif client

1
cd /etc/openvpn/easy-rsa/keys # on se place dans le rep de travail
. ./vars # On charge les variables
./build-key <identifiant>

conf

1
cat client.conf
#Configuration client
client # mode client
dev tun
#proto tcp-client
proto udp
remote 195.154.16.64 1194
resolv-retry infinite
nobind
persist-key
persist-tun

#Clefs
ca cert/ca.crt
cert cert/client.crt
key cert/client.key
tls-auth cert/ta.key 1 #1 pour le client
cipher AES-256-CBC


comp-lzo
verb 3

log-append /var/log/openvpn_append.log # fichier de log
log  /var/log/openvpn.log

conf client client.ovpn

1
echo '<ca>' >> ~/client.ovpn
cat /etc/openvpn/easy_rsa/keys/ca.crt >> client.ovpn
echo '</ca>' >> client.ovpn
echo '<cert>' >> client.ovpn
cat /etc/openvpn/easy_rsa/keys/client.crt >> client.ovpn
echo '</cert>' >> client.ovpn
echo '<key>' >> cleint.ovpn
cat /etc/openvpn/easy_rsa/keys/client.key >> client.ovpn
echo '</key>' >> client.ovpn