web-dev-qa-db-ja.com

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されたユーザーのログをまだ取得できません。また、これらのユーザーは、シェルを/ 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にエントリを生成します

1
ts1

私はこの主題について少し前に書いていましたが、これを達成しようとしているときに遭遇する可能性のあるいくつかの犯人について言及しています。

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

rsyslogの新しい構成形式を試してみます。

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

そうしないと、いくつかのエラー、AVC、SELinuxステータス、およびより多くの診断情報が必要になります。

0
Jakuje