Qui est connecté à mon serveur vsftpd?

Bonjour à tous,
je viens de mettre en place sous Etch un serveur ftp avec vsftpd, je souhaite povoir interrogé celui-ci, afin de savoir qui est connecté? il semble que celà soit faisable par netstat, mait j’obtient qu’une longue liste d’informations qui doit être de l’hébreux je présume, mais aucun login des comptes utilisés, est-il possible d’obtenir une liste exploitable des comptes connectés?

Merci d’avance pour toute aide 8)

Philippe

Bonjour,

Tu peux déjà demander un fichier log:

Dans le fichier de configuration /etc/vsftpd.conf:

[code]syslog_enable=NO —> pour avoir un fichier log spécifique

log_ftp_protocol=YES —> pour avoir les traces des demandes-réponses du protocole

xferlog_enable=YES —> pour avoir l’activité de téléchargement (dans les 2 sens)

vsftpd_log_file=/var/log/vsftpd.log —> pour préciser le fichier log à utiliser
[/code]

Cela donne beaucoup de renseignements, parce que toutes les commandes ftp sont mentionnées.

Mais tu peux en avoir moins Par exemple, si tu laisses la ligne “log_ftp_protocol=YES” commentée, tu as quelque chose comme ça pour l’établissement de la connexion (“ftpweb” est un nom d’utilisateur, et “192.168.0.99” est la machine appelante).

Mon Aug 27 18:51:42 2007 [pid 18693] CONNECT: Client "192.168.0.99"
Mon Aug 27 18:51:42 2007 [pid 18692] [ftpweb] OK LOGIN: Client "192.168.0.99"

Salut tyrtamos,
Dabord, merci pour le temps que tu m’accordes.Le problème qu’il y a lorsque l’on interroge le fichier log, c’est que l’on récupère la liste des derniers connectés, mais rien n’indique qui le sont encore. Ce que je cherche, c’est plotôt une procédure qui permet de récupéré les logins des comptes utilisés à un instant t, ça se raproche plus du temps réel.

Merci encore 8)

Philippe

Bonsoir
j’ai pas de serveur vsftpd sous la main pour tester, mais un simple who ne marche pas ?
et que donne un

pour avoir une visualisation en temps réel, tu peux associer le ps à la commande watch

slt

personnellement je lance un terminal avec la commande :

tail -f /var/log/vsftpd.log

ainsi je peux suivre ce qu’il se passe
mais l’idée de Vishnou de suivre les forks de vsftpd est tres bonne => je vais me faire ca dans un coin

Bonjour à tous,
Et MERCI pour vos aides, je vais essayer de répondre au divers suggestion le who ne fonctionne pas sur le serveur ftp.
la commande tail -f /var/log/vsftpd.log est encore ce qui a de plus pratique, néanmoins elle permet d’interroger le log de vsftp, elle indique donc les derniers comptes utilisés, mais en aucun cas si ces comptes sont encore connectés au moment où la commande est utilisée.En grattant un peu j’ai également trouvé la commande netstat -tu qui fournie les noms DNS des postes connectés, mai qui n’indique pas le nom des comptes utilisés… Compliqué tout ça!!!

MERCI à tous 8)
Philippe

Bonjour Vishnou,
En effet ta suggestion est pertinante j’ai donc testé, le PS t’indique qui est le propriétaire d’une instantiation, ce qui difère du compte utilisé pour la connection ftp. Pour vérifier j’ai ouvert une session local et je me suis connecté è un autre compte local via un client ftp la commande ps -aef | grep vsftpd m’idique le nom du propriétaire du fork, donc celui de la session utilisée, mais pas celui du compe utilisé pour la connection ftp. Qui a dit que l’informatique était la pour simplifier la vie?

MERCI encore 8)

Philippe

Est ce que qq’un peut montrer un exemple de fichier /var/log/vsftpd.log
à coup de cut on pourrait isoler proprement les bonnes informations, avec ça on utilise watch est le tour est joué.

[quote=“Vishnou”]Est ce que qq’un peut montrer un exemple de fichier /var/log/vsftpd.log
à coup de cut on pourrait isoler proprement les bonnes informations, avec ça on utilise watch est le tour est joué.[/quote]

Je viens de regarder, et malheureusement, même en version très “causante”, les log enregistrent l’établissement de la connexion et toutes les commandes qui suivent sauf… la déconnexion!. Ce qui condamne la solution.

Mais c’est bien dommage: la question de MARTINEZ est très bonne, et je découvre qu’il n’y a pas de réponse simple.

