Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
openvpn [2023/03/08 13:45] – [Ajout de la double authentification Google] nekanopenvpn [2023/08/10 17:17] (Version actuelle) – [Ajout de la double authentification Google] nekan
Ligne 44: Ligne 44:
 <sxh bash>openvpn --genkey secret ./pki/ta.key</sxh> <sxh bash>openvpn --genkey secret ./pki/ta.key</sxh>
  
-  * On met en place un raccourci vers les certificats dans le dossier de ''OpenVPN''+  * On met en place un raccourci vers les certificats dans le dossier de ''OpenVPN'' ainsi qu'un raccourci pour la commande principale 
-<sxh bash>ln -sf /usr/share/easy-rsa /etc/openvpn/easy-rsa</sxh>+<sxh bash>ln -sf /usr/share/easy-rsa /etc/openvpn/easy-rsa 
 +ln -sf /usr/share/easy-rsa/easyrsa /bin/easyrsa</sxh>
  
 ==== Configuration du serveur ==== ==== Configuration du serveur ====
Ligne 85: Ligne 86:
     * **reneg-sec 86400** : limite la renégociation avec les clients à 1/jour (86400s).     * **reneg-sec 86400** : limite la renégociation avec les clients à 1/jour (86400s).
  
-  * On oublie pas de créer le dossier des configurations clientes :+  * On n'oublie pas de créer le dossier des configurations clientes :
 <sxh bash>mkdir /etc/openvpn/ccd</sxh> <sxh bash>mkdir /etc/openvpn/ccd</sxh>
  
Ligne 136: Ligne 137:
 COMMIT COMMIT
  
-#================# +#==========================================# 
-# Partie clients # +# Partie clients pour chaque route commune 
-#================#+#==========================================#
  
 *filter *filter
  
-# Autorisation à créer selon chaque client sous la forme : +# Autorisation à créer selon chaque route commune sous la forme : 
-# -I FORWARD -i tun0 -o ens192 -s 172.16.0.49 -d 10.1.1.1 -p tcp --dport 80 -j ACCEPT +# -I FORWARD -i tun0 -o ens192 -s 172.16.0.0/24 -d 10.1.1.1 -j ACCEPT -m comment --comment "DNAT vers serv1" 
--I FORWARD -i tun0 -o ens192 -s 172.16.0.49 -d 10.1.1.1 -p tcp --dport 443 -j ACCEPT +# -I FORWARD -i ens192 -o tun0 -s 10.1.1.1 -d 172.16.0.0/24 -j ACCEPT -m comment --comment "SNAT depuis serv1"
-# -I FORWARD -i ens192 -o tun0 -s 10.1.1.1 -d 172.16.0.49 -j ACCEPT+
  
 #========================================================================================# #========================================================================================#
Ligne 220: Ligne 220:
 #up /etc/openvpn/update-systemd-resolved #up /etc/openvpn/update-systemd-resolved
 #down /etc/openvpn/update-systemd-resolved #down /etc/openvpn/update-systemd-resolved
-  +
-{{- if .PasswdAuth }} +
-auth-user-pass +
-{{- end }} +
- +
 <cert> <cert>
 {{ .Cert -}} {{ .Cert -}}
Ligne 243: Ligne 239:
 # Variables # Variables
    
-#OVPN_LISTEN_HOST=127.0.0.1                             # Adresse de l'hôte +OVPN_LISTEN_HOST=127.0.0.1                              # Adresse de l'hôte 
-OVPN_LISTEN_PORT=8080                                   # Port de l'hôte+OVPN_LISTEN_PORT=8088                                   # Port de l'hôte
 OVPN_NETWORK=172.16.0.0/24                              # Plage réseau des clients OpenVPN OVPN_NETWORK=172.16.0.0/24                              # Plage réseau des clients OpenVPN
 OVPN_SERVER=1.2.3.4:1194:udp                            # Adresse, port et protocole d'écoute pour OpenVPN OVPN_SERVER=1.2.3.4:1194:udp                            # Adresse, port et protocole d'écoute pour OpenVPN
Ligne 251: Ligne 247:
 EASYRSA_PATH="/etc/openvpn/easyrsa"                     # Racine pour easy-RSA EASYRSA_PATH="/etc/openvpn/easyrsa"                     # Racine pour easy-RSA
 OVPN_INDEX_PATH="/etc/openvpn/easyrsa/pki/index.txt"    # Chemin de la base de données pour les certificats gérés OVPN_INDEX_PATH="/etc/openvpn/easyrsa/pki/index.txt"    # Chemin de la base de données pour les certificats gérés
