/var/data/chroot/
원격 중앙 NFS 서버의 NFS 마운트인 sftpd를 실행하는 Ubuntu 서버가 있고 각 sftpd 사용자의 chroot 홈이 있으며 각 사용자에게는 syslog-ng를 사용하여 성공적으로 읽은 /var/data/chroot/<username>/
로그 장치가 있습니다 ./var/data/chroot/<username>/dev/log
source s_chroot_<username> { unix-stream("/var/data/chroot/<username>/dev/log" optional(yes) ); };
destination d_sftp_<username> { file("/var/log/sftp/<username>.log"); };
이제 동일한 사용자 데이터베이스와 NFS를 통해 마운트되고 동일한 syslog-ng 구성을 사용하는 두 번째 병렬 sftpd 서버가 있으므로 /var/data/chroot/
각 사용자는 한 서버 또는 다른 서버에 로그인할 수 있습니다. 이는 고가용성을 위한 것입니다. 이것은 지금까지 작동합니다.
현재 작동하지 않는 것은 sftpd 로깅입니다. sftp 사용자의 로그는 다음 위치에만 있습니다.하나sftp 서버는 독점적입니다. 이것은 syslog-ng가 각 사용자의 .sftp 파일에 대해 독점 유닉스 소켓 파일 잠금을 획득하기 때문에 가장 적게 시작하는 서버입니다 /dev/log
.
따라서 사용자가 syslog-ng 시작이 가장 적은 첫 번째 서버에 로그인하면 해당 사용자의 SFTP 활동이 첫 번째 서버에 기록됩니다. 그러나 사용자가 두 번째 서버에 로그인하면 해당 SFTP 활동은 두 번째 서버나 첫 번째 서버에 기록되지 않습니다.
이후에 두 번째 서버에서 syslog-ng가 다시 시작되면 sftp 사용자의 활동은 두 번째 서버에만 기록되고 두 번째 서버의 로그인에 대해서만 기록됩니다.
사용자가 해당 서버에 로그인할 때 사용자의 홈 페이지가 NFS를 통해 두 서버에서 공유되는 동안 SFTP 사용자의 활동이 각 SFTP 서버에 기록되도록 하려면 어떻게 해야 합니까?
답변1
내 솔루션은 다음과 같습니다.
만들다현지의사용자 하위 디렉터리를 생성할 디렉터리:
sudo mkdir /var/data/dev
각 사용자 이름 <username>
및 사용자의 기본 그룹 에 대해 <groupname>
다음을 수행합니다.
sudo mkdir /var/data/dev/<username>
sudo chmod 550 /var/data/dev/<username> # This restrictive permission is a requirement I think
sudo chgrp <groupname> /var/data/dev/<username> # so the user can read the directory
/var/data/chroot/<username>/dev
따라서 새 디렉토리는 기존 디렉토리(nfs 마운트에 있음)와 정확히 동일합니다 /var/data/chroot/
.
이제 실제로 mount --bind /var/data/dev/<username> /var/data/chroot/<username>/dev
수행하는 작업은 /var/data/chroot/<username>/dev
nfs 마운트가 아닌 sftp 서버에서 로컬로 수행하는 것입니다.
그런 다음 syslog-ng 구성을 변경하십시오.
~에서
source s_chroot_<username> { unix-stream("/var/data/chroot/<username>/dev/log" optional(yes) ); };
도착하다
source s_chroot_<username> { unix-stream("/var/data/dev/<username>/log" optional(yes) ); };
(이것이 꼭 필요한 것은 아니지만 syslog-ng는 이제 확실히 로컬 파일에서만 읽을 것이므로 더 이상 nfs에서 마운트되지 않도록 할 것입니다. 이는 좋은 일입니다.)
사용자가 하나의 SFTP 서버에 로그인하든 다른 SFTP 서버에 로그인하든 상관없이 syslog-ng는 이제 영향을 받는 SFTP 서버에서 SFTP 세션을 기록할 수 있습니다.
여러 번(내 경우에는 수백 번) 바인드 마운트를 피하고 싶지만 영향이 SFTP 서비스 자체가 아닌 로깅 기능으로 제한되기 때문에 이 해결 방법이 허용 가능하다고 생각합니다. 말하자면, 바인드 설치에 문제가 있는 경우 SFTP 세션 로깅이 없다는 것이 유일한 영향입니다. 그리고 그것은 매우 간단하고, 통일되고, 명확합니다.