将 SSH 限制在某个 IP 范围内

将 SSH 限制在某个 IP 范围内

我使用 OpenBSD,我想限制 IP 在 192.168.42.40 - 192.168.42.60 之间的所有用户的端口 22。但我不知道该怎么做。我需要修改数据包过滤器吗?

(SSH 在我的 Web 服务器上,我的网关 IP 是 192.168.2.2)我的网络图: 在此输入图像描述

你能帮我找到解决方案吗?

答案1

是的。这对于数据包过滤器来说是一项(很好的)工作。如果该范围与子网可以写为 IP 地址 + 网络掩码。如果您需要至少 20 个地址,我会将其四舍五入到 30,并从 192.168.42.33 开始,因此您将讨论子网 192.168.42.32/27,这意味着主机的地址范围从 0.33 到 0.62 。如果这太多,您可以将其缩小到 /28,这将产生 14 个主机,从 0.33 到 0.47。考虑到这一点,您可以添加

pass on <ifname> inet proto tcp from 192.168.42.32/27 to port ssh

to/etc/pf.conf在 SSH 服务器上,其中<ifname>是将接收 SSH 流量的接口的名称(例如em0)。可以省略,在这种情况下,规则将应用于所有接口。

请阅读pf.conf的手册页,了解有关设置数据包过滤器以及如何配置它的更多详细信息。 OpenBSD 的man页面通常写得非常好、详尽并且经常包含示例。

答案2

你可以这样做iptables

#allow the hosts
iptables -I INPUT -p tcp --dport 22 -s 192.168.42.40 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -s 192.168.42.41 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -s 192.168.42.42 -j ACCEPT
...# you must specify all of them
iptables -I INPUT -p tcp --dport 22 -s 192.168.42.60 -j ACCEPT

#deny everyone else, note the -A (append) option.
iptables -A INPUT -p tcp --dport 22 -j DROP

iptables

相关内容