cdn是将源站内容分发至最接近用户的节点,提高用户访问的响应速度,解决企业源网站的服务器压力。未来五年CDN行业仍然会高速增长,超过50%的互联网流量通过CDN进行加速。
但是网络安全仍然是非常重要的问题, 虽然阿里云Web应用防火墙(WAF)支持各类CDN(如网宿、加速乐、七牛、又拍、阿里云CDN等),但是价格非常昂贵,中小企业很多负担不起,同时抱有***不会***的侥幸心里。那么有没有功能和性能都好的免费WAF呢,答案是有的。
hihttps是一款免费的web应用防火墙,既支持传统WAF的检测功能如SQL注入、XSS、恶意漏洞扫描、密码破解、CC、DDOS等),又支持无监督机器学习,自主对抗,重新定义web安全。具体原理可以百度搜索“hihttps谈机器学习之生成对抗规则”。今天下面以CentOS 为例,一步一步介绍怎么用hihttps来免费保护CDN环境的企业源站。
一、 安装
hihttps可以在WEB源站服务器上直接安装,也可以像硬件WAF那样独立部署服务器前面,用反向代理的原理来保护源站。
首先在http://www.hihttps.com/官网下载hihttp.tar.gz安装包,tar –zxvf hihttps.tar.gz 解压到任意目录,核心有3个文件和3个目录:
1、hihttps是可执行文件,支持centos 64位系统。
2、hihttps.cfg是配置文件,如端口/反向代理的服务器IP等。
3、ml.cfg是机器学习配置文件。
4、rules目录是对抗规则,包括OWASP的SQL注入、XSS、CC、DDOS、密码破解、恶意扫描以及机器学习自主对抗规则。
5、train目录是无监督机器学习样本采集目录。
6、log目录是***报警日志。
创新互联公司长期为上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为永和企业提供专业的网站设计、成都网站制作,永和网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
hihttps默认配置前端绑定443端口(HTTPS)和81端口(HTTP),反向连接的80端口:
https:// serverip / <==> http://127.0.0.1/
http://serverip:81/ <==> http://127.0.0.1/
注释:serverip是你的服务器的实际IP地址或者域名,本文下面不再阐述。
如果你是在vmware虚拟机里面做测试,或者服务器上还没有web服务器,请先安装nginx或者apache如:
yum install nginx或yum install httpd ,打开浏览器 http://serverip/ ,,确认访问80端口是成功的。
二、 hihttps配置
1、端口配置
为了方便测试,hihttps开启了81和443两个web端口,注意443需要绑定PEM格式的证书,默认提供了一个叫server.pem的数字证书,如果有,请换成源站服务器的真实证书。配置如下:
https.cfg:
frontend web
mode http
bind :81
default_backend s_default
frontend web_ssl
mode http
bind :443 ssl crt server.pem #PEM证书建议用绝对路径如/home/xxx/server.pem
default_backend s_default
errorloc302 400 http://www.hihttps.com/ #***重定向网页,仅DROP阻断模式有效
#真实的后端WEB服务器端口
backend s_default
mode http
server server_default 127.0.0.1:80
2、OWASP规则设置
Hihttps兼容ModSecurity大部分规则,最厉害的是著名安全社区OWASP,开发和维护着一套免费的应用程序保护规则,这就是所谓OWASP的ModSecurity的核心规则集(即CRS),几乎覆盖了如SQL注入、XSS跨站***脚本、恶意扫描、密码破解、DOS等几十种常见WEB***方法。
hihttps默认配置了这几条,基本满足常见***防护:
REQUEST-913-SCANNER-DETECTION.conf
REQUEST-941-APPLICATION-ATTACK-XSS conf
REQUEST-942-APPLICATION-ATTACK-SQLI conf
REQUEST-20-APPLICATION-CC-DDOS conf
REQUEST-20-APPLICATION-Brute-PASS conf
white_url.data
black_url.data
……
更多的规则,可以去https://github.com/SpiderLabs/ModSecurity官方网站下载,把文件保存在rule目录下即可。
3、机器学习配置
一般来说,机器学习是自动完成的,不用配置。当然也可以为机器精确设置要学习的网站文件所对应的目录,这样学习更快速、准确:
ml.cfg:
#www_dir /usr/share/nginx/html/
#缺省是报警模式ruleAction alert,要设置为阻断模式,请开启ruleAction drop
#ruleAction drop
4、 机器学习对抗规则
Rules目录下的gan.rule是机器学习自动生成的对抗规则文件,为了方便测试,默认了一条接口规则https://serverip/hihttps.html?id=xxx
三、运行测试
运行./hihttps,如果界面打印出了OWASP 规则、Mache Learning(机器学习规则),并且显示了start ok……就说明正常。
1、OWASP 规则测试
可以用Kali Linux,集成了很多web漏洞扫描工具,非常方便测试,如nkito等。
运行 nikto -h 192.168.0.1 -p 80,81 -C
或者nikto -host www.baidu.com –C port 443 –ssl
hihttps主界面就会打印出,大量的报警日志。
2、机器学习测试
机器学习是hihttps的核心,但采集成千上万的样本需要一定时间,为了方便测试,默认了一条hihttps.html机器学习样本。
https://serverip/hihttps.html?id=123,采集到的样本大于99%都是这种形态,那么浏览器输入下面的网址,都将视为***:
***测试样本:
https://serverip/hihttps.html?id=123' or 1='1
https://serverip/hihttps.html?id=
https://serverip/hihttps.html?id=1234567890&t=123
https://serverip/hihttps.html?id=abc
如果上图界面,打印出了***日志,那么恭喜你,系统运行正常,hihttps保护成功。
报警日志产生在log目录下,按天存储,格式是这样的。。
2020-02-09 21:14:49 192.168.1.153:59615 [ALERT] [888] [GET /hihttps.html] STR:"ff" Matched, Machine Learning : Detect an attack,value is not a number...
…..
四、正式部署
作为免费版本,到这里就结束了。实际部署的时候,把hihttps和nginx(apache)的端口换一下,hihttps绑定80和443,nginx(apache)绑定127.0.0.1:81就可以了。
修改hihttps.cfg文件相关配置:
http://serverip/ <==> http://127.0.0.1:81/
https://serverip/ <==> http://127.0.0.1:81/
用机器学习几天后,如果人工核实报警准确率大于99.9%,在不影响生产的情况下,可以修改ml.cfg文件,开启ruleAction drop阻断模式。
hihttps企业版付费本无非就是开源,并且有专门的WEB管理界面而已,核心防护功能都一样,小企业没必要再去购买昂贵的WAF。
五、总结
1、传统的waf规则很难对付未知漏洞和未知***。让机器像人一样学习,具有一定智能自动对抗APT***或许是唯一有效途径,但******技术本身就是人类最顶尖智力的较量,WEB安全仍然任重而道远。
2、幸好hihttps这类免费的应用防火墙在机器学习、自主对抗中开了很好一个头,未来WEB安全很可能是特征工程+机器学习共同完成,必然是AI的天下。