私はこれについていくつかのチュートリアルを試しましたが、それを機能させることができないようです。 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されたユーザーのログをまだ取得できません。また、これらのユーザーは、シェルを/ 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を再起動した後、このdoenstはsftp.logにエントリを生成します
私はこの主題について少し前に書いていましたが、これを達成しようとしているときに遭遇する可能性のあるいくつかの犯人について言及しています。
https://access.redhat.com/articles/13746
rsyslog
の新しい構成形式を試してみます。
input(type="imuxsock" Socket="/chroots/user/dev/log" CreatePath="on")
local3.* /var/log/sftp.log
そうしないと、いくつかのエラー、AVC、SELinuxステータス、およびより多くの診断情報が必要になります。