Ведення журналу SFTP: чи є спосіб?


91

Мені цікаво, чи існує спосіб реєстрації команд, отриманих сервером. Це можуть бути всі команди SSH, якщо вони містять інформацію про команди, пов'язані з передачею файлів.

У мене виникають проблеми з клієнтом SFTP, і творець запитує журнали, але я не можу знайти жодного наявного журналу.

Я хочу ввійти в обидва або в CentOS або OS X (хоча я підозрюю, що це можливо, це буде схоже на обох).


Відповіді:


94

Версії OpenSSH 4.4p1 і новіші (які повинні включати останню версію з CentOS 5) мають вбудовану можливість реєстрації SFTP - вам просто потрібно її налаштувати.

Знайдіть це у своєму sshd_config (у центсах, файлі / тощо / ssh / sshd_config ):

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

і змініть його на:

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

INFO - це лише один рівень деталізації того, що ви бачите за замовчуванням - він надає детальну інформацію про передачу файлів, зміни дозволів тощо. Якщо вам потрібна додаткова інформація, ви можете відповідно налаштувати рівень журналу. Різні рівні (в порядку деталізації):

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

Що-небудь над VERBOSE - це, мабуть, більше інформації, ніж ви шукаєте, але це може бути корисно.

Нарешті перезапустіть службу SSH, щоб оновити зміни (центри):

systemctl restart sshd

1
Я не знав, що ти можеш записати SFTP так, це те, що мені потрібно. Де зберігаються колоди? /var/log/auth.log?
Рорі

4
Це залежить від вашої конфігурації syslog. Використовуючи низькорівневий рівень INFO, більшість syslog.conf за замовчуванням розміщує ці записи у / var / log / messages.
rvf

4
Чи можливо це зробити за допомогою внутрішнього sftp-сервера?
Cian

це ідеально підходить для SFTP, але як бути з SCP? Я не знайшов жодного запису у журналі для файлу, скопійованого командою scp, хоча журнал був успішним для sftp
Ale

2
У Ubuntu ці журнали за замовчуванням до /var/log/auth.log. Додайте -f USERдо цього Subsystemконфігураційного рядка, щоб надіслати їх /var/log/syslog.
Викиньте рахунок

43

Ті ж комутатори навколо журналу для sftp-сервера також працюють для внутрішнього sftp. Ось приклад з мого / etc / ssh / sshd_config:

Subsystem   sftp    internal-sftp -f AUTH -l INFO

З увімкненим журналом рівня INFO повідомлення почнуть відображатися під / var / log / повідомленнями (принаймні під Distros на основі 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
Я виявив, що в моєму випадку він реєструє лише сеанси sftp для root, але не для мого тесту користувача із закріпленим користувачем. Я не розумію чому, у вас є ідеї?
JohnnyFromBF

4
Схоже, що вам потрібно /dev/logу вашій області chroot. Що - щось на зразок 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. Користувачі все ще матимуть доступ до запису до цього / dev / log, але оскільки це сокет, вони не можуть заподіяти великої шкоди, якщо все, що вони мають, є sftp.
sch

1
Дякую за підказку. Я, здається, не можу змусити його працювати. Чи можете ви бути трохи більш конкретним?
користувач1092608

4
FWIW: В Archlinux Wiki є хороший опис про те , як включити ведення журналу в середовищі CHROOT: wiki.archlinux.org/index.php/SFTP_chroot#Logging
Кай

0

Для того, щоб очистити коментарі вище:

Якщо у вас налаштовано sftp за допомогою тюремного режиму (chroot-середовища), ви не можете увійти без додаткової конфігурації. Журнал не може бути записаний у середовищі chroot, вам потрібно створити прив'язку монтажу або сокет. Я б рекомендував використовувати сокет, оскільки це функція, яку надає syslog-ng, а також rsyslog (а може бути і багато іншого).

Для тих, хто використовує syslog-ng, ознайомтеся з https://wiki.archlinux.org/index.php/SFTP_chroot#Logging . Для тих, хто використовує rsyslog, https://wiki.kairaven.de/open/os/linux/sftpssh - ваш друг.

Сподіваюся, що це допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.