OpenWrt 和屏蔽来自中国的地址

OpenWrt 和屏蔽来自中国的地址

我在路由器上运行 OpenWrt,我很喜欢它。我的问题是如何阻止所有中国地址连接到路由器防火墙的 22 端口?99.9999% 的未经授权的 ssh 连接都来自那里。

/K

答案1

我不确定封锁整个国家的 IP 地址是否是个好主意,尤其是像中国这样拥有大量 IP 的国家。这会减慢你的防火墙速度,但效果并不好。如果你坚持,以下是属于中国的 IP. 保护你的 ssh 服务器的最佳方式是 -

  1. 将 ssh 端口号更改为更高的端口号
  2. 安装诸如 之类的工具fail2ban,在多次登录尝试失败后会阻止 IP。
  3. 使用私钥/公钥认证。

你可能会发现教程很有用

答案2

就像你屏蔽其他人一样。当然,你需要中国 IP 屏蔽列表。你可以在这里获取它们:http://www.nirsoft.net/countryip/cn.html

然后您需要将其转换为 iptables 格式(除非列表已经有这种格式)。

具体过程取决于您使用的防火墙。但一般来说,您将创建一个新的 ssh 链,并将所有访问发送到端口 22。如果您有一个包含 iptables 格式的地址的文件(1.2.3.4/24),那么您可以使用 shell 命令

while read network; do
  iptables -A ssh -s "$network" -j DROP
done < china-networks.txt
iptables -A ssh -j ACCEPT

可以通过接受关闭中国境外的几个地址并将小型网络合并为大型网络来优化这一点,从而减少要检查的规则数量。如果是 UCI 防火墙,可以从 /etc/firewall.user 中执行此操作。

答案3

使用ipset用于匹配大型 IP 地址列表。

创建集合:

ipset -N myset iphash
while read network; do
  ipset -A myset ${network}
done < china-networks.txt

丢弃流量:

iptables -A INPUT -m set --set myset src -j DROP

相关内容