Outils pour utilisateurs

Outils du site


telnew_openvpn

OpenVPN

Utilisation

Le VPN ne doit être utilisé que de manière restreinte au service des associations de Télécom. Il faut savoir que les données sont chiffrées et déchiffrées, ce qui finit par coûter beaucoup de ressources au serveur s'il y a trop de trafic.

Il ne faut pas faire de la merde en pensant être protégé avec. C'est l'IP du serveur telnew qui apparait en amont. C'est donc au BDE, puis à Telnet que l'on peut remonter.

Serveur

Etape 1 - Installation d'OpenVPN

Avant l'installation d'OpenVPN, lancez une mise à jour des paquets.

 sudo aptitude update 

On peut maintenant installer OpenVPN avec le paquet Easy-RSA pour le chiffrement.

 sudo aptitude install openvpn easy-rsa 

Etape 2 - Configuration du serveur OpenVPN

Fichier de configuration serveur

sudo vim /etc/openvpn/server.conf 

Puis ajoutez la configuration qui suit :

# Serveur TCP/443
proto tcp
port 443
dev tun

# Cles et certificats
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
tls-auth ta.key 1
key-direction 0
cipher AES-256-CBC

# Reseau
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
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
max-clients 20
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

Puis vous pouvez créer le dossier où OpenVPN sera chrooté.

mkdir /etc/openvpn/jail

Routage

On va maintenant autoriser le trafic du client vers le serveur, sinon, le trajet des données s'arrêtera au niveau de celui-ci. On va donc activer le transfert de paquets en entrant cette commande :

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

On va maintenant rendre ce paramétrage permanent même après un reboot. On décommente net.ipv4.ip_forward=1 dans le fichier /etc/sysctl.conf

 # Uncomment the next line to enable packet forwarding for IPv4
 net.ipv4.ip_forward=1

Etape 3 - Configuration du firewall (iptables)

Pour ce serveur on va utiliser iptables pour configurer notre pare-feu. On le configure grâce à ces commandes :

 # règles obligatoires pour ouvrir déverrouiller l’accès :
 sudo iptables -I INPUT -i tun0 -j ACCEPT
 sudo iptables -I FORWARD -i tun0 -j ACCEPT
 sudo iptables -I FORWARD -o tun0 -j ACCEPT
 sudo iptables -I OUTPUT -o tun0 -j ACCEPT

 # autres règles : Translation d'adresses
 sudo iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
 sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
 sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
 sudo iptables -t nat -A POSTROUTING -s 10.8.0.2/24 -o eth0 -j MASQUERADE

Nous allons tout simplement les ajouter à la fin du fichier /etc/init.d/firewall et exécuter le script.

sudo /etc/init.d/firewall

Etape 4 - Création de certificats et clés pour le serveur

Premièrement, copiez les scripts de génération de easy-RSA.

 sudo cp -r /usr/share/easy-rsa/ /etc/openvpn/ 

Ensuite, on peut créer un fichier qui contiendra les clés.

 sudo mkdir /etc/openvpn/easy-rsa/keys 

Easy-RSA possède un fichier permettant de créer des certificats exclusivement pour une entité. Ce seront les informations copiées dans les certificats et clés qui permettront plus tard d'identifier les clients.

 sudo vim /etc/openvpn/easy-rsa/vars 

On modifie toutes les variables suivantes en fonction de ce que l'on souhaite.

 export KEY_COUNTRY="FR"
 export KEY_PROVINCE="NPDC"
 export KEY_CITY="Villeneuve D'Ascq"
 export KEY_ORG="Telnet"
 export KEY_EMAIL="telnetz@googlegroups.com"
 export KEY_OU="Telnet"

Dans le même fichier on modifie également la variable KEY_NAME en replacant la valeur Easy-RSA par server.

 export KEY_NAME="server" 

On peut maintenant générer la clé Diffie Hellmann. (Cela peut durer plusieurs minutes)

 sudo openssl dhparam -out /etc/openvpn/dh2048.pem 2048 

Une fois terminée, on se place dans le dossier easy-rsa.

cd /etc/openvpn/easy-rsa/ 

Puis on lance la séquence suivante afin de générer les clés (.key) et certificats (.crt).

source vars
./clean-all
./build-ca
./build-key-server server
sudo openvpn --genkey --secret keys/ta.key

On va maintenant déplacer les certificats et les clés que nous venons de créer dans le dossier /etc/openvpn pour que le serveur puisse les utiliser.

 sudo cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt,ta.key} /etc/openvpn 

De plus, vous pouvez créer un dossier où l'on rangera les fichiers à transférer au client.

 sudo mkdir /etc/openvpn/clientconf/ 

