Registrazione SFTP: c'è un modo?


92

Mi chiedo se esiste un modo per registrare i comandi ricevuti dal server. Può essere tutti i comandi SSH, purché includa informazioni sui comandi relativi al trasferimento di file.

Sto riscontrando problemi con un client SFTP e il creatore sta chiedendo i log, ma non riesco a trovare alcun log esistente.

Sto cercando di accedere a entrambi o CentOS o OS X (anche se sospetto che sia possibile, sarebbe simile su entrambi).


Risposte:


94

Le versioni di OpenSSH 4.4p1 e successive (che dovrebbero includere la versione più recente con CentOS 5) hanno la funzionalità di registrazione SFTP integrata, è sufficiente configurarla.

Trova questo nel tuo sshd_config (in centos, file / etc / ssh / sshd_config ):

Subsystem       sftp    /usr/libexec/openssh/sftp-server

e cambiarlo in:

Subsystem       sftp    /usr/libexec/openssh/sftp-server -l INFO

INFO è solo un livello di dettaglio rispetto a quello che stai vedendo per impostazione predefinita: fornisce informazioni dettagliate su trasferimenti di file, modifiche alle autorizzazioni, ecc. Se hai bisogno di maggiori informazioni, puoi regolare il livello di log di conseguenza. I vari livelli (in ordine di dettaglio) sono:

QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3

Qualsiasi cosa su VERBOSE è probabilmente più informazioni di quelle che stai cercando, ma potrebbe essere utile.

Infine, riavvia il servizio SSH per aggiornare le modifiche (centos):

systemctl restart sshd

1
Non sapevo che potessi registrare SFTP in quel modo, ecco cosa mi serve. Dove memorizza i registri? /var/log/auth.log?
Rory,

4
Dipende dalla configurazione del tuo syslog. Utilizzando INFO loglevel, la maggior parte delle impostazioni predefinite di syslog.conf inserisce tali voci in / var / log / messages.
rvf

4
È possibile farlo usando il server sftp interno?
Cian,

questo funziona perfettamente per SFTP, ma per quanto riguarda SCP? Non ho trovato alcuna voce nel registro per un file copiato con il comando scp, anche se il registro ha avuto successo per sftp
Ale

2
Su Ubuntu, questi registri sono predefiniti su /var/log/auth.log. Aggiungi -f USERa quella Subsystemriga di configurazione per inviarli /var/log/syslog.
Getta via l'account

43

Gli stessi switch per la registrazione per sftp-server funzionano anche per internal-sftp. Ecco un esempio dal mio / etc / ssh / sshd_config:

Subsystem   sftp    internal-sftp -f AUTH -l INFO

Con la registrazione abilitata per il livello INFO, i messaggi inizieranno a comparire in / var / log / messages (almeno nelle distribuzioni basate su Red Hat):

May 27 05:58:16 test-server sshd[20044]: User child is on pid 20049
May 27 05:58:16 test-server sshd[20049]: subsystem request for sftp by user test-user
May 27 05:58:16 test-server internal-sftp[20050]: session opened for local user test-user from [192.168.1.1]
May 27 05:58:16 test-server internal-sftp[20050]: received client version 3
May 27 05:58:16 test-server internal-sftp[20050]: realpath "."
May 27 05:58:21 test-server internal-sftp[20050]: opendir "/home/test-user/"
May 27 05:58:21 test-server internal-sftp[20050]: closedir "/home/test-user/"
May 27 05:58:21 test-server internal-sftp[20050]: lstat name "/home/test-user/upload"
May 27 05:58:21 test-server internal-sftp[20050]: realpath "/home/test-user/upload/"
May 27 05:58:21 test-server internal-sftp[20050]: stat name "/home/test-user/upload"
May 27 05:58:24 test-server internal-sftp[20050]: open "/home/test-user/upload/test-file.pdf" flags WRITE,CREATE,TRUNCATE mode 0664
May 27 05:58:25 test-server internal-sftp[20050]: close "/home/test-user/upload/test-file.pdf" bytes read 0 written 1282941

2
Ho scoperto che nel mio caso registra solo sessioni sftp per root ma non per il mio test utente chroot. Non capisco perché, hai qualche idea?
JohnnyFromBF

4
Sembra che tu abbia bisogno /dev/lognella tua zona chroot. Qualcosa di simile sudo mkdir /chrooted/area/dev, sudo touch /chrooted/area/dev/log, sudo chmod 511 /chrooted/area/dev, sudo chattr +i /chrooted/area/dev, sudo mount --bind /dev/log /chrooted/area/dev/log. Gli utenti avranno comunque accesso in scrittura a quel / dev / log, ma poiché si tratta di un socket, non possono fare molto danno se tutto ciò a cui hanno accesso è sftp.
sch

1
Grazie per il suggerimento. Non riesco a farlo funzionare, comunque. Potresti essere un po 'più specifico?
user1092608

4
FWIW: Nel Wiki ArchLinux c'è una buona descrizione su come abilitare la registrazione nell'ambiente chroot: wiki.archlinux.org/index.php/SFTP_chroot#Logging
Kaii

0

Per chiarire i commenti sopra:

Se sftp è configurato utilizzando un jail (ambiente chroot), non è possibile accedere senza ulteriore configurazione. Non è possibile scrivere il registro nell'ambiente chroot, è necessario creare un binding di montaggio o un socket. Consiglierei di usare un socket, in quanto è una funzionalità fornita da syslog-ng e da rsyslog (e forse molti altri).

Per coloro che usano syslog-ng, dai un'occhiata a https://wiki.archlinux.org/index.php/SFTP_chroot#Logging . Per coloro che utilizzano rsyslog, https://wiki.kairaven.de/open/os/linux/sftpssh è tuo amico.

Spero che aiuti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.