我正在尝试从我的 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。这里的目标是获取输出与 vsftpd 创建的 xferlog 类似的日志(即使不完全相同)所需的数据。
有人对如何继续有什么想法吗?顺便说一句,这是在 OpenSuse 12.1 上运行的。
答案1
如果您想通过它进行记录,则需要有日志套接字(/dev/log
)chroot
,或者您需要实现一种在执行过程中持久保存文件描述符的方法internal-sftp
。
它应该可以在当前的 RHEL 上运行(至少我们测试过,它是记录),但我对 Suse 不了解。
也许这个功能还没有完全实现,但是如果你总是可以创建套接字chroot
并设置rsyslog
为在此套接字上接受消息。你可以按照评论中的建议使用记录器对其进行测试。