SFTP logging: apakah ada cara?


92

Saya bertanya-tanya apakah ada cara untuk mencatat perintah yang diterima oleh server. Itu bisa semua perintah SSH, asalkan itu mencakup informasi tentang perintah yang terkait dengan transfer file.

Saya mengalami masalah dengan klien SFTP dan pembuatnya meminta log, tetapi saya tidak dapat menemukan log yang ada.

Saya mencari untuk masuk ke keduanya atau CentOS atau OS X (walaupun saya curiga kalau itu mungkin, itu akan serupa pada keduanya).


Jawaban:


94

OpenSSH versi 4.4p1 dan yang lebih tinggi (yang seharusnya termasuk versi terbaru dengan CentOS 5) memiliki kemampuan logging SFTP bawaan - Anda hanya perlu mengkonfigurasinya.

Temukan ini di sshd_config Anda (dalam centos, file / etc / ssh / sshd_config ):

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

dan ubah ke:

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

INFO hanyalah satu tingkat perincian tentang apa yang Anda lihat secara default - ini memberikan informasi terperinci tentang transfer file, perubahan izin, dll. Jika Anda memerlukan lebih banyak info, Anda dapat menyesuaikan tingkat log sesuai dengan itu. Berbagai tingkatan (dalam urutan detail) adalah:

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

Apa pun yang melebihi VERBOSE mungkin lebih banyak informasi daripada yang Anda cari, tetapi mungkin bermanfaat.

Terakhir restart layanan SSH untuk memperbarui perubahan (centos):

systemctl restart sshd

1
Saya tidak tahu Anda bisa login SFTP seperti itu, itulah yang saya butuhkan. Di mana ia menyimpan log? /var/log/auth.log?
Rory

4
Itu tergantung pada konfigurasi syslog Anda. Dengan menggunakan INFO loglevel, kebanyakan syslog.conf menempatkan entri-entri itu di / var / log / messages.
rvf

4
Apakah mungkin untuk melakukan ini menggunakan server sftp internal?
Cian

ini bekerja dengan baik untuk SFTP, tetapi bagaimana dengan SCP? Saya tidak menemukan entri dalam log untuk file yang disalin dengan perintah scp, meskipun log berhasil untuk sftp
Ale

2
Di Ubuntu, log-log ini default untuk /var/log/auth.log. Tambahkan -f USERke Subsystembaris konfigurasi untuk mengirimnya /var/log/syslog.
Membuang Akun

43

Switch yang sama di sekitar logging untuk sftp-server juga berfungsi untuk internal-sftp. Inilah contoh dari / etc / ssh / sshd_config saya:

Subsystem   sftp    internal-sftp -f AUTH -l INFO

Dengan INFO level logging pesan yang diaktifkan akan mulai muncul di bawah / var / log / messages (setidaknya di bawah Distro berbasis 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
Saya menemukan, bahwa dalam kasus saya hanya mencatat sesi sftp untuk root tetapi tidak untuk tes pengguna chroot saya. Saya tidak mengerti mengapa, apakah Anda punya ide?
JohnnyFromBF

4
Sepertinya Anda perlu /dev/logdi area chroot Anda. Sesuatu seperti 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. Pengguna masih akan memiliki akses tulis ke / dev / log tersebut, tetapi karena ini adalah soket, mereka tidak dapat melakukan banyak kerusakan jika semua yang mereka miliki hanyalah akses sftp.
sch

1
Terima kasih atas petunjuknya. Namun, saya tidak bisa membuatnya bekerja. Bisakah Anda sedikit lebih spesifik?
user1092608

4
FWIW: Di ArchLinux Wiki ada deskripsi yang baik tentang cara mengaktifkan logging di lingkungan chroot: wiki.archlinux.org/index.php/SFTP_chroot#Logging
Kaii

0

Untuk menjernihkan komentar di atas:

Jika Anda memiliki sftp yang dikonfigurasikan menggunakan jail (lingkungan chroot), Anda tidak dapat masuk tanpa campur tangan konfigurasi tambahan. Log tidak dapat ditulis dalam lingkungan chroot, Anda harus membuat ikatan mount atau soket. Saya akan merekomendasikan menggunakan soket, karena ini adalah fitur yang disampaikan oleh syslog-ng serta rsyslog (dan mungkin banyak lagi).

Bagi mereka yang menggunakan syslog-ng, lihat di https://wiki.archlinux.org/index.php/SFTP_chroot#Logging . Bagi mereka yang menggunakan rsyslog, https://wiki.kairaven.de/open/os/linux/sftpssh adalah teman Anda.

Semoga itu bisa membantu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.