Recherche de site Web

Installation et configuration du serveur et du client OpenVPN sur Debian 7


Cet article explique comment obtenir la connectivité IPv6 sur OpenVPN à l'aide de Debian Linux. Le processus a été testé sur Debian 7 sur un VPS KVM avec une connectivité IPv6 comme serveur et un bureau Debian 7. Les commandes doivent être exécutées en tant que root.

Qu’est-ce qu’OpenVPN ?

OpenVPN est un programme VPN qui utilise SSL/TLS pour créer des connexions VPN sécurisées et cryptées, afin d'acheminer votre trafic Internet, empêchant ainsi la surveillance. Open VPN est hautement capable de traverser de manière transparente les pare-feu. En fait, si la situation l'exige, vous pouvez l'exécuter sur le même port TCP que HTTPS (443), rendant le trafic indiscernable et donc pratiquement impossible à bloquer.

OpenVPN peut utiliser diverses méthodes telles que des clés secrètes pré-partagées, des certificats ou des noms d'utilisateur/mots de passe, pour permettre aux clients de s'authentifier auprès du serveur. OpenVPN utilise le protocole OpenSSL et implémente de nombreuses fonctionnalités de sécurité et de contrôle telles que l'authentification par défi-réponse, la capacité d'authentification unique, les fonctionnalités d'équilibrage de charge et de basculement et la prise en charge de plusieurs démons.

Pourquoi utiliser OpenVPN ?

Pensez aux communications sécurisées – pensez à OpenVPN. Si vous ne voulez pas que quiconque espionne votre trafic Internet, utilisez OpenVPN pour acheminer tout votre trafic via un tunnel sécurisé hautement crypté.

Ceci est particulièrement important lors de la connexion aux réseaux WIFI publics dans les aéroports et autres lieux. Vous ne pouvez jamais être sûr de savoir qui espionne votre trafic. Vous pouvez canaliser votre trafic via votre propre serveur OpenVPN pour empêcher la surveillance.

Si vous résidez dans l'un des pays qui surveillent régulièrement tout votre trafic et bloquent les sites Web à volonté, vous pouvez utiliser OpenVPN sur le port TCP 443, pour le rendre impossible à distinguer du trafic HTTPS. Vous pouvez même combiner OpenVPN avec d'autres stratégies de sécurité, comme le tunneling de votre trafic OpenVPN via un tunnel SSL, pour vaincre les techniques d'inspection approfondie des paquets qui pourraient identifier les signatures OpenVPN.

Configuration requise

OpenVPN nécessite des exigences très minimales pour fonctionner. Un système avec 64 Mo de RAM et 1 Go d'espace disque dur suffit pour exécuter OpenVPN. OpenVPN fonctionne sur presque tous les systèmes d'exploitation courants.

Installation et configuration d'OpenVPN sur Debian 7

Installer OpenVPN sur le serveur maître

Exécutez la commande suivante pour installer OpenVPN.

apt-get install openvpn

Par défaut, les scripts easy-rsa sont installés dans le répertoire « /usr/share/easy-rsa/ ». Nous devons donc copier ces scripts à l'emplacement souhaité, c'est-à-dire /root/easy-rsa.

mkdir /root/easy-rsa
cp -prv /usr/share/doc/openvpn/examples/easy-rsa/2.0 /root/easy-rsa

Générer un certificat CA et une clé CA

Ouvrez le fichier 'vars' et apportez les modifications suivantes, mais avant d'apporter des modifications, je vous suggère de faire une sauvegarde du fichier d'origine.

cp vars{,.orig}

À l’aide de votre éditeur de texte, configurez les valeurs par défaut pour easy-rsa. Par exemple.

KEY_SIZE=4096
KEY_COUNTRY="IN"
KEY_PROVINCE="UP"
KEY_CITY="Noida"
KEY_ORG="Home"
KEY_EMAIL="[email "

Ici, j'utilise une clé 4096 bits. Vous pouvez utiliser une clé à bits 1024, 2048,4096 ou 8192 selon vos besoins.

Exportez les valeurs par défaut en exécutant la commande.

source ./vars

Nettoyez tous les certificats générés précédemment.

./clean-all

Ensuite, exécutez la commande suivante pour générer le certificat CA et la clé CA.

./build-ca

Générez le certificat du serveur en exécutant la commande. Remplacez le « nom du serveur » par votre nom de serveur.

