我正在尝试在我的服务器中配置以下限制sshd_config
:
sftp
被允许在chroot监狱中使用sftpsftp
组中的具有非本地IP地址的用户将不允许执行任何操作。这是我想出的:
Match Address 10.0.0.0/24,172.16.0.0/20,192.168.0.0/16
X11Forwarding yes
Match Address *,!10.0.0.0/24,!172.16.0.0/20,!192.168.0.0/16 Group sftp
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
Match Address *,!10.0.0.0/24,!172.16.0.0/20,!192.168.0.0/16 Group *,!sftp
X11Forwarding no
AllowTcpForwarding no
ForceCommand /sbin/nologin
问题是:当我尝试从内部地址登录时,以非sftp用户身份被拒绝;第三次比赛触发。
根据sshd_config
联机帮助页的说明,仅当满足所有匹配条件时,才满足Match的要求,但在我的情况下,不满足第一个条件(我来自IP地址为172.16.0.0/20的计算机)第二个是(我不在sftp组中)。
是sshd_config
手册页错了吗?有可能做我想做的事吗?
更新:在@steve的建议下,我在调试模式下运行了sshd,并得到了以下信息:
debug1: userauth-request for user root service ssh-connection method none
debug1: attempt 0 failures 0
debug1: connection from 172.19.187.49 matched 'Address *,!10.0.0.0/24,!172.16.0.0/20,!192.168.0.0/16' at line 144
debug1: user root does not match group list sftp at line 144
debug1: connection from 172.19.187.49 matched 'Address *,!10.0.0.0/24,!172.16.0.0/20,!192.168.0.0/16' at line 150
debug1: user root matched group list *,!sftp at line 150
debug1: PAM: initializing for "root"
no-internal-adress子句是匹配的;此外,调试日志中未提及第一个匹配项,这似乎很奇怪。
更新:
正如@Gilles指出的那样,我上面显示的地址规范不正确。我应该使用的是10.0.0.0/8,而不是10.0.0.0/24和172.16.0.0/12,而不是172.16.0.0/20。我是从32开始而不是从0开始计数掩码位。
使用更正的地址,配置即可工作。谢谢吉勒斯和乌列尔!
(我还将最后一行中的/ sbin / nologin更改为/ bin / false;前者会导致来自sftp:的奇怪错误消息Received message too long 1416128883
。)
您的netmaks是不正确的。如果要包括专用网络,则应使用:
10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
这可能就是为什么您不匹配而不是ssh
错误的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句