设置 chroot 用户的日志记录

设置 chroot 用户的日志记录

我已经尝试了一些关于此的教程,但似乎无法让它发挥作用。我想记录 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 状态和更多诊断信息。

相关内容