我想将 SFTP 命令记录到单独的文件中,但它仅适用于 chroot 用户,root
但不适用于 chroot 用户:
# cat /etc/ssh/sshd_config
...
Subsystem sftp internal-sftp -l INFO
Match Group user1
ChrootDirectory /chroot
ForceCommand internal-sftp -l INFO
AllowTcpForwarding no
X11Forwarding no
-
# cat /etc/rsyslog.d/sshd.conf
auth.* /var/log/sftp.log
-
tail -F /var/log/secure /var/log/sftp.log
==> /var/log/secure <==
Dec 27 12:35:09 lab sshd[43014]: Accepted publickey for root from 192.168.1.100 port 44706 ssh2
Dec 27 12:35:09 lab sshd[43014]: pam_unix(sshd:session): session opened for user root by (uid=0)
Dec 27 12:35:09 lab sshd[43014]: subsystem request for sftp
==> /var/log/sftp.log <==
Dec 27 12:35:09 lab internal-sftp[43016]: session opened for local user root from [192.168.1.100]
Dec 27 12:35:10 lab internal-sftp[43016]: opendir "/root/"
Dec 27 12:35:10 lab internal-sftp[43016]: closedir "/root/"
Dec 27 12:35:27 lab internal-sftp[43016]: session closed for local user root from [192.168.1.100]
==> /var/log/secure <==
Dec 27 12:35:27 lab sshd[43014]: Received disconnect from 192.168.1.100: 11: disconnected by user
Dec 27 12:35:27 lab sshd[43014]: pam_unix(sshd:session): session closed for user root
Dec 27 12:35:31 lab sshd[43017]: Accepted password for user1 from 192.168.1.100 port 44708 ssh2
Dec 27 12:35:31 lab sshd[43017]: pam_unix(sshd:session): session opened for user user1 by (uid=0)
Dec 27 12:35:31 lab sshd[43019]: subsystem request for sftp
Dec 27 12:35:31 lab sshd[43020]: session opened for local user user1 from [192.168.1.100]
Dec 27 12:35:31 lab sshd[43020]: opendir "/"
Dec 27 12:35:31 lab sshd[43020]: closedir "/"
编辑:2013 年 12 月 30 日星期一 11:40:18 GMT
系统:CentOS 6.5
我添加了以下选项,但事件仍记录到 /var/log/secure 日志文件中:
# id user1
uid=501(user1) gid=501(user1) groups=501(user1)
# mkdir /chroot/dev
# cat /etc/rsyslog.d/sshd.conf
$AddUnixListenSocket /chroot/dev/log
auth.* /chroot/dev/sftp.log
# service rsyslog restart
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
# ll /chroot/dev/
total 0
srw-rw-rw- 1 root root 0 Dec 30 11:44 log
-rw------- 1 nobody nobody 0 Dec 30 11:39 sftp.log
根据此链接,我相信您满足详细记录 chrooted sftp 用户的三个标准之一:
比较其他链接,例如这个通用指令和这个 CentOS 指令,似乎在不同发行版之间,关于日志路径的首选自定义目录名称、放置日志套接字配置的确切文件和日志表达式的确切配置略有不同套接字配置。
[编辑]
Mon Dec 30 21:50:00 GMT 2013
我目前无法使用 CentOS,但在上面的 CentOS 页面中的链接中发现似乎是一个极好的指南。链接已损坏,但我可以通过Waybackmachine访问该页面。但是由于该指南似乎有消失的风险,我现在将在下面的引文中公然复制与您的问题相关的部分。希望它会对您有所帮助,但正如目前所说,我无法在您使用的发行版上进行测试。
看来你做了一些不同的事情,所以手指交叉你会在下面找到金子。
--在 Waybackmachine 中从bigmite.com开始报价--
Chroot 配置
在此示例中,我将设置一组仅需要 SFTP 访问(无 SSH)的用户,并将文件复制到 SFTP 服务器上的文件系统。文件系统的位置将是
/sftp
,用户将驻留在此处的单独文件夹中。最初应该创建一个新组,这里称为
“sftpuser”
. 每个需要 SFTP 访问权限的用户都将被放置在该组中。应该编辑(在 debian in 上)并在最后添加以下内容:
sshd_config
-/etc/ssh
这将执行以下操作:-
/sftp/$USER
LOCAL6
现在应该在默认组中创建一个用户,而不创建主目录
sftpuser
。在 ubuntu 上,您可以输入:-(为了便于阅读,我添加了换行符!/E)
主目录设置为的原因是
/
sftp 将 chroot 到/sftp/testuser1
. 接下来需要创建用户主目录:-请注意,您设置的目录结构和权限可能因您的要求而异。应该设置用户密码,并重新启动 sshd(在 debian 上
service ssh restart
)。现在应该可以使用命令行 sftp 工具将文件 sftp 到主机,但不应该以 user 身份 ssh 到服务器
testuser1
。日志记录
您将看到在为每个 chroot 用户生成详细的 sftp 日志记录
/var/logmessages
,默认情况下这应该转到daemon.log
. 原因是 chroot 的 sftp 进程无法打开/dev/log
,因为它不在 chroot 文件系统中。这个问题有两个修复方法,具体取决于文件系统配置。
如果用户 sftp 目录 /sftp/user 在根文件系统上
您可以创建一个硬链接来模仿设备:-
如果用户 sftp 目录不在根文件系统上
首先 syslog 或 rsyslog 需要在用户文件系统中使用附加的日志记录套接字。对于我的示例
/sftp
是一个单独的 sftp 文件系统。对于红帽
在使用 redhat syslog 时,我更改
/etc/sysconfif/syslog
了以下行:-读作:-
最后,需要告诉 syslog 守护程序将消息记录
LOCAL6
到/var/log/sftp.log
文件中,因此将以下内容添加到/etc/syslog.conf
:-并且系统日志已重新启动。
对于 Ubuntu 清醒
在我创建的 Ubuntu lucid 上
/etc/rsyslog.d/sshd.conf
包含:-...并重新启动 rsyslogd。
为用户创建日志设备
现在为每个用户
/dev/log device
创建一个需要:---结束报价--