大多数时候,您的主要关注点是启动和运行您的云应用程序。作为您的设置和部署过程的一部分,在您的系统和应用程序公开可用之前,为您的系统和应用程序构建强大而全面的安全措施非常重要。在部署应用程序之前实施本教程中的安全措施将确保您在基础架构上运行的任何软件都具有安全的基本配置,而不是可能在部署后实施的临时措施。
本指南重点介绍了您在配置和设置服务器基础架构时可以采取的一些实用安全措施。此列表并非详尽无遗地列出了您可以采取的所有措施来保护您的服务器,但它为您提供了一个可以构建的起点。随着时间的推移,您可以开发出更加量身定制的安全方法,以满足您的环境和应用程序的特定需求。
SSH,或安全外壳,是一种用于管理服务器和与服务器通信的加密协议。使用服务器时,您可能会将大部分时间花在通过SSH连接到服务器的终端会话中。作为基于密码登录的替代方案,SSH密钥使用加密来提供一种安全的登录服务器的方式,建议所有用户使用。
使用SSH密钥,会创建一对私钥和公钥以用于身份验证。私钥由用户保密和安全,而公钥可以共享。这通常称为非对称加密,您可能会在其他地方看到这种模式。
要配置SSH密钥身份验证,您需要将您的公共SSH密钥放在服务器上的预期位置(通常是)。要了解有关基于SSH密钥的身份验证如何工作的更多信息,请阅读了解SSH加密和连接过程。
使用SSH,任何类型的身份验证——包括密码身份验证——都是完全加密的。当允许基于密码的登录时,恶意用户可以反复自动尝试访问服务器,尤其是当它具有面向公众的IP地址时。尽管在从同一IP多次尝试失败后有多种方法可以锁定访问权限,并且恶意用户在实践中会受到他们尝试登录您的服务器的速度的限制,但用户可以合理地尝试获得访问权限的任何情况通过反复的暴力攻击对您的堆栈造成安全风险。
设置SSH密钥身份验证允许您禁用基于密码的身份验证。SSH密钥的数据位通常比密码多得多——您可以从12个字符的密码创建一个128个字符的SSH密钥散列——这使得它们更难被暴力破解。尽管如此,一些加密算法仍被认为是可破解的,因为它试图在足够强大的计算机上对密码哈希进行足够多次的逆向工程。其他密钥,包括由现代SSH客户端生成的默认RSA密钥,尚无法破解。
SSH密钥是远程登录任何Linux服务器环境的推荐方式。可以使用该命令在您的本地计算机上生成一对SSH密钥,然后您可以将公钥传输到远程服务器。
要在您的服务器上设置SSH密钥,您可以按照如何为Ubuntu、Debian或CentOS设置SSH密钥进行操作。
对于堆栈中需要密码访问或容易受到暴力攻击的任何部分,您可以在服务器上实施类似fail2ban的解决方案来限制密码猜测。
最佳做法是不允许用户直接通过SSH登录。相反,以非特权用户身份登录,然后根据需要使用.?这种限制权限的方法被称为最小权限原则。一旦你连接到你的服务器并创建了一个你已经验证可以使用SSH的非特权帐户,你可以通过在你的服务器上设置指令来禁用登录,然后使用类似命令重新启动服务器的SSH进程。
防火墙是一种软件或硬件设备,用于控制服务如何暴露于网络,以及允许哪些类型的流量进出给定服务器。正确配置的防火墙将确保只有应该公开可用的服务才能从您的服务器或网络外部访问。
在典型的服务器上,许多服务可能默认运行。这些可以分为以下几组:
防火墙可以确保根据上述类别以不同程度的粒度限制对软件的访问。公共服务可以保持开放并可供互联网使用,而私人服务可以根据不同的标准(例如连接类型)进行限制。可以使内部服务完全无法访问Internet。对于未使用的端口,在大多数配置中访问都被完全阻止。
即使您的服务实现了安全功能或仅限于您希望它们在其上运行的接口,防火墙也可以作为基础保护层,在应用程序处理流量之前限制进出您的服务的连接。
正确配置的防火墙将限制对除您需要保持打开的特定服务之外的所有内容的访问,通常只打开与这些服务关联的端口。例如,SSH一般运行在22端口,而通过Web浏览器进行的HTTP/HTTPS访问通常分别运行在80和443端口。仅公开少量软件可减少服务器的攻击面,从而限制易受攻击的组件。
有许多适用于Linux系统的防火墙,有些比其他的更复杂。通常,当您更改服务器上运行的服务时,您只需要更改防火墙配置。以下是启动和运行的一些选项:
注意:许多托管服务提供商,包括DigitalOcean,将允许您将防火墙配置为一项服务,该服务作为云服务器上的外部层运行,而不需要直接实施防火墙。这些配置使用托管工具在网络边缘实施,在实践中通常不那么复杂,但编写和复制脚本可能更具挑战性。可以参考DigitalOcean的?云防火墙的文档。
确保您的防火墙配置默认为阻止未知流量。这样,您部署的任何新服务都不会无意中暴露在Internet上。相反,您将必须明确允许访问,这将迫使您评估服务的运行方式、访问方式以及谁应该能够使用它。
虚拟私有云(VPC)网络是基础设施资源的私有网络。VPC网络在资源之间提供更安全的连接,因为网络的接口无法从公共互联网访问。
一些主机商会默认为你的云服务器分配一个公网接口和一个私网接口。在部分基础设施上禁用公共网络接口将只允许这些实例通过内部网络使用它们的专用网络接口相互连接,这意味着您的系统之间的流量将不会通过公共互联网路由,而它可能是暴露或拦截。
通过有条件地仅公开几个专用互联网网关(也称为入口网关)作为VPC网络资源和公共互联网之间的唯一访问点,您将对连接到您的资源的公共流量有更多的控制和可见性。像Kubernetes这样的现代容器编排系统有一个定义非常明确的入口网关概念,因为它们默认创建了许多私有网络接口,需要有选择地公开这些接口。
许多云基础架构提供商使您能够在其数据中心内创建资源并将其添加到VPC网络。
注意:如果您正在使用DigitalOcean并希望设置自己的VPC网关,您可以按照如何将Droplet配置为VPC网关指南来了解如何在基于Debian、Ubuntu和CentOS的服务器上进行操作。
手动配置您自己的专用网络可能需要高级服务器配置和网络知识。设置VPC网络的另一种方法是在服务器之间使用VPN连接。
VPN或虚拟专用网络是一种在远程计算机之间创建安全连接并将连接呈现为本地专用网络的方法。这提供了一种方法来配置您的服务,就好像它们在专用网络上一样,并通过安全连接连接远程服务器。