./build-key-server server-name

Générez le certificat Diffie Hellman PEM.

./build-dh

Générez le certificat client. Remplacez le « nom du client » par votre nom de client.

./build-key client-name

Générez le code HMAC.

openvpn --genkey --secret /root/easy-rsa/keys/ta.key

Copiez les certificats sur les machines client et serveur comme suit.

  1. Assurez-vous que le ca.crt est présent à la fois sur le client et sur le serveur.
  2. La clé ca.key doit se trouver sur le client.
  3. Le serveur nécessite server.crt, dh4096.pem, server.key et ta.key.
  4. client.crt, client.key et ta.key doivent être sur le client.

Pour configurer les clés et les certificats sur le serveur, exécutez les commandes.

mkdir -p /etc/openvpn/certs
cp -pv /root/easy-rsa/keys/{ca.{crt,key},server-name.{crt,key},ta.key,dh4096.pem} /etc/openvpn/certs/

Configuration du serveur OpenVPN

Vous devez maintenant configurer le serveur OpenVPN. Ouvrez le fichier « /etc/openvpn/server.conf ». Veuillez apporter les modifications comme décrit ci-dessous.

script security 3 system
port 1194
proto udp
dev tap

ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/server-name.crt
key /etc/openvpn/certs/server-name.key
dh /etc/openvpn/certs/dh4096.pem
tls-auth /etc/openvpn/certs/ta.key 0

server 192.168.88.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

keepalive 1800 4000

cipher DES-EDE3-CBC # Triple-DES
comp-lzo

max-clients 10

user nobody
group nogroup

persist-key
persist-tun

#log openvpn.log
#status openvpn-status.log
verb 5
mute 20

Activez le transfert IP sur le serveur.

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

Exécutez la commande suivante pour configurer OpenVPN pour qu'il démarre au démarrage.

update-rc.d -f openvpn defaults

Démarrez le service OpenVPN.

service openvpn restart

Installer OpenVPN sur le client

Exécutez la commande suivante pour installer OpenVPN sur la machine client.

apt-get install openvpn

À l'aide d'un éditeur de texte, configurez la configuration du client OpenVPN dans « /etc/openvpn/client.conf », sur le client. Un exemple de configuration est le suivant :

script security 3 system
client
remote vpn_server_ip
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/client.crt
key /etc/openvpn/certs/client.key
cipher DES-EDE3-CBC
comp-lzo yes
dev tap
proto udp
tls-auth /etc/openvpn/certs/ta.key 1
nobind
auth-nocache
persist-key
persist-tun
user nobody
group nogroup

Exécutez la commande suivante pour configurer OpenVPN pour qu'il démarre au démarrage.

update-rc.d -f openvpn defaults

Démarrez le service OpenVPN sur le client.

service openvpn restart

Une fois que vous êtes convaincu qu'OpenVPN fonctionne bien sur IPv4, voici comment faire fonctionner IPv6 sur OpenVPN.

Faire fonctionner IPv6 avec OpenVPN sur le serveur

Ajoutez les lignes suivantes à la fin du fichier de configuration du serveur « /etc/openvpn/server.conf ».

client-connect /etc/openvpn/client-connect.sh
client-disconnect /etc/openvpn/client-disconnect.sh

Ces deux scripts construisent/détruisent le tunnel IPv6 à chaque fois qu'un client se connecte/déconnecte.

Voici le contenu de client-connect.sh.

#!/bin/bash
BASERANGE="2a00:dd80:003d:000c"
ifconfig $dev up
ifconfig $dev add ${BASERANGE}:1001::1/64
ip -6 neigh add proxy 2a00:dd80:003d:000c:1001::2 dev eth0
exit 0

Mon hébergeur m'attribue des adresses IPV6 du bloc 2a00:dd80:003d:000c::/64. Par conséquent, j'utilise
2a00:dd80:003d:000c comme BASERANGE. Modifiez cette valeur selon ce que votre hébergeur vous a attribué.

Chaque fois qu'un client se connecte à OpenVPN, ce script attribue l'adresse 2a00:dd80:003d:000c:1001::1 comme adresse IPV6 du tap0< interface du serveur.

La dernière ligne configure Neighbour Discovery pour notre tunnel. J'ai ajouté l'adresse IPv6 de la connexion tap0 côté client comme adresse proxy.

Voici le contenu de client-disconnect.sh.

