Протоколирование SFTP: есть ли способ?

92

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

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

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

Дэррил Хейн
источник

Ответы:

94

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

Найдите это в вашем sshd_config (в centos, файл / etc / 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, чтобы обновить изменения (centos):

systemctl restart sshd
НВФ
источник
1
Я не знал, что вы можете войти в SFTP, вот что мне нужно. Где хранятся логи? /var/log/auth.log?
Рори
4
Это зависит от вашей конфигурации системного журнала. Используя уровень журнала INFO, большинство syslog.conf по умолчанию помещают эти записи в / var / log / messages.
ЛРВ
4
Возможно ли это сделать с помощью внутреннего сервера sftp?
Cian
это отлично работает для SFTP, но как насчет SCP? Я не нашел записей в журнале для файла, скопированного с помощью команды scp, хотя журнал был успешным для sftp
Ale
2
В Ubuntu эти журналы по умолчанию имеют значение /var/log/auth.log. Добавьте -f USERк этой Subsystemстроке конфигурации, чтобы отправить их /var/log/syslog.
счет
43

Те же самые переключатели при ведении журнала для sftp-сервера также работают и для 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
ОДС
источник
2
Я обнаружил, что в моем случае он регистрирует только сеансы sftp для пользователя root, но не для моего пользовательского теста chroot. Я не понимаю почему, у вас есть идеи?
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.
СЧ
1
Спасибо за подсказку. Однако я не могу заставить его работать. Не могли бы вы быть более конкретным?
user1092608
4
FWIW: В Archlinux Wiki есть хорошее описание о том , как включить ведение журнала в среде CHROOT: wiki.archlinux.org/index.php/SFTP_chroot#Logging
Кай
0

Для того, чтобы уточнить комментарии выше:

Если у вас настроен sftp с использованием jail (среды 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 - ваш друг.

Надеюсь, это поможет.

Фил
источник