+86 13541016684Mon. - Fri. 10:00-22:00

借助Apache模块mod_cloudflare来增强网站安全性

借助Apache模块mod_cloudflare来增强网站安全性

借助Apache模块mod_cloudflare来增强网站安全性

一.介绍

一般情况下,如果要给没有备案的网站上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,那么你可能需要编译一下了
官方教程里也介绍了编译安装的方法,但是,请注意

这儿你可能不需要后面的httpd-devel,因为编译安装自带devel环境,你装这玩意会依赖着装上httpd本体,然后会覆盖掉你编译安装带的启动脚本啥的,很蛋疼

这儿列一下CentOS的命令,其他的自己去看官方页面吧

跑完apxs会自动帮你修改配置文件加载模块,这时候已经是可以用了,但是是运行在默认配置下,由于编译没有给你加上配置文件模板,所以你得自己添加了

我建议在 /usr/local/apache/conf/extra/cloudflare.conf 路径放配置文件,内容参照如下

然后在你的httpd.conf中添加如下一行

之后重启下Apache就行了

那个 DenyAllButCloudFlare 我强烈建议开启,因为这个就是阻止扫IP最好的方法,但是建议你先把该配的配完,因为开了这个你直接访问IP(默认的default网站)都是403,包括IP下的PhpMyAdmin啥的,除非你把它也丢到绑了域名套了CF的目录下

除了这个以外这个模块的主要功能是把CF的IP换成访客的真实IP,从而方便统计访客和封禁恶意访问的IP