Назад | Перейти на главную страницу

Ведение журнала SFTP: есть ли способ?

Мне интересно, есть ли способ записывать команды, полученные сервером. Это могут быть все команды SSH, если они включают информацию о командах, связанных с передачей файлов.

У меня проблемы с клиентом SFTP, и создатель запрашивает журналы, но я не могу найти существующие журналы.

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

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

Найдите это в своем sshd_config (в centos, файл / и т.д. / SSH / sshd_config):

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

и измените его на:

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

ИНФОРМАЦИЯ - это всего лишь один уровень детализации по сравнению с тем, что вы видите по умолчанию - он предоставляет подробную информацию о передаче файлов, изменениях разрешений и т. Д. Если вам нужна дополнительная информация, вы можете соответствующим образом настроить уровень журнала. Различные уровни (в порядке детализации):

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

Что-нибудь сверх VERBOSE, вероятно, даст больше информации, чем вы ищете, но это может быть полезно.

Наконец, перезапустите службу SSH, чтобы обновить изменения (centos):

systemctl restart sshd

Те же переключатели для журналирования для sftp-server работают и для internal-sftp. Вот пример из моего / etc / ssh / sshd_config:

Subsystem   sftp    internal-sftp -f AUTH -l INFO

При включенном ведении журнала на уровне INFO сообщения начнут отображаться в / var / log / messages (по крайней мере, в дистрибутивах на основе 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

Чтобы прояснить комментарии выше:

Если у вас настроен sftp с использованием jail (среда chroot), вы не сможете войти без дополнительных усилий по настройке. Журнал не может быть записан в среде chroot, вам нужно создать привязку монтирования или сокет. Я бы рекомендовал использовать сокет, поскольку это функция, предоставляемая syslog-ng, а также rsyslog (и, возможно, многими другими).

Для тех, кто использует syslog-ng, взгляните на эта ссылка. Для тех, кто пользуется rsyslog; надеюсь, это поможет.