Banner
Banner
Banner

[TUTO] Sécurisez son PC sous Linux avec Pombo

Par - le juillet 25th, 2011

Vous avez peut-être déjà entendu parlé de Undercover, ce logiciel mouchard pour Mac qui permet de recenser les infos relatives à l’IP du voleur de PC, voire de le photographier avec sa webcam. Et bien il est un logiciel équivalent sous Linux : pombo.

Présentation de Pombo

Pombo repose sur un script Python initialement proposé par Sebsauvage (vous n’avez pas décemment le droit de ne pas le comprendre) et qui a été repris et mis à jour par BoboTiG. Ce script est publié sous licence zlib/libpng et nécessite Python 2.7 et PHP 4 (ou 5) pour fonctionner.

Celui-ci collecte :

  • Nom du système

  • Adresse IP publique

  • Date/heure

  • Information sur toutes les interfaces réseau (filaires et wireless), y compris l’adresse matérielle (MAC) du point d’accès WiFi auquel l’ordinateur est connecté.

  • Connexions réseau en cours

  • Informations sur les routeurs proches

  • La liste de tous les points d’accès WiFi proches, avec leur adresse matérielle (MAC), leur SSID et leur puissance.

  • Capture d’écran

  • Photo par la webcam (si vous en avez une)

 

Le principe de fonctionnement de Pombo est simple :

  • Sur l’ordinateur à protéger, un script Python envoi toutes les x minutes un rapports d’état du poste (contenant un rapport txt, une copie d’écran et une capture photo faite avec la webcam).

  • Sur un (ou plusieurs) serveur(s) PHP dont l’accès est protégé par mot de passe, le rapport – qui a été chiffré avec une clé gpg – le fichier est enregistré.

 

Voici un exemple de rapport par Pombo :

Pombo 0.0.6 report
------------------------------
Computer: Linux ubuntu 2.6.28-
------------------------------
Public IP: 82.124.224.94
------------------------------
Date/time: 2009-08-24 15:55:01
------------------------------
Network config:
eth0      Link encap:Ethernet
Rapport technique Capture d’écran
Photo par webcam

 

Teléchargement de Pombo

La dernière version de Pombo (version 0.0.7) est disponible au téléchargement ici. Pour un poste Linux, la solution pombo contient 3 fichiers à déployer : pombo.py et pombo.conf (partie client) et pombo.php (partie serveur).

Voici la procédure pour installer Pombo (testé sous Linux Mint 10 et Ubuntu 11.04, éprouvé par BoboTiG sous Debian) :

Installation des dépendances

Pour fonctionner, le script utilise, en plus de Python, les logiciel scrot (pour la capture décran), streamer (pour la capture par webcam), iw, netstat, ifconfig , traceroute (pour les informations relatives au réseau) et pngnq (pour réduire le poids des images png).

Il est donc nécessaire de commencer par installer ces différentes dépendances (même si par défaut la plupart sont déjà installée sur votre système), via ces commandes :

sudo apt-get install python scrot iw ifconfig streamer pngnq

 

Préparation de la partie serveur

PHP étant supporté par l’immense majorité des serveurs, Pombo récupère les rapports des postes via un script php. Ce script se nomme pombo.php. Dans le fichier pompo.php, il faut modifier la ligne $PASSWORD=’mysecret’; en remplaçant mysecret par le mot de passe désiré pour l’échange avec le client.


Puis, on upload le fichier pombo.php sur son serveur web gérant le PHP.

 

Préparation et installation de la partie client

1. Préparation de la clé gpg

Pombo crée des archives chiffrées avec une clé gpg, lesquelles seront copiées sur le serveur PHP. Nous allons donc commencer par créer une clé via cette commande :

gpg --gen-key

L’assistant de création de clé va nous demander le type de clé voulue, sa taille et sa durée de vie, les options par défaut sont très suffisantes (RSA, 2048, clé n’expire pas). Puis, l’utilitaire va nous demander un nom, une adresse mail et un commentaire. Puis, enfin, va nous demander une phrase de password. Notez cette phrase, elle sera nécessaire au déchiffrement des rapports.

Remarque : il est préférable de compliquer un maximum sa phrase de mot de passe en y mêlant majuscules, minuscules et caractères spéciaux. Par exemple : Clé DE cryPTage PouR PomBo crée en 2011!!

La clé va se générer, pour l’aider, il est conseiller d’utiliser son PC (taper des mots, jouer avec la souris, etc. etc.). Une fois la création de la clé terminée, la console devrait afficher la phrase clé 6D69703B marquée comme ayant une confiance ultime où 6D69703B est le KeyID de la clé. Notez ce KeyID, il sera nécessaire pour la suite.

On va à présent exporter la clé avec la commande gpg –export 6D69703B >clefpublique.asc, cela va créer un fichier clefpublique.asc dans votre dossier home. Cette clé sera nécessaire au déchiffrement de ses archives. Il est donc nécessaire de la sauvegarder précieusement (sur un poste autre que celui à protéger, cela va de soi).

