本文隶属于 网站优化 分类,点击分类名称查看更多相关主题;

I. 运作逻辑图

Cloudflare运作逻辑

使用Cloudflare(CDN)隐藏服务器真实IP

CloudFlare是一个国外著名的免费CDN网站加速服务公司。Content Delivery Network,简称CDN,内容分发网络,是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。查看CDN更多资讯

这里我推荐使用Cloudflare,免费版本基本可以满足一个小站需求。

II. 步骤一 一些必要的检查

除非你一开始就使用了CDN,不然你铁定泄露了。如何知道你的服务器IP是否已被扫描,查看关于接入 Cloudflare CDN网络后,如何防止源站IP泄露;如果已经被扫描并被记录,这时候你要做的先将域名解析(一般你的解析是在域名服务商下)迁移至Cloudflare下,之后再做服务器迁移。

III. 步骤二 使用Cloudflare解析你的网站

网站很简单,基本上不用什么参考。注册即可用。

Cloudflare

记住这个黄色小Logo,添加解析记录时务必保持这个颜色(而不是灰色)。(迁移服务器后,把ip替换即可)

IV. 步骤三 更换服务器

备份并更换你的服务器;各个VPS都应该是提供服务器迁移的(自然不同的数据中心,分配的IP也不一样,IP有地理位置属性)。我所在用的VPS服务商linode,从东京数据中心迁移到费里蒙特也就半个小时左右,还是很便利的。

迁移服务器成功后,将Cloudflare上的解析IP更换即可。

V. Cloudflare抗DDoS

VI. 5秒盾

五秒盾.png

Under Attack Mode,也就是一招祭出JSchallenge,让攻击者无所适从。(当然,也已有人开始试着绕过盾,但效果似乎不甚理想!)

VII. JS/Captcha challenge

Cloudflare Firewalls rules

基本上,套了Cloudflare之后,真实服务器IP铁定隐藏好了。(本文附录还有个防扫描脚本)
因为用户所有请求均由Cloudflare转发,所以很大程度来讲,在Cloudflare做好防火墙规则即可抗住DDoS。

Cloudflare Captcha

JSchallenge /Captcha 不会常用到,一旦用上了,所有攻击都是虚张声势。所有伪装请求,都会先在Cloudflare过滤。坏处就是,一旦长时间使用,谷歌爬虫也爬不到你的内容,过不了多久你的排名就会降下去。(验证码会影响搜索引擎,五秒盾与Block倒不会:参考高级DDoS防护和缓解丨Cloudflare 知识点

算是好处,也算坏处。

VIII. 其他建议

无。

IX. 附录

禁止扫描机扫描脚本,即拒绝除Cloudflare外的所有IP对源站(40/443)端口扫描。

#!/bin/bash
# Name  : Anti IP Leakage
# Author: Zhys
# Date  : 2019

# 禁止来自IPv4的所有HTTP/S访问请求
iptables -I INPUT -p tcp --dport 80 -j DROP
iptables -I INPUT -p tcp --dport 443 -j DROP

# 对Cloudflare CDN IPv4地址开放HTTP/S入站访问
for i in `curl https://www.cloudflare.com/ips-v4`; do iptables -I INPUT -s $i -p tcp --dport 80 -j ACCEPT; done
for i in `curl https://www.cloudflare.com/ips-v4`; do iptables -I INPUT -s $i -p tcp --dport 443 -j ACCEPT; done

# 禁止来自IPv6的所有HTTP/S访问请求
ip6tables -I INPUT -p tcp --dport 80 -j DROP
ip6tables -I INPUT -p tcp --dport 443 -j DROP

# 对Cloudflare CDN IPv6地址开放HTTP/S入站访问
for i in `curl https://www.cloudflare.com/ips-v6`; do ip6tables -I INPUT -s $i -p tcp --dport 80 -j ACCEPT; done
for i in `curl https://www.cloudflare.com/ips-v6`; do ip6tables -I INPUT -s $i -p tcp --dport 443 -j ACCEPT; done

# 保存iptables配置
iptables-save
ip6tables-save

# 注意:80/443为默认HTTP/S协议通讯使用端口,若实际应用使用非80/443端口进行,请依葫芦画瓢自行修改脚本
# Ubuntu系统可以使用UFW则类似:for i in `curl https://www.cloudflare.com/ips-v4`; do ufw allow proto tcp from $i to any port 80; done
# 基于Linux系统兼容性考虑脚本使用iptables配置系统防火墙,请自行根据各自系统、防火墙不同做相应配置调整实施

via 关于寻找源站IP以及接入Cloudflare CDN网络后如何防止泄露

X. 附录

1.Cloudflare介绍:https://zh.wikipedia.org/wiki/CloudFlare
2.联系limbo

必用的基本页面规则:

https://www.cloudflare.com/zh-cn/features-page-rules/must-use-page-rules/

通过实施安全域连接来提高安全性和性能
通过定义域的规范版本来保护您的 SEO
通过高级缓存功能降低带宽使用量和服务器负载
通过 HTTP/2 和积极的缓存策略优化性能
通过 Always Online 功能增强关键域资产的可靠性

最后修改:2023 年 03 月 23 日 03 : 58 PM