記錄 Chrooted SFTP 使用者活動
我一直在嘗試記錄 Chrooted 使用者的 SFTP 活動。
到目前為止,我無法為任何 chroot 使用者記錄一行。對於普通使用者,它可以工作。
我目前的設置:
/etc/ssh/sshd_config:
Subsystem sftp internal-sftp -f AUTH -l VERBOSE ClientAliveInterval 180 PasswordAuthentication no Match Group sftpclients ChrootDirectory /home/sftp/%u AllowTCPForwarding no X11Forwarding no ForceCommand internal-sftp -f AUTH -l VERBOSE
/etc/rsyslog.conf:
$AddUnixListenSocket /home/sftp.log.socket $AddUnixListenSocket /home/sftp/dev/log.socket $AddUnixListenSocket /home/sftp/user1/dev/log.socket $AddUnixListenSocket /home/sftp/user2/dev/log.socket :programname, isequal, "internal-sftp" -/var/log/sftp2.log :programname, isequal, "internal-sftp" ~
/etc/rsyslog.d/sftp.conf:
input(type="imuxsock" Socket="/home/sftp/log2.socket" CreatePath="on") if $programname == 'internal-sftp' then /var/log/sftp3.log
每個使用者都有他們的 //dev/ 目錄綁定到 /dev:
mount --bind /dev /home/sftp/<user>/dev
以及rsyslog.conf
/中定義的套接字sftp.conf
問題我基本上已經嘗試了我發現的每一個建議,我在設置 chrooted 使用者時可能會遺漏什麼?
對於大多數使用systemd的現代 Linux 發行版,您
/dev/log
認為可以通過綁定掛載共享的文件是不正確的。因此,將您的系統安裝到您的 chroot 中沒有什麼價值。/dev``/dev
$ file /dev/log /dev/log: symbolic link to /run/systemd/journal/dev-log
由於 /run 在 chroot 中不可用(也不應該如此),因此嘗試寫入的 sftp-server
/dev/log
將認為這是一個損壞的符號連結。相反,使用它
input(type="imuxsock" Socket="/opt/bindmount/dev/log")
來創建一個額外的套接字(然後您可以綁定掛載,以便所有 chroot 都可以在 處看到它/dev/log
)。無論如何,您通常不應該共享
/dev
對 chroot 的完全訪問權限,chroot 的全部意義在於限制攻擊面。獎勵:您可以
/etc/rsyslog.d/10-sftp.conf
像這樣編寫配置(按“主機名”過濾,您可以任意選擇)input(type="imuxsock" Socket="/opt/bindmount/dev/log", HostName="sftp") if $hostname == 'sftp' then /var/log/sftp.log &stop
這意味著,如果您部署其他 chroot,僅限於其他命令(例如 a
git-shell
),您仍然可以將來自 chroot 的所有消息放在同一個位置,即使其他程序寫入/dev/log
.