Nous pouvons maintenant lancer le serveur VPN pour voir s'il fonctionne.

cd /etc/openvpn
sudo openvpn server.conf

Si tout fonctionne la console devrait vous retourner Initialization Sequence Completed.

Si le serveur démarre correctement, on peut terminer la configuration sur serveur OpenVPN en décommentant la dernière ligne du fichier /etc/openvpn/server.conf :

log-append /var/log/openvpn.log

Puis on relance le serveur avec la commande :

 sudo /etc/init.d/openvpn start 

Etape 5 - Création d'un compte client

Création des certificats et des clés

Pour qu'un client puisse se connecter au serveur il doit posséder sur sa machine le certificat et la clé générés par le serveur pour que celui-ci reconnaisse le client et autorise la connexion.

L'idéal est d'avoir un certificat et une clé pour chaque client car, par défaut, OpenVPN n'autorise pas des connexions simultanées de plusieurs machines avec le même certificat.

Pour créer ce certificat et cette clé vous devez toujours être dans le dossier /etc/openvpn/easy-rsa et avoir exécuté, auparavant, la commande :

 sudo source vars 

On exécute la commande suivante pour créer la clé et le certificat qui va avec. Il suffit de remplacer <CLIENT> par le nom de la machine/personne/organisation.

 # ./build-key <CLIENT> 

Cette commande a généré 3 fichiers :

  1. <CLIENT>.crt : certificat pour client
  2. <CLIENT>.csr : certificat à garder sur le serveur pour qu'il puisse reconnaître le client et accepter la connexion
  3. <CLIENT>.key : clé pour le client

Remarque : Si vous voulez protéger vos clés par un mot de passe qui sera demandé au client lors de la connexion au VPN, il faut utiliser la commande ./build-key-pass au lieu de ./build-key

Modification de la configuration client

Une fois cette étape terminée, nous allons créer le fichier de configuration client :

 sudo vim /etc/openvpn/easy-rsa/keys/client.conf 

Copiez-collez la configuration qui suit en remplaçant A.B.C.D par l'IP du serveur et <CLIENT> par le nom de la clé et du certificat que vous venez de créer.

# Client
client
dev tun
proto tcp
remote A.B.C.D 443
resolv-retry infinite
cipher AES-256-CBC
;http-proxy-retry # retry on connection failures
;http-proxy proxy.univ-lille1.fr 3128

# Cles
ca ca.crt
cert <CLIENT>.crt
key <CLIENT>.key
tls-auth ta.key 1

# Securite
nobind
user nobody
group nogroup
persist-key
persist-tun
ns-cert-type server
comp-lzo
verb 3

Pour les clients Windows, on duplique ce fichier en le renommant client.ovpn

 sudo cp client.conf client.ovpn 

Transfert des fichiers

Vous devriez avoir 6 fichiers créés et prêts à être transférés à l'utilisateur :

  • ca.crt: Certificat du serveur
  • client.conf: Fichier de configuration du client pour Linux
  • client.ovpn: Fichier de configuration du client pour Windows
  • <CLIENT>.crt: Certificat du client
  • <CLIENT>.key: Clé du client
  • ta.key : Clé pour l'authentification

Afin de s'y retrouver plus tard, nous allons les ranger dans le dossier clientconf/ préalablement créé.

 sudo mkdir /etc/openvpn/clientconf/<CLIENT> 

Puis,

 sudo cp /etc/openvpn/ca.crt /etc/openvpn/easy-rsa/keys/{<CLIENT>.crt,<CLIENT>.key,client.conf,client.ovpn, ta.key} /etc/openvpn/clientconf/<CLIENT> 

On les prépare pour l'envoi au client :

 sudo cd /etc/openvpn/clientconf/<CLIENT> 
 sudo zip <CLIENT>.zip *.* 

Il ne reste plus qu'à transférer ces fichiers sur la machine du client avec FileZilla ou SCP par exemple.

Clients

Software

Windows

Pour Windows, téléchargez la dernière version du GUI OpenVPN sur cette page

La configuration doit être déposée dans le dossier config du répertoire d'installation.

Il faut toujours lancer l'installeur/le logiciel en mode administrateur.

Linux

Sous linux, il suffit d'installer le paquet openvpn (oui oui, le même que pour le serveur).

 # aptitude install openvpn

Puis on le lance :

 # service openvpn start

Réseau

Si vous êtes à Télécom il faut penser à configurer le proxy pour le VPN : clic droit sur l'icône > configurer > configuration manuelle.

Sous linux on peut utiliser le proxy système (ou bien faire les modifs nécessaires dans le fichier de conf).

telnew_openvpn.txt · Dernière modification: 2017/10/10 11:26 par deldel