Parametrage Serveur VPN
Theorie :
Les utilisateurs se connectent via un logiciel specilisé (openvpn) sur la machine vpn.dr13.cnrs.fr
Il ont besoin :
- Openvpn
- d'un certificat CNRS-Standard exporté depuis firefox ou les AC CNRS et CNRS-Standard sont installées
- de la cle secrete du serveur <a href="vpn/keys/ta.key">ta.key</a>
- 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 :
- Ajout de la route spécifique du groupe
iroute 10.8.1.0 255.255.255.0
- 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