Et en couplant le ps eaf pour récupèrer le pid des sessions encore actives puis en regardant dans le log les traces de la dernière connection associée à ce pid pour déterminer à que session il se rapporte ? Le pid du fork concerné apparait bien dans le log, non ?

il faut suivre l’ip avec le programe : lsof -i -P |grep nom_du_prog. si l’ip est plus là ben c’est qu’il est plus là :slightly_smiling: sinon reste a savoir si il est bien connecter, pour sa je pense antalgeek et mattotop son dans le vrai. ensuite il te suffit de te bricoler un petit script qui fait le tout :slightly_smiling:

hello,

lsof -i :21 | awk {'print $3}' | sed "s/USER/Qui est connecté ?/g"

Quelques résultats partiels des dernières propositions (bravo les gars!):

Sans aucune connexion ftp active, la commande

# lsof -i :21
donne:

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME vsftpd 3270 root 3u IPv4 9809 TCP *:ftp (LISTEN)

Avec la connexion ftp par l’utilisateur “tyrtamos” à partir de la machine 192.168.0.99 (la machine serveur s’appelle “nestidebian”), la même commande donne:

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME vsftpd 3270 root 3u IPv4 9809 TCP *:ftp (LISTEN) vsftpd 4500 nobody 0u IPv4 20643 TCP nestidebian.local:ftp->192.168.0.99:socks (ESTABLISHED) vsftpd 4500 nobody 1u IPv4 20643 TCP nestidebian.local:ftp->192.168.0.99:socks (ESTABLISHED) vsftpd 4500 nobody 2u IPv4 20643 TCP nestidebian.local:ftp->192.168.0.99:socks (ESTABLISHED) vsftpd 4502 tyrtamos 0u IPv4 20643 TCP nestidebian.local:ftp->192.168.0.99:socks (ESTABLISHED) vsftpd 4502 tyrtamos 1u IPv4 20643 TCP nestidebian.local:ftp->192.168.0.99:socks (ESTABLISHED) vsftpd 4502 tyrtamos 2u IPv4 20643 TCP nestidebian.local:ftp->192.168.0.99:socks (ESTABLISHED)

La commande complète proposée par stonfi donne alors:

Qui est connecté ? root nobody nobody nobody tyrtamos tyrtamos tyrtamos

Et, bien sûr, tout ce qui a été ajouté lors de l’établissement de la connexion ftp disparait après la déconnexion.

Les log de vsftpd (ici dans leur version la plus “causante”) donnent bien le pid:

Wed Aug 29 17:18:49 2007 [pid 4501] CONNECT: Client "192.168.0.99" Wed Aug 29 17:18:49 2007 [pid 4501] FTP response: Client "192.168.0.99", "220 (vsFTPd 2.0.5)" Wed Aug 29 17:18:49 2007 [pid 4501] FTP command: Client "192.168.0.99", "USER tyrtamos" Wed Aug 29 17:18:49 2007 [pid 4501] [tyrtamos] FTP response: Client "192.168.0.99", "331 Please specify the password." Wed Aug 29 17:18:49 2007 [pid 4501] [tyrtamos] FTP command: Client "192.168.0.99", "PASS <password>" Wed Aug 29 17:18:49 2007 [pid 4500] [tyrtamos] OK LOGIN: Client "192.168.0.99" Wed Aug 29 17:18:49 2007 [pid 4502] [tyrtamos] FTP response: Client "192.168.0.99", "230 Login successful." Wed Aug 29 17:18:49 2007 [pid 4502] [tyrtamos] FTP command: Client "192.168.0.99", "SYST" Wed Aug 29 17:18:49 2007 [pid 4502] [tyrtamos] FTP response: Client "192.168.0.99", "215 UNIX Type: L8" Wed Aug 29 17:18:49 2007 [pid 4502] [tyrtamos] FTP command: Client "192.168.0.99", "FEAT" Wed Aug 29 17:18:49 2007 [pid 4502] [tyrtamos] FTP response: Client "192.168.0.99", "211-Features:" Wed Aug 29 17:18:49 2007 [pid 4502] [tyrtamos] FTP response: Client "192.168.0.99", " EPRT??" Wed Aug 29 17:18:49 2007 [pid 4502] [tyrtamos] FTP response: Client "192.168.0.99", " EPSV??" Wed Aug 29 17:18:49 2007 [pid 4502] [tyrtamos] FTP response: Client "192.168.0.99", " MDTM??" Wed Aug 29 17:18:49 2007 [pid 4502] [tyrtamos] FTP response: Client "192.168.0.99", " PASV??" Wed Aug 29 17:18:49 2007 [pid 4502] [tyrtamos] FTP response: Client "192.168.0.99", " REST STREAM??" Wed Aug 29 17:18:49 2007 [pid 4502] [tyrtamos] FTP response: Client "192.168.0.99", " SIZE??" Wed Aug 29 17:18:49 2007 [pid 4502] [tyrtamos] FTP response: Client "192.168.0.99", " TVFS??" Wed Aug 29 17:18:49 2007 [pid 4502] [tyrtamos] FTP response: Client "192.168.0.99", "211 End" Wed Aug 29 17:18:49 2007 [pid 4502] [tyrtamos] FTP command: Client "192.168.0.99", "PWD" Wed Aug 29 17:18:49 2007 [pid 4502] [tyrtamos] FTP response: Client "192.168.0.99", "257 "/""

On voit bien qu’un bon script devrait permettre de faire ressortir tout ce qu’on veut à la demande…

Petite amélioration de la commande de stonfi:

Cela donne si les utilisateurs “tyrtamos” et “jeanpaul” sont connectés:

jeanpaul   5103     192.168.0.215:ftp->192.168.0.99:1105
tyrtamos   5089     192.168.0.215:ftp->192.168.0.99:1103

Commentaires:

  • c’est “mawk” qu’il faut prendre (remplace awk)
  • le “-u^root” évite la ligne correspondant au processus d’écoute du serveur
  • le “-u^nobody” évite toutes les lignes correspondant aux processus d’autorisation de chaque connexion
  • le “$3” donne l’identifiant, le “$2” donne le pid et le “$8” donne l’IP appelante
  • le “sort -u” fait le tri, mais permet surtout de supprimer les doublons de la liste obtenue
  • le “grep” permet d’éviter la ligne qui correspond aux libellés des colonnes fournis par lsof (sinon, on a une ligne: “USER PID NODE”)

Et il est inutile de répéter le nom de la machine serveur. Il faudrait que la colonne:

devienne:

On devrait pouvoir faire ça par une expression régulière.

La commande est assez lente à cause de la tentative de convertion adresse IP -> nom de domaine. Si on ne veut que les adresses IP, on utilise l’option “-n” de “lsof”, et la réponse est très rapide.

Avec tout cela, on a bien la liste demandée: les utilisateurs connectés à un moment donné au serveur ftp, avec l’IP de leur machine.

Mais je ne sais pas ce que ça donne si on configure vsftp avec des utilisateurs virtuels. Dans mes essais, mon vsftp est configuré avec les utilisateurs ayant un compte linux sur la machine qui a le serveur ftp.

En complétant par une recherche dans le fichier log, on devrait pouvoir dire depuis combien de temps la connexion est active, et donner la liste des fichiers téléchargés (dans les 2 sens).

(j’arrête là, je suis en voyage jusqu’à mi-sept)

Et merci à MARTINEZ d’avoir posé une si intéressante question!

Bien joué yrtamos :slightly_smiling:

Salut tyrtamos,
Comme tu l’as remarqué toi aussi les logs de vsftp n’enregistrent pas la déconnexion! J’espère que celà fera l’objet d’une implémentation lors d’une prochaine version!!!
en tout cas je suis satisfait que ce petit problème ai sucité autant d’intéret avec une bonne réactivité.
Je vais aller voir du coté de proftp, celà me donnera une autre approche du’un serveur ftp

MERCI à tous pour vos participations
Longue vie au forum :smiley:

Philippe

Bonjour à tous,
Je suis impressionner devant autant d’ingéniosité, et je vois avec plaisir que c’est encore la ligne de commande, qui répond à un besoin.Décidément rien ne vaut une bonne maîtrise de la ligne de commande. Encore Merci à chacun de vous, il y a eu une réelle implication, c’est sans doute ça que l’on appelle l’esprit communautaire. J’espère que mon problème a pu être profitable à d’autre personne.

Longue vie au forum :slightly_smiling:

Philippe

Bonjour à tous,
Je suis impressionné devant autant d’ingéniosité. Et c’est encore la ligne de commande qui me sort une épine du pied. Comme quoi, rien ne vaut la maîtrise de la ligne de commande. En tout cas, je tiens à remercier chacun de vous, car il y a eu une réelle implication de tous, c’est sans doute celà que l’on appelle l’esprit communautaire. J’espère que mon problème à pu être profitable à d’autres.

Longue vie au forum :slightly_smiling:

Philippe