Il y a plusieurs personnes avec un accès root à une VM particulière dont je suis responsable. Je voudrais savoir quelle adresse IP a été utilisée pour se connecter à root.
Il y a plusieurs personnes avec un accès root à une VM particulière dont je suis responsable. Je voudrais savoir quelle adresse IP a été utilisée pour se connecter à root.
Réponses:
Vous pouvez utiliser la last
commande pour obtenir ces informations
# last|head
phemmer ssh 192.168.0.24 Wed Aug 20 21:08 - 21:08 (00:00)
phemmer pts/13 192.168.0.2 Wed Aug 20 14:00 - 18:43 (04:43)
phemmer ssh 192.168.0.2 Wed Aug 20 14:00 - 18:43 (04:43)
phemmer ssh ::1 Wed Aug 13 23:08 - 23:08 (00:00)
phemmer ssh ::1 Wed Aug 13 23:08 - 23:08 (00:00)
phemmer ssh ::1 Wed Aug 13 23:07 - 23:07 (00:00)
phemmer pts/15 192.168.0.20 Thu Aug 7 19:00 - 19:00 (00:00)
phemmer ssh 192.168.0.20 Thu Aug 7 19:00 - 19:00 (00:00)
phemmer :0 Wed Jul 30 20:06 still logged in
reboot system boot 3.13.2-gentoo Wed Jul 30 20:05 still running
Comme vous pouvez le voir sans aucun doute, la 3ème colonne affichera l'adresse IP distante en cas de connexion SSH.
last
utilise le /var/log/wtmp
fichier, donc cette méthode est similaire à la réponse de G-Man (juste un peu plus simple car vous n'avez pas besoin de spécifier le chemin d'accès au fichier).
Cela dépend de votre distribution ou de votre système d'exploitation. sshd
enregistrera chaque connexion quelque part et inclura l'adresse IP appropriée dans la connexion dans un format comme celui-ci:
Aug 20 15:56:53 machine sshd[2728]: Accepted publickey for root from 192.168.1.2 port 49297
Cette partie est cohérente, mais la façon dont vous y arrivez peut varier. Sur les systèmes basés sur systemd
, utilisez journalctl
:
journalctl /usr/bin/sshd
pour répertorier tous les messages de journal de l' sshd
exécutable. Vous pouvez le récupérer pour les connexions root ou d'autres critères, et le limiter par date avec --since
et --until
(voir man journalctl
).
Alternativement et historiquement, les messages seront connectés (généralement) quelque part /var/log
. Généralement, les sshd
messages entrent /var/log/auth.log
, mais le fichier exact peut varier considérablement. Quel qu'il soit:
grep sshd /var/log/auth.log
vous donnera une sortie largement équivalente à la journalctl
version.
La commande
who /var/log/wtmp
devrait montrer des informations comme ce qui who
montre, mais remontant dans le temps.
last
Vous ne devez pas autoriser les utilisateurs à l'utiliser ssh
en vous connectant directement en tant que root (en utilisant le mot de passe root ou un certificat /root/.ssh/authorized_keys
) si vous souhaitez vérifier qui s'est connecté en tant que root. Utilisez plutôt un compte pour chaque personne et laissez-les utiliser sudo
pour obtenir les autorisations root. De cette façon, vous trouverez dans le journal approprié (la position du fichier journal dépend de la distribution que vous avez, vous pouvez même configurer le démon de journal pour envoyer les messages à une autre machine) le message user john ran the command 'sudo rm -rf /'
. Eh bien, peut-être que vous ne trouverez pas facilement cette commande dans les journaux.
sudo
Puissance. Il n'y a jamais de raison réelle de partager un compte entre deux personnes, mais une personne peut avoir deux comptes si nécessaire.
root
compte.
D'après la brève description que vous avez fournie, il semble préférable de mettre en place un système de surveillance des journaux. Cela vous aiderait à surveiller les connexions, à créer des alertes, à comparer les données de plusieurs jours, et oui bien sûr des graphiques pour tout cela.
Mais si vous avez besoin de le surveiller temporairement , vous pouvez utiliser la last
commande.
last | grep root | grep -v tty | awk '{print $3}'
Cela vous donnera la liste de IPs
ou Hostnames
d'où l'utilisateur root s'est connecté.
sudo less /root/.bash_history