Surveillance de l'activité sur mon ordinateur.

16

J'ai récemment découvert que quelqu'un utilisait mon ordinateur sans consentement, parcourant des dossiers, etc.

Je pouvais changer tous mes mots de passe immédiatement, mais je suis curieux de savoir ce que recherchait la partie intrusive. Je voudrais donc mettre en place un piège (sourire maléfique).

Quel logiciel surveillera toute activité sur mon ordinateur? Bien que je sache que la capture de mon écran fonctionnera ici. Je préfère utiliser un fichier journal.

Par exemple:

/var/log/activity.log

[1er août 2010 20:23] / usr / bin / thunar accédé / multimédia / cctv-records /
[1er août 2010 20:25] / usr / bin / mplayer consulté /multimedia/cctv-records/00232.avi
[3 août 2010 02:34] / usr / bin / thunderbird a été exécuté
[3 août 2010 03:33] session ssh entrante du 12.32.132.123

Les activités que j'aimerais enregistrer sont:

  • Accès aux fichiers et dossiers sur le système de fichiers
  • Les commandes s'exécutent (à partir de la console ou autre)
  • Sessions utilisateur (connexion, sessions ssh et tentatives infructueuses)
Stefan
la source
/var/log/auth.log devrait couvrir votre troisième puce. Les autres vont être un peu moins triviaux.
Cascabel
@jefromi mon auth.log enregistre uniquement les tentatives de commande sudo et su ... pas de connexion :(
Stefan

Réponses:

8

Vous pouvez utiliser le mécanisme intégré au noyau inotify pour surveiller les fichiers auxquels vous accédez.

Vous devez d'abord vérifier si inotifyest activé dans le noyau:

pbm@tauri ~ $ zcat /proc/config.gz | grep CONFIG_INOTIFY
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y

La prochaine chose à faire est d'installer inotify-tools. Instructions pour diverses distributions que vous pouvez trouver sur la page du projet - elles devraient être dans les référentiels de toutes les distributions principales.

Après cela, inotify est prêt à fonctionner:

inotifywait /dirs/to/watch -mrq

( m= ne quitte pas après un événement, r= récursif,q = silencieux)

Par exemple - sortie après ls /home/pbm

pbm@tauri ~ $ inotifywait /bin /home/pbm -mq 
/bin/ OPEN ls
/bin/ ACCESS ls
/bin/ ACCESS ls
/home/pbm/ OPEN,ISDIR 
/home/pbm/ CLOSE_NOWRITE,CLOSE,ISDIR 
/bin/ CLOSE_NOWRITE,CLOSE ls

L'important est de définir correctement les répertoires de surveillance:

  • ne regardez pas /récursivement - il y a beaucoup de lecture / écriture /devet/proc
  • ne regardez pas votre répertoire personnel récursivement - lorsque vous utilisez des applications, il y a beaucoup de répertoires de configuration de lecture / écriture dans les applications et de profils de navigateur

Il /proc/sys/fs/inotify/max_user_watchesy a une option de configuration qui montre combien de fichiers peuvent être regardés simultanément. La valeur par défaut (pour Gentoo) n'est pas si élevée, donc si vous définissez watcher, /home/vous pourriez dépasser la limite. Vous pouvez augmenter la limite en utilisant echo(accès root nécessaire).

echo 524288 > /proc/sys/fs/inotify/max_user_watches

Mais avant cela, vous devriez lire les conséquences de ce changement .

Options qui pourraient vous intéresser:

  • -d = mode démon
  • -o file = sortie dans un fichier
  • --format = format spécifié par l'utilisateur, plus d'informations dans man inotifywait
  • -e EVENT= Quel événement doit être contrôlé (par exemple access, modify, etc., plus d' infos dans man)
pbm
la source
Pour que le paramètre dure entre les réinitialisations du système, vous pouvez le faire sur Debian echo 524288 >> /etc/sysctl.conf && service procps restart. Quel est l'équivalent dans Gentoo?
tshepang
Je pense que tu veux dire echo "fs.inotify.max_user_watches = 524288" >> /etc/sysctl.conf. Dans Gentoo, vous pouvez utiliser la même méthode, mais elle sysctl.confprovient du /etc/init.d/bootmiscscript init.
pbm
1
en fait c'est /etc/init.d/sysctl.
OneOfOne
7

Est-ce que l'autre gars est sur toi? S'il a un accès physique ou un accès root, il peut effacer toutes ses traces et même planter un bug à espionner vous . En revanche, certaines traces sont pénibles à effacer, et il est difficile de penser à tout.

Diverses choses sont déjà enregistrées dans les journaux système, généralement dans /var/log(certains systèmes utilisent un emplacement différent tel que /var/logsou /var/adm). Dans une configuration normale, toutes les connexions et montages sont enregistrés, entre autres. Si vous craignez que les journaux soient effacés, vous pouvez configurer la journalisation à distance (la procédure à suivre dépend de l'implémentation de Syslog, mais il faut généralement une ou deux lignes à modifier dans un fichier de configuration sur l'expéditeur et sur le récepteur).

Si vous ou votre distribution n'avez pas désactivé cette fonctionnalité, chaque fichier a un temps d'accès («atime») qui est mis à jour chaque fois que le fichier est lu. (Si le système de fichiers est monté avec l' option noatimeou relatime, atime n'est pas mis à jour.) L'atime peut être simulé touch -a, mais cela met à jour le ctime, donc il laisse une trace. (Même root ne peut pas supprimer directement cette trace, vous devez contourner le code du système de fichiers.)

Divers programmes ont un historique de session . Il est facile d'enlever ou de simuler, si l'intrus s'est souvenu de le faire. Bash conserve ~/.bash_history, les navigateurs ont tendance à écrire beaucoup de choses dans leur répertoire de profils, etc. Vous pouvez également trouver des erreurs ou des avertissements dans ~/.xsession-errorsou dans /var/log/Xorg.0.logun autre emplacement dépendant du système.

De nombreux appareils ont une fonction de comptabilité des processus ¹. Voir par exemple le manuel des utilitaires de comptabilité GNU , l'entrée dans le manuel FreeBSD ou le guide Linux ou le guide Solaris . Une fois activé, il enregistre quel utilisateur a lancé quel processus quand (il enregistre les execveappels), et peut-être un peu plus. Il y a beaucoup d'informations intéressantes qu'il ne consigne pas, comme les fichiers auxquels le processus accède.

Si vous souhaitez surveiller tous les accès à un système de fichiers, vous pouvez le fournir via logsfs . Il est très facile de remarquer si le gars pense à regarder.

Il existe des programmes de journalisation plus complets, mais ils peuvent nécessiter une prise en charge supplémentaire du noyau. Sur Solaris, FreeBSD, NetBSD et Mac OS X, il y a dtrace (il y a un port Linux en cours mais je ne sais pas s'il a atteint un stade utilisable). Vous pouvez également tracer des processus spécifiques via une interface vers l' ptraceappel système, par exemple stracesous Linux; cela peut induire un ralentissement notable.

¹ Quelque chose qui n'est pas sur Wikipedia? Non, c'est un discours fou.

Gilles 'SO- arrête d'être méchant'
la source
1

Jetez un œil à Fail2ban et DenyHØsts .

iamsid
la source
1
Fail2ban examine les journaux d'accès pour effectuer certaines actions (par exemple, interdire une adresse IP), mais il ne génère pas ce type de journaux d'accès. DenyHosts s'appuie sur TCP Wrappers pour interdire ip, encore une fois, ce n'est pas lié à l'OP.
Barthelemy
1

Ce n'est pas exactement ce que vous recherchez, mais certaines applications conservent une liste des fichiers récemment consultés. De plus, GNOME conserve cette liste, accessible depuis son panneau.

Un autre correctif consiste à utiliser GNOME Activity Journal , mais la dernière fois que j'ai vérifié, il ne conservait pas d'enregistrement de l'activité CLI et n'était intéressé que par les activités liées aux fichiers (lecture, édition), ignorant les autres activités.

Vous pouvez également regarder à l'intérieur du /var/logrépertoire où un tas de programmes stockent leurs journaux.

tshepang
la source
1

En supposant assez de naïveté du côté de votre attaquant, vous pouvez simplement jeter script -qft $USER-$$ 2> $USER-$$-timedans son / votre script de connexion approprié pour surveiller ses interactions terminales et rejouer avec les commandes de script appropriées.

Pour surveiller l'accès au niveau des fichiers, je recommande d'attacher un fichier strace -fe openavec la journalisation appropriée au sshd et de filtrer les sessions de connexion (ou peut-être qu'il est préférable de le faire à partir de. Avertissement: énormes sorties, car faire quoi que ce soit sur un système moderne touche beaucoup de fichiers Si vous souhaitez simplement surveiller des fichiers spécifiques, jetez un œil à auditd et à son infrastructure de support.

Les sessions et les tentatives de connexion peuvent être collectées à partir de syslog selon d'autres réponses.

Thomas Themel
la source