Parametrage Serveur VPN

De Wiki_DR13
Aller à : navigation, rechercher

Theorie :

Les utilisateurs se connectent via un logiciel specilisé (openvpn) sur la machine vpn.dr13.cnrs.fr
Il ont besoin :

  1. Openvpn
  2. d'un certificat CNRS-Standard exporté depuis firefox ou les AC CNRS et CNRS-Standard sont installées
  3. de la cle secrete du serveur <a href="vpn/keys/ta.key">ta.key</a>
  4. du fichier de configuration : <a href="#client">client.ovpn</a>

Une fois connecte, une nouvelle interface reseau est créée et tous les paquets vers 193.49.133.0/24 sont achemeinés via cette interface. On a donc acces au reseau de la delegation.

Une fois connecter on peut soit regarder ses mails via graal, faire du http (pour les cartes 3G) ou se connecter via RDP a un PC de la delegation.

Le serveur fonctionne sous openvpn, voici le fichier de config :

######################
# OpenVPN configuration. #
######################

# Which local IP address should OpenVPN
# listen on? (optional)
local 193.49.133.234 

# Port d'écoute. Identique entre le serveur et le client
port 4500

# TCP or UDP server?
;proto tcp
proto udp

# "dev tun" = routed IP tunnel, "dev tap" = ethernet tunnel.
;dev tap
dev tun

# Utilisation de certificat serveur CNRS
ca keys/CNRS.crt
cert keys/vpn.dr13.cnrs.fr.crt
key keys/vpn.dr13.cnrs.fr.key # This file should be kept secret

#ca ca.crt
#cert server.crt
#key server.key

# Diffie hellman parameters.
dh "keys/dh1024.pem" 

# Route par défaut du tunnel
server 10.8.0.0 255.255.255.0

# Fichier d'enregistrement des couples client <-> @IP virtuelle
ifconfig-pool-persist ipp.txt

# Repertoire client des fichiers de paramètres par défaut à envoyer aux clients
# identifiés demandant une connection
client-config-dir "/etc/openvpn/clients"

# push de la route vers DR13
push "route 193.49.133.0 255.255.255.0"

# Route pour les utilisateurs (push ds le fichier client)
route 10.8.1.0 255.255.255.0
# Route pour les administrateurs (push ds le fichier client)
route 10.8.18.0 255.255.255.0

# Puis on rajoute une ligne pour chaque client dans son fichier conf
# avec l'adresse IP client fixe ainsi que celle du serveur
# ifconfig-push @IP-proche @IP-distante
# ifconfig-push 10.8.18.6 10.8.18.5

# The keepalive directive causes ping-like
# messages to be sent back and forth over
# the link so that each side knows when
# the other side has gone down.
# Ping every 10 seconds, assume that remote
# peer is down if no ping received during
# a 120 second time period.
keepalive 10 120

# Clé partagée entre le serveur et chaque client. 0=serveur, 1=client.
tls-auth keys/ta.key 0 # This file is secret 

# Select a cryptographic cipher.
# This config item must be copied to
# the client config file as well.
;cipher BF-CBC # Blowfish (default)
;cipher AES-128-CBC # AES
;cipher DES-EDE3-CBC # Triple-DES

# Utilisation de la compression. À indiquer aussi pour le client
comp-lzo 

# The maximum number of concurrently connected
# clients we want to allow.
;max-clients 100

# It's a good idea to reduce the OpenVPN
# daemon's privileges after initialization.
#user root
#group root

# Modifie la racine pour le serveur OpenVPN
#chroot /etc/openvpn

# The persist options will try to avoid
# accessing certain resources on restart
# that may no longer be accessible because
# of the privilege downgrade.
persist-key
persist-tun

# Output a short status file showing
# current connections, truncated
# and rewritten every minute.
status openvpn-status.log

# By default, log messages will go to the syslog (or
# on Windows, if running as a service, they will go to
# the "\Program Files\OpenVPN\log" directory).
# Use log or log-append to override this default.
# "log" will truncate the log file on OpenVPN startup,
# while "log-append" will append to it. Use one
# or the other (but not both).
;log openvpn.log
log-append /var/log/openvpn/openvpn.log

# Set the appropriate level of log
# file verbosity.
#
# 0 is silent, except for fatal errors
# 4 is reasonable for general usage
# 5 and 6 can help to debug connection problems
# 9 is extremely verbose
verb 5

# Silence repeating messages. At most 20
# sequential messages of the same message
# category will be output to the log.
;mute 20

Il existe 2 types de comptes sur VPN: les clients nomades qui ont tres peut de droits et les administrateurs qui peuvent tout faire sur le reseau.

Clients nomades : classe 10.8.1.0
Administarateurs : classe 10.8.18.0

Les droits sont gérés par iptables voici les regles actuelement en vigueur :

#iptables -L

Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- localnet/24 anywhere
ACCEPT icmp -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:www
ACCEPT udp -- anywhere anywhere state RELATED,ESTABLISHED udp spt:domain
ACCEPT tcp -- anywhere anywhere state RELATED,ESTABLISHED tcp spt:domain
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:10000
ACCEPT udp -- anywhere anywhere udp dpt:10000

Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- localnet/24 anywhere
ACCEPT udp -- anywhere anywhere state RELATED,ESTABLISHED udp spt:domain
ACCEPT tcp -- anywhere anywhere state RELATED,ESTABLISHED tcp spt:domain
ACCEPT tcp -- 10.8.1.0/24 graal.dr13.cnrs.fr tcp multiport dports smtp,www,pop3,imap2,https,ldap,imaps : Utilisateurs
ACCEPT all -- 10.8.18.0/24 localnet/24 : administrateurs

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere

Creation de compte :

