互联网时代的到来对企业的经营方式产生了深远的影响。如果大多数公司想要保持相关性和竞争力,那么维持在线形象就不再是可选的了。现有和潜在客户使用 Internet 进行购买、管理他们的帐户、研究产品等等。这样做的好处是无法估量的,但它并非没有黑暗的一面——黑客。由于您的网站和在线声誉如此之多,因此确保您的服务器安全绝对至关重要。
安全专业人员的整个职业生涯都致力于跟上在线威胁不断发展的本质,而全球公司拥有拥有大量资源的完整团队,致力于确保其在线资产的安全。承担保护服务器安全的工作似乎是一项艰巨的任务,但我们随时为您提供帮助!我们已经确定了一些关键做法,这些做法可以保护您的服务器,足以抵御绝大多数攻击,并劝阻除最精英黑客之外的所有人。使用这些方法来保护您的服务器并不需要大量的系统管理能力,但如果您愿意将其交给我们有能力的人 ,请查看我们的管理计划和SecureServer+服务。
躲在防火墙后面
任何安全环境的第一道防线都是防火墙。有几种防火墙可供选择,但它们通常都具有相同的基本功能。防火墙是驻留在互联网和服务器上任何面向网络的服务之间的应用程序或物理设备。它充当网络流量的看门人,使用一组规则过滤入站和出站连接。然而,防火墙的好坏取决于它使用的规则。配置良好的防火墙可以过滤掉绝大多数恶意连接,而配置不当的防火墙则效率低下。
第一个决定是硬件还是软件。大多数现代操作系统都带有内置的软件防火墙应用程序,这通常就足够了。专用设备,也称为硬件防火墙,通常用于多服务器环境的前面,为防火墙管理提供单点。
无论您最终使用哪种类型的防火墙,下一步都是定义一套好的规则。配置防火墙时的第 1 条规则,尤其是远程配置时,要非常小心,不要通过阻止您用于访问防火墙的连接来锁定自己。如果您不小心阻止了自己的连接(通常是物理控制台或带外控制台解决方案(如 IPMI、ILO 或 DRAC),那么使用备用访问方法来更改防火墙规则始终是一个好习惯。
首先考虑您的服务器提供哪些服务。网络服务利用特定端口来帮助区分连接类型。将它们想象成一条非常宽的高速公路上的车道,带有分隔线以防止有人改变车道。例如,Web 服务器通常将端口 80 用于标准连接,将端口 443 用于使用 SSL 证书保护的连接。这些服务可以配置为使用非标准端口,因此请务必验证您的服务正在使用哪些端口。
接下来,确定您将如何远程管理您的服务器。在 Windows 上,这通常通过 RDP(远程桌面协议)完成,而在 Linux 上,您可能会使用 SSH(安全外壳)。理想情况下,您将希望阻止对除少数 IP 或小子网之外的所有 IP 或小子网的管理端口的访问,以限制组织内任何人对这些协议的访问。例如,如果您是 Linux 服务器的唯一管理员,请打开 SSH 端口(通常为 22)以仅来自您计算机的静态 IP 地址的连接。如果您没有静态 IP 地址,您通常可以确定一个子网,您将从该子网中分配一个 IP。虽然将一系列 IP 列入白名单并不理想,但它比将该端口开放给整个互联网要好得多。
要生成一组可靠的规则,请阻止来自所有 IP 的所有端口,然后创建特定规则以打开您的服务和管理所需的端口——记住不要将自己锁定在外。为您的服务打开的端口通常应从所有 IP 开放,但如上所述限制管理端口。
虽然防火墙不应该是您唯一的防线,但创建一组合理的防火墙规则是增强服务器安全性的一个很好的起点。事实上,任何服务器都不应该没有基本的防火墙配置。
身份验证和密码
增强服务器安全性的最简单方法之一就是强制执行强身份验证策略。您的服务器仅与密码最弱的帐户一样安全。对于在服务器上使用的任何密码,请遵循良好的密码准则,例如确保您的密码长度足够,而不是字典单词,并且不要用于其他本身可能会受到损害并泄露您的密码的服务。虽然您可以通过良好的防火墙配置限制对服务器的远程访问,但仍有一些漏洞可用于通过在开放网络端口上运行的受损或未修补服务向系统发送命令。
在许多情况下,完全没有密码是可能的(而且更方便)!如果您访问服务器的主要方法是通过 SSH,您可以在服务器的 SSH 配置文件中禁用密码验证,而是使用一对公钥和私钥来授权您的连接。
请记住,如果您需要能够随时从任何地方登录到您的服务器,则此方法可能不太方便,因为您需要将您的私钥添加到您正在连接的任何新系统。此外,虽然这种方法使远程连接的安全性提高了一个数量级,但请不要忘记在您的帐户上设置一个强密码。黑客有时能够以其他方式访问系统,并且您不希望拥有一个由“1234”之类的密码保护的具有高级访问权限的帐户。
如今,两因素身份验证 (2FA) 变得非常流行。使用 2FA 时,用户不仅需要使用密码进行身份验证,还需要提供一次性使用代码,发送到之前注册的电子邮件地址或移动设备,以进一步验证其身份。可以通过第三方服务或使用启用 2FA 的帐户(如 Google 或 Microsoft)在您的服务器上实施类似的操作。cPanel\WHM 现在支持双重身份验证,因此如果您将此控制面板用作服务器管理的主要方式,这可能是您的一个选项。
蛮力保护
服务器上常见的攻击向量是蛮力攻击。这些是使用猜测的用户名和密码进行的远程登录尝试,一遍又一遍地重复,只要服务器和网络允许的话。在不受保护的情况下,每天可能会进行数十万次尝试——足以在一个月内破解任何 8 个字符的密码。出于这个原因,在您的服务器上安装某种形式的蛮力保护是明智的。
大多数蛮力保护方法采用两种形式之一。第一种方法在登录尝试之间引入了超时。即使此超时时间只有一秒,这也可能导致攻击花费数倍的时间来破解密码。您可能需要更长的超时时间以提供更好的安全性,同时又不会过度干扰用户输入错误的合法登录尝试。一些系统对这种方法采取了一种巧妙的方法,通过增加每次失败尝试的超时时间,通常是指数级的。失败一次,等待1秒。再次失败,等待 5 秒。第三次失败,等待 30 秒……到第四次尝试时,您将非常小心地输入密码。
或者,此方法的变体对在设定的时间段内允许的尝试次数设置了硬上限。登录失败次数过多会导致帐户被锁定——无论是暂时的,还是在更极端的情况下,直到被服务器管理员解锁。这种方法有效地阻止了任何暴力攻击,但对于那些在输入密码时不太小心的有效用户来说可能会更烦人。
第二种方法是在登录请求中引入验证码。这迫使用户执行一项对人类来说微不足道但对计算机来说却很困难的壮举。通常,这涉及某种图像识别,例如识别网格中包含路灯的所有图片,或破译一些以模糊字体书写的文本。虽然计算机通常最终能够解决这些请求,但它比普通人花费的时间要长得多,并且大大减慢了攻击速度。验证码还经常用于保护公众评论部分免受垃圾邮件帖子和注册表单的虚假帐户创建。
蛮力保护可以在许多防火墙或操作系统本身中找到——但不要忘记其他帐户,例如 WordPress、cPanel/WHM 等。确保任何暴露的登录都启用了某种形式的蛮力保护。
软件更新和安全补丁
软件和操作系统更新以及安全补丁对于维护安全服务器也很重要。如果您运行的是易受已知漏洞攻击的过时版本的操作系统,您的所有其他努力都将毫无意义,并且完全白费。
大多数软件和操作系统供应商都投入了大量资源来保持他们的产品针对最近发现的漏洞进行修补,以至于许多次要版本包含的安全修复比功能更新更多。对其产品的旧版本保持这种级别的警惕性可能会付出高昂的代价,因此软件和操作系统通常会在多年后被归类为生命周期结束 (EOL)。除其他外,这意味着该产品将不再接收在达到 EOL 后可能发现的漏洞的更新。
这种类型的常见案例与 PHP 相关,PHP 是 Web 上常用的一种脚本语言。在本文发布时,所有早于 7.2 的 PHP 版本都已停产。尽管如此,5.3 之前的 PHP 版本仍然很常见。7.2 和 5.3 之间存在显着差异,如果不对代码进行重大修改,就不可能升级到受支持的版本。
幸运的是,通过这个 PHP 版本的特定示例,CloudLinux 为您提供了一个cPanel 服务器。CloudLinux 提供旧 PHP 版本的强化版本以及安全更新,远远超过 EOL 日期。然而,这个问题可能发生在任何软件上,而且大多数软件都没有像 CloudLinux 这样简单的解决方案。
运行过时的操作系统也不是好习惯。例如,CentOS 5 已经 EOL 一段时间了,但它并不是一个非常罕见的景象。如果你碰巧在运行这样的东西,你应该尽快规划你的升级路径。当您运行的操作系统进入 EOL 时,通常即使您服务器上受支持的软件也将停止接收更新,因为供应商不会在 EOL 操作系统版本上限定新版本。这会对服务器的安全性产生级联的负面影响。
代码和自定义应用程序
不幸的是,即使是最坚固的服务器仍然容易受到不安全代码或网站上运行的应用程序的攻击。
如果您正在运行可自定义的 Web 应用程序,例如 WordPress、Joomla 或 Magento,那么不仅要让核心应用程序保持最新,还要让任何插件或主题保持最新状态,这一点至关重要。这也适用于项目本身的代码——如果你怀疑你的主题或插件已经“死”并且不再更新,那么寻找替代品是明智的。不断发现新的漏洞,应用程序或插件仅与上次更新一样安全。
在处理开发人员为您创建的自定义代码时,明智的做法是与您的开发人员保持持续的关系,以便您可以继续接收更新。否则,您可能会遇到上述情况,您会发现您无法再更新您的 PHP 或其他重要软件,因为该网站与新版本不兼容。
这种攻击向量可能是最难防御的,因为您的数据中心或托管服务提供商通常不支持在您的服务器上运行的自定义软件和代码。除非您运行的是完全现成的软件,否则请确保您有计划更新和修补代码。
如您所见,保护服务器远远超出了初始设置。虽然这很重要,但同样重要的是保持最新状态,以对抗不断增长的已知黑客和漏洞利用列表。受损系统造成的经济损失和声誉损失可能是巨大的。正如那句古老的格言所说,一盎司的预防胜于一磅的治疗。