VPN如何增强安全性?
使用VPN是一种绘制只有您的服务器可以看到的专用网络的方法。通信将是完全私密和安全的。其他应用程序可以配置为通过VPN软件公开的虚拟接口传递它们的流量。这样,只有打算由公共互联网上的客户端使用的服务才需要在公共网络上公开。
如何实施VPN
使用专用网络通常需要您在首次部署服务器时就网络接口做出决定,并配置您的应用程序和防火墙以优先使用这些接口。相比之下,部署VPN需要安装额外的工具并创建额外的网络路由,但通常可以部署在现有架构之上。VPN上的每个服务器都必须具有建立VPN连接所需的共享安全和配置数据。VPN启动并运行后,应用程序必须配置为使用VPN隧道。
如果您使用的是Ubuntu或CentOS,则可以按照如何在Ubuntu20.04上设置和配置OpenVPN服务器?教程进行操作。
Wireguard?是另一种流行的VPN部署。通常,VPN遵循通过在几个入口点后面实施一系列专用网络接口来限制进入云服务器的相同原则,但是VPC配置通常是核心基础设施考虑因素,VPN可以部署在更临时的基础上.
良好的安全性包括分析您的系统、了解可用的攻击面并尽可能锁定组件。
服务审计是了解给定系统上正在运行哪些服务、它们使用哪些端口进行通信以及这些服务正在使用哪些协议的一种方式。此信息可帮助您配置哪些服务应可公开访问、防火墙设置、监控和警报。
每个正在运行的服务,无论是内部服务还是公共服务,都代表了恶意用户的扩展攻击面。您运行的服务越多,漏洞影响您的软件的可能性就越大。
一旦您对计算机上运行的网络服务有了很好的了解,就可以开始分析这些服务。当您执行服务审核时,请问自己以下有关每个正在运行的服务的问题:
在您的基础架构中配置任何新服务器时,这种类型的服务审核应该是标准做法。每隔几个月执行一次服务审核也将帮助您发现配置可能已无意更改的任何服务。
要审核系统上运行的网络服务,请使用命令列出服务器上正在使用的所有TCP和UDP端口。显示用于侦听TCP和UDP流量的程序名称、PID和地址的示例命令是:
、、、和选项的工作方式如下:
需要注意的主要列是Netid、LocalAddress:Port和Processname列。如果LocalAddress:Port是0.0.0.0,则该服务正在接受所有IPv4网络接口上的连接。如果地址是,[::]则服务正在接受所有IPv6接口上的连接。在上面的示例输出中,SSH和Nginx都在IPv4和IPv6网络堆栈上的所有公共接口上进行侦听。
您可以决定是否要允许SSH和Nginx在两个接口上侦听,或者只在一个或另一个上侦听。通常,您应该禁用在未使用的接口上运行的服务。
为确保良好的基本安全级别,必须使用补丁程序使您的服务器保持最新状态。运行过时的服务器和不安全的软件版本是大多数安全事件的罪魁祸首,但定期更新可以缓解漏洞并防止攻击者在您的服务器上站稳脚跟。无人值守更新允许系统自动更新大部分软件包。
无人值守更新如何增强安全性?
实施无人值守(即自动)更新可降低保持服务器安全所需的工作量,并缩短服务器易受已知错误影响的时间。如果出现影响服务器上软件的漏洞,无论您运行更新需要多长时间,您的服务器都将容易受到攻击。每日无人值守升级将确保您不会遗漏任何软件包,并且一旦修复程序可用,任何易受攻击的软件都会得到修补。
您可以参考如何保持Ubuntu服务器更新,了解在Ubuntu上实现无人值守更新的概述。
公钥基础设施和SSL/TLS加密
公钥基础设施或PKI是指旨在创建、管理和验证用于识别个人和加密通信的证书的系统。SSL或TLS证书可用于相互验证不同的实体。经过身份验证后,它们还可以用于建立加密通信。
为您的服务器建立证书颁发机构(CA)和管理证书允许您的基础设施中的每个实体验证其他成员的身份并加密他们的流量。这可以防止攻击者模仿您的基础架构中的服务器来拦截流量的中间人攻击。
每个服务器都可以配置为信任一个集中的证书颁发机构。之后,可以隐式信任由该机构签署的任何证书。
配置证书颁发机构和设置其他公钥基础结构可能涉及相当多的初始工作。此外,当需要创建、签署或撤销新证书时,管理证书会增加额外的管理负担。
对于许多用户来说,实施成熟的公钥基础设施只有在他们的基础设施需求增长时才有意义。使用VPN保护组件之间的通信可能是一种更好的中间措施,直到您达到PKI值得额外管理成本的地步。
如果您想创建自己的证书颁发机构,可以参考如何设置和配置证书颁发机构(CA)指南,具体取决于您使用的Linux发行版。
本教程中概述的策略是对您可以用来提高系统安全性的一些步骤的概述。重要的是要认识到,您等待实施安全措施的时间越长,其有效性就会降低。安全不应该是事后才想到的,必须在您首次配置基础设施时实施。一旦您有了一个安全的基础,您就可以开始部署您的服务和应用程序,并确保它们默认在安全的环境中运行。
即使有一个安全的起始环境,请记住安全是一个持续和迭代的过程。始终务必问问自己任何更改可能带来的安全影响是什么,以及您可以采取哪些步骤来确保始终为您的软件创建安全的默认配置和环境。
本文来源:国外服务器--推荐的保护服务器的安全措施(如何保护服务器安全)
本文地址:https://www.idcbaba.com/guowai/5036.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



