Mail2sh, l'article dans la presse

De Site à Mans
Révision datée du 29 novembre 2010 à 13:03 par imported>WikiSysop
Aller à la navigation Aller à la recherche

Mail2shell ou comment contrôler son ordinateur à distance par e-mail !

L'idée est déconcertante : un administrateur contrôle un serveur distant par le biais d'un Sheil initié par courrier électronique. Génial !
Par Xavier Leclercq


Posons le problème...

Imaginons la situation suivante : vous êtes chez vous et désirez accéder au serveur passerelle de votre école ou entreprise.
Le moyen le plus simple est sans doute de créer un tunnel ssh sécurisé. Seulement, son fichier /etc/hosts.allow n'autorise que certaines IP fixes à accéder à un service ssh :
:sshd daemon (adresses bidons)
:sshd: 192.168.0.0/255.255.255.0 195.248.8.0 212.88.242.0 212.11.38.0

Le mécanisme tcp-warpers rejettera impitoyablement une tentative d'accès non autorisée au service ssh en envoyant un e-mail à l'administrateur pour l'en avertir (/etc/hosts.deny) :

sshd:ALL:spawn = (/usr/sbin/safe_finger-l@%h l\
/usr/bin/Mail -s %d-%h-%u.deny root) &

Ce qui donnera par exemple :
:sshd-212.125.94.152-root.deny
Bref, nous sommes ici confronté à un problème : comment accéder au serveur lorsque le client n'a pas d'IP fixe ?
Plusieurs solutions sont possibles comme la création d'un canal VPN ou l'administration par https... Mail2sh nous propose une autre voie : le contrôle à distance par e-mail. Cette solution est très séduisante : vous pouvez l'utiliser quel que soit l'endroit ou vous vous trouvez, sans aucune modification de la configuration du client (le seul critère étant de pouvoir accéder au courrier électronique)


Le principe

Vous envoyez un courrier à une adresse contrôlée par votre serveur passerelle. Cette adresse devra être spécifique à cette utilisation.
Le premier réflexe sera de la baptiser mail2sh@VotreNomdeDomaine mais il est préférable de la nommer autrement pour une raison de sécurité.
A la réception du courrier, l'utilitaire mail2sh est appelé. Il vérifiera la légitimité du courrier. Le mécanisme d'authentification compare le nom de l'utilisateur et son mot de passe au couple username / password de son fichier de configuration. En cas de non rejet, Mail2sh ouvre un Shell et exécute les commandes qui se trouvent à la suite dans le corps du message. Ces dernières seront toutes soumises à l'interpréteur de commandes que l'utilisateur emploie. Attention : les utilisateurs référencés dans le fichier de configuration (mail2sh.conf) ont le droit d'utiliser mail2sh mais ceux-ci devront aussi exister obligatoirement dans /etc/passwd.


Mise en place

Télécharger la version 1.1 à l'adresse http://mans.gyptis.org/ce_que_je_fais/logiciels_softs/mail2sh/. Le logiciel est disponible sous format RPM, deb ou tgz. L'auteur, José Mans, que j'ai contacté m'a affirmé que bientôt les sources PERL de Mail2sh seraient disponibles. Pour l'instant, vous pouvez utiliser gratuitement mail2sh dans un but non commercial.
Mail2sh v1.1 n'est pas sous licence GPL.

Voici les opérations à effectuer

  1. Lancez la commande visudo pour y ajouter la ligne :
    mail2sh ALL = (root) NOPASSWD: /var/lib/mail2sh/mail2s
  2. Créez une adresse de courrier électronique, par exemple mail2sh@qqchose.
  3. Editez (ou créez) le fichier forward (sendmail ou qmail) situé sous l'arborescence de l'utilisateur mail2sh pour y ajouter
    vi /home/e-smith/files/users/ mail2sh/.qmail
    |/usr/bin/sudo /var/lib/mail2sh/mail2sh
    Le contenu du courrier électronique reçu est envoyé à mail2sh qui est exécuté en tant que root (sudo) Editez le fichier
    /etc/mail2sh/mail2sh.conf
    single user on
    user default root
    site xl
    password ceciestmonmotdepasseenclair
    reply-to xI@endymion.homelinux.com

    L'utilisateur xl doit exister mais ne doit pas nécessairement avoir de concordance de mot de passe entre /etc/passwd et mail2sh.conf.
  4. Vérifiez le fichier /etc/passwd : la possibilité d'ouverture d'un Shell est ici obligatoire. Autrement dit, si vous avez quelque chose comme:
    xl:x:5021:5021:xl xl:/home/e-smith/files/users/xl:/bin/false
    Transformez la ligne en
    xl:x:5021:5021:xl xl:/home/e-smith/files/users/xl:/bin/bash

Un premier essai

Editez un fichier «mail» qui contiendra par exemple

site xl ceciestmonmotdepasseenclair
pwd
ls
mail root < /etc/mail2sh/mel
quit

Si vous n'indiquez pas un bon mot de passe (identique à celui de mail2 sh.conf), vous recevrez le message suivant

« Hello, authentification error, please contacte your administrator
thx
mail2sh (c) José Mans (mail2sh-list®gyp-tis.org)
http://mans.gyptis.org/ »

Il est configurable car il s'agit du fichier /etc/mail2sh/mail2sh.noauth.

Si par contre, l'authentification se passe convenablement, deux courriers sont envoyés. Le premier est le résultat des commandes Shell (Is listera les fichiers de ~xl). Le deuxième est le contenu du fichier «mail» (résultant de la commande mail root < /etc/mail2sh/mel)


Comment renforcer la sécurité ?

Il existe un moyen de renforcer la sécurité en utilisant GPG. Cet utilitaire est normalement installé d'office sous Linux. Vous devez le lancer une
première fois pour l'initialiser (sans oublier de modifier le fichier options). Puis vous créez vos clés et encodez le fichier «mail» d'essai.
Mais comment décoder le courrier électronique ?

(echo "votrepassphrase"; cat mel.gpg) | gpg -batch -passphrase-fd 0

Une solution possible est de récupérer et d'installer «pgp-mine-handler.pl» à l'adresse : www.david-guembel.de/gpg-handler.html

Le principe est de créer un tube qui décodera le courrier électronique codé gpg

cat mel.gpg | /usr/bin/pgp-mime-handler.pl | more

Il ne vous reste plus qu'à transformer votre fichier .forward ou .qmail vi /home/e-smith/files/users/ mail2sh/.qmail

l/usr/bin/pgp-mime-handler.pl | /usr/bin/sudo /var/lib/mail2sh/mail2sh

Il y a quand même un inconvénient : la «passphrase» est demandée pour décoder le courrier électronique. Comme il s'agit d'un processus batch, nous ne pouvons employer l'utilitaire «kdialog» appelé par défaut par le script Perl «gpg-mime-handler.pl» Il sera nécessaire de remplacer cet appel par:

$main::dialog_program = "cat /path/to/the/passphrase.txt";

Ce qui malheureusement représente un bien faible niveau de sécurité !


Améliorations

A propos de GPG, José Mans déclare : «Disons que GPG peut coder les messages ou envoyer une signature numérique codée avec la clé privée.
Mails2sh emploiera toujours la même clef publique, soit pour vérifier le destinataire, soit pour décoder le mail ; c'est en fonction de ce que voudra faire
celui qui expédie le courrier... »
Mail2sh est un utilitaire quasi unique en son genre. Félicitations à son auteur d'avoir eu cette idée. Mais, attention aux aspects de sécurité que son utilisation implique!