我已经尝试了一些关于此的教程,但似乎无法让它发挥作用。我想记录 chroot 监狱中的 chroot 用户的用户活动(更改目录、上传/下载文件等)。
我当前的 sshd_config 文件条目:
Subsystem sftp internal-sftp -l VERBOSE -f LOCAL6
Match Group sftponly
ChrootDirectory %h
AllowTcpForwarding no
X11Forwarding no
ForceCommand internal-sftp -l VERBOSE -f LOCAL6
我当前的 /etc/rsyslog.conf 条目(在规则部分):
$AddUnixListenSocket /user1HomeDir/dev/log
local6.* /var/log/sftp.log
:programname, isequal, "internal-sftp" -/var/log/sftp.log
:programname, isequal, "internal-sftp" ~
我还在用户主目录中创建了一个 /dev 目录(与他们的 chroot 目录相同)
我仍然无法获取这些 chroot 用户的任何日志。此外,这些用户将 shell 设置为 /sbin/noshell (不确定这是否会影响这一点)。
编辑:
我可以通过将 sshd_config 条目设置为以下方式来使日志记录正常工作:
Subsystem sftp internal-sftp -l INFO
Match Group sftponly
ChrootDirectory h%
AllowTcpForwarding no
ForceCommand internal-sftp -l INFO
X11Forwarding no
在 chroot 用户主目录中创建一个 dev 文件夹,然后使用以下条目创建一个 rsyslog 配置文件 /etc/rsyslog.d/sftplogging.conf:
#create socket in chroot user's dev floder
$AddUnixListenSocket /data/sftp/User/home/dev/log
#log internal-sftp in a seperate file
:programname, isequal, "internal-sftp" -/var/log/sftp.log
:programname, isequal, "internal-sftp" ~
这允许我将日志获取到 /var/log/sftp.log,但是由于 rsyslog 仅限于 50 个套接字的限制,我尝试将 /etc/rsyslog.d/sftplogging.conf 更改为:
$AddUnixListenSocket /data/sftp/syslog.sock
然后将其硬链接到用户的 dev 文件夹中
ln /data/sftp/syslog.sock dev/log
重新启动 rsyslog 后,这不会在 sftp.log 中产生任何条目
答案1
我前段时间写过关于这个主题的文章,其中提到了在尝试实现此目标时可能遇到的几个罪魁祸首:
https://access.redhat.com/articles/1374633
我会尝试新的配置格式rsyslog
:
input(type="imuxsock" Socket="/chroots/user/dev/log" CreatePath="on")
local3.* /var/log/sftp.log
否则,将需要一些错误、AVC、SELinux 状态和更多诊断信息。