我想要配置 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
满足您的需求。尤其是最后一个似乎与您的情况相关。