IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

Tracer les appels aux binaires


Sujet :

Administration système

  1. #1
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut Tracer les appels aux binaires
    Salut tous,

    voila, j'aimerai savoir si on peut tracer les appels aux binaires contenus dans /usr/bin par exemple ?

    En fait, mon problème est que j'aimerai tracer l'activité des utilisateurs qui se connectent en ssh sur une machine. Syslog, c'est pas mal mais par exemple, je ne vois pas ce qu'il se passe lors de l'execution d'un script, ou du lancement d'une commande dans un emacs etc... Syslog ne voit que l'appel à emacs ou le lancement du script, mais pas ce qu'il se passe à l'intérieur du script. Si l'utilisateur fait des actions non autorisées, je ne peux pas le voir. Je précise que l'utilisateur est obligé de lancer sudo pour invoquer des commandes dans son shell.

    Je suis sous Debian 3.1

    En esperant que vous saurez me répondre.

    @ +

  2. #2
    Membre habitué Avatar de lu6fer
    Inscrit en
    Avril 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 141
    Points : 175
    Points
    175
    Par défaut
    je dirais, vérifie le niveau de verbosité dans syslog, peu être cela résoudra t il ton problème.

    Sinon j'ai une autre solution, c'est un peut barbare, voir même beaucoup, mais bon.

    tu copie l'intégralité de ton répertoire dans un autre, tu créer autant de fichier shell, qu'il y a d'exécutable dans ton répertoire déplacé, est dans chaque fichier shell (sans extension) tu appel l'exécutable en question avec une écriture dans un fichier de log contenant le nom du l'utilisateur qui l'a lancer et autre.

    personne ne verra la différence, et tu aura tes info.

    bon après, c'est quand même très barbare, et je pense qu'avec syslog tu devrai t'en sortir
    "Le logiciel c'est comme le sexe, c'est meilleur quand c'est gratuit"
    Linus TORVALD

  3. #3
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut
    C'est un tout petit peu barbare... :p

    Surtout que la solution que je cherche serait à déployer sur un parc informatique de plusieurs machines...

    Pour le niveau de verbosité de Syslog, justement, je ne comprends pas. J'ai mis
    et ca ne me crache vraiment pas grand chose.

    L'idéal, ca serait de trouver une solution avec le syslog, en tout cas, ne pas toucher aux binaires du système.

    Je me suis dit que comme Linux se basait sur des appels à des fichiers binaires, il devait bien y avoir moyen de tracer l'execution des binaires...

  4. #4
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    un truc de ce genre ?
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  5. #5
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut
    C'est pas mal, le probleme, c'est que ca ne marche que pour le shell ou il est lancé ?
    Dans une autre fenêtre, je lance nano par exemple, et ca ne me l'attrape pas

  6. #6
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    simple copies tous les binaires dans /usr/bin/reel
    et apres remplace tous les binaires dee /usr/bin par un lien vers un script qui fait


    echo lance truc >> log
    truc

    bien sur c'est long a faire alors utilises un script pour l'automatiser

  7. #7
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut
    Malheureusement pour moi, ca n'est meme pas envisageable.

    La ferme de serveurs est conséquente, et surtout, je n'ai pas accès aux machines.
    Je ne peux modifier que la configuration du système (sudoers, syslog et écriture de script). Non pas la structure du système.

    Genre, ecrire un script de supervision du système, c'est faisable, j'ai les accès root.

  8. #8
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    plus simple et beaucoup plus propre....

    tu peux faire un petit script qui fait des ps sur une liste de binaires et awk le user


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i in $(cat liste-bin) ; do  echo $i" "$(ps -ef | grep $i | awk '{print $1"   "$5}') >> log ; done
    #triage des infos 
    #mail d'alerte eventuelle

  9. #9
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Oui mais avec ce genre de surveillance tu peux louper des programmes qui se sont exécutés entre deux commande ps non ?

  10. #10
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut
    Yes, justement c'est ce que je voudrais éviter...

  11. #11
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    c'est vrai mais un binaire qui dure moins de 1 ou 3 secondes c'est ls ou cd....

    et tu auras le même problème si tu utilises lsof et consort ou si tu analyses en permanance le contenu de /proc/[0-9].*[0-9]/cmdline

    entre chaque meusures tu as tjrs le delai de traitement....

  12. #12
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Il n'y a pas moyen d'exploiter les historiques du shell ? En empêchant l'utilisateur de le vider ?

  13. #13
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par valefor Voir le message
    Il n'y a pas moyen d'exploiter les historiques du shell ? En empêchant l'utilisateur de le vider ?
    Non car on ne voit que le lancement du script et non pas ce qu'il exécute réellement...

    Pour la solution de frp31
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i in $(cat liste-bin) ; do  echo $i" "$(ps -ef | grep $i | awk '{print $1"   "$5}') >> log ; done
    #triage des infos 
    #mail d'alerte eventuelle
    ca ne marche pas bien.
    J'ai fait le test avec un script qui fait 2 ls et un sleep d'une seconde et au final, ca ne m'attrape que les sleep et parfois les ls.

    Peut être en cherchant du côté du /proc/* ? Ca change quelque chose au niveau des performances ?

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 69
    Points : 62
    Points
    62
    Par défaut
    Comment dire nimporte quoi:

    Hacker les sources de bash (ou sh, zsf, peu importe) pour qu'il fasse un log exaustif et déployé la version modifié?

  15. #15
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut
    malheureusement, je recherche une solution pour un déploiement dans le milieu pro... donc performant et securise. j ai trouvé une piste du coté de Grsecurity.

    Probleme ca impose une recompilation du noyau

  16. #16
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut
    Si à la base ta sécurité est bien faite, tu n'as pas besoin de ça.

    En fait, ce que tu veux faire, revient à être informé pour une bonne partie des appels systèmes réalisés par les programmes.
    strace te permet de le faire, mais ça ralenti l'exécution des programmes et c'est assez difficile à faire de manière automatique.

    Au final, grsec me semble la meilleure solution.
    Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.

  17. #17
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut
    Alors le problème de strace, c'est que non seulement c'est difficile à mettre en place, mais en plus il faut reformater les traces !

    Je pense avoir trouvé mon bonheur du côté de SNARE ( http://www.intersectalliance.com/projects/index.html )
    J'ai réussi a tracer les appels à ls / echo situés dans un script.sh
    Et aussi l'execution de commande dans le shell de vi

    Ca demande une petite configuration mais ca marche vraiment pas mal.
    Et ca génére des logs complets et bien formatés.

    Que demander de plus.

    En plus, l'agent (car il y a aussi un serveur) est gratuit et multiplateforme.

    Considérons ce problème comme résolu.

    Merci pour le coup de main.

    @ bientot.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Les appels aux fonctions ne fonctionnent pas
    Par MaPommeTao dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 16/08/2011, 22h33
  2. preferer les appels aux fonctions const
    Par yan dans le forum C++
    Réponses: 12
    Dernier message: 29/08/2008, 10h15
  3. Tracer les accés aux tables
    Par shaftmanpro2 dans le forum Forms
    Réponses: 3
    Dernier message: 02/04/2008, 10h42
  4. Réponses: 10
    Dernier message: 23/06/2007, 16h13
  5. tracer les appels des applications
    Par wwave dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 06/07/2006, 11h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo