恶意行为者总是在寻找服务器漏洞。系统管理员和安全员的职责是确保服务器上的数据安全可靠。通过实施我们的服务器安全提示和最佳实践,最大限度地降低风险并提高您维护的系统的安全性。
什么是服务器安全?
服务器安全是一组保护服务器免受所有类型威胁的措施,例如DDoS 攻击、暴力攻击以及粗心或恶意用户。这些措施可以包括安装和维护防火墙、强制执行强密码和用户身份验证协议、安装防病毒软件以及进行定期备份以避免数据丢失。
为什么服务器安全很重要?
服务器在业务敏感数据处理和存储中起着关键作用。使用服务器安全措施保护服务器免受外部威胁对于维护以下内容至关重要:
- 正直——服务器安全性通过防止篡改和意外修改来确保存储在服务器上的数据的准确性和完整性。
- 可用性——安全措施帮助系统管理员保持服务器及其服务始终对授权用户可用。
- 机密性——保护存储在服务器上的敏感数据可防止未经授权的用户将数据用于恶意目的。
- 声誉——安全漏洞可能导致数据丢失或服务中断。这些事件可能会损害公司的声誉并造成经济损失。
- 合规性——大公司受行业特定法规的约束,这些法规要求其服务器符合某些安全标准。不符合这些标准通常会导致监管罚款。
保护服务器的 21 个技巧
下面列出了提高服务器安全性的 21 个技巧。它包含专门用于 Internet 连接和用户管理的部分,您可以在这些方面最有效地提高系统的整体强度。此外,该列表还介绍了整个服务器安全领域的其他最佳实践。
安全服务器连接
1. 建立和使用安全连接
连接到远程服务器时,必须建立安全的通信通道。SSH (安全外壳)协议是建立受保护连接的最佳方式。不同于以前使用的Telnet不同,SSH 访问对交换中传输的所有数据进行加密。要使用 SSH 协议进行远程访问,您必须安装 SSH 守护程序和 SSH 客户端来发出命令和管理服务器。
默认情况下,SSH 使用端口 22。更改默认端口号是减少黑客攻击您的服务器机会的简单方法。因此,SSH 的最佳实践是使用 1024 和 32,767 之间的随机端口号。
2. 使用SSH密钥认证
您可以使用一对 SSH 密钥来验证 SSH 服务器,而不是密码,这是传统登录的更好替代方法。这些密钥携带的比特数比密码多得多,目前的计算机无法轻易破解它们。例如,流行的 RSA 2048 位加密就相当于一个 617 位密码。
SSH 密钥对由公钥和私钥组成。公钥有多个副本,其中一个留在服务器上,其他的则与用户共享。拥有公钥的任何人都具有加密数据的能力,而只有拥有相应私钥的用户才能读取这些数据。私钥不得与任何人共享,必须妥善保管。建立连接时,服务器会在允许特权访问之前要求提供用户拥有私钥的证据。
3. 安全文件传输协议
使用安全文件传输协议 (FTPS)有助于将文件传输到服务器或从服务器传输文件,而不会有恶意行为者破坏或窃取数据的危险。FTPS 使用命令和数据通道来加密数据文件和身份验证信息。但是,请务必记住,FTPS 仅在传输过程中保护文件。一旦他们到达服务器,数据就不再加密。出于这个原因,在发送文件之前加密文件增加了另一层安全性。
4. 安全套接字层证书
使用安全套接字层 (SSL)保护您的 Web 管理区域和表单,保护通过 Internet 在两个系统之间传递的信息。SSL 可用于服务器-客户端和服务器-服务器通信。
该程序对数据进行加密,以便敏感信息(例如姓名、身份证、信用卡号码和其他个人信息)不会在传输过程中被盗。具有SSL 证书的网站在 URL 中带有HTTPS ,表明它们是安全的。
证书不仅加密数据,还用于用户身份验证。因此,通过管理服务器的证书,SSL 有助于建立用户权限。管理员可以将服务器配置为与中央机构和该机构签署的任何其他证书进行通信。
5. 使用专用网络和 VPN
确保安全通信的另一种方法是使用专用和虚拟专用网络 (VPN) 以及 OpenVPN 等软件(请参阅我们在 CentOS 上安装和配置 OpenVPN 的指南)。与外部世界可以访问并因此容易受到恶意用户攻击的开放网络不同,专用和虚拟专用网络限制对选定用户的访问。
私有网络使用私有 IP 在同一 IP 范围内的服务器之间建立隔离的通信通道。这允许同一网络中的多个服务器在不暴露于公共空间的情况下交换信息和数据。当您想像通过专用网络在本地连接一样连接到远程服务器时,请使用 VPN。VPN 支持完全安全和私密的连接,并且可以包含多个远程服务器。对于在同一 VPN 下通信的服务器,它们必须共享安全和配置数据。
服务器用户管理
6. 监控登录尝试
使用入侵防御软件来监控登录尝试是一种保护您的服务器免受暴力攻击的方法。这些自动攻击使用试错法,尝试每一种可能的字母和数字组合来访问系统。入侵防御软件监督所有日志文件并检测是否有可疑的登录尝试。当尝试次数超过设定的标准时,入侵防御软件会在一段时间内或无限期地封锁该 IP 地址。
7. 管理用户
每个服务器都有一个可以执行任何命令的根用户。由于它具有的访问级别,如果服务器落入坏人之手,root 可能会很危险。完全禁用 SSH 的根登录是一种普遍的做法。
由于 root 用户拥有最大的权限,因此黑客将注意力集中在尝试破解 root 密码上。当您完全禁用此用户时,您会使攻击者处于不利地位并保护服务器免受潜在威胁。为确保外人不会滥用 root 权限,请创建一个受限用户帐户。此帐户没有与 root 相同的权限,但可以使用sudo 命令执行管理任务。因此,您可以使用有限的用户帐户管理大多数任务,并且仅在必要时才使用 root 帐户。
服务器密码安全
8. 建立密码要求
首先是设置所有服务器用户必须遵守的密码要求和规则。请遵循以下基本规则:
- 不允许空密码或默认密码。
- 强制执行最小密码长度和复杂性。
- 有锁定政策。
- 不要使用可逆加密存储密码。
- 为不活动强制会话超时并启用双因素身份验证。
9. 设置密码过期策略
设置密码的到期日期是建立用户需求时的另一种常规做法。根据所需的安全级别,密码可能会持续数周或数月。
10. 使用密码作为服务器密码
使用密码而不是密码可以帮助提高服务器安全性。主要区别在于密码短语更长并且单词之间包含空格。因此,它通常是一个句子,但不一定是一个。例如,密码密码可能是:Ilove!EatingPizzaAt1676MainSt。给定的示例比通常的密码更长,并且包含大写和小写字母、数字和唯一字符。此外,记住密码比记住一串随机字母要容易得多。最后,由于它由 49 个字符组成,因此更难破解。
11. 密码禁忌
如果您想维护一个安全的服务器,那么在密码方面您需要避免一些事情。请注意存储密码的位置。不要把它们写在纸上,放在办公室里。
建议不要使用个人信息,例如您的生日、家乡、宠物名称和其他可以将您与密码联系起来的东西。这些非常容易猜到,尤其是认识你的人。仅包含简单字典单词的密码也很容易破解,尤其是通过字典(暴力)攻击。此外,尽量避免在同一密码中重复字符序列。
最后,不要对多个帐户使用相同的密码。通过回收密码,您将自己置于重大风险之中。如果黑客设法获得对单个帐户的访问权限,则使用相同密码的所有其他帐户都可能处于危险之中。尝试为每个帐户使用不同的密码,并使用KeePass 等密码管理器跟踪它们。
保护服务器的其他最佳实践
12. 定期更新和升级软件
定期更新服务器上的软件对于保护服务器免受黑客攻击至关重要。过时的软件已经针对其弱点进行了探索,这让黑客可以利用并破坏您的系统。
自动更新是保证您不会跳过重要更新的一种方式。但是,允许系统进行自动更改可能会有风险。在更新生产环境之前,最好检查更新在测试环境中的执行情况。确保定期更新服务器控制面板。您还需要定期更新您的内容管理系统(如果您使用它),以及它可能拥有的任何插件。每个新版本都包含用于修复已知安全问题的安全补丁。
13. 删除或关闭所有不必要的服务
通过减少所谓的攻击媒介来提高服务器安全性。这个网络安全术语指的是仅安装和维护保持服务运行所需的最低要求。仅启用服务器操作系统和已安装组件使用的网络端口。系统上的内容越少越好。Windows 操作系统服务器应仅具有必需的操作系统组件。Linux 操作系统服务器应进行最小化安装,仅安装必要的软件包。
由于大多数 Linux 发行版都会侦听 Internet 上的传入连接,因此请将防火墙配置为仅允许特定端口并拒绝所有其他不必要的通信。在您的系统上安装软件之前检查依赖项,以确保您没有添加任何您不需要的东西。此外,检查哪些依赖项在系统上自动启动,以及您是否需要它们。
14. 隐藏服务器信息
旨在提供尽可能少的有关底层基础设施的信息。对您的服务器了解得越少越好。此外,最好隐藏服务器上安装的任何软件的版本号。版本指示器通常会显示确切的发布日期,这有助于黑客寻找弱点。
15. 使用入侵检测系统
要检测未经授权的活动,请使用入侵检测系统 (IDS),例如 Sophos,它会监控在您的服务器上运行的进程。您可以将其设置为检查日常操作、运行自动定期扫描或决定手动运行 IDS。
16. 档案审核
文件审计是另一种发现系统上不需要的更改的有效方法。此方法记录系统处于健康状态时的所有特征,并将其与当前状态进行比较。通过将同一系统的两个版本并排比较,您可以检测到所有不一致之处并追踪它们的来源。
17. 服务审计
服务审计探索服务器上运行的服务、它们的协议以及它们通信所用的端口。了解这些细节有助于为系统中的攻击面配置有效的保护。
18. 设置和维护防火墙
通过控制和限制对系统的访问来保护您的服务器。使用 CSF(ConfigServer 和Firewall)对于加强服务器的安全性至关重要。它只允许特定的重要连接并锁定对其他服务的访问。在初始服务器设置期间或更改服务器服务时设置防火墙。默认情况下,典型的服务器运行多个公共、私有和内部服务。
- 公共服务通常在需要允许访问网站的 Web 服务器上运行。任何人都可以通过互联网访问这些服务。
- 例如,在处理数据库控制面板时使用私有服务。在这种情况下,许多选定的用户可以访问同一点。他们拥有在服务器上具有特殊权限的授权帐户。
- 内部服务永远不应暴露于互联网或外部世界。它们只能从服务器内部访问并且只接受本地连接。
防火墙的作用是根据用户被授权的服务来允许、限制和过滤访问。配置防火墙以限制所有服务,但服务器必须提供的服务除外。
19. 备份你的服务器
尽管前面提到的步骤旨在保护您的服务器数据,但备份系统以防万一出现问题至关重要。将关键数据的加密备份存储在异地或使用云数据备份和恢复解决方案。无论您有自动备份作业还是手动执行备份作业,请确保将此预防措施作为例行程序。此外,您应该执行全面的备份测试。这包括“健全性检查”,管理员或最终用户在其中验证数据恢复是否一致。
20. 创建多服务器环境
隔离是您可以拥有的最好的服务器保护类型之一。完全分离需要拥有不与其他服务器共享任何资源的专用裸机服务器。尽管此方法提供了最高的安全性,但它也是最昂贵的。在数据中心隔离执行环境允许所谓的职责分离 (SoD) 并根据服务器实现的功能设置服务器配置。
将数据库服务器和 Web 应用程序服务器分开是一种标准的安全做法。单独的执行环境对于无法承受任何安全漏洞的大型企业特别有利。独立的数据库服务器保护敏感信息和系统文件免受设法获得管理帐户访问权限的黑客的攻击。此外,隔离让系统管理员可以单独配置 Web 应用程序安全性并最大限度地减少攻击面。
21. 创建虚拟隔离环境
如果您负担不起或不需要与专用服务器组件完全隔离,您也可以选择隔离执行环境。这样做可以帮助您处理安全问题,同时确保其他数据不会受到损害。您可以在更易于设置的容器或 VM 虚拟化之间进行选择。UNIX 操作系统中虚拟化环境的另一个选择是创建 chroot 监狱。Chroot 将进程从中央操作系统的根目录中分离出来,并只允许它访问其目录树中的文件。但是,这不是完全隔离,只能与其他安全措施一起使用。
结论
阅读本文并遵循安全建议后,您应该对服务器安全性更有信心。其中许多安全措施应在初始服务器设置期间实施,而其他措施应作为持续或定期维护的一部分。如果您的服务器监控不是自动化的,请确保设计并遵循预定的安全检查。为了及时了解网络安全的最佳实践,我们建议您考虑网络安全认证,并在许多可用的播客上关注安全领域的行业领导者。