这是一个不错的新 Linux 服务器……如果它发生了什么事,那就太可惜了。开箱即用可能运行良好,但在将其投入生产之前,您需要采取 10 个步骤来确保其配置安全。这些步骤的细节可能因发行版而异,但从概念上讲,它们适用于任何风格的 Linux。通过在新服务器上检查这些步骤,您可以确保它们至少对最常见的攻击具有基本保护。
1 - 用户配置
如果它不是您的操作系统设置的一部分,那么您要做的第一件事就是更改 root 密码。这应该是不言而喻的,但在例行服务器设置过程中可能会令人惊讶地被忽视。密码应至少为 8 个字符,使用大小写字母、数字和符号的组合。如果您要使用本地帐户,您还应该设置一个密码策略,指定老化、锁定、历史和复杂性要求。在大多数情况下,您应该完全禁用 root 用户,并为需要提升权限的用户创建具有 sudo 访问权限的非特权用户帐户。
2 - 网络配置
您需要进行的最基本配置之一是通过为服务器分配 IP 地址和主机名来启用网络连接。对于大多数服务器,您需要使用静态 IP,以便客户端始终可以在同一地址找到资源。如果您的网络使用 VLAN,请考虑服务器网段的隔离程度以及最适合的位置。如果您不使用 IPv6,请将其关闭。设置主机名、域和 DNS 服务器信息。应该使用两个或更多 DNS 服务器来实现冗余,并且您应该测试 nslookup 以确保名称解析正常工作。
3 - 包管理
假设您正在为特定目的设置新服务器,因此请确保安装您可能需要的任何软件包,如果它们不是您正在使用的发行版的一部分。这些可能是 PHP、MongoDB、ngnix 等应用程序包或 pear 等支持包。同样,应删除系统上安装的任何无关软件包以缩小服务器占用空间。所有这些都应该通过您的发行版的包管理解决方案来完成,例如 yum 或 apt,以便在以后更轻松地进行管理。
4 - 更新安装和配置
在服务器上安装正确的软件包后,您应该确保所有内容都已更新。不仅是您安装的软件包,还有内核和默认软件包。除非您对特定版本有要求,否则应始终使用最新的生产版本来确保系统安全。通常,您的包管理解决方案将提供最新的受支持版本。如果这样做适用于您在此服务器上托管的服务,您还应该考虑在包管理工具中设置自动更新
5 - NTP 配置
配置您的服务器以将其时间同步到 NTP 服务器。如果您的环境有内部 NTP 服务器,它们可以是内部 NTP 服务器,也可以是任何人都可以使用的外部时间服务器。重要的是防止时钟漂移,即服务器的时钟偏离实际时间。这可能会导致很多问题,包括在授予访问权限之前测量服务器和身份验证基础设施之间的时间偏差的身份验证问题。这应该是一个简单的调整,但它是可靠基础架构的关键部分。
6 - 防火墙和 iptables
根据您的发行版,iptables可能已经完全锁定并要求您打开所需的内容,但是无论默认配置如何,您都应该始终查看它并确保它按照您想要的方式进行设置。请记住始终使用最小权限原则,并且只打开该服务器上的服务绝对需要的那些端口。如果您的服务器位于某种专用防火墙的后面,请确保拒绝所有内容,但也拒绝那里的必要内容。假设你的 iptables/firewall 默认是限制性的,不要忘记打开你的服务器需要的东西来完成它的工作!
7 - 保护 SSH
SSH 是 Linux 发行版的主要远程访问方法,因此应该得到适当的保护。即使您禁用了该帐户,您也应该禁用 root 远程 SSH 的功能,以便万一 root 由于某种原因在服务器上启用,它仍然无法远程利用。如果您有一组要连接的固定客户端 IP,您还可以将 SSH 限制在某些 IP 范围内。或者,您可以更改默认 SSH 端口以“隐藏”它,但老实说,简单的扫描将向任何想要找到它的人揭示新的开放端口。最后,您可以完全禁用密码身份验证并使用基于证书的身份验证来进一步减少 SSH 被利用的机会。
8 - 守护程序配置
您已经清理了软件包,但将正确的应用程序设置为在重新启动时自动启动也很重要。请务必关闭您不需要的任何守护程序。安全服务器的一个关键是尽可能减少活动占用空间,因此唯一可用于攻击的表面区域是应用程序所需的表面区域。完成此操作后,应尽可能强化剩余服务以确保弹性。
9 - SELinux 和进一步强化
如果您曾经使用过 Red Hat 发行版,那么您可能熟悉SELinux,这是一种内核强化工具,可以保护系统免受各种操作的影响。SELinux 非常擅长防止未经授权的使用和访问系统资源。它在破坏应用程序方面也很出色,因此请确保在启用 SELinux 的情况下测试您的配置,并使用日志来确保没有任何合法的被阻止。除此之外,您还需要研究强化任何应用程序,例如MySQL或Apache,因为每个应用程序都有一套最佳实践可供遵循。
10 - 记录
最后,您应该确保您需要的日志记录级别已启用并且您有足够的资源用于它。您最终将对此服务器进行故障排除,所以现在帮自己一个忙,构建快速解决问题所需的日志结构。大多数软件都有可配置的日志记录,但您需要反复试验才能在信息不足和信息过多之间找到适当的平衡点。有许多第三方日志记录工具可以帮助完成从聚合到可视化的所有工作,但首先需要考虑每个环境的需求。然后,您可以找到可以帮助您填充它们的工具。
这些步骤中的每一个都可能需要一些时间来实施,尤其是第一次。但是通过建立初始服务器配置例程,您可以确保环境中的新机器具有弹性。如果您的服务器曾经是攻击的目标,那么不采取任何这些步骤都可能导致非常严重的后果。跟随它们并不能保证安全——数据泄露会发生——但它确实使恶意行为者变得更加困难,并且需要一定程度的技能才能克服。