Chocoblog

Chocoblog

Billets sur l'informatique, les logiciels libres et retours d'utilisation sont au programme avec la possibilité de publier des billets de copains.

Installation automatique d'OpenVPN avec interface d'administration

J'avais fais il y a quelques temps un article sur la façon d'avoir un OpenVPN avec une petite interface d'administration permettant de gérer des utilisateurs via une base MySQL et d'avoir quelques logs de connexions : http://blog.cpy.re/openvpn-interface-administration/.

Le billet était assez volumineux et je me suis rendu compte qu'il était pas évident de se lancer car les étapes étaient lourdes et on pouvait facilement se gourer quelque part.

J'ai donc bossé quelques temps sur le projet. J'ai amélioré l'interface web en ajoutant du bootstrap ainsi qu'un script Shell d'installation : https://github.com/Chocobozzz/OpenVPN-Admin

previsualisation

Les principes restent exactement les mêmes que dans mon premier billet avec quelques petits ajustements ici et là. Le script se contente juste d'appliquer les différentes étapes de façon automatique.

Le but de la manoeuvre est de permettre d'avoir un OpenVPN avec interface d'administration rapidement, sans devoir faire 15 copiés/collés à la minute et sans prise de tête.

Installation

Une fois les différents prérequis installés sur votre système, clonez le dépôt et lancez le script d'installation. www_base_dir correspond au dossier dans lequel l'application web sera installée (un nouveau dossier sera créé à l'intérieur), web_user et web_group correspondent à l'utilisateur et au groupe du serveur web (par exemple www-data).

$ cd ~/my_coding_workspace
$ git clone https://github.com/Chocobozzz/OpenVPN-Admin openvpn-admin
$ cd openvpn-admin
# ./install.sh www_base_dir web_user web_group

Le script vous demandera plusieurs informations afin de créer les différents certificats. Arrivé à la fin vous aurez normalement dans /etc/openvpn les différents composants nécessaires à son fonctionnement (ca.crt, ccd, dh2048.pem, scripts, server.conf, server.crt, server.key, ta.key) et l'application web contenant entre autres le dossier client-conf dans lequel devraient se trouver les fichiers dont le client aura besoin (ca.crt, client.conf, ta.key).

Une fois votre serveur web paramétré pour gérer l'application web, allez simplement sur votreurlopenvpn.com/index.php?installation afin de l'installer (création des tables, création de l'administrateur...). Vous pourrez ensuite vous identifier en tant qu'administrateur via l'interface web et ajouter un nouvel utilisateur. En effet, un administrateur ne peut pas se connecter sur le VPN il administre simplement les différents comptes et seuls les membres de ce groupe peuvent voir les logs de connexions.

previsualisation

Une fois ceci fait, n'oubliez pas de lancer le service OpenVPN.

# systemctl start openvpn

L'utilisateur peut alors récupérer les fichiers de configuration associé à son système d'exploitation :

previsualisation

En lançant le service, on lui demandera son identifiant et son mot de passe. Une fois saisi, il sera normalement capable de sillonner le web en toute sécurité :)

# systemctl start openvpn@client

Mise à jour et désinstallation

Si vous voulez mettre à jour l'interface web, il suffit de faire un git pull du dépôt et de lancer le script update.sh (très basique, il se contente de remplacer les anciens fichiers web par les nouveaux que vous venez de puller). De même il est possible de complètement désinstaller l'application web, supprimer les règles iptables, la base MySQL et les fichiers de configuration d'OpenVPN en lançant le script desinstall.sh.

I need you <3

Je n'ai pas vraiment testé à grande échelle et sur différentes distributions. De plus il doit rester quelques problèmes. N'hésitez donc pas à tester et à poster des issues si vous constatez des soucis. Pareil si vous avez des idées d'amélioration. Et bien entendu toute pull request est la bienvenue :)

P.S : Merci à mon bon vieux SpF_ pour ses nombreuses tentatives de test :p