拒绝来自外部网络的特定用户的 SSH

拒绝来自外部网络的特定用户的 SSH

所以我的本地网络上有一台运行 OpenSSH 服务器的服务器。服务器被配置为允许来自外部网络的 SSH,这是预期的。但是,我想创建一个特定用户(localUser),该用户不得从我的 LAN 外部登录。

目前我有一个名为 sshusers 的组,这是唯一允许通过 SSH 登录的组。

根据手册页,应该可以使用“允许/拒绝”用户,但我不知道如何做到这一点。这是我尝试过的:

第一次尝试:

AllowGroups sshusers
AllowUsers [email protected].* # 2 is not a typo
# localUser not in group sshusers. Intention: AllowUsers should override
# previous configuration, allowing access for localUser, even if he is
# not member of sshusers

第二次尝试:

AllowGroups sshusers
DenyUsers localUser@!192.168.2.*
# localUser is member of sshusers. Intention: Access is granted, but with
# the negotiation of the match-expression for the LAN, access should be
# denied for external login.
# Also tried "[email protected].*"

我应该提到,拒绝用户访问 LAN 但授予外部访问权限是可行的:

# localUser member of sshusers
AllowGroups sshusers
DenyUsers [email protected].*

但是,我想反转这个配置。

感谢任何帮助,但我不喜欢为此使用 PAM 或 iptables。

答案1

您可以尝试以下操作:

AllowGroups sshusers
DenyUsers localuser@!192.168.2.*,

请注意星号后面的逗号。因此,用于否定主机名匹配的语法!应该是:

DenyUsers localuser@!192.168.2.*,!10.8.0.*,

这意味着如果主机与列表中的主机不同,本地用户应该无法连接。

正如评论中所述,这不适用于等于或更高版本OpenSSH_7.4p1。所以我尝试了以下(使用测试openssh-7.5p1),它完美地工作:

DenyUsers localuser@*,!10.8.0.*

这样,除 10.8.0.* 之外的任何地方都拒绝 localuser

相关内容