专栏名称: 高效运维
高效运维公众号由萧田国及朋友们维护,经常发布各种广为传播的优秀原创技术文章,关注运维转型,陪伴您的运维职业生涯,一起愉快滴发展。
目录
相关文章推荐
运维  ·  阿里云核心域名被劫持 ·  2 天前  
51好读  ›  专栏  ›  高效运维

10年反黑风云:Linux下的安全攻防实录

高效运维  · 公众号  · 运维  · 2017-05-12 07:14

正文

请到「今天看啥」查看全文


看来黑产也是“讲理”的

MongoDB 的勒索也是很火的,几乎每种事件都可以造成勒索,这就是 Linux 下的安全形势。

很多搞安全的人接触比较多,比较熟悉的漏洞是心脏流血,还有这个著名的 Dirty cow 提权,本质是 Linux 的内存的写权限管理 bug,导致不具有写权限的进程写入权限。

2016年年底出名的事件,我们国家浙江一个厂商躺枪了。这种案例很多,僵尸物联网“肉鸡”把半个美国都打瘫痪了。

1.2 Linux下的安全挑战

业务版本快速迭代、业务开放、网络边界复杂、开源组件多元化、技术架构复杂、标准化和规范化缺乏等等,这些都是挑战。

前面介绍了 Linux 的开源组件用得比较多,同时在 Server 端用得比较广。这边总结了为什么 Linux 下的安全挑战比较多,可能和传统制造业有些区别。

对于互联网公司来说业务版本迭代很快,要有很好的安全防御的理解。比如认证机制要设计好,鉴权机制要完善,其实设计完善是不容易的。往往老板的指标是一周上线,想设计好并没有那么多的时间。业务迭代版本过于频繁也给安全带来很大的挑战。

互联网业务本来就很开放,像以前在华为有明显的网络边界,内部都是内网,网络边界很明显。互联网业务本来就是对外,所以这就造成了业务整个边界外延,整个都是开放的。机房几十上百个,整个网络都是对外开放状态。

网络边界的复杂,互联网讲求分布式部署、高可用,一般5个点、10个点、20个点。分布式部署带来网络边界过于复杂,交叉认证。

开源组件多元化,开源组件很多,五花八门,例如 缓存中间件,这个哥们儿用这个架构,另一个用那个架构,一个公司有十几个架构。如果在你公司没有达到一定高度的时候,标准化、规范化没有很完善的情况下,就更加复杂,挑战更大。

同样业务端也很复杂, 很多还有 Windows 端、移动端、Web端,各种各样的业务。今天这个功能上线,明天那个功能下线,所以技术架构是一点点积累,想做很标准的技术架构也不容易。

由于前面的版本迭代、网络边界等,带来标准化、规范化都是滞后的,像 BAT 可能做得好一点,但多数公司的标准化、规范化还是不太健全。

1.3 实际生产问题

上图展示的都是 Linux 安全挑战真实的案例,都是实实在在的工作中遇到的安全问题。

对于普通运维团队或者安全团队可能都比较常见的,像服务器资源被占用,但是不知道是哪个进程占用;发现某个进程占用资源,但是却杀不死,或者杀死一会儿又启动,因为它有守护或者自动拉起。还有密钥泄露,这个很常见。

有些人把密钥放在邮箱或者服务器什么地方存着,如果他的办公机被入侵,他的邮箱被撞破,他的密钥就泄露了。密钥泄露不是最惨的,而是密钥的密码和他的邮箱密码或者是跟他什么 CSDN 的密码用同一个,这个更惨。

大家说这是小概率事件,但是一千人,千分之一的概率发生就入侵了。还有业务被挂马,这是 Web 业务中很常见的;还有 Redis 缓存突然失效,导致 MySQL 扛不住,整个业务直接瘫痪,而且扩容不了,我只是说有这种可能性。

如果你的业务使用 Redis 缓存,而且 Redis 是默认匿名,如果真的有人做 APT 研究你们,把你的 Redis 都干掉了,业务就瘫痪了,大公司可能很长时间都恢复不起来。

操作系统 OOM,很多人说服务器怎么又 OOM?前两天才刚重装,为什么又 OOM?因为有一个木马不断提权,一提权就崩,所以肯定有 OOM,这也是实际过程中的一个案例。

2、Linux下的攻击手段

2.1 攻击方式

做防御首先要了解进攻的方式。这是一个真实的案例,了解攻防的人可以看到,这是典型的 Linux 匿名,Redis 默认匿名登陆,不需要用户名、密码。

Redis 还有几个奇怪的功能我可以分享一下:Linux 有一个功能可以通过一个端口写到本地文件,如果我要写一个文件,而这个文件是木马,那就自动拉起了。如果写入自己签名的公钥,用自己的私钥解公钥, 自己解自己的,所以直接替换公钥,就是通过 Redis。

有人问,你怎么记录下来这些呢?其实很多攻击者都会去清除掉日志,我们需要想些办法让他不能清除,保证审计可追溯,否则入侵之后就追溯不出到底是什么原因。

所以黑客用 Dirty cow 提权,黑客上来就把自己的操作清除掉了,不让你看见。你知道他要清除,你就想办法不让他侵掉,不然追查不到。

其实他入侵你的服务器不是最终目的,最终的目的是扩大战果,最简单的方式是监听和收集相关的通信,再做一些扫描之类。如果这些机器有关于运维体系的脚本、域名,可能都危险了。

2.2 渗透方式

以前给外面做分享,都觉得你说的攻击方式发生概率不是很高。不说真实案例,大家就觉得真实概率不是很高;有了真实案例,大家觉得小概率事件还是会发生。

Linux 下面渗透的方式有这么几个步骤:







请到「今天看啥」查看全文