«

»

Fév 05 2013

[Tuto]: Pleins de trucs pour OpenVPN

Bonjour à tous, dans ce second tuto consacré à OpenVPN nous allons voir quelques astuces utiles pour profiter au mieux de son serveur VPN.

Nous allons donc voir:

  • Comment partager la connexion internet du serveur VPN aux clients
  • Quelques options supplémentaires dans le fichier de configuration du serveur
  • Créer son autorité de certification plus rapidement
  • Un script pour créer des certificats supplémentaires aux clients.
  • Comment connecter un téléphone/tablette Android au VPN

Comment partager la connexion internet du serveur OpenVPN aux clients

Si vous avez suivis mon précédent tutoriel sur OpenVPN vous avez créer un serveur OpenVPN, vos clients se connectent donc à votre VPN mais ils n’ont pas accès à internet. Voici donc ce qu’il faut faire pour que vos clients aient accès un internet en utilisant la connexion internet de votre serveur OpenVPN.

Tout d’abord il faut activer l’IP forwarding dans le noyau Linux en tapant la commande suivante:

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

Puis il faut créer des règles iptables pour mettre en place le partage de connexion internet

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

Une fois tout cela fait il faut éditer le fichier de configuration d’OpenVPN (/etc/openvpn/server.conf) et rajouter le lignes suivantes:

#On définit le serveur VPN comme passerelle par défaut pour les clients.
push "redirect-gateway def1"

#On configure des serveur DNS pour que les clients puissent résoudres des noms
#Vous pouvez mettre n'importe quels serveur DNS dans cet exemple les DNS de google
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

Il ne reste plus qu’a redémarrer le service OpenVPN et tester la configuration avec un client.

service openvpn restart

Voici en prime un script à mettre dans /etc/init.d/ qui va mettre en place au démarrage du serveur les regles iptables et l’ip forwarding.

#!/bin/bash
##Denis ROSENKRANZ
##denisrosenkranz.com

start() {
	echo -n "Application des regles IpTables: "
	#Suppresion des anciennes rêgles
	iptables -F
	iptables -X

	#Activation de l'IP Forwarding
	echo 1 > /proc/sys/net/ipv4/ip_forward

	#Mise en place des regles iptables
	iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

	echo " [termine]"
	echo
}

stop() {
	echo -n "Flush des regles IpTables: "
	iptables -F
	iptables -X
	echo " [termine]"
	echo
}

case $1 in
	start)
		start
		;;
	stop)
		stop
		;;
	restart)
		stop
		start
	;;
	status)
		/sbin/iptables -L
		/sbin/iptables -t nat -L
	;;
	*)
		echo "Usage: ovpn {start|stop|restart|status}"

esac
exit

Pour mettre en place ce script créez un fichier ovpn dans /etc/init.d/ et copiez le contenus du script dedans.

Puis tapez les commandes suivantes:

chmod +x /etc/init.d/ovpn
update-rc.d ovpn defaults

Le script est en place.

Quelques options suplémentaires dans le le fichier de configuration d’OpenVPN

Voici quelques options à rajouter dans le fichier de configuration d’OpenVPN qui peuvent êtres utiles

Compression des donnés sur le VPN (à mettre aussi dans le fichier de configuration client)

comp-lzo

Mise en place d’un fichier de log pour connaitre les utilisateurs connectés au VPN

status openvpn-status.log
verb 3

Cela va créer un fichier /etc/openvpn/openvpn-status.log qui va se mettre à jour dynamiquement avec le liste des clients connectés au VPN voici un exemple:

OpenVPN CLIENT LIST
Updated,Tue Feb  5 14:26:56 2013
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
denis,IP:28570,1237257,7779613,Tue Feb  5 13:50:15 2013
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
192.168.87.6,denis,IP:28570,Tue Feb  5 14:26:40 2013
GLOBAL STATS
Max bcast/mcast queue length,0
END

Faire en sorte que plusieurs clients puissent se connecter avec le même certificat:

duplicate-cn

Voila pour les options intéressantes.

Créer plus rapidement une autorité de certification

Dans le tuto précédent sur OpenVPN nous avons créer notre autorité de certifications et les certificats clients et serveur avec les commandes suivantes dans easy-rsa:

./build-ca
./build-key-server
./build-key

Le problème c’est qu’avec ces commandes il faut valider les champs que nous avons déja remplis dans le fichier vars.

Heureusement il y a d’autres commandes dans easy-rsa qui permettent de faire la même choses sans avoir besoins de valider les champs.

