sshd 配置:仅允许来自同一私有网络内的连接

sshd 配置:仅允许来自同一私有网络内的连接

我想要配置 sshd,以便接受同一私有网络内的任何用户,但拒绝其他所有用户。

示例:我的 IP 地址是 192.168.1.159,因此应该允许网络 192.168.1.0 内的任何人。

背景:

目前我正在配置嵌入式设备映像,并考虑将其添加为一项小的额外安全措施。该映像将在不同位置的设备上运行。IP 地址将通过 DHCP 分配,并且每个系统可能连接到不同配置的专用网络(如 10.0.1.0、192.168.100.0,...)。

所以我想,理想情况下我想要的是:

DenyUsers *
Match Address OWN_DEVICE_ADDRESS/24
    AllowUsers *

然而,阅读手册页后sshd_config我没有发现这种可能性。

因此我最终想到了接受所有具有私有网络 IP v4 地址的用户,并将以下内容附加到/etc/ssh/sshd_config

Match Address 192.168.0.0/16,172.16.0.0/12,10.0.0.0/8
        AllowUsers *

DenyUsers *

然而,测试这个(通过输出systemctl status sshd)表明,即使我在同一个网络中,规则DenyUsers仍然有效:

Apr 25 23:37:43 host sshd[27733]: User test from 192.168.1.166 not allowed because listed in DenyUsers *

所以我想我没能理解 的概念DenyUsers。你们能帮我一下吗?

答案1

通过添加以下行/etc/ssh/sshd_config,仅接受具有私有网络 ip v4 地址的用户:

AllowUsers *@172.16.0.0/12 *@10.0.0.0/8 *@192.168.0.0/16

@davidgo 的评论解决了这个问题(我把它作为答案提出来以便更好地看到):

我没有尝试过这个变体,但我认为删除 MatxhAddress 和 DenyUsers 行,只使用“AllowUsers *@192.168.9.0/16 *@172.16.0.0.16”就可以了。很简单。

答案2

这是 OpenSSH 吗?如果你想阻止所有人进入,那么我建议修改以下几行:

Port 22
AddressFamily any
ListenAddress 0.0.0.0

满足您的需求。尤其是最后一个似乎与您的情况相关。

相关内容