正确地使用 Cloudflare 保护你的网站

今天看到某不愿透露姓名的雨落无声同学在群里提到自己的网站被轮,最后只好上 cf。

有感于 cf 确实是防日的好工具的同时,在这里强调一下很多时候会被(上了 cf 就感觉万事大吉的)小站长们忽略的一个问题:*map 大法。

按照规矩,说问题应该先给 PoC,但这玩法实在太普及,就简单说一下原理:

通过 nmap/zmap 之类的工具,扫描全网(如果能从网页确定网段那自然更棒),然后伪装 host 验证。

这个玩意解决还是很简单的,只要做 ip 过滤就行了,以 nginx 为例:

先准备好 ip 白名单

1
2
3
4
5
6
# 下载并处理 cf 的 ipv4 列表,并写入 / etc/nginx/cfv4.conf 文件 
wget -O- https://www.cloudflare.com/ips-v4 |\
sed -e "s/^/allow /" -e 's/$/;/' > /etc/nginx/cfv4.conf
# 如有 v6 可执行,但是现在应该很少有人扫 v6 的就是了
# wget -O- https://www.cloudflare.com/ips-v6 |\
# sed -e "s/^/allow /" -e 's/$/;/' > /etc/nginx/cfv6.conf

然后在你的 vhost 配置中加入

1
2
3
4
include cfv4.conf;
# 如果有 v6
# include cfv6.conf;
deny all;

这样基本的安全操作(之一)就完成啦~