资源预览内容
第1页 / 共2页
第2页 / 共2页
亲,该文档总共2页全部预览完了,如果喜欢就下载吧!
资源描述
网络安全纵深防御体系第一层是安全域划分,这个安全域是对业务的抽象,并不是对物理服务器的 划分,在大规模分布式架构中,同一个安全域的机器可能并不一定位于同一个物 理机房,但是它们对应相同的安全等级,共享一组相同的访问控制策略,只对其 他安全域或 Iinternet 暴露有限的协议和接口。即使攻击者渗透了其他相邻的服 务器,也只能扫描和访问这个安全域内有限的几个端口,没办法自由渗透,这个 方案主要解决 Plan-B 曲线救国时被人侵者“误伤”,即被无意识的扫描行为以很 低的成本获取新的站点和权限,以及获得单点 root 后进步渗透的扩散,希望能 把安全事件爆发的最大范围抑制在一个安全域中,而不是直接扩散到全网。第二层是基于数据链路层的隔离,只有第二层隔离了才能算真正隔离,否则 只在第 3 层以上做 ACL 效果会差一些,仍然会遭受 ARP 攻击。第二层使用 VPC、 Vxlan、VLan 等方法相当于在安全域的基础上对一组服务器以更细的粒度再画一 道防线,进一步抑制单点沦陷后受害源扩大的问题。在不是特别大的网络中可以 直接跳过安全域到这一步。当然安全域的概念在任何时候都是存在的,我们在这 里仅仅是在做划分的事情。第二层之上就是端口状态协议过滤,这是绝大多数“防火墙”应用的场景。 解决的还是对黑客暴露的攻击面的问题,即使我的加固做得不到位,不必要的服 务没有清理干净,开放了有问题的端口,甚至有些端口上跑着的服务还有漏洞, 但是因为被防火墙过滤了,路由不可达,所以攻击者利用不了,他只能在对外或 对信任域暴露的端口上去想办法。本质上,就是给攻击者提供“窄带”,有限的 访问通道。不过在有复杂嵌套引用关系的大规模生产网络中,出于运维成本的考 虑,有时候访问控制策略不会做得很细粒度,因为那样的话,如果有台机器挂了, 换个P都麻烦,这也是安全向业务的妥协。再往上一层是现在讨论最多的 APP 安全,其实从图中也可以看出你平日的 工作都是聚焦于哪层。这一层单独拆开都可以再建一个纵深防御的子体系。应用 层通常是暴露在 Internet 上的攻击面,这一层主要是解决认证鉴权、注入跨站上 传之类的应用层漏洞,尽可能把入侵者堵在信息和资源的唯一入口。如果你在开 发WAF,那你对应的也是这一层的工作。应用层上方是容器、运行时环境。这里的目标是假设服务器上的应用程序有 漏洞,且攻击者找到了漏洞,我不希望这个漏洞能被成功利用,直接跳转到系统 权限,而是希望能在这一步阻止攻击者,办法就是通过容器加固。比如阻止一些 危险函数的运行,比如上传了 webshell 但是不被解析执行,比如你想执行 eval() 并用种种方法变形编码字符串拼接逃过了应用层的检测,但是到了运行时其实是 相同的底层指令,那么无论攻击者在上层多么努力地变形,我都有可能在更底层 把攻击者揪出来,哪怕不直接阻断,我也至少报个警。在绝大多数入侵活动中, 上传或生成 webshell 是从应用权限向系统权限转化的关键一步,所以这一层的 防御也是比较重要的。后面会有单独篇幅讲如何对抗 webshell。如果不幸之前的步骤都没阻止攻击者,对方已经得到了普通用户的 shel $ ,那么我肯定不希望你继续得到rootshell,对抗的办法就是大家常见的那些 系统加固项。有很多文章洋洋酒洒写了一大堆主要就是用在这个场景的,不过最 主要的还是对抗本地提权以及内核提权,攻击免疫或称攻击缓解机制如 SMEP、 SMAP、DEP、各种 ASLR、stack- canay、read-only、PLT、GOT 等都是在这里“埋 点”,其他的诸如 umask=022 等也是在这里埋点。似乎看上去这些不太需要安全 团队的介入,好像都是OS默认的机制?其实不然,安全做到偏执的程度后还是有 自己出手的地方, Android 出手比标准的 Linux 更快一点,也许以后就真的没太 多需要自己出手的地方了。不过,当下各种基于LXC的容器,越来越多的多租户 的云环境,隔离的机制完全依赖于内核的健壮性,这些场景下对抗这一层的攻击 都显得尤为重要。如果被拿走了 root 自然是很令人不爽的事,但还不是最令人不爽的。如果 有一天当你的1万台服务器中有500台被攻击了,而且还不能推断是不是装了 kernel rootkit I的情况下,这种感觉是最要命的。就如同你生了个肿瘤手术摘掉 也就算了,如果手术完都不确定摘了没有,可就麻烦了,这时即便500 台服务器 备份数据、重装系统都不能彻底解决问题,而且近似于你某个子业务要处于离线 状态,对于这种极其影响可用性的事情,业务部门会把你通疯掉。所以不是特别 需求要干掉LKM、/dev/kmem并限制/dev/mem的全地址空间读写,另外kernel MAC内核强制访问控制也能限制rot只能做有限的事情,尽管理论上内核提权还 是能控制一切,不过要在没有开发环境的服务器上实现完整的 kernel rootkit 功 能并保证不在用户态留下蛛丝马迹的概率还是比较低。这样做还有一个好处,把 入侵检测聚焦于用户态,不要动不动就去装一堆内核级别的重量级玩意儿,大规 模高并发的生产环境伤不起。在云计算环境中,上面那步可能还不算是单点渗透的终结,更底层还有 hypervisor。如果攻击者逃逸出VM那就比较狼狈了,每个厂商都需要考虑一下 VMM 的保护方案,现在 hypervisor 这一层很薄,不会做得很重,似乎还没有特 别成熟和通用的方案,不过肯定会发展起来,会有更多类似于XSM这样的方案。在一个真正建立纵深防御的系统中,人侵者一般到不了 root 这一步就会被 揪出来,只不过完整的纵深防御分散在全书后续的篇幅里,这里只是选取了其中 一个维度来试图解读这个概念。另一方面,完整的纵深防御体系只有大型互联网 公司才可能全覆盖,因为跟安全建设成本有关,这个问题之前提到过:不同规模 企业的安全需求和同一公司在不同安全建设阶段的需求是不一样的。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号