Linux下的防篡改技巧-2

Linux下的防篡改技巧-2

Auth: winger@gnusec
今天介绍LINUX下的WEB防篡改技巧

WEB防篡改

上一篇我们介绍了简单的文件反篡改方法.
今天就介绍另一款”亡羊补牢”型的WEB防篡改系统: SEnignx. 作为为数不多的一个国人开源安全项目, 虽然跟新速度不是很快, 不过项目中的安全思路还是非常值得借鉴的. 再次感谢他们的开源精神^_^.
为什么叫”亡羊补牢”? 因为这是一种曲线救国式的安全策略(发生在恶意篡改之后). 很多时候, 我们无法保证文件系统一直是安全的, 因为它总有可能被攻破. 而这时候, 就结束了吗? 答案是否定的. 我们还有”最后一公里”.

在服务器到用户之间这段数据旅程里, 我们还是有机会反败为胜的.
如果文件被改变了, 我们只要不解析它, 不就可以了吗?

简单的WEB动态反篡改系统原理图:
ngx_http_web_defacement_1.jpg

SEnginx

项目 SEnginx
主页 http://www.senginx.org
简介 SEnginx是由东软集团网络安全事业部发起的开源项目, SEnginx为Security Enhanced nginx之意。SEnginx是在原始的nginx的基础上,整合了多种负载均衡和安全类别的第三方模块,以及东软安全为nginx开发的若干模块,主要在Web安全方面和负载均衡方面进行了功能增强。SEnginx的侧重点在于HTTP的反向代理和Web安全功能,我们致力于把SEnginx打造成一个稳定、高效的带安全防御功能的Web应用交付开源软件。同时我们欢迎大家参与SEnginx的开发,为互联网安全贡献力量。

SEnginx的安装和原始nginx类似,只不过需要使用se-configure.sh脚本来生成Makefile。
se-configure.sh脚本可以接受原始的nginx configure.sh参数。

1
2
3
4
5
6
7
8
9
[root@]./se-configure.sh --prefix=/path/to/some/where
[root@]make
[root@]make install
...
[root@]# /usr/local/nginx/sbin/nginx -v
nginx version: senginx/1.6.2
[root@CentOS-S1 nginx]# cd /usr/local/nginx/
[root@CentOS-S1 nginx]# cp /home/test/soft/senginx-1.6.2/web-defacement.pl .
[root@CentOS-S1 nginx]# mkdir recover

将所有网站代码拷贝到备份目录 recover.
ngx_http_web_defacement_3.jpg

为所有网站代码生成hash校验库.
ngx_http_web_defacement_4.jpg

修改senginx配置文件(这里是/usr/local/nginx/conf/nginx.conf), 开启防篡改功能.
ngx_http_web_defacement_5.jpg

窜改主页前. 一切正常.
ngx_http_web_defacement_6.jpg

窜改主页后, 发现告警日志记录. 访问被篡改页面, 返回403禁止访问提示.
ngx_http_web_defacement_7.jpg

接着继续修改配置文件, 开启恢复模式, 保证篡改网页后, 服务器依然能返回篡改之前的页面内容.
ngx_http_web_defacement_8.jpg

再次篡改主页, 继续发现告警记录. 访问被篡改页面, 返回篡改前的内容.
ngx_http_web_defacement_9.jpg

至此, WEB防篡改系统已经搭建完成. 更多的自定义参数和功能请参考SEnginx官网文档.

REF

配置文件
SEnginx安装
SEnginx下载