-#OVPN_CCD                                               # Stockage des configurations clientes 
 OVPN_CCD_PATH="/etc/openvpn/ccd"                        # Stockage des configurations clientes OVPN_CCD_PATH="/etc/openvpn/ccd"                        # Stockage des configurations clientes
 OVPN_TEMPLATES_CC_PATH="/etc/openvpn/client.conf.tpl"   # Chemin du modèle de configuration cliente OVPN_TEMPLATES_CC_PATH="/etc/openvpn/client.conf.tpl"   # Chemin du modèle de configuration cliente
Ligne 259: Ligne 254:
    
 /etc/openvpn/ovpn-admin \ /etc/openvpn/ovpn-admin \
 +        --listen.host=$OVPN_LISTEN_HOST \
 +        --listen.port=$OVPN_LISTEN_PORT \
         --log.level=$LOG_LEVEL \         --log.level=$LOG_LEVEL \
         --easyrsa.path=$EASYRSA_PATH \         --easyrsa.path=$EASYRSA_PATH \
Ligne 388: Ligne 385:
         CustomLog ${APACHE_LOG_DIR}/access.log combined         CustomLog ${APACHE_LOG_DIR}/access.log combined
    
-        ProxyPass               / http://127.0.0.1:8080+        ProxyPass               / http://127.0.0.1:8088
-        ProxyPassReverse        / http://127.0.0.1:8080/+        ProxyPassReverse        / http://127.0.0.1:8088/
         ProxyRequests           Off         ProxyRequests           Off
         <Location />         <Location />
Ligne 404: Ligne 401:
   * On crée le mot de passe :   * On crée le mot de passe :
 <sxh>htpasswd -c /etc/apache2/password.file ovpn-admin</sxh> <sxh>htpasswd -c /etc/apache2/password.file ovpn-admin</sxh>
-  * On active les modules ''ssl'' et ''proxy_http'' :+  * On active les modules ''ssl'', ''proxy'' et ''proxy_http'' :
 <sxh bash>a2enmod ssl <sxh bash>a2enmod ssl
 +a2enmod proxy
 a2enmod proxy_http</sxh> a2enmod proxy_http</sxh>
   * On active le site :   * On active le site :
Ligne 438: Ligne 436:
 if [ -z "$1" ]; then if [ -z "$1" ]; then
         get-help         get-help
-elif [[ $(ls -$CCD | awk '{print $NF}' | grep -E "^${1}$" | wc -l) -eq 0 ]]; then+elif [ -$CCD/$1 ]; then
         get-help         get-help
 fi fi
Ligne 446: Ligne 444:
    
 # Création du google authenticator # Création du google authenticator
-su -c "google-authenticator --label=\"VPN LBG ${1}\"" $1+su -c "google-authenticator -t -f -d -r 3 -R 30 -w 17 --label=\"OpenVPN ${1}\"" $1
    
 # Mise à jour des droits # Mise à jour des droits
Ligne 460: Ligne 458:
 <sxh bash>cp /etc/pam.d/common-account /etc/pam.d/openvpn</sxh> <sxh bash>cp /etc/pam.d/common-account /etc/pam.d/openvpn</sxh>
   * On modifie cette configuration pour y ajouter en 1ère ligne :   * On modifie cette configuration pour y ajouter en 1ère ligne :
-<sxh>auth required pam_google_authenticator.so authok_prompt=pin</sxh>+<sxh>auth required pam_google_authenticator.so authtok_prompt=pin</sxh>
   * On redémarre le service :   * On redémarre le service :
 <sxh bash>service openvpn@server restart</sxh> <sxh bash>service openvpn@server restart</sxh>
Ligne 467: Ligne 465:
  
 Pour la suite, lorsque l'utilisateur se connecte au VPN, il lui sera demander un code fourni par l'application mobile pour pouvoir se connecter. Pour la suite, lorsque l'utilisateur se connecte au VPN, il lui sera demander un code fourni par l'application mobile pour pouvoir se connecter.
-===== Clients =====+===== Clients sans l'interface de gestion =====
  
 <callout type="info" title="Unicité" icon="true">Cette procédure devra être suivie pour chaque client devant se connecter au serveur. Chaque configuration sera donc unique.</callout> <callout type="info" title="Unicité" icon="true">Cette procédure devra être suivie pour chaque client devant se connecter au serveur. Chaque configuration sera donc unique.</callout>
Ligne 484: Ligne 482:
 proto udp proto udp
 remote 1.2.3.4 1194 remote 1.2.3.4 1194
-resolv-retry infinite 
-management 127.0.0.1 19999 
 nobind nobind
 persist-key persist-key
Ligne 491: Ligne 487:
 comp-lzo comp-lzo
 verb 4 verb 4
 +# uncomment below lines for use with Google 2FA
 +#auth-user-pass
 cipher AES-256-GCM cipher AES-256-GCM
 +key-direction 1
 +tls-client
 +remote-cert-tls server
 +auth-nocache
 +explicit-exit-notify 1
 +reneg-sec 86400
 +
 # keys # keys
 ca chemin_vers_le_fichier_ca.crt ca chemin_vers_le_fichier_ca.crt
