Comment puis-je suivre qui SSH est dans ma machine Linux?

23

J'utilise Ubuntu 10.04. Existe-t-il un moyen d'obtenir un rapport quotidien de qui s'est connecté à la boîte, à quelle heure et même - cela peut être trop demander - un rapport des commandes qu'ils ont utilisées? Il s'agit d'une boîte à faible utilisation et je pense donc que ce serait une bonne façon de voir quelle activité s'y déroule.

Dans le même ordre d'idées, j'ai entendu qu'il n'était pas possible de suivre quand les choses se font sur la boîte via des shells non interactifs, tels que rsync ou simplement exécuter à distance des commandes uniques via ssh. Est-ce vrai ou existe-t-il un moyen de consigner et de suivre cela également?

cwd
la source

Réponses:

21

Les informations de qui s'est connecté quand sont disponibles dans /var/log/auth.log(ou dans d'autres fichiers journaux sur d'autres distributions). Il existe plusieurs programmes de surveillance des journaux qui peuvent extraire les informations que vous configurez comme pertinentes. Sur tout système sain, chaque authentification utilisateur est enregistrée.

Pour consigner chaque appel de commande (mais pas leurs arguments), utilisez la comptabilité des processus , fournie par le acctpackage Installer acct sur Ubuntu. Si le sous-système de comptabilité est opérationnel, lastcommaffiche des informations sur les processus terminés.

Gilles 'SO- arrête d'être méchant'
la source
3
/var/log/secure.log est un autre fichier journal commun
Adrian Cornish
9

Vous pouvez également utiliser whoou wpour voir qui est actuellement connecté au système, y compris les utilisateurs SSH.

Tim
la source
10
lastpourrait être une meilleure option pour ce que le PO recherchait ...
jasonwryan
1
effectivement. "last" est la commande que vous souhaitez.
Sirex
1
C'est une bien meilleure réponse que celle sélectionnée.
PaulBGD
0

Habituellement, lorsque quelqu'un se connecte à un système utilisateur, dans / var / log / messages, il est imprimé comme suit:

sshd[18468]: Accepted keyboard-interactive/pam for root from 134.64.66.666 port 49867 ssh2

Alors, grep juste les messages comme:

grep -E "Accepted keyboard-interactive/pam for" /var/log/messages
RKum
la source
0

Vous pouvez également modifier le shell bash pour faire un rsylog.

En effet, vous configurez rsyslog sur un hôte distant pour accepter des connexions spécifiques. Modifiez ensuite le shell de l'hôte sur lequel vous souhaitez surveiller - en compilant votre version, avec une version sur laquelle les options suivantes sont activées:

vi config-top.h
#define SYSLOG_HISTORY
#if defined (SYSLOG_HISTORY)
#  define SYSLOG_FACILITY LOG_USER
#  define SYSLOG_LEVEL LOG_INFO
#endif

Une fois compilé avec cette option activée, vous pouvez remplacer bash par cette version OU demander aux utilisateurs d'être connectés à celle-ci en redirigeant leurs connexions vers celle-ci.

Pour plus d'informations:

https://www.pacificsimplicity.ca/blog/remote-logging-using-syslog-and-logging-shell-commands-remotely

mcdoomington
la source
Bien. Je vais le mettre à jour.
mcdoomington