Я пытаюсь собрать дополнительную информацию о работе моего sftp-сервера. Я добавил следующие строки в /etc/ssh/sshd_config, как указано во многих сообщениях в интернете:
Subsystem sftp internal-sftp -l VERBOSE -f LOCAL6
Match Group sftponly
ChrootDirectory /data/%u
ForceCommand internal-sftp -l VERBOSE -f LOCAL6
X11Forwarding no
AllowTcpForwarding no
Затем я создал /etc/rsyslog.d/60-sftp.conf со следующими строками для сбора информации журналов:
# Parse the data logged at level INFO and facility LOCAL6 into /var/log/sftp
local6.* /var/log/sftp
# Report logins and logoffs
:syslogtag,startswith,"internal-sftp" /var/log/sftp
# Log internal-sftp in a separate file
:programname, isequal, "internal-sftp" -/var/log/sftp
На данный момент я не могу заставить какое-либо логирование попасть в /var/log/sftp, все это продолжает идти в /var/log/messages и, похоже, совсем не многословно. Вот фрагмент всего, что я получаю:
Sep 28 16:46:11 ftp sshd[10060]: Accepted publickey for root from 172.25.50.117 port 54836 ssh2
Sep 28 16:46:11 ftp sshd[10060]: Received disconnect from 172.25.50.117: 11: disconnected by user
Sep 28 16:46:16 ftp sshd[10109]: Accepted keyboard-interactive/pam for account1000002664 from 172.25.50.86 port 34255 ssh2
Я проверил, что в системе запущен rsyslogd, выполнив:
ftp:~ # ps ax | grep syslog
9205 ? Sl 0:00 /sbin/rsyslogd -c 5 -f /etc/rsyslog.conf
Итак, насколько я могу судить, я редактирую правильные файлы. Я полагаю, что следующим шагом будет обеспечение отправки ожидаемых журналов в local6. Цель здесь — получить данные, необходимые для вывода журнала, похожего, если не в точности, на xferlog, созданный vsftpd.
У кого-нибудь есть мысли, как действовать дальше? Кстати, это работает на OpenSuse 12.1.
решение1
Вам необходимо иметь сокет журналирования ( /dev/log
) chroot
, если вы хотите вести журнал через него, или вам необходимо реализовать способ сохранения дескриптора файла во время internal-sftp
выполнения.
Он должен работать на текущей версии RHEL (по крайней мере, мы это проверили, и это так).задокументировано), но у меня нет знаний о suse.
Может быть, эта функция не полностью реализована там, но если вы всегда можете создать сокет chroot
и настроить его rsyslog
на прием сообщений на этом сокете. Вы можете протестировать его с помощью логгера, как предложено в комментариях.