Comment déterminer l'adresse IP de qui s'est connecté à Root?
15
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.
Si quelqu'un se connecte en tant que root, il peut faire à peu près tout ce qu'il veut pour supprimer tous les journaux dont il a besoin ...
Comintern
4
En guise de remarque, vous devez interdire la connexion directe root. C'est un gros problème de sécurité.
fedorqui
Réponses:
15
Vous pouvez utiliser la lastcommande 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.
lastutilise le /var/log/wtmpfichier, 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. sshdenregistrera 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' sshdexécutable. Vous pouvez le récupérer pour les connexions root ou d'autres critères, et le limiter par date avec --sinceet --until(voir man journalctl).
Alternativement et historiquement, les messages seront connectés (généralement) quelque part /var/log. Généralement, les sshdmessages 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 journalctlversion.
Belle astuce, mais IMO, vous feriez mieux d'utiliser simplementlast
Creek
7
Vous ne devez pas autoriser les utilisateurs à l'utiliser sshen 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 sudopour 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.
Tout d'abord, cela ne répond pas à la question. Deuxièmement, vous devez toujours avoir un moyen de sauver le système. Que se passe-t-il lorsque vous utilisez l'authentification LDAP et que votre serveur LDAP meurt? Comment allez-vous vous connecter à la boîte?
Patrick
4
@Patrick Premièrement, la question commence par "plusieurs personnes ont un accès root à une machine virtuelle particulière", il est donc logique de suggérer que la bonne approche n'est pas l'audit IP mais l'audit des utilisateurs. Deuxièmement, le problème que vous posez n'est pas lié: si une personne est censée accéder à une machine en cas d'urgence de LDAP qui ne fonctionne pas, elle devrait avoir son propre compte local, et si elle est censée faire du travail d'administration dans une telle urgence, le compte local doit avoir sudoPuissance. 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.
pqnet
La question n'est pas de savoir comment changer leur conception, c'est de savoir comment obtenir une adresse IP. Quant à votre autre solution, vous avez maintenant un compte local (éventuellement plusieurs), avec un mot de passe qui n'expire jamais. Je ne considérerais pas cela comme une amélioration.
Patrick
@Patrick que ce soit. Vous gérez votre propre serveur, je gère le mien. Vous avez fait valoir votre point de vue, les gens liront votre commentaire et décideront.
pqnet
1
@Amélioration de Patrick par rapport à quoi? Avoir des comptes d'utilisateurs séparés pour des personnes distinctes est presque certainement une amélioration par rapport au fait que plusieurs personnes partagent un même rootcompte.
jw013
0
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 lastcommande.
last | grep root | grep -v tty | awk '{print $3}'
Cela vous donnera la liste de IPsou Hostnamesd'où l'utilisateur root s'est connecté.
sudo less /root/.bash_history
Réponses:
Vous pouvez utiliser la
last
commande pour obtenir ces informationsComme 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).la source
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:Cette partie est cohérente, mais la façon dont vous y arrivez peut varier. Sur les systèmes basés sur
systemd
, utilisezjournalctl
: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
(voirman journalctl
).Alternativement et historiquement, les messages seront connectés (généralement) quelque part
/var/log
. Généralement, lessshd
messages entrent/var/log/auth.log
, mais le fichier exact peut varier considérablement. Quel qu'il soit:vous donnera une sortie largement équivalente à la
journalctl
version.la source
La commande
devrait montrer des informations comme ce qui
who
montre, mais remontant dans le temps.la source
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 utilisersudo
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 messageuser john ran the command 'sudo rm -rf /'
. Eh bien, peut-être que vous ne trouverez pas facilement cette commande dans les journaux.la source
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.Cela vous donnera la liste de
IPs
ouHostnames
d'où l'utilisateur root s'est connecté.la source