Ligne 497: Ligne 502:
 key chemin_vers_le_fichier_client.key key chemin_vers_le_fichier_client.key
 tls-auth chemin_vers_le_fichier_ta.key 1 tls-auth chemin_vers_le_fichier_ta.key 1
-auth-nocache</sxh>+</sxh>
  
   * Pour Linux, à mettre dans ''/etc/openvpn/'' du poste client, ''client.conf'' dont le contenu est :   * Pour Linux, à mettre dans ''/etc/openvpn/'' du poste client, ''client.conf'' dont le contenu est :
Ligne 509: Ligne 514:
 comp-lzo comp-lzo
 verb 4 verb 4
-cipher AES-256-GCM+# uncomment below lines for use with Google 2FA 
 +#auth-user-pass 
 +data-cipher AES-256-GCM 
 +key-direction 1 
 +tls-client 
 +remote-cert-tls server 
 +auth-nocache 
 +explicit-exit-notify 1 
 +reneg-sec 86400 
 +# uncomment below lines for use with linux 
 +script-security 2 
 +# if you use resolved 
 +#up /etc/openvpn/update-resolv-conf 
 +#down /etc/openvpn/update-resolv-conf 
 +# if you use systemd-resolved first install openvpn-systemd-resolved package 
 +#up /etc/openvpn/update-systemd-resolved 
 +#down /etc/openvpn/update-systemd-resolved 
 # keys # keys
 ca chemin_vers_le_fichier_ca.crt ca chemin_vers_le_fichier_ca.crt
Ligne 515: Ligne 537:
 key chemin_vers_le_fichier_client.key key chemin_vers_le_fichier_client.key
 tls-auth chemin_vers_le_fichier_ta.key 1 tls-auth chemin_vers_le_fichier_ta.key 1
-auth-nocache</sxh>+</sxh>
  
   * Il faut ensuite inscrire le client sur le serveur, dans le dossier ''/etc/openvpn/ccd/'' (on remplace ''client'' par le nom choisi précédemment) :   * Il faut ensuite inscrire le client sur le serveur, dans le dossier ''/etc/openvpn/ccd/'' (on remplace ''client'' par le nom choisi précédemment) :
Ligne 526: Ligne 548:
       * **passerelle** : adresse du client +1       * **passerelle** : adresse du client +1
       * **broadcast** : adresse du client +2       * **broadcast** : adresse du client +2
-    * les options de DHCP +    * les options de DHCP (sauf si ajouté dans la partie serveur) 
-    * les options de DNS+    * les options de DNS (sauf si ajouté dans la partie serveur)
     * les différentes routes vers les serveurs dont les accès sont autorisés     * les différentes routes vers les serveurs dont les accès sont autorisés
   * Exemple :   * Exemple :
Ligne 555: Ligne 577:
  
 <callout type="success" title="Fini" icon="true">Et voilà ! Vous disposez d'un serveur OpenVPN et d'un configuration cliente permettant de s'y connecter.</callout> <callout type="success" title="Fini" icon="true">Et voilà ! Vous disposez d'un serveur OpenVPN et d'un configuration cliente permettant de s'y connecter.</callout>
 +
 +===== Clients avec l'interface de gestion =====
 +
 +  * On se connecte à l'interface et on clique sur ''Add user'' :
 +<image shape="thumbnail">{{ :linux:openvpn:ovpn_002.png |}}</image>
 +  * Dans la fenêtre qui apparaît, on entre le nom de l'utilisateur et on clique sur ''Create'' :
 +<image shape="thumbnail">{{ :linux:openvpn:ovpn_003.png |}}</image>
 +  * Le compte apparaît alors en bas de la liste. On crée sa configuration de base en cliquant sur ''Edit routes'' :
 +<image shape="thumbnail">{{ :linux:openvpn:ovpn_004.png |}}</image>
 +  * Si l'utilisateur n'utilise que les routes communes, on clique directement sur ''Save'' :
 +<image shape="thumbnail">{{ :linux:openvpn:ovpn_005.png |}}</image>
 +  * Si l'utilisateur utilise des routes spécifiques, on les ajoute une par une en entrant l'adresse IP, le masque et la description de la route puis en cliquant sur ''Add''. Une fois toutes les routes ajoutées, on sauvegarde en cliquant sur ''Save'' :
 +<image shape="thumbnail">{{ :linux:openvpn:ovpn_006.png |}}</image>
 +  * On peut alors télécharger la configuration client en cliquant sur ''Download config'' :
 +<image shape="thumbnail">{{ :linux:openvpn:ovpn_007.png |}}</image>
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
  
  
  • openvpn.1678279502.txt.gz
  • Dernière modification : 2023/03/08 13:45
  • de nekan