0xB1 微观安全——一台服务器做安全

从这一部分开始,我们就要进入一个安全建设者的角色了。一个创业公司一开始可能IT资产有的并不多,几台甚至十几台也是有可能的。我们假设现在进了一家非常穷的公司,只在x云上面有一台云服务器,我们如何把这一台云服务器的安全做好就是今天要讨论的。

首先我们从攻击者的角度上来看,我们如果要对这台服务器下手,一定要经过以下的阶段。

Reconnaissance(侦查阶段)->Weaponization(武器准备阶段)->Delivery(部署武器阶段)->Exploitation(攻击阶段)->Installation(植入后门)->Command & Control(远控)->Actions on Objectives(对目标采取行动)

这个流程就是我们说的攻击链(也就是Kill-Chain),通过攻击链,我们可以获得以下的几个信息:

  1. 目标需要存在漏洞
  2. 需要让目标远程执行程序
  3. 控制目标

也就是说我们现在站在防守方得角度上看的话,我们需要做到的理想情况就是:没有蛀牙!(不对,不是这一句)

理想情况就是:让每一个bit该是0就是0,该是1就是1。

当然理想情况肯定只停留在理想的情况,事实的情况是:连int a=2;print("%d, %d", a++, ++a);这个语句在macOS和Ubuntu下面编译运算的结果都是两个,所以我们没有必要强求每一个比特位必须跟我们预想的一样。

我们把目标具体化一些就是:只执行我希望执行的指令,我让你jmp esp,你就不能call ebp。那么怎么样去做呢?

针对一台服务器,服务器有的东西无非就是硬件、软件和通信,我们只要把握住这三个维度就可以。

针对硬件方面,其实就是所谓的物理安全,也就是要保证服务器运行状态的可靠性。

针对软件层面,这个就有点复杂了,需要来一张图说明。

其实针对软件层面上来讲,功能还是挺多的,但是根据我们之前的安全原则,我们大概可以确定的方面是:

  1. 操作系统的状态要被监控,保证不能有已知漏洞和不合法的操作(例如开启恶意进程)
  2. 服务器程序的状态要被监控,保证不能崩溃并且不能存在已知漏洞并且有不合法的操作(例如用存在已知critical漏洞的旧版本tomcat)
  3. 应用程序状态要被监控,保证程序不能存在已知高危漏洞和不正常的运行状态(比如被篡改)

其实最后说白了就是三件事儿:监控、补丁集管理和漏洞扫描(这三个在以后的文章中会有介绍)

针对网络而言,其实网络的状态也是需要被监控的,这里的网络监控其实就是去监控网络流量的状态,比如说正常还是不正常、是不是存在攻击的Payload等。

说了这么多其实想引出来的就是下面的这张图。

以后这些平台的详细设计和架构我们会很详细的去讲。


p.s.由于没时间更新的缓慢,还请见谅

发布于 2017-06-12

文章被以下专栏收录