正如我在推特上与几位朋友所暗示的那样,我们目前正在准备正式启用“Skyport”(一个企业安全服务)。这真的是一个非常忙碌的季节,我们不仅需要完成各项准备工作,而且与此同时,我们还需要不断地与他人进行交流,分享各自的经验,这样才能不断完善我们的安全保护机制,而只有这样,我们才能让我们的工作完成得更加的漂亮,更加的有效。也许你偶尔会遇到一些记者和安全分析人员,他们会询问你一些你从来没有考虑过的问题,而正是这些出人意料的问题,才使得信息安全这一行业变得更加的有趣,这就是其魅力所在。
今天,有人问了我一个非常有意思的问题-我必须承认,我当时并没有做充足的准备,但是在我们讨论的过程中,我学到了很多新的东西。在这次思想和灵魂的碰撞过程中(我不认为这是一次辩论,因为我们在很多问题上的观点都是不谋而合的),我也产生了一些新的观点和想法。而我们所讨论的核心问题是:我们如何才能确保一台服务器的安全呢?当我听到这个问题之后,我的脑海中马上就产生了一大堆的想法。当然了,具体情况还需要进行具体的分析,比如说,我们还需要根据服务器的位置,连接网络的方式,服务器的操作系统,以及服务器所运行的应用程序等因素来进行安全保护措施的设计。
下面列出的是一些最基本的鉴定标准:
如果设备位于一个可能被攻击的地方,例如一个物理安全保护相对薄弱的远程分支上,那么我们往往就需要依赖于安全工具来缩小网络节点受到物理攻击的攻击面。而在此操作过程中,往往需要禁用掉类似控制台端口,外置的以太网接口,以及USB端口等物理设备或逻辑设备。如果你选择禁用USB的逻辑端口,那么同时还需要确保BIOS中的设备不被重置,很多人在进行这一操作的时候,往往就会直接在BIOS中关闭相应的选项,这样做肯定是不够的。
NIST还提供了很多非常有价值的实施建议,例如对虚拟机进行设备签名。如果设备运行的是一个非常关键的系统,那么我建议大家对BIOS,系统固件,以及启动镜像进行设备签名。这样也可以帮助大家验证服务器的整个生命周期。
所有正在运行的硬盘驱动器和存储设备都需要进行加密处理,这样才可以防止媒体文件由于物理盗窃而导致的数据损失。在理想情况下,数据的加密密钥应该保存在某种硬件安全模块之中。
而我个人最喜欢使用的一种方法就是对关键系统中的各类接口进行被动监听和探测,这样我就可以过滤和捕捉到所有进出服务器的网络通信流量了。而且这种方法还可以帮助你对服务器中发生的所有操作行为进行验证和跟踪,当你在对服务器进行故障排除的时候,这些宝贵的信息不尽会给你提供非常有效的帮助,而且还可以帮助你捕获服务器的攻击日志和数据泄漏等安全信息。
系统应该尽可能地利用先进的高性能防火墙来对其每一个接口进行保护。如果系统正在托管着大量虚拟机,那么每一个虚拟机都应该使用系统内部的虚拟交换机所提供的VLAN,而且在进行网络直接桥接的时候,也使用相同的VLAN ID。从某种程度上来说,这样就可以保证每一个虚拟机的网络流量不会绕过防火墙或者系统环境策略,然后跳转至其他的虚拟机系统之中。我个人认为,用一些虚拟防火墙同样也可以实现相同的效果。尽管从CPU的资源方面来考虑的话,成本就会更高,因为每一个虚拟机都需要至少使用到一个CPU。
系统防火墙的设置必须与终端用户的设置有所区别:通常情况下,系统防火墙允许进出的数据类型必须进行明确的规定。对于企业级的应用程序而言,利用白名单和黑名单的方式是一个不错的选择,这样就可以大大降低修改系统设置的频率了。
日志的问题也需要解决,记录下服务器各项操作的准确时间以及防止记录被篡改也是至关重要的。技术人员需要通过这些数据来对服务器的安全状态进行分析,以确定服务器进行过那些活动。日志文件应该使用远程存储的方式进行保存,而且存储设备的物理和逻辑上都必须是足够安全的,而且不允许任何一名单独的管理员修改这些记录文件。
在此,就必须提到凭证管理的问题了。我们必须保证网络系统不会因为某一个单独的人拥有登录凭证,就受到攻击。而比较聪明的做法就是采用双因素认证。
除此之外,蜜罐和APT攻击检测/捕获系统永远都是我们应该考虑的安全保护措施。它们能够帮助我们快速识别那些马虎和贪婪的恶意攻击者。
我相信,如果从网络基础设施的角度出发,我在上面所提供的安全实施建议一经足够大家有效地提升服务器的安全性了。
如果一定要得出一个确切的结论,那几乎是不可能做到的。因为我们在处理服务器的安全问题时,不仅需要考虑到很多复杂的因素,而且还需要考虑到实施步骤的操作复杂程度。除此之外,还需要考虑到除服务器之外的其它影响因素。即便是对于一台非常简单的服务器而言,情况也是如此。