企业安全实践(基础建设)之WEB安全检查

前言

       WebShell、网马或恶意黑链等都是web被入侵后经常出现的产物,传统的特征码或特征函数等方式的安全扫描,已经不满足企业的安全需求,怎么保证WEB代码机上的代码安全,解决此类攻击,是本文的重点。

背景

       针对WebShell等恶意脚本的检查,通常安全人员都会抄起各种webshell检查工具针对web目录大扫一通,但是这种情况并不会杜绝此类脚本的诞生,也可能会有遗留等现象,那怎么办呢?

代码部署

       我的推荐方式,是从代码部署方法入手。通常稍微大点的企业都有各自的代码发布平台,具有最基本的几个功能如预发布、代码发布、代码回滚等。通常它的流程是这样:

1、开发环境push代码到git仓库中
2、预发布模块拉取最新代码
3、同步代码到线上环境
4、出现问题时,快速回滚版本

      参考如图:

111.png

       我们关注的重点其实是在第3步,我们姑且认为企业代码库中的代码文件是安全的,原理很简单就是服务器代码与代码库文件进行比较,当web机组上任意一台服务器的代码目录进行了修改、添加等敏感操作时,我们就进行报警并备份操作。

       为了达到目的,我们首先要知道运维使用什么机制把代码同步到线上环境的。

Git部署

       Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理,也是很多运维人员推送代码到线上的常用的一种方法,通常是git+运维工具(如saltstack)。

        git支持如下命令进行代码变化差异检查,如:

git status  可以列出当前目录所有还没有被git管理的文件和被git管理且被修改但还未提交的文件
git diff    比较当前工作目录和快照直接的差异变化,具体参数可自行查询

SVN部署

       SVN同Git很类似,它同样是一个版本控制系统,也是很多企业上线的选择,使用也和Git直接发布很类似,通常也是 SVN + 运维工具组成代码上线操作。

        SVN支持如下命令进行代码变化差异检查,如:

svn status   查看本地文本和版本库里面的文件的区别
svn diff     对比当前本地的工作拷贝文件(working copy)和缓存在.svn下的版本库文件的区别

Rsync部署       

         Rsync是Linux系统下的数据镜像备份工具。它支持远程同步、支持本地复制或者与其他SSH、Rsync主机同步,在运维中进行文件同步、代码同步等使用广泛。通常都是GIT作为代码版本管理、Rsync作为代码发布工具实现代码上线。

        Rsync支持如下命令进行文件变化差异检查,如:

rsync -n --delete -r   递归检查文件夹下的所有文件和文件夹的变化情况,但并进行不删除操作

开源项目

项目地址

https://github.com/grayddq/CodeInspect

项目介绍

       主要目标是根据代码发布的方式,从根本上实现WEBShell、网马或恶意链接等安全方面的检测。

作者

       咚咚呛,如有其他建议,可联系微信280495355

满足安全需求

1、周期内查询网站代码是否进行过修改如:添加、修改、删除等
2、修改的文件进行日志告警、并进行提取备份
3、事件发生时,可立即进行代码同步恢复,删掉添加或修改的内容。
4、支持GIT、SVN、Rsync等代码发布服务

技术细节

1、支持多级代码目录形式
2、支持GIT、SVN、Rsync等代码发布服务
3、支持变动文件拷贝
4、支持代码恢复功能

测试环境

WIN7 /Centos 7  +  python 2.7.5

目录介绍

PubilcAssetInfo
----CodeInspect.py   #主程序

部署

直接放置代码到web机组任意路径上,配置如cron.d的定时执行任务,并通过日志服务器收取相关日志,进行告警。

配置

配置CodeInspect.py 

# 代码路径
CODE_DIR_LIST = ['/root/tool/PubilcAssetInfo', '/home/test/test_gdd/testbbb', '/home/test/test_gdd/testrsync']
# 代码同步方式 git / svn / rsync
TYPE = 'rsync'
# 是否执行代码恢复,True / False
ACTION = True
# 可疑文件存放的地方
TMP = '/tmp/codeinspect/'
# rsync服务的登录,替换其中的IP、账户、密码文件等信息
RSYNC_LOGIN_INFO = 'rsync --password-file=/etc/pass.txt [email protected]::web'

日志

       日志目录默认:/var/log/codeinspect.log

运行截图

       运行如图:

111.png

原始链接: http://www.freebuf.com/column/158358.html
侵权请联系站方: [email protected]

相关推荐

换一批