设置服务器只接受Cloudflare的CDN IP连接方法

原文:设置服务器只接受Cloudflare的CDN IP连接方法 服务器仅允许CF IP访问的方法-工具与知识-主机测评-笨牛网 - 笨牛小白成长之路|技术 教程 分享 (bnxb.com)
—————————————————————————————————————————————

之前教程写过怎么设置让NGINX只接受来自CF的CDN的IP连接的方法(https://www.bnxb.com/nginx/27638.html),但是这是属于第7层协议,要动用NGINX来处理,效率并不高,其实我们完全可以利用CENTOS服务器防火墙来实现这一功能

这里以CENTOS7带的firewalld防火墙为例

首先安装firewalld,如果已经有了这一步跳过

yum install firewalld

创建添加防火墙规则

cd /etc/firewalld/zones/
vi public.xml


粘贴如下防火墙IP(注意:需要把你的IP也加进去,不然会无法使用SSH等连接服务器)

另外还有种方案,就是把CF的其他可用端口一并放行,然后使用宝塔等管理面板,管理面板指定使用这个端口,这样就相当于可以通过CF访问到面板,就不会造成无法管理服务器的问题了,CF可用端口见https://lab.bnxb.com/zhishi/27646.html

<zone>
  <source address="173.245.48.0/20"/>
  <source address="103.21.244.0/22"/>
  <source address="103.22.200.0/22"/>
  <source address="103.31.4.0/22"/>
  <source address="141.101.64.0/18"/>
  <source address="108.162.192.0/18"/>
  <source address="190.93.240.0/20"/>
  <source address="188.114.96.0/20"/>
  <source address="197.234.240.0/22"/>
  <source address="198.41.128.0/17"/>
  <source address="162.158.0.0/15"/>
  <source address="104.16.0.0/12"/>
  <source address="172.64.0.0/13"/>
  <source address="131.0.72.0/22"/>
  <port protocol="tcp" port="80"/>
  <port protocol="tcp" port="443"/>
</zone>

以上ip是cf公布的回源ip,CF只会使用这些IP段内的IP来连接你的服务器,因此这类设置这些IP开放80,443端口给他们连接,其他IP全部拒绝,如果你是使用其他cdn只要换成自己用的cdn的回源ip即可

然后重启防火墙

firewall-cmd --reload


如显示success则成功。

如果是非CENTOS系统,可以使用UFW命令

sudo ufw allow proto tcp from 173.245.48.0/20 to any port 80
sudo ufw allow proto tcp from 173.245.48.0/20 to any port 443

把上面的IP段全部添加进去就行了

如果是CENTOS6,只支持IPTABLE命令,那可以用下面方法

iptables -I INPUT -s 173.245.48.0/20 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 173.245.48.0/20 -p tcp --dport 443 -j ACCEPT

同样的把上面的CF IP段全部添加进去就行了

然后重启防火墙

service iptables save
service iptables restart

はじめまして、どうぞよろしくお願いいたします。