#!/bin/bash
BASERANGE="2a00:dd80:003d:000c"
/sbin/ip -6 addr del ${BASERANGE}::1/64 dev $dev
exit 0

Cela supprime simplement l'adresse du tunnel IPv6 du serveur, lorsque le client se déconnecte. Modifiez la valeur de BASERANGE selon vos besoins.

Rendre les scripts exécutables.

chmod 700 /etc/openvpn/client-connect.sh
chmod 700 /etc/openvpn/client-disconnect.sh

Ajoutez les entrées suivantes à « /etc/rc.local » (vous pouvez également modifier les sysctls appropriés dans /etc/sysctl.conf).

echo 1 >/proc/sys/net/ipv6/conf/all/proxy_ndp
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
/etc/init.d/firewall stop && /etc/init.d/firewall start

Ces entrées activent la découverte et le transfert de voisin. J'ai également ajouté un pare-feu.

Créez « /etc/init.d/firewall » et insérez le contenu suivant.

#!/bin/sh
description: Firewall
IPT=/sbin/iptables
IPT6=/sbin/ip6tables
case "$1" in
start)
$IPT -F INPUT
$IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -i eth0 -p icmp -j ACCEPT
$IPT -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
$IPT -A INPUT -i tap+ -j ACCEPT
$IPT -A FORWARD -i tap+ -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t nat -F POSTROUTING
$IPT -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
$IPT -A INPUT -i eth0 -j DROP
$IPT6 -F INPUT
$IPT6 -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT6 -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPT6 -A INPUT -i eth0 -p icmpv6 -j ACCEPT
$IPT6 -A FORWARD -s 2a00:dd80:003d:000c::/64 -i tap0 -o eth0 -j ACCEPT
$IPT6 -A INPUT -i eth0 -j DROP
exit 0
;;
stop)
$IPT -F
$IPT6 -F
exit 0
;;
*)
echo "Usage: /etc/init.d/firewall {start|stop}"
exit 1
;;
esac

Exécutez '/etc/rc.local' et démarrez le pare-feu.

sh /etc/rc.local

Ceci termine les modifications côté serveur.

Faire fonctionner IPv6 avec OpenVPN sur le client

Ajoutez ce qui suit comme dernières lignes de votre fichier de configuration client « /etc/openvpn/client.conf ».

create the ipv6 tunnel
up /etc/openvpn/up.sh
down /etc/openvpn/down.sh
need this so when the client disconnects it tells the server
explicit-exit-notify

Les scripts up et down construisent/détruisent les points de terminaison du client IPV6 de la connexion client tap0 chaque fois qu'un client se connecte/se déconnecte du serveur OpenVPN.

Voici le contenu de up.sh.

#!/bin/bash
IPV6BASE="2a00:dd80:3d:c"
ifconfig $dev up
ifconfig $dev add ${IPV6BASE}:1001::2/64
ip -6 route add default via ${IPV6BASE}:1001::1
exit 0

Le script attribue l'adresse IPV6 2a00:dd80:3d:c:1001::2 comme adresse IPV6 du client et définit la route IPV6 par défaut via le serveur.

Modifiez IPV6BASE pour qu'il soit identique à BASERANGE dans la configuration du serveur.

Voici le contenu de down.sh.

#!/bin/bash
IPV6BASE="2a00:dd80:3d:c"
/sbin/ip -6 addr del ${IPV6BASE}::2/64 dev $dev
/sbin/ip link set dev $dev down
/sbin/ip route del ::/0 via ${IPV6BASE}::1
exit 0

Cela supprime simplement l'adresse IPV6 du client et détruit la route IPV6 lorsque le client se déconnecte du serveur.

Modifiez IPV6BASE pour qu'il soit identique à BASERANGE dans la configuration du serveur et rendez le script exécutable.

chmod 700 /etc/openvpn/up.sh
chmod 700 /etc/openvpn/down.sh

Facultativement, modifiez « /etc/resolv.conf » et ajoutez les serveurs de noms IPV6 de Google pour la résolution DNS.

nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844

Redémarrez openvpn sur le serveur, puis connectez-vous à celui-ci depuis le client. Vous devriez être connecté. Visitez test-ipv6.com pour voir que votre connectivité IPV6 sur OpenVPN fonctionne.

Liens de référence

Page d'accueil d'OpenVPN

Source : Stavrovski