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" ~

또한 사용자의 홈 디렉터리(chroot 디렉터리와 동일)에 /dev 디렉터리를 만들었습니다.

아직 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를 다시 시작한 후에는 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 상태 및 추가 진단 정보가 필요합니다.

관련 정보