一.介绍
一般情况下,如果要给没有备案的网站上CDN我们基本上都会选择Cloudflare,免费好用,虽然国内速度可能不够理想,但是也算够用吧。
那么问题来了,我们使用Cloudflare的目的是啥呢
1. 加快访问速度
2. 隐藏网站IP
3. 过滤部分恶意请求
4. 方便HTTPS
二.分析
总结一下,快+安全,然而,其实绝大部分的人都没有考虑完全,其实是可以有办法抓出源站的,而且可以说很容易,特别是没有故意做防范的。
介绍下我常用的方法
1. 如果是有用户系统的网站,直接测试注册,然后抓发件IP
2. 根据开放80和443端口的IP列表扫Host和证书
3. 批量扫子域名
4. 抓可能的框架报错页面看是否有debug输出环境参数
具体怎么搞就不说了,讲下防范
1. 用MailGun或者其他API发件服务(注意sendcloud好像API也会泄露发件IP)或者自建安全的邮件服务器
2. 对IP访问单独绑定vhost
3. 自己在意下就行
4. 用框架开发的程序部署的时候把Debug关掉
三.安装
好了好了,扯远了,这次我主要介绍下mod_cloudflare这个apache模块
安装的话请参考Cloudflare官方介绍 https://www.cloudflare.com/technical-resources/#mod_cloudflare
如果你使用的apache是包管理器安装的,那么可以直接使用Cloudflare提供的各平台的软件包来直接安装
但是,如果你用了Oneinstack等脚本编译安装了Apache,那么你可能需要编译一下了
官方教程里也介绍了编译安装的方法,但是,请注意
yum install libtool httpd-devel
这儿你可能不需要后面的httpd-devel,因为编译安装自带devel环境,你装这玩意会依赖着装上httpd本体,然后会覆盖掉你编译安装带的启动脚本啥的,很蛋疼
这儿列一下CentOS的命令,其他的自己去看官方页面吧
yum install libtool wget https://raw.githubusercontent.com/cloudflare/mod_cloudflare/master/mod_cloudflare.c #如果不存在apxs的话加上完整的路径试试,比如/usr/local/apache/bin/apxs,如果还不行试试把apxs换成apxs2 apxs -a -i -c mod_cloudflare.c
跑完apxs会自动帮你修改配置文件加载模块,这时候已经是可以用了,但是是运行在默认配置下,由于编译没有给你加上配置文件模板,所以你得自己添加了
我建议在 /usr/local/apache/conf/extra/cloudflare.conf 路径放配置文件,内容参照如下
<IfModule mod_cloudflare.c> CloudFlareRemoteIPHeader CF-Connecting-IP # 这儿的IP可以参考https://www.cloudflare.com/ips 来自己更新,如果用了自建的Railgun也记得把IP加进去 CloudFlareRemoteIPTrustedProxy 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 104.16.0.0/12 108.162.192.0/18 131.0.72.0/22 141.101.64.0/18 162.158.0.0/15 172.64.0.0/13 173.245.48.0/20 188.114.96.0/20 190.93.240.0/20 197.234.240.0/22 198.41.128.0/17 199.27.128.0/21 2400:cb00::/32 2405:8100::/32 2405:b500::/32 2606:4700::/32 2803:f800::/32 2c0f:f248::/32 2a06:98c0::/29 # Uncomment DenyAllButCloudFlare to return a 403 status to all requests # that do not originate from an IP defined in CloudFlareRemoteIPTrustedProxy # 取消注释下面这个将会把所有并非来自Cloudflare的请求返回403 # DenyAllButCloudFlare </IfModule>
然后在你的httpd.conf中添加如下一行
Include conf/extra/cloudflare.conf
之后重启下Apache就行了
那个 DenyAllButCloudFlare 我强烈建议开启,因为这个就是阻止扫IP最好的方法,但是建议你先把该配的配完,因为开了这个你直接访问IP(默认的default网站)都是403,包括IP下的PhpMyAdmin啥的,除非你把它也丢到绑了域名套了CF的目录下
除了这个以外这个模块的主要功能是把CF的IP换成访客的真实IP,从而方便统计访客和封禁恶意访问的IP
文章评论