我对于使用命令行相对来说比较陌生,所以我对于摆弄IP表非常紧张,并且不小心做了一些错误,从而在防火墙中造成漏洞。
所以,我想我会问在这里,如果我的命令使用是正确的,实际上试图通过SSH添加此白名单规则。
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,或者如果我必须逐个手动添加它们。
我无法评论硬编码CDN的networking块是多么的聪明,因为我假设你已经想到了这一点,并且有一种方法可以确保在新的数据中心中部署系统的时候更新。 不过,我会注意到,你需要逗号分隔那些CIDR标记的networking块,而不是空格分隔它们。 🙂
另外:一旦语法被清除,你的当前调用就可以工作,但是如果你在-I INPUT之后没有指定一个规则号,它会被添加到链的末尾,你可能已经有一个默认拒绝规则。 换句话说:这条规则不会做任何事情,这个命令是要把它。
处理这个问题的最好办法是find并编辑你的规则文件,然后重新加载它。
而不是试图把它们全部放在一行中,每个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
幸运的是,他们有清单文本文件,您可以不时获取并纳入防火墙build设脚本。