如何做好日常运维的安全工作
一、主动与被动发现漏洞
这里的主动是指安全工程师主动去做的事情,而被动并不是被动挨打,而是积极去获取信息,积极防御。
因为***之间信息不对称,很多***、利用方式及漏洞安全工程师不一定能第一时间获取到信息
就导致了服务器被黑,出现被上传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
揪出来,使***者无处遁形。
最后说说运维安全,运维安全工作本来其实是工作范畴的事,但运维做不好这部分工作或者说大多数运维对安全
的理解并不深入,所以企业有了运维安全这个职位,或者你可以把它叫做安全运维
运维安全需要有较宽的知识面来撑起企业安全的一片天。
有一个朋友是做游戏的,他告诉我他们公司关于ssh安全方面就有五层验证!
好吧,可能对于一些不是很注重安全的运维小伙伴来说,弄那么复杂干嘛?
甚至有的公司直接root登陆(很危险), 甚至有的ssh默认端口都不改
我个人认为不一定安全做的那么多
(当然要根据公司业务具体环境具体来定)但起码一些基本的安全方面要做到位!
下面是我多年实战个人总结一些方法,介绍并分享给大家!
三、常用的服务器安全方面的措施
1、硬防火墙。
通过硬件防火墙acl策略也决定是否可以访问某台主机
2、软防火墙 [常用]
比如iptables,tcpwrappers,防护软件等,内部对主机进一步进行限制
3、修改默认的ssh端口 [必用]
默认是22,建议改成五位。
4、密码要符合复杂性要求,防止暴力破解 [必用]
避免ssh暴力破解,建议密码稍微复杂一些,符合四分之三原则!
5、禁止root登陆 [必用]
禁止root远程ssh登录
在/etc/ssh/sshd_config设置:PermitRootLogin no:
禁止root本机登录(根据具体环境,这个不是很必要)
将 auth required pam_succeed_if.so user != root quiet
添加到/etc/pam.d/login 文件第一行
6、禁止密码登陆 [常用]
删除不必要的账号,并禁止用户密码登陆
7、公钥私钥认证 [常用]
通过公钥私钥rsa2048,并设置复杂性密码
8、LDAP等方式统一认证登陆
通过对ssh账号集中化管理,进一步提升安全
9、对secure日志进行日志切割,通过脚本,对于不安全的访问ip进行过滤并报警
secure日志记录着用户远程登陆的信息,可通过查看此日志排查不安全因素。
10、搭建日志服务器,对secure日志进行监控。排查不安全因素
一个好的日志服务器,可大大减轻管理员的工作,并方便管理。