이에 대한 몇 가지 튜토리얼을 시도했지만 제대로 작동하지 않는 것 같습니다. 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 상태 및 추가 진단 정보가 필요합니다.