Logowanie SFTP: czy istnieje sposób?


91

Zastanawiam się, czy istnieje sposób na rejestrowanie poleceń otrzymanych przez serwer. Mogą to być wszystkie polecenia SSH, o ile zawierają informacje na temat poleceń związanych z przesyłaniem plików.

Mam problemy z klientem SFTP, a twórca prosi o dzienniki, ale nie mogę znaleźć żadnych istniejących dzienników.

Chcę zalogować się do obu systemów CentOS lub OS X (choć podejrzewam, że jest to możliwe, w obu przypadkach będzie podobnie).


Odpowiedzi:


94

Wersje OpenSSH 4.4p1 i nowsze (które powinny obejmować najnowszą wersję z CentOS 5) mają wbudowaną funkcję rejestrowania SFTP - wystarczy ją skonfigurować.

Znajdź to w swoim sshd_config (w centos, plik / etc / ssh / sshd_config ):

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

i zmień na:

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

INFO to tylko jeden poziom szczegółowości w stosunku do tego, co widzisz domyślnie - zapewnia szczegółowe informacje dotyczące przesyłania plików, zmian uprawnień itp. Jeśli potrzebujesz więcej informacji, możesz odpowiednio dostosować poziom dziennika. Różne poziomy (w kolejności szczegółów) to:

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

Wszystko poza VERBOSE to prawdopodobnie więcej informacji niż szukasz, ale może być przydatne.

Na koniec uruchom ponownie usługę SSH, aby zaktualizować zmiany (centos):

systemctl restart sshd

1
Nie wiedziałem, że możesz logować SFTP w ten sposób, właśnie tego potrzebuję. Gdzie przechowuje dzienniki? /var/log/auth.log?
Rory

4
To zależy od konfiguracji syslog. Korzystając z INFO loglevel, większość domyślnych plików syslog.conf umieszcza te wpisy w / var / log / messages.
rvf

4
Czy można to zrobić za pomocą wewnętrznego serwera sftp?
Cian

działa to doskonale dla SFTP, ale co z SCP? Nie znalazłem żadnych wpisów w dzienniku dla pliku skopiowanego za pomocą polecenia scp, chociaż dziennik powiódł się dla sftp
Ale

2
W systemie Ubuntu dzienniki te domyślnie są ustawione na /var/log/auth.log. Dodaj -f USERdo tej Subsystemlinii konfiguracji, aby wysłać je do /var/log/syslog.
Wyrzuć konto

43

Te same przełączniki wokół rejestrowania dla serwera sftp działają również dla wewnętrznego sftp. Oto przykład z mojego / etc / ssh / sshd_config:

Subsystem   sftp    internal-sftp -f AUTH -l INFO

Po włączeniu rejestrowania na poziomie INFO komunikaty zaczną pojawiać się w / var / log / messages (przynajmniej w Distrosach opartych na 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
Odkryłem, że w moim przypadku loguje tylko sesje sftp dla roota, ale nie dla mojego chrootowanego testu użytkownika. Nie rozumiem dlaczego, masz jakieś pomysły?
JohnnyFromBF

4
Wygląda na to, że potrzebujesz /dev/logw obszarze chroot. Coś podobnego 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. Użytkownicy nadal będą mieli dostęp do zapisu do tego / dev / log, ale ponieważ jest to gniazdo, nie mogą wyrządzić wiele szkody, jeśli wszystko, co mają dostęp, to sftp.
sch

1
Dzięki za podpowiedź. Jednak nie mogę sprawić, żeby działało. Czy możesz być bardziej szczegółowy?
user1092608 15.03.13

4
FWIW: Na Wiki ArchLinux jest dobry opis, jak włączyć logowanie w środowisku chroot: wiki.archlinux.org/index.php/SFTP_chroot#Logging
Kaii

0

Aby wyjaśnić powyższe komentarze:

Jeśli masz skonfigurowany sftp za pomocą więzienia (środowisko chroot), nie możesz zalogować się bez dodatkowego przerwania konfiguracji. Logu nie można zapisać w środowisku chroot, musisz utworzyć powiązanie montowania lub gniazdo. Polecam korzystanie z gniazda, ponieważ jest to funkcja dostarczana przez syslog-ng oraz rsyslog (i może wiele innych).

Dla tych, którzy używają syslog-ng, spójrz na https://wiki.archlinux.org/index.php/SFTP_chroot#Logging . Dla tych, którzy korzystają z rsyslog, twoim przyjacielem jest https://wiki.kairaven.de/open/os/linux/sftpssh .

Mam nadzieję, że to pomaga.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.