Pour creer un compte, il faut simplement creer un fichiers Prenom_Nom dans /etc/openvpn/clients

Y copier le texte ci dessous

Adminsistrateurs :
# Ajout de la route spécifique du groupe
iroute 10.8.18.0 255.255.255.0
# Attribution du couple adresse locale (client) / adresse distante (serveur) pour l'utilisation du pont
ifconfig-push 10.8.18.10 10.8.18.9

Utilisateurs :

  1. Ajout de la route spécifique du groupe

iroute 10.8.1.0 255.255.255.0

  1. Attribution du couple adresse locale (client) / adresse distante (serveur) pour l'utilisation du pont

ifconfig-push 10.8.1.Y10.8.1.9

On ne peut affecter que des couples X - Y d'adresses bien precis pour faire les tunnels : (en rouge les couples utilisés)

1 - 2
Julien Garnier
5 - 6
Vincent Chicot
9 - 10
Henri Paturel
13 - 14
Nelly Pernot
17 - 18
Martine Costanzo
21 - 22
olivier Durand
25 - 26
Sebastien GHibert
29 - 30
Christine Ensuque
33 - 34
Jean Michel Portefaix
37 - 38
Yann Dumartineix
41 - 42
Gerard Kerlidou
45 - 46
Audrey Fisseau
49 - 50
Jocelyn Mere
53 - 54
Patrick Piontkowsky
57 - 58
Bernard Jollans
61 - 62
Harry Cover
65 - 66
Florence Raffray
69 - 70
Veronique Hanin
73 - 74
Genevieve PIONTKOWSKY
77 - 78
Francoise RAVIER
81 - 82
85 - 86
89 - 90
93 - 94
97 -98
101 - 102
105 - 106
109 - 110
113 - 114
117 - 118
121 - 122
125 - 126
129 - 130
133 - 134
137 - 138
141 - 142
145 - 146
149 - 150
153 - 154
157 - 158
161 - 162
165 -166
169 - 170
173 - 174
177 - 178
181 - 182
185 - 186
189 - 190
193 - 194
197 - 198

 

Configuration d'un client Windows

Droits d'utilisation de l'interface client OpenVPN  !!! uniquement si utilisateur n'est pas root !!!

L'installation par défaut d'OpenVPN GUI ne donne pas le droit de contrôler le service OpenVPN. Il existe cependant 2 manières d'y remédier. Si on a les droits d'administrateur, et que l'on veut juste une moyen facile de contrôler le service OpenVPN, on peut activer un menu caché. Pour cela, on positionne la clé de registre suivante à "1":

HKEY_LOCAL_MACHINE\SOFTWARE\OpenVPN-GUI\allow_service "1"  

Depuis OpenVPN GUI 1.0-rc2, il existe un mode spécial appelé "Service only", convenant aux utilisateurs ne disposant pas des privilèges administrateurs. Ce mode modifie le comportement des actions "Connection" ("Connect") et "Déconnection" ("Disconnect") pour démarrer et arrêter le service OpenVPN, au lieu de lancer OpenVPN.exe directement, comme il le fait habituellement. Le menu de paramétrage du proxy ("Proxy settings") est caché puisqu'il n'a aucun effect sur le service. Pour cela, on positionne la clé de registre suivante à "1":

HKEY_LOCAL_MACHINE\SOFTWARE\OpenVPN-GUI\service_only "1"  

Il faut aussi se souvenir qu'un utilisateur normal ne dispose pas des droits d'écriture dans le fichier OpenVPN/config, il ne doit donc pas accéder au fichier de configuration, ni changer le mot de passe. Pour cacher ces entrées dans le menu de l'interface, on positionne les clé de registre suivantes à "0":

HKEY_LOCAL_MACHINE\SOFTWARE\OpenVPN-GUI\allow_edit "0"  

HKEY_LOCAL_MACHINE\SOFTWARE\OpenVPN-GUI\allow_password "0"  

<a name="client" id="client"></a>Le fichier de configuration client.ovpn

#################################################  
# Fichier de configuration client pour OpenVPN  #
# Ce fichier est destiné à tous les clients, en #
# adaptant pour chacun la localisation du       # 
# certificat et de la clé partagée.             # 					
# Pour Windows, utiliser l'extension .ovpn      #
"################################################    
client  

   
# "tun" ou "tap": paramètre identique au serveur  
dev tun     

# Protocole pour le tunnel: paramètre identique au serveur  
proto tcp     

pull     

# @IP + port du serveur OpenVPN distant  
remote 193.49.133.234 4500

resolv-retry infinite     
nobind     

persist-key  
persist-tun     

# Utilisation d'un certificat généré par le CNRS, sauvegardé sous forme PKCS12  
pkcs12 "<span class="Style7">C:\\chemin_de_mon_cert\\nom_de_mon_cert.p12</span>"     

ns-cert-type server     
# Utilisation d'une clé commune, identique au serveur. 1=client  
tls-auth "<span class="Style7">C:\\chemin_vers_la clé_partagée\\ta.key</span>" 1    


# Activation de la compression: paramètre identique au serveur  
comp-lzo     

verb 3    
;mute 20
#################################################

Probleme : le tunnel mis en place entre le PC utilisateur et le serveur ne peut pas passer par lui meme. Il faut donc ajouter manuellement une route sur le client :

route add 193.49.133.234 mask 255.255.255.255 XXX.XXX.XXX.XXX ou XXX.XXX.XXX.XXX est votre passerelle par defaut actuelle (pour la connaitre : demarrer | executer | cmd et taper ipconfig /all

Ensuite, clic droit sur l'icone openvpnGUI et connecter. Attendre que le programme vous dise qu'il est conncter et ca fonctionne