Centos

設置 chroot 使用者的日誌記錄

  • September 13, 2019

我已經嘗試了一些關於此的教程,但似乎無法使其正常工作。我想為在 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

然後將其硬連結到使用者開發文件夾

ln /data/sftp/syslog.sock dev/log

重新啟動 rsyslog 後,這不會在 sftp.log 中產生任何條目

前段時間我在寫這個主題,其中提到了您在嘗試實現此目標時可能會遇到的幾個罪魁禍首:

https://access.redhat.com/articles/1374633

我會嘗試新的配置格式rsyslog

input(type="imuxsock" Socket="/chroots/user/dev/log" CreatePath="on")
local3.*                                                /var/log/sftp.log

否則將需要一些錯誤、AVC、SELinux 狀態和更多診斷資訊。

引用自:https://unix.stackexchange.com/questions/341501