dimanche 2 août 2015

OPENVPN: autoriser un simple utilisateur non-root à activer, choisir ou arrêter le VPN sans sudo

ATTENTION !

  • On touche ici à un fichier système qui peut être assez important. Si vous faites des gaffes, votre ordi pourrait ne plus vouloir redémarrer.
  • Sécurité: donner les droits d'édition de ce fichier à M. Dupont ou Mme Michu ouvre une porte dangereuse dans votre système. Vous voilà donc prévenu. 
  • Sécurité: si vous n'avez plus besoin de permettre l'édition de ce fichier en non-root, rétablissez sans tarder les permissions comme à l'origine.
  • N'utilisez pas Gedit pour éditer ce fichier en non-root (voir pourquoi en bas d'article)

Il vous faut:

  • Un abonnement VPN basé sur OpenVPN
  • Des fichiers *.ovpn fournis par votre fournisseur de service VPN
  • Les fichiers *.ovpn doivent être de type auto-login. Si ce n'est pas le cas, voir ici: http://tuxnotes.blogspot.com/search?q=auto+login
  • Un éditeur autre que Gedit (Leafpad est très léger et convient parfaitement)


C'est une question récurrente sur les forums, à savoir, comment autoriser un simple utilisateur (non root) à activer, désactiver le VPN et éventuellement l'arrêter s'il le désire et tout ça sans sudo. Ça peut être important car certains sites notamment bancaires peuvent ne pas accepter que vous passiez par un VPN. De plus, le serveur VPN peut tomber en panne.

Malheureusement, la réponse n'est pas simple car il faut en passer par l'édition de sudoers (entre autres) ce qui comporte toujours un risque sérieux. C'est assez compliqué à faire...

Je fais de la location saisonnière et j'ai mis à disposition de mes clients un mini-pc sous Lubuntu. Pour des raisons de sécurité, je fais passer la connexion par un serveur VPN situé aux "States". Ma méthode pour me connecter en VPN -depuis des années- n'est pas banale puisque j'utilise le fichier rc.local. Ainsi, mon VPN se lance automatiquement dès le boot de l'ordi ce qui fait que suis déjà sous VPN avant que le Bureau apparaisse.

Je précise que je réinitialise systématiquement le PC entre chaque client avec une image Clonezilla.

Le fichier (script) rc.local se trouve dans /etc et normalement, on l'édite en root:
sudo gedit (ou leafpad) /etc/rc.local

Mais justement, c'est ce que je veux éviter...
L'astuce consiste tout simplement à modifier les permissions de rc.local de manière à ce que mes clients puissent l'éditer eux-mêmes. J'ai fait ça tout simplement avec mon gestionnaire de fichiers préféré: Thunar.

  • Ouvrez Thunar ou votre gestionnaire de fichiers habituel en root:

sudo thunar


  • Si vous avez configuré les "Actions personnalisées" dans Thunar, vous pouvez aller directement à /etc et faire "ouvrir en root".
  • Toujours en root, recherchez le fichier rc.local puis clic droit » Propriétés » Permissions
  • Modifiez les permissions comme ci-dessous, laissez Root et mettez le tout en lecture & écriture
  • Enregistrez



Maintenant, on peut éditer rc.local sans sudo

Voici mon fichier rc.local perso. Il me sert à lancer mon serveur préféré automatiquement au boot. Toutes les lignes précédées d'un # (dièze) sont dites "commentées" c'est-à-dire qu'elles ne sont pas actives. On peut se servir du # pour ajouter des commentaires et même des explications ou des mises-en-garde. Pour activer un serveur, il faut supprimer le #.
Ci-dessous, seul le serveur Miami2 est actif. Il faut impérativement désactiver les autres. Si vous activez 2 serveurs en même temps, il y a de fortes chances pour que vous n'obteniez pas de connexion VPN (ou très lente).
Pour désactiver le VPN entièrement (connexion directe), commentez toutes les lignes des serveurs. C'est pas plus compliqué que cela!

#!/bin/sh -e
#
# rc.local
#----------------------------------------------------------------------------------------
# ATTENTION! VOUS ALLEZ MODIFIER UN SCRIPT SYSTEME! SOYEZ PRUDENT...
# Pour désactiver le VPN, mettez un dièze "#" devant les lignes ci-dessous ou ...
# pour activer le VPN, supprimez le dièze "#" devant 1 seule ligne ci-dessous (UNE SEULE LIGNE!).
# ENSUITE, ENREGISTREZ LE FICHIER PUIS REDEMARREZ L'ORDINATEUR.
#----------------------------------------------------------------------------------------
# sudo openvpn --config /etc/openvpn/FortLauderdale.ovpn
# sudo openvpn --config /etc/openvpn/Jacksonville.ovpn
sudo openvpn --config /etc/openvpn/Miami2.ovpn
#----------------------------------------------------------------------------------------
# ATTENTION! NE CHANGEZ RIEN D'AUTRE ! L'ORDINATEUR POURRAIT NE PAS REDEMARRER! NE PAS TOUCHER AUX AUTRES LIGNES!
# ATTENTION! ÉDITEZ CE FICHIER SEULEMENT AVEC LEAFPAD (pas avec GEDIT qui refusera de l'enregistrer)
#----------------------------------------------------------------------------------------
# Attention! exit 0 doit toujours être placé en fin de fichier comme ci-dessous:
exit 0  

Bien entendu, vous devrez adapter le contenu de ce fichier à vos besoins. Notez que l'on peut renommer sans inconvénient un fichier.ovpn. Il est conseillé d'ailleurs de simplifier et de supprimer tous les éventuels espaces dans le nom.

Comment on fait maintenant ?

Hé bien, c'est très simple. Faites un raccourci vers le fichier rc.local de manière à permettre à vos utilisateurs non-root de le modifier. Le plus laborieux sera probablement de leur expliquer comment faire et de les rassurer... Et c'est pas gagné! 


leafpad /etc/rc.local


N'utilisez pas Gedit pour éditer rc-local en non-root...
Gedit, en effet, cherche à créer un fichier de sauvegarde automatiquement et il n'y arrive pas! Du coup, il n'enregistre rien. Cette fonction peut se désactiver facilement mais je ne le conseille pas car c'est plutôt sécurisant d'avoir une sauvegarde systématique. Utilisez plutôt Leafpad (ou Mousepad) qui sont de toutes manières très légers.

Installer Leafpad

sudo apt-get install leafpad  

Aucun commentaire:

Enregistrer un commentaire

Ajoutez un commentaire mais en bon Français ou éventuellement en bon Anglais. Les commentaires en langage SMS seront supprimés.