我对使用命令行还比较陌生,因此我非常担心摆弄 IP 表并意外地做错事,从而导致防火墙出现漏洞。
因此,在实际尝试通过 ssh 添加此 ip 白名单规则之前,我想在这里询问我的命令使用是否正确。
iptables -I INPUT -p tcp -m multiport --dports http,https -s 204.93.240.0/24 204.93.177.0/24 199.27.128.0/21 173.245.48.0/20 103.22.200.0/22 141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20 -j ACCEPT
这种用法正确吗?不太确定是否可以一次性添加所有这些 IP,还是必须手动逐个添加它们。
答案1
我无法评论对 CDN 的网络块进行硬编码是否明智,因为我假设您已经仔细考虑过这个问题,并且有办法确保在新的数据中心部署系统时您能够更新。不过,我要指出的是,您需要用逗号分隔这些 CIDR 标记的网络块,而不是用空格分隔它们。:)
另外:语法清理后,您当前的调用将起作用,但如果您在之后未指定规则编号-I INPUT
,它将被添加到链的末尾,您可能已经有一个默认拒绝规则。换句话说:此规则不会在该命令要放置它的地方执行任何操作。
处理此问题的最佳方法是找到并编辑规则文件,然后重新加载它。
答案2
你不应该把它们都放在一行中,而应该有一行每IP 地址范围。不幸的是,这似乎正是 CloudFlare 所推荐的。
完整列表如下:
iptables -A INPUT -p tcp -m multiport --dports http,https -s 204.93.240.0/24 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports http,https -s 204.93.177.0/24 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports http,https -s 199.27.128.0/21 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports http,https -s 173.245.48.0/20 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports http,https -s 103.22.200.0/22 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports http,https -s 141.101.64.0/18 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports http,https -s 108.162.192.0/18 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports http,https -s 190.93.240.0/20 -j ACCEPT
ip6tables -A INPUT -p tcp -m multiport --dports http,https -s 2400:cb00::/32 -j ACCEPT
ip6tables -A INPUT -p tcp -m multiport --dports http,https -s 2606:4700::/32 -j ACCEPT
幸运的是,他们提供了纯文本文件形式的列表,您可以随时获取这些文件并将其合并到防火墙构建脚本中。