Présentation

VPN ou Virtual Private Network est un système permettant de créer un lien direct entre des ordinateurs distants, ce qui a pour effet de les mettre dans un même réseau, et de pouvoir ainsi passer outre des règles de firewall/proxy, ou même de pouvoir accéder aux autres machines sur ce réseau.Le VPN peut aussi servir a changer notre adresse ip publique et avoir a la place celle du serveur.

OpenVPN

Pour la mise en place de notre VPN on va se pencher sur la solution OpenVPN qui est un logiciel libre multiplateforme sous licence GNU GPL écris en C et C++ par James Yonan.
La mise en place va se faire en deux étapes, une pour la configuration du VPN sur le serveur et une pour la connexion sur le poste client.

Serveur

Attaquons maintenant la mise en place du VPN sur le serveur.
Pour pouvoir mettre en place un serveur vpn , il faut au préalable avoir une carte réseau compatible tun/tap.
Ensuite on va installer OpenVPN a l'aide de la commande suivante:

aptitude install openvpn

Une fois OpenVPN installé, on va créer un répertoire dans lequel on va mettre ce qui est nécessaire a la générations des clés.
On va ensuite copier dans ce répertoire l'exemple donné par OpenVPN.
Et enfin, si vous voulez utiliser un autre utilisateur que root, vous lui changez sont propriétaire.

mkdir /etc/openvpn/easy-rsa/
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
chown -R $USER /etc/openvpn/easy-rsa/

Une fois tout ça fait, on va commencer la conf du serveur.
Pour cela on va créer un fichier qu'on va nommer server.conf qu'on mettra dans /etc/openvpn.
dans ce fichier, on va ajouter toutes ces infos:

/etc/openvpn/server.conf
# Serveur
mode server
proto tcp 	# note protocol utilisé
port 443	# le port sur lequel on va mettre le tunnel
dev tun		# l'interface sur laquelle on va mettre le tunnel
# Cles et certificats
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
tls-auth ta.key 1
key-direction 0
cipher AES-256-CBC
# Reseau
server 10.8.0.0 255.255.255.0 #Le réseau utilisé par le vpn
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
# Securite
user nobody
group nogroup
chroot /etc/openvpn/jail
persist-key
persist-tun
comp-lzo
# Log
verb 3
mute 20
status openvpn-status.log
;log-append /var/log/openvpn.log

On va maintenant se rendre dans le répertoire /etc/openvpn/easy-rsa/ pour configurer OpenVPN pour utiliser une authentification par clés et certificats.

On édite le fichier /etc/openvpn/easy-rsa/vars:

/etc/openvpn/easy-rsa/vars
export KEY_COUNTRY="FR"
export KEY_PROVINCE="33"
export KEY_CITY="Bordeaux"
export KEY_ORG="owe.com"
export KEY_EMAIL="owe@team.com"

On génère ensuite les clés et les certificats a l'aide de la commande suivante:

cd /etc/openvpn/easy-rsa/
source vars
./clean-all
./build-dh
./pkitool --initca
./pkitool --server server
openvpn --genkey --secret keys/ta.key

On copie ensuite tout les certificats et clés utiles dans /etc/openvpn

cp keys/ca.crt keys/ta.key keys/server.crt keys/server.key keys/dh1024.pem /etc/openvpn/

On crée 2 répertoires, 1 /etc/openvpn/jail pour chrooter notre application pour une question de sécurité ainsi que un répertoire clientconf dans lequel seront mis tout les fichiers de conf de chaque utilisateurs:

mkdir /etc/openvpn/jail
mkdir /etc/openvpn/clientconf

On va enfin pouvoir tester notre serveur,pour cela on va se rendre dans /etc/openvnp et on va lancer la commande suivante:

openvpn server.conf

si on obtient un message du genre : Initialization Sequence Completed c'est que notre application fonctionne.
Une fois tout cela fait, il faut activer le routage des packets par notre serveur car pour le moment on peut se connecter dessus, mais les packets n'iront pas plus loins, on va donc lui donner une fonction de “routeur”, pour cela on lance la commande suivante:

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

Pour le moment c'est pas permanent, au reboot du serveur il faut le refaire, pour eviter a avoir a le faire a chaque reboot, on va aller modifier le fichier /etc/sysctl.conf et dé-commenter la ligne:

/etc/sysctl.conf
net.ipv4.ip_forward = 1

et on va maintenant configurer IPtables pour autoriser les échanges et mettre en place le NAT:

iptables -I FORWARD -i tun0 -j ACCEPT
iptables -I FORWARD -o tun0 -j ACCEPT
iptables -I OUTPUT -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

On va ensuite sauvegarder nos règles pour éviter qu'a chaque redémarre du serveur on soit obligé de réécrire nos règles , pour cela on va utiliser la commande iptables-save pour sauvegarder et iptables-restore pour les remettre:

iptables-save > /etc/iptables.rules

Puis éditer votre fichier /etc/network/interfaces pour y ajouter la ligne suivante après eth0:

/etc/network/interfaces
pre-up iptables-restore < /etc/iptables.rules

Voila, notre serveur est entièrement fonctionnel , on va maintenant passer a la configuration d'un client.

Client

On va créer les clés pour notre client a l'aide de la commande suivante:

cd /etc/openvpn/easy-rsa
source vars
./build-key toto

On va ensuite copier tout ce dont nous avons besoin dans /etc/openvpn/clientconf/toto

cp /etc/openvpn/ca.crt /etc/openvpn/ta.key keys/toto.crt keys/toto.key /etc/openvpn/clientconf/toto/

On va ensuite aller dans ce dossier et on va créer notre fichier de conf pour le client et on complète avec toutes les infos nécessaires:

client.conf
# Client
client
dev tun
proto tcp-client
remote xxx.xxx.xxx.xxx 443 # le serveur utilisé ainsi que son port
resolv-retry infinite
cipher AES-256-CBC
;client-config-dir ccd
# Cles
ca ca.crt
cert toto.crt
key toto.key
tls-auth ta.key 1
key-direction 1
# Securite
nobind
persist-key
persist-tun
comp-lzo
verb 3

On copie le client.conf en client.ovpn pour windows:

cp client.conf client.ovpn

On a maintenant tout ce donc nous avons besoin pour notre client, on va donc tout lui envoyer, on créer une tarball, on lui envoie et on le décompresse dans le dossier /etc/openvpn/toto:

tar cf toto.tar *
scp monserveur@xxx.xxx.xxx.xxx:/etc/openvpn/clientconf/toto/toto.tar ./
cd /etc/openvpn/; tar xf toto.tar # C:\programes files\openvpn\config pour windows

Il vous reste plus qu'a vous connecter avec votre client openvpn et vous pourrez profiter de votre nouveau vpn.

wiki/openvpn.txt · Dernière modification: 2018/04/23 19:13 (modification externe)
CC0 1.0 Universal
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5