Il faut maintenant installer en root (le script s’exécutant en tant que root) avec les commandes :

sudo su
gpg --import /chemin/vers/la/clé/publique.asc

(par exemple, dans mon cas : gpg –import clefpublique.asc )

 

2. Préparation du fichier de configuration

Les options de paramétrage de pombo se font via le fichier pombo.conf. Dans ce fichier, cherchez et renseignez les lignes suivantes :

[DEFAULT]
gpgkeyid=KeyID de la clé créée plutôt
password=Mot de passe spécifié sur le fichier pombo.php
serverurl=URL du fichier pombo.php - exemple : http://myserver.com/pombo.php
onlyonipchange=True ou False

Si la valeur de onlyonipchange est True, le script ne créera des rapports que si vous changez d’adresse IP : lors du premier fonctionnement, le script enregistrera l’IP publique dans /var/local/pombo et ne créera ensuite les rapports que si l’IP publique est différente. Si vous utilisez un réseau publique (par exemple, accès WIFI MacDo ou d’université), il est préférable de choisir la valeur False.

Remarque : il est possible de spécifier différents serveurs en les séparant pas une virgule (sans espaces).

 

3. Déploiement des fichiers

A présent, nous allons copier le fichier pombo.conf dans le dossier /etc/ :

cp pombo.conf /etc/

Maintenant, on attribue au fichier pombo.py, les droits nécessaires avec la commande :

chmod +x pombo.py

Puis on le copie dans le dossier /usr/local/bin/ :

cp pombo.py  /usr/local/bin/

 

4. Automatisation des scripts

Afin d’automatiser l’exécution des script, on crée une tâche dans la crontab. Pour cela on exécute la commande sudo crontab -e, on choisit son éditeur de texte et on insère dans la crontab la ligne suivante :

*/15 * * * * /usr/local/bin/pombo.py 2>/dev/null

 

5. Test de fonctionnement

Afin de s’assurer du fonctionnement du script pombo, on peut exécuter la commande suivante :

sudo -H /usr/local/bin/pombo.py

Si la console répond Server responded: File stored c’est que tout a fonctionné. Une archive zip chiffrée de quelques Ko a été uploadée sur le serveur PHP.

 

Déchiffrement des rapports

Le déchiffrement des archives zip des rapports se fait avec la commande :

gpg --output nomdefichierdésiree.zip --decrypt nomdelarchivecryptee.gpg

La clé de password utilisée lors de la création de la clé sera nécessaire au déchiffrement. Cela va créer un fichier zip contenant un rapport au format txt, une copie de l’écran du poste et une photo capture faite avec la webcam.

 

A présent, si un voleur dérobe votre ordinateur, vous pourrez obtenir différentes informations à son sujet (où il se connecte, son bouille, etc.) que vous pourrez communiquer à la police. Peut-être alors pourrez vous récupérer votre ordinateur ou savourer la satisfaction de savoir votre cambrioleur mis en examen. Ce qui moi m’a motivé à écrire cet article; c’est les mésaventure de Weedfast. D’ailleurs, je ne peux que vous encourager à répondre à son appel aux dons (après tout j’aimerai qu’on en ferait autant pour moi dans le même cas de figure).

Je tiens à féliciter Sebsauvage et BoboTiG pour leur dur travail pour la réalisation de Pombo. D’ailleurs, ce dernier a aussi adapté Pombo sous Windows, ce qui fera l’objet d’un prochain test. Si vous trouvez cette actuelle version compliquée d’installation, sachez que pour la version 0.8 devrait intégrer un installeur. Enfin, je tiens en la circonstance à particulièrement remercier BoboTiG pour sa disponibilité et son support.

Tuto disponible en téléchargement au format PDF :  [TUTO] Sécurisez son PC sous Linux avec Pombo (1929)

Tags: , , , , , , ,

