Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
wiki:services:openvpn:vpnprod [2017/03/26 19:06] sowarks |
wiki:services:openvpn:vpnprod [2018/05/08 13:24] insolentbacon |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ==== Comment avoir mes clefs openVPN ?==== | + | ====== VPN ====== |
- | Vous en avez marre de devoir faire un ssh sur un vpn puis ensuite sur la machine | + | VPN1 est le nouveau VPN (à l' |
+ | Il y a un serveur OpenVPN et un serveur SSH qui tournent dessus. | ||
+ | Il y a des aussi des règles pour **Fail2ban** dans IPTables (voir wikipédia.) | ||
+ | De même, " | ||
+ | | ||
- | | + | ===== Comment les accès sont gérés ? ===== |
- | | + | ==== Comment je crée mes clés? ==== |
- | | + | Pour avoir ses accès sur le VPN il faut tout d' |
- | | + | Premièrement demandez à un membre de MiNET qui a déjà accès au VPN le fichier |
- | | + | |
+ | La première | ||
+ | Pour télécharger // | ||
+ | | ||
+ | |||
+ | Déplacez vous dans le dossier créé. | ||
+ | Pour avoir la version 2.x: | ||
+ | git checkout release/ | ||
+ | |||
+ | Allez ensuite dans easy-rsa/ | ||
+ | Vous allez ensuite devoir renommer (ou faire un //lien symbolique// | ||
+ | Pour faire un lien symbolique: | ||
+ | ln -s openssl-1.0.0.cnf openssl.cnf | ||
+ | |||
+ | Puis éditez le fichier | ||
+ | vars | ||
+ | Par exemple en modifiant ces variables : | ||
+ | export KEY_COUNTRY="FR" | ||
+ | export KEY_PROVINCE=" | ||
+ | | ||
+ | export KEY_ORG=" | ||
+ | export KEY_EMAIL="(user)@minet.net" | ||
+ | | ||
- | Pour accéder au vpn1 : | ||
- | <WRAP center round alert 60%> | + | Puis chargez les variables |
- | à noter que cette ligne de configuration | + | |
+ | |||
+ | Mettez le **ca.crt** que on vous a filé dans le dossier keys/ (qu'il faut créer) | ||
+ | Ensuite vous allez créer votre clé ainsi qu'une demande de signature pour votre clé (//CSR: certificate signing request// | ||
+ | ./build-req ton_pseudo_ldap_en_minuscules | ||
+ | |||
+ | On vous demandera de renseigner des informations. | ||
+ | Le " | ||
+ | (Laissez //challenge password// vide, il est mis en clair dans le fichier) | ||
+ | |||
+ | Un fichier **ton_pseudo.key** et **ton_pseudo.crt** seront créé dans le dossier //keys/// que vous devez créer auparavant | ||
+ | Le fichier en **.key** est la clé privée. Il faut la garder bien précieusement et ne jamais l' | ||
+ | |||
+ | Il faut envoyer le **.csr** au président ou à un membre qui détient le //CA (autorité | ||
+ | |||
+ | Une fois qu'on vous a renvoyé un fichier | ||
+ | |||
+ | Vous pourrez mettre ces trois fichiers dans le dossier de votre choix et vous débarrasser de easy-rsa. | ||
+ | |||
+ | Une fois que vous avez fait ça, il faut prendre le fichier de configuration (pour que le client VPN sache comment communiquer avec notre serveur VPN), que vous pouvez trouver plus bas dans la page (__n' | ||
+ | |||
+ | Vous pouvez normalement vous connecter aux réseaux privés de MiNET < | ||
+ | sudo openvpn / | ||
+ | |||
+ | On vous demandera | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | ==== Pour les clés ==== | ||
+ | Le président détient les clés du CA, permettant de créer des nouvelles clés aux utilisateurs, | ||
+ | |||
+ | ===== IPTables ===== | ||
+ | Le pare-feu a été configuré pour NAT les clients d' | ||
+ | |||
+ | |||
+ | ==== Authentification openvpn ==== | ||
+ | |||
+ | L' | ||
+ | === vsftpd === | ||
+ | Le home des utilisateurs est accessible en ftp utilisant TLS, grâce à vsftpd, il est configuré pour utiliser PAM pour l' | ||
+ | |||
+ | En fait les utilisateurs se connectent sur le port 2121, ensuite les utilisateurs utilisent un mode passif qui écoute sur les ports 64000-64321 (donc il faut rajouter une ligne iptables).</ | ||
+ | |||
+ | ==== Pour les sous réseaux ==== | ||
+ | |||
+ | Eh bien quand vous vous connectez avec OpenVPN sur le serveur, celui-ci vous attribue une IP. | ||
+ | Dans notre cas, ça sera quelque chose du genre 10.0.X.Y. | ||
+ | |||
+ | Ensuite, quand vous allez vouloir accéder à un service par exemple dans 192.168.102.0/ | ||
+ | |||
+ | ^ Groupe | ||
+ | | Nouveaux utilisateurs | ||
+ | | Production | ||
+ | | Developpement | ||
+ | |||
+ | Pour restreindre les accès, nous utilisons IPTables. Il suffit de restreindre le forward des packets selon l' | ||
+ | |||
+ | |||
+ | ===== Comment ajouter les accès à quelqu' | ||
+ | |||
+ | Vous devez avoir la clé privée du CA. | ||
+ | |||
+ | - Donner le ca.crt à la personne, lui dire d' | ||
+ | - Une fois que la personne vous a filé le .csr, signez le (./sign-req ) après avoir bien vérifié que le csr appartient bien à la personne. Renvoyez à cette personne le .crt ainsi créé. | ||
+ | - Ajouter les droits dans le LDAP pour que cette personne puisse utiliser le VPN | ||
+ | - À ce moment là, la personne devrait pouvoir se connecter au VPN avec openVPN. Elle n'aura juste aucune route d' | ||
+ | - Utilisez / | ||
+ | |||
+ | (En réalité il va dans / | ||
+ | |||
+ | <WRAP important 60%> | ||
+ | À lire si vous éditez directement les fichiers dans / | ||
+ | |||
+ | Les routes dans les fichiers de ccd/* ne permettent pas de contrôler l' | ||
+ | |||
+ | Si par exemple vous ne pushez pas la route 192.168.102.0/ | ||
+ | |||
+ | Les règles d' | ||
</ | </ | ||
+ | |||
+ | ===== Comment rajouter un groupe ? ===== | ||
+ | - Commencez par le référencer dans le tableau ci-dessus. | ||
+ | - Ajoutez "route 10.0.X.0 255.255.255.0" | ||
+ | - Ajoutez des règles IPTables autorisant le trafic de tun0 avec comme IP source votre plage, vers l' | ||
+ | - Ajoutez une entrée dans / | ||
+ | |||
+ | ===== Comment rajouter une interface au vpn ? ===== | ||
+ | - Ajoutez l' | ||
+ | - Renommez l' | ||
+ | - Configurer une IP pour cette interface | ||
+ | - Ajoutez une règle au pare-feu pour que le VPN NAT sur cette interface (masquerade) | ||
+ | - Ajouter une règle au pare-feu pour que certains groupes puissent l' | ||
+ | - Rajouter votre interface aux groupes en n' | ||
+ | |||
+ | |||
+ | ===== Un joli de fichier de conf commenté pour Linux ===== | ||
< | < | ||
+ | ############################################## | ||
+ | # Sample client-side OpenVPN 2.0 config file # | ||
+ | # for connecting to multi-client server. | ||
+ | # # | ||
+ | # This configuration can be used by multiple # | ||
+ | # clients, however each client should have # | ||
+ | # its own cert and key files. | ||
+ | # # | ||
+ | # On Windows, you might want to rename this # | ||
+ | # file so it has a .ovpn extension | ||
+ | ############################################## | ||
+ | |||
+ | # Specify that we are a client and that we | ||
+ | # will be pulling certain config file directives | ||
+ | # from the server. | ||
client | client | ||
+ | # Use the same setting as you are using on | ||
+ | # the server. | ||
+ | # On most systems, the VPN will not function | ||
+ | # unless you partially or fully disable | ||
+ | # the firewall for the TUN/TAP interface. | ||
+ | ;dev tap | ||
dev tun | dev tun | ||
- | proto udp | ||
- | ;remote vpn1.minet.net | ||
- | remote 157.159.40.19 | ||
- | ; Pour accèder au VPN depuis eduroam | + | # Windows needs the TAP-Win32 adapter name |
- | ;proto tcp | + | # from the Network Connections panel |
- | ;remote vpn1.minet.net 443 | + | # if you have more than one. On XP SP2, |
+ | # you may need to disable the firewall | ||
+ | # for the TAP adapter. | ||
+ | ;dev-node MyTap | ||
- | ;cipher AES-256-CBC | + | # Are we connecting to a TCP or |
+ | # UDP server? | ||
+ | # on the server. | ||
+ | proto tcp | ||
+ | |||
+ | # The hostname/IP and port of the server. | ||
+ | # You can have multiple remote entries | ||
+ | # to load balance between the servers. | ||
+ | remote 157.159.40.19 443 | ||
+ | remote 157.159.40.20 443 | ||
+ | |||
+ | # Choose a random host from the remote | ||
+ | # list for load-balancing. | ||
+ | # try hosts in the order specified. | ||
+ | remote-random | ||
+ | |||
+ | # Keep trying indefinitely to resolve the | ||
+ | # host name of the OpenVPN server. | ||
+ | # on machines which are not permanently connected | ||
+ | # to the internet such as laptops. | ||
resolv-retry infinite | resolv-retry infinite | ||
+ | |||
+ | # Most clients don't need to bind to | ||
+ | # a specific local port number. | ||
nobind | nobind | ||
+ | |||
+ | # Downgrade privileges after initialization (non-Windows only) | ||
+ | ;user nobody | ||
+ | ;group nogroup | ||
+ | |||
+ | # Try to preserve some state across restarts. | ||
persist-key | persist-key | ||
persist-tun | persist-tun | ||
- | ca /etc/openvpn/minet/ca.crt | + | |
- | cert /etc/openvpn/ | + | # If you are connecting through an |
- | key /etc/openvpn/minet/sowarks.key | + | # HTTP proxy to reach the actual OpenVPN |
- | ns-cert-type server | + | # server, put the proxy server/IP and |
+ | # port number here. See the man page | ||
+ | # if your proxy server requires | ||
+ | # authentication. | ||
+ | ; | ||
+ | ;http-proxy [proxy server] [proxy port #] | ||
+ | |||
+ | # Wireless networks often produce a lot | ||
+ | # of duplicate packets. | ||
+ | # to silence duplicate packet warnings. | ||
+ | ; | ||
+ | |||
+ | # SSL/TLS parms. | ||
+ | # See the server config file for more | ||
+ | # description. | ||
+ | # a separate .crt/.key file pair | ||
+ | # for each client. | ||
+ | # file can be used for all clients. | ||
+ | ca /absolute/path/ca.crt | ||
+ | cert /absolute/path/insolentbacon.crt | ||
+ | key /absolute/path/insolentbacon.key | ||
+ | |||
+ | # Verify server certificate by checking | ||
+ | # that the certicate has the nsCertType | ||
+ | # field set to " | ||
+ | # important precaution to protect against | ||
+ | # a potential attack discussed here: | ||
+ | # http://openvpn.net/ | ||
+ | # | ||
+ | # To use this feature, you will need to generate | ||
+ | # your server certificates with the nsCertType | ||
+ | # field set to " | ||
+ | # script in the easy-rsa folder will do this. | ||
+ | remote-cert-tls server | ||
+ | |||
+ | # If a tls-auth key is used on the server | ||
+ | # then every client must also have the key. | ||
+ | ;tls-auth ta.key 1 | ||
+ | |||
+ | # Select a cryptographic cipher. | ||
+ | # If the cipher option is used on the server | ||
+ | # then you must also specify it here. | ||
+ | cipher AES-256-CBC | ||
+ | |||
+ | # Enable compression on the VPN link. | ||
+ | # Don't enable this unless it is also | ||
+ | # enabled in the server config file. | ||
comp-lzo | comp-lzo | ||
+ | |||
+ | # Set log file verbosity. | ||
verb 3 | verb 3 | ||
+ | |||
+ | # Silence repeating messages | ||
+ | ;mute 20 | ||
+ | |||
auth-user-pass | auth-user-pass | ||
- | script-security 2 | + | |
- | daemon | + | # Authenticate data channel packets with SHA515 algorithm |
- | ;manager son vpn avec telnet: | + | auth SHA512 |
- | management 127.0.0.1 6001 | + | |
- | writepid | + | # Don't cache username/password |
+ | auth-nocache | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | ===== Comment avoir les DNS derrière les VPNs ===== | ||
; Pour avoir les bons DNS (voir plus loin pour avoir le script) | ; Pour avoir les bons DNS (voir plus loin pour avoir le script) | ||
Ligne 57: | Ligne 284: | ||
Ce fichier c'est de la merde, ça marche pas sous arch. | Ce fichier c'est de la merde, ça marche pas sous arch. | ||
[[https:// | [[https:// | ||
+ | </ | ||
+ | |||
+ | <WRAP center round info 60%> | ||
+ | Ce fichier c'est de la merde, beaucoup de distro packagent (donc incluent et maintiennent) déjà leurs scripts pour la gestion des DNS (c'est au moins le cas pour Gentoo et Arch) ; renseignez vous sur les usages pour votre distro ;) | ||
</ | </ | ||
Ligne 128: | Ligne 359: | ||
</ | </ | ||
- | Gateway : vpn1(2).minet.net | + | <del>Gateway : vpn1(2).minet.net |
+ | </ | ||
Type : mot de passe + certificat TLS | Type : mot de passe + certificat TLS | ||
Ligne 137: | Ligne 368: | ||
IMPORTANT : ne pas oublier de cocher la case tout en bas pour les options ipv6 | IMPORTANT : ne pas oublier de cocher la case tout en bas pour les options ipv6 | ||
- | ==== Comment accéder au VPN depuis Windows ?==== | + | ===== Comment regénérer la CRL ===== |
+ | La CRL ou certificate revocation list, permet de révoquer des certificats. Elle est signée par le CA et doit être renouvelée régulièrement. | ||
+ | |||
+ | Pour la réactualiser il faut faire: | ||
+ | > source vars | ||
+ | > export KEY_CN="" | ||
+ | > export KEY_OU="" | ||
+ | > export KEY_NAME="" | ||
+ | > openssl ca -gencrl -out " | ||
+ | |||
+ | ===== Comment accéder au VPN depuis Windows ?===== | ||
Installer OpenVPN sur votre machine en vous rendant à l' | Installer OpenVPN sur votre machine en vous rendant à l' | ||
Une fois installé, rendez vous dans le dossier C:\Program Files\OpenVPN\config\ et créez un nouveaux fichier MiNET.txt . Ouvrez le et tapez : | Une fois installé, rendez vous dans le dossier C:\Program Files\OpenVPN\config\ et créez un nouveaux fichier MiNET.txt . Ouvrez le et tapez : | ||
+ | <del> | ||
< | < | ||
client | client | ||
Ligne 172: | Ligne 413: | ||
;down / | ;down / | ||
</ | </ | ||
- | et remplacer /*votre pseudo*/ par votre pseudo. | + | et remplacer /*votre pseudo*/ par votre pseudo.</ |
Ensuite renommez le en MiNET.ovpn. | Ensuite renommez le en MiNET.ovpn. | ||
Lancez ensuite openvpn et dans la barre d’icône en bas à droite cliquez avec le bouton droit de la souris sur l’icône openvpn et sélectionnez MiNET puis connecter. Rentrez votre login et mot de passe et c'est bon :) . | Lancez ensuite openvpn et dans la barre d’icône en bas à droite cliquez avec le bouton droit de la souris sur l’icône openvpn et sélectionnez MiNET puis connecter. Rentrez votre login et mot de passe et c'est bon :) . |