2009-01-13 7 views
6

J'essaye d'écrire un script qui informe l'utilisateur quand quelqu'un s'est connecté sur la machine via ssh.SSH "Moniteur de connexion" pour Linux

Mon idée actuelle est d'analyser la sortie de "w" en utilisant grep dans les intervalles.

Mais ce n'est ni élégant ni performant. Quelqu'un at-il une meilleure idée de la façon de mettre en œuvre un tel programme?

Toute aide serait vraiment appréciée!

Répondre

9

sur Ubuntu (et je suppose que tous les autres distros Debian, sinon tous Linuces), les enregistrements tentatives de connexion réussies (et sans succès) du fichier:

sshd[XXX]: pam_unix(sshd:session): session opened for user XXX 

Vous pourrait mettre en place un moniteur très simple en utilisant cette commande (notez que vous devez être root pour voir le journal auth):

sudo tail -F /var/log/auth.log | grep sshd 
+0

Ou vous pouvez simplement utiliser "tail -F". –

+0

Excellent point - Je ne savais pas à propos de cette option – kdgregory

+1

J'ai connu des admins Unix qui font à peu près la même chose, pour détecter les connexions en tant que root à leur boxen. Si quelqu'un se connecte en tant que root, un e-mail est envoyé à son pager. Très utile, mais parfois amusant car chaque fois qu'ils entraient dans une maintenance sérieuse et ouvraient un shell root, ils obtenaient une page ... –

4

Configurez un canal nommé et configurez un analyseur de fichier journal pour l'écouter et lui envoyer les messages ssh. L'analyseur de fichier journal peut faire ce que vous voulez, ou signaler à un démon de le faire.

La redirection du fichier journal se fait dans un fichier de configuration dans/etc/dont le nom m'échappe maintenant. /etc/syslog.conf, je pense.

13

Paul Tomblin a la suggestion droite.

Mettre en place la journalisation dans votre sshd_config pour pointer vers un syslog que vous pouvez vous connecter séparément:

=> voir man 3 syslog pour plus d'installations. Choisissez-en un comme par exemple

# Logging 
SyslogFacility local5 
LogLevel INFO 

Configurez ensuite votre syslog.conf comme ceci:

local5.info |/var/run/mysshwatcher.pipe 

Ajouter le script que vous allez écrire/etc/inittab il continue à fonctionner:

sw0:2345:respawn:/usr/local/bin/mysshwatcher.sh 

alors écrivez votre script:

#!/bin/sh 

P=/var/run/mysshwatcher.pipe 
test -p $P || mkfifo $P 

while read x <$P; do 
    # ... whatever, e.g.: 
    echo "ssh info: $x" | wall 
done; 

Fina Lly, redémarrez votre syslogd et obtenez votre inittab rechargé (init q) et cela devrait fonctionner. Si d'autres variantes de ces services sont utilisées, vous devez configurer les choses en conséquence (par exemple newsyslogd => /etc/newsyslog.conf; Ubuntu: /etc/event.d est inittab)

Ceci est très rudimentaire et manque, mais devrait être suffisant pour vous aider à démarrer ...

plus d'infos: man sshd_config pour plus d'options de journalisation/verbosité.

+0

Oui, c'est presque exactement ce que j'ai fait lors de mon dernier job, sauf que j'ai utilisé perl pour regarder le tuyau. J'aurais posté plus de détails sauf que mon code source est à la maison. –

5

Si vous ne vous souciez pas de la façon dont ils se sont connectés (telnet/ssh), le 'dernier' utilitaire de ligne de commande Unix vous montre les dernières connexions dans la machine. Les utilisateurs distants afficher l'adresse IP

[root @ EX02 www] # dernières foo pts/1 81.31.xy Sun Jan 18 07:25 encore connecté
foo pts/0 81.31.xy Sun 18 janvier 01: 51 encore connecté
foo pts/0 81.31.x.y Sat Jan 17 03:51 - 07:52 (04:00)
bar pts/5 199.146.xy Ven Jan 16 08:57 - 13:29 (04:32

2

J'ai créé un programme (qui i Moniteur de contrôle d'authentification) qui résout la tâche décrite dans la question.

Si vous voulez, vous êtes plus que bienvenus pour le télécharger pour étudier comment je résoudre ce problème (en utilisant le log-files).

vous peut trouver Authentication Monitor librement disponible ici: http://bwyan.dk/?p=1744

+1

S'il vous plaît noter que les liens nus à votre propre site Web/produit ne sont pas encouragés ici pour deux raisons; Premièrement, une réponse devrait être affichée en tant que réponse autonome et non en tant que simple lien vers un site externe. Deuxièmement, l'auto-promotion a tendance à être désapprouvée ici, et est souvent signalée comme spam (surtout s'il n'y a aucune divulgation que vous liez à votre propre site/produit). –

+2

Andrew, coupez le gars une pause, c'est un projet open source. –

0

Nous avons eu le même problème, nous avons donc écrit notre propre script.Il peut être téléchargé à partir du github.

Espérons que ça aide :)

cheers! Ivan

+1

Ceci est un beau script bash. – bobef

+0

@bobef Thx, tu as fait ma journée :) – Sabo

Questions connexes