67 commentaires to “[TUTO] Sécurisez son PC sous Linux avec Pombo”

    tuxmouraille :

    As tu ouvert l’archive pour voir si elle contient bien toutes les infos?

    pierre :

    Oui. Veux tu que je t’envoie deux fichiers par email ?
    (Un avec les infos, l’autre sans)

    tuxmouraille :

    Non c’est pas la peine.
    As tu relancé le service cron ou redémarré la machine pour voir si ça marche? Je suppose que oui.

    Ajoutes à /etc/crontab la commande suivante:

    */15 * * * * root /usr/local/bin/pombo.py 2> /var/log/pombo.log

    Laisses le tourner quelques heures. Puis donne nous les dernière lignes du fichier de log: /var/log/pombo.log

    tuxmouraille :

    Correction la commande est:

    */15 * * * * root /usr/local/bin/pombo.py 2>&1 >> /var/log/pombo.log

    pierre :

    Alors, oui, j’ai redémarré la machine plusieurs fois sans succès.

    J’ai essayé également de mettre un lien vers le script dans /etc/cron.hourly mais ça ne donne rien.

    Sinon, j’ai fait la modif que tu m’as demandée…

    root@xxx:/home/pierre# more /var/log/pombo.log
    Pombo 0.0.8
    – Checking connectivity to the internet.
    + IP has changed.
    – Collecting system info.
    ! Process failed: [‘ifconfig’, ‘-a’] (unicode() argument 2 must be string, not None)
    ! Process failed: [‘iwlist’, ‘scanning’] (unicode() argument 2 must be string, not None)
    ! Process failed: [‘traceroute’, ‘-q1’, ‘-n’, ‘www.google.com’] (unicode() argument 2 must be string, not None)
    ! Process failed: [‘netstat’, ‘-putn’] (unicode() argument 2 must be string, not None)
    – Taking screenshot.
    ! Process failed: [‘who’, ‘-s’] (unicode() argument 2 must be string, not None)
    ! Could not determine current user. Cannot take screenshot.
    – Taking webcamshot.
    – Zipping files.
    – Encrypting zip with GnuPG.
    – Sending xxx_20111110_175501.zip.gpg to xxx.free.fr …
    + Server responded: File stored.
    ^ Done.
    root@xxx:/home/pierre#

    tuxmouraille :

    Bonjour,
    Je suppose que tu n’as pas toutes ces erreurs quand tu le lance à la main?

    Je viens de le réinstaller et j’ai les même erreurs.

    pierre :

    Non, je n’ai pas ces erreurs.

    Je suis un peu rassuré que tu arrives à reproduire le problème, je me sens moins seul.

    Merci de ton temps en tout cas !

    tuxmouraille :

    Que donne la commande: python -V ?

    pierre :

    Python 2.6.6

    J’ai une debian stable, et (à l’exception du noyeau) je n’ai pas de paquets de testing à ma connaissance.

    tuxmouraille :

    Bonjour,
    « unicode() argument 2 must be string, not None »: lorsque le scripte est lancé par cron il ne détecte la locale du système, c’est de là que viens cette erreur.

    Pour les rapports incomplets avec cron et complet quand pombo est lancé à la main je n’ai pas encore trouvé.

    J’ai testé la version 0.0.6 de Sebsauvage:http://sebsauvage.net/pombo/index.fr.html . Elle ne présente pas les erreurs de rapport et d’encodage de celle de BoboTiG. Je pense que le problème viens du portage sous Windows.

    pierre :

    Tu veux que je teste la 0.0.6 ?

    BoboTiG :

    Bonjour,

    Pour le soucis d’unicode, ça devrait être réglé pour la prochaine version. Idem pour les soucis avec la webcam, l’utilisateur n’aura qu’à spécifier l’extension de l’image (jpeg, ppm, ..).

    @pierre : peux-tu me contacter par courriel que je te fasse tester la version 0.0.9 ?

    Guillaume :

    Bonjour,
    j’ai un soucis avec pombo, en fait il fonctionne à merveille tant que je le lance manuellement en ligne de commande, mais dès que je le met dans crontab, il s’exécute correctement mais il n’y a AUCUNE donnée dans le fichier texte et pas de capture d’écran ni de screenshot webcam (ça c’est normal, je n’ai pas de webcam). Je suis sous Linuxmint Debian Édition et j’ai aussi essayé sous LinuxMint11 (Ubuntu), je ne vois pas de quoi ça peu venir, si quelqu’un peu me donné une piste à suivre. Bonne journée, cordialement, Guillaume.

    TimCruz :

    @Guillaume : Tu as bien appelé la crontab avec la commande sudo crontab -e?

    Guillaume :

    Oui j’ai bien fait le crontab -e en tant que root et quand je lance manuellement le prog, toujours en root, là ça marche à merveille, mais bon le but c’est quand même de le lancé en automatique ! Merci TimCruz pour votre réponse.

    hpacoj :

    Bonjour. je viens d’installer pombo 0.0.8 sur mon netbook.
    j’ai le même problème que Guillaume et Pierre.
    j’ai bien créé la tache cron avec la commande sudo crontab -e.
    (je suis sous ubuntu 11.04) et lorsque je fait le test sudo /usr/local/bin/pombo.py tout fonctionne correctement mais lorsque je le laisse faire en « automatique » les rapports sont quasi vide et la capture d’écran ne se fait pas.

    @BoboTig: Sur ta page du dis que pour résoudre le problème « unicode() argument 2 must be string, not None » il faut mettre à jour vers la version 0.0.9 or je ne sait ou la trouver, la plus récente téléchargeable étant la 0.0.8.
    Merci pour ce petit programme bien utile dans ces moments emm…dants!

    BoboTiG :

    @hpacoj : la version 0.0.9 n’est pas encore disponible, petite erreur de ma part. Je la mettrai en ligne d’ici dimanche 🙂

Laissez un commentaire

Catégorie(s): Software, Tutos