Linux 服务器加固与安全验证

在如今的技术领域中,做一个完全安全的系统是一个不可能实现的目标。正如 FBI 的 Dennis Hughes 所说,“真正安全的计算机是没有连线、锁在一个保险箱中、埋藏在一个秘密场所的地下 20 英尺处的计算机……我甚至不确定这样是否安全。”在不能选择通过拔掉线缆、锁住和掩埋计算机来保护系统的世界里,可通过以下步骤缩小 您系统的攻击面。Open Web Application Security Project (OWASP) 的 攻击面分析备忘录 提供了有关攻击面的更多信息。

sane 系统配置等流程可缩小攻击面,而渗透测试和模糊测试可帮助工程师加固系统,通过熟练利用漏洞和意外输入来攻破系统,从而查找可修复的漏洞。这些技术通过在有机会利用恶意实体之前检测和消除漏洞,提高了系统的安全性。

Sane 配置

Sane 配置是加固任何系统的关键,因为任何漏洞都可以在某种程度上被利用。例如,SSH(比如 arcfour)或一些协议(比如用于 Web 服务器的 TLSv1.0)对遗留密码的支持,是攻击者获取访问权并且损害系统的一种途径。为了阻止这些和其他漏洞,在执行用户授权时请遵循最少特权原则;为用户或进程提供能够完成需要任务所需的最小访问权和许可。关闭未用端口,以减少网络攻击者可访问的入口点,从而阻止来自网络的入侵。此外,确保启用了防火墙协议,从而进一步限制可能的网络攻击。使用某种工具(比如 seccomp)过滤系统调用对进程的可用性,减少暴露的内核表面。

未用的包没有提供任何额外功能,但却是潜在的攻击载体。确认安装的应用程序和包是必需的,删除不必要的应用程序和包。一个简单示例是,如果一个系统仅通过控制台访问,则删除所有未用的 GUI 支持。Center for Internet Security (CIS-CAT) 提供的 Configuration Assessment Tool 是一个有用的应用程序,允许用户运行不同深度的加固基准测试,以指出系统在哪些地方未满足想要的标准。强烈推荐使用 CIS-CAT 帮助您发现系统的细微配置加固漏洞。

除了系统加固之外,软件发布者还为用户提供了重要的软件和安全更新。代码修复和改进对系统安全有一定的影响。过时的系统是攻击者更容易攻击的目标。依据 United States Computer Emergency Readiness Team,如果受害者拥有恰当更新的系统,可以避免高达 85% 的针对性攻击 (https://www.us-cert.gov/ncas/alerts/TA15-119A)。如果系统得到恰当更新,可显著减少攻击成功率。普遍攻击,包括恶意的实体,都是众所周知的。尽责的供应商会努力及时发布补丁。但是,如果系统管理员未能应用更新,这些补丁就无法保护他们提供的系统和服务。必须尽力确保所有系统得到及时更新。

渗透测试

渗透测试是一种使用自动化工具或自定义攻击查找系统漏洞的方法。渗透测试的目标是破坏系统安全防护,在没有期望的权限或凭据的情况下通过非故意操作模式获得数据的访问权。这些攻击使用目标系统中存在的已知利用手段和漏洞。渗透测试需要一种与传统验证方法(比如验证测试)不同的思维。不同于更加传统的测试,渗透测试人员尝试使用恶意攻击者的工具和方法访问系统组件和数据。尽管渗透测试的原理看起来比较落后,但它提供了比单一传统测试更加透明和完整的系统安全概况。

渗透测试工具链包含一些示例,比如 Metasploit,这是一个功能全面的渗透测试框架,其中包含数据库中已知的漏洞和用于扫描网络和已暴露系统的工具。其他示例还有 NmapWireshark,它们分别使用端口扫描或包检查来测试网络。这两个工具都提供了系统操作和响应网络的情况的详细信息。端口扫描显示可通过网络获得哪些应用程序和系统实用程序,显示哪些端口未用并应考虑阻止访问。可从网络访问的任何实体都是可能的目标,所以需要优先考虑禁止访问。以下工具非常有用,能在各种目标上执行自动化的漏洞检测:

除了扫描和工具之外,深入了解正在遭受攻击的系统始终有利无弊。创建特定的利用手段并手动执行有效负载,比定义许多形式的渗透测试的自动化过程复杂得多。一旦找到某种利用手段,就可以创建自动化测试和有效负载传送系统,但寻找这类攻击是一个艰苦的过程。

确定攻击的潜在目标可能很难。当尝试利用一个复杂系统时,需要确定哪些攻击载体比其他攻击载体更富有成效。如果一个正在运行的进程有一个 Web 接口或连网组件,它可能是比暴露面更小的应用程序更好的目标。一个额外的指标是:是否存在专业软件。无需尝试使用拥有既定社区和支持历史的载体,寻找符合特定用途的软件或为在冷门环境中运行而构建的软件可能是更好的选择。

模糊测试

OWASP 将模糊测试定义为 “以自动化方式注入格式错误/格式部分错误的数据来寻找实现漏洞” (https://www.owasp.org/index.php/Fuzzing),这是验证系统和支持的应用程序的稳定性的另一种方法。在应用程序上执行模糊测试的一个示例,可能是在仅接受整数作为输入的程序上执行测试。当输入是浮点、字符串或其他任何不想要的格式的数据时,会发生什么?理想情况下,应用程序可处理格式错误的输入。如果应用程序崩溃或出现其他意外情况,系统的稳定性和安全性可能面临风险。强烈推荐采用的一种应用程序模糊测试工具是 american fuzzy lop (AFL),它能在 QEMU、Clang、OpenSSH、Bash 和 Mozilla Firefox 等流行应用程序中找到多个 bug。AFL 可在任何可执行的应用程序上运行,使用用户提供的 “良好” 输入执行测试,这使用户能够自定义 AFL 执行模糊测试的初始环境。另一个工具是 OWASP Zap,它既是一个 Web 漏洞扫描器,也是一个 Web 应用程序模糊测试器。该应用程序在可用链接上抓取信息,发送模糊化的输入以及已知的恶意攻击。IBM Security Appscan 在 Web 应用程序上执行类似功能,但该软件还提供了使用模糊化输入测试应用程序源代码的版本。

运行任何模糊化应用程序,都会给系统资源造成巨大负担。除了系统资源需求之外,模糊化还需要一定时间才能交付结果。但是,即使拥有大量时间,使用的伪随机输入也无法确保能够发现所有潜在问题。

结束语

服务器加固和验证需要不断努力。随着每天都能发现新的利用手段和漏洞,您系统的安全时常处于危险之中。系统审计、渗透测试和模糊测试分别从独特的视角提供了系统状态信息。除了测试标准(比如单元测试和功能测试)之外,还应使用这些方法来帮助提高您对系统的信心。

相关推荐