Revoici donc les commandes pour créer une autorité de certification de zéro et les certificats clients et serveurs.

source ./vars
#On supprime tous les anciens certificats
./clean-all
#On créer les paramêtres Diffie-Helman
./build-dh
#On créer le CA
./pkitool --initca
#On créer le certificat et la clef serveur
./pkitool --server vpn-server
#On créer le certificat et la clef pour le client
./pkitool vpn-client

Et voila, comme pour les anciennes commandes les clefs et les certificats seront dans le dossier keys de easy-rsa.

Script pour créer les certificats clients de façon automatique

Voici un script de ma création qui va permettre de créer de façon automatique des certificats clients et le fichier de configuration client ! et en plus de l’envoyer par mail, à vous ou directemet à vos clients.

#!/bin/bash
#Script pour creer automatiquement des certificats et des clefs pour les clients OpenVPN

#Initialisation des variables
echo "Nom du certificat: (ex: client4 ou bob)"
read cn

#Creation des certificats
cd /etc/openvpn/easy-rsa/
source ./vars
./pkitool $cn

mkdir $cn
#Creation du fichier de configuration ovpn pour les clients Windows
echo "client
dev tun
proto udp

remote IP-DE-VOTRE-SERVEUR-OPENVPN 1194

ca ca.crt
cert $cn.crt
key $cn.key" > $cn/$cn.ovpn

#Creation de l'archive avec tous les fichiers
cp keys/{ca.crt,$cn.crt,$cn.key} $cn/
zip -r $cn.zip $cn

#Decommentez les lignes suivantes si vous souhaitez envoyer les fichiers par mail

#echo "Adresse E-mail a qui envoyer les certificats"
#read mail
#echo "Configuration d'OpenVPN" | mutt -x -s "Zip d'OpenVPN" $mail -a $cn.zip

exit 0

Ce script va donc créer dans le dossier /etc/openvpn/easy-rsa un dossier avec le nom du certificat contenant les clefs, les certifcats et le fichier de configuration nécéssaire à la connection du client. Le tout va etre placé dans un fichier ZIP qui se trouvera dans le doossier easy-rsa.
De plus si vous avez un serveur smtp fonctionnel sur votre serveur vous pourrez envoyer directement le zip par mail à l’adresse de votre choix.

N’oubliez pas dans le script de remplacer IP-DE-VOTRE-SERVEUR-OPENVPN par l’IP de votre serveur VPN.

Pour utiliser ce script il vous suffit de créer un fichier sur votre serveur, de coller le contenus du script et de taper les commandes suivantes:

chmod +x nomduscript.sh
./nomduscript.sh

Comment connecter un téléphone ou une tablette Android à OpenVPN?

Pour se connecter à votre serveur OpenVPN avec un appareil sous Android installez depuis Googleplay le logiciel OpenVPN Connect 

Puis commencez par envoyer sur votre appareil Android les fichiers de configurations clients, a savoir:

  • le fichier ca.crt
  • la clef et le certificat client
  • le fichier de configuration .ovpn

Une fois ces quatre fichiers sur votre appareil lancez le logiciel OpenVPN Connect

Ecran principal d'OpenVPN connect

Ecran principal d’OpenVPN connect

Appuyez en haut à droite de l’écran principal puis choisissez « Import » –> « Import Profile from SD card »

Puis dans l’arborescence allez dans le dossier ou se situe la clef, les certificats et le fichier .ovpn, sélectionnez le fichier ovpn et appuyez sur select.

Votre profile OpenVPN va être importé il ne vous restera plus qu’à appuyer sur « Connect » pour vous connecter à votre serveur OpenVPN.

2013-02-05 15.15.43

2013-02-05 15.15.54

(3 commentaires)

1 ping

  1. Aurel

    Alex tu peux m’aider stp?

  2. Aurel

    salut les gars svp comment on fait pour se connecter avec openvpn connecter j’ai l’application mais je sais pas quoi faire.

  3. Alex

    Cool, merci pour le tuto c’est exactement ce qu’il me manquait.

    Maintenant va falloir que je trouve un moyen de résoudre les DNS leaks.. :( casse-pieds ce truc.

  1. Tech Digest 20 02 13 ← 3615alex

    […] Compléments de configurations du même OpenVPN : http://denisrosenkranz.com/… […]

Laisser un commentaire

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

Lire les articles précédents :
openvpn-lg
Dernier [Tuto] avant la fin du monde : OpenVPN sur Debian

Bonjour à tous, dans ce dernier tutoriel avant la fin du monde et aussi avant les fêtes de fin d'années,...

Fermer