之前在《浅谈web后门隐藏与检测思路》这篇文章里有个小哥已经对检测webshell的一些方法做了简单介绍,我在这方面略有经验,检测webshell不能只是简单的查杀,而该把这个当作一个长期任务来做,防御webshell不能单单从”行为”上去判断,前期需要做的工作还有很多,我从企业的全局防御来说说如何从架构上防御webshell,和搞运维安全,希望此文能抛砖引玉激起讨论火花。
一,主动与被动发现漏洞:
这里的主动是指安全工程师主动去做的事情,而被动并不是被动挨打,而是积极去获取信息,积极防御。因为攻防之间信息不对称,很多攻击、利用方式及漏洞安全工程师不一定能第一时间获取到信息,就导致了服务器被黑,出现被上传webshell无外乎这集中情况:使用开源程序出现高危漏洞被攻击者上传webshell,服务器配置错误导致攻击者利用运维缺陷上传webshell,程序员编写代码存在诸如sql注入、文件包含,命令执行问题被攻击者发现并利用导致被上传webshel,那是不是说作为防御者我们就一定是被动挨打的呢?答案当然是否定的,如果运维安全做的好的情况下,会在服务器上线初期做安全检查将加固服务做成加固基线包,后期邀请外部人员进行渗透测试来检查企业安全情况,安全基础就牢靠。从主动来说,企业可以通过这些办法来将攻击者的想法消灭在萌芽之中。1、积极主动的做好对系统加固工作,坚决消灭弱口令、回收外网默认管理后台(能回收的回收,不能回收的做好访问控制),对诸如tomcat、jboss、resin之类的服务器做好加固,避免出现弱口令,因为互联网上每时每刻都有人来通过这几种服务来抓肉鸡。
2、对于漏洞的修复不能只仅限于加固还要主动去发现,需要定期对生产环境和web进行扫描、其中外网端口扫描需要结合资产进行,如果不能结合资产,扫描的结果会差强人意。
3、对企业所使用的开源程序另外诸如webserver、第三方中间件都有深入了解,并关注这些app近期存在安全风险:比如struts漏洞,如果能早发现事情也可控制(通过关注乌云、微博等来及时获取信息)。
其次是权限控制,在struts漏洞中,使用root运行的struts2,受影响最严重而运行权限为tomcat之类的较轻,较轻不是说不被脱裤,而是攻击者没有权限对服务器来做更进一步操作比如rm -rf /,所以对于权限的控制也需要考虑到加固中去。
4、被动发现漏洞可以依靠对乌云等平台的漏洞提交来预测可能爆发的漏洞情况,并且结合第3点对应用做检测,如果发现漏洞了则快速修复,将不会到被攻击者上传webshell的情况。
二,监控为主分析为辅:
监控的重要性不需要在陈述,在城市的各个角度都有监控摄像头,监控的作用是属于事中或者事后阶段,举个例子,某人犯罪如果没有监控的情况下,无法追溯,这时候如果有监控的话就可以对其行为做分析和追溯。举一反三,在企业安全防护方面也可以这样做,通过部署ossec之类的行为监控,对攻击者的行为做检测。比如对于webshell的检测来说,更关注”行为”,啥叫行为呢,你的一举一动都是行为,上传了文件,修改了权限,删除了权限这些都该被记录下来,而类似ossec之类的监控工具可以做到,当然你也可以编写脚本来对目录做实时检测。分析为辅,可以从多点上来结合,比如攻击者对于网站的注入行为,都会触发记录,记录到log里,攻击者对ssh的扫描行为,都会被记录到日志里,而这些都可以用作对攻击者的行为分析,更超前一些恶意的扫描都可以算作是行为,并且这些行为都是可以分析和追溯攻击者的,其次日志需要备份到远程,并且可以利用大数据日志分析利器splunk来对日志分析,备份到远程也导致了攻击者删除本机日志时能被追溯到。对于webshel检测来说,可以从日志里进行分析,因为任何攻击者的操作都会在日志里显现记录,这时候只要有足够的日志分析能力就可以对产生的webshell揪出来,使攻击者无处遁形。最后说说运维安全,运维安全工作本来其实是工作范畴的事,但运维做不好这部分工作或者说大多数运维对安全的理解并不深入,所以企业有了运维安全这个职位,或者你可以把它叫做安全运维,运维安全需要有较宽的知识面来撑起企业安全的一片天。