设置基础架构时,启动和运行应用程序通常是您最关心的问题。但是,使您的应用程序正常运行而不解决基础架构的安全需求可能会导致灾难性的后果。
在本指南中,我们将讨论一些基本的安全实践,在安装应用程序之前或者在设置应用程序时最好进行配置。
SSH密钥是一对加密密钥,可用于向SSH服务器进行身份验证,作为基于密码登录的替代方法。在认证之前创建私钥和公钥对。私钥由用户保密,公钥可以与任何人共享。
要配置SSH密钥身份验证,您必须将用户的公用密钥放在服务器上的特殊目录中。当用户连接到服务器时,服务器将要求证明客户端具有关联的私钥。SSH客户端将使用私钥进行响应,以证明私钥的所有权。服务器然后将让客户端连接没有密码。 要详细了解SSH密钥的工作原理,请查看我们的文章。
使用SSH,任何类型的认证(包括密码认证)都是完全加密的。但是,当允许基于密码的登录时,恶意用户可以反复尝试访问服务器。利用现代计算能力,通过自动化尝试并尝试组合后,直到找到正确的密码,才有可能进入服务器。
通过设置SSH密钥身份验证,您可以禁用基于密码的身份验证。SSH密钥通常比密码的数据位数多得多,这意味着攻击者必须经历的明显更多的可能组合。许多SSH密钥算法被现代计算硬件认为是不可破解的,因为它们需要太多的时间来运行可能的匹配。How Difficult Is This to Implement?
SSH密钥非常容易设置,并且是远程登录到任何Linux或Unix服务器环境的推荐方式。一对SSH密钥可以在您的机器上生成,您可以在几分钟内将公钥传输到您的服务器。
防火墙是控制那些服务暴露于网络的软件(或硬件)。这意味着阻止或限制对每个端口的访问,除了那些应该公开的端口。
在典型的服务器上,默认情况下,多个服务可能正在运行。 这些可以分为以下几组:
防火墙可以确保根据上面的类别限制访问您的软件。公共服务可以开放,每个人都可以使用,私人服务可以根据不同的标准进行限制。内部服务可以完全无法进入外部世界。 对于未使用的端口,大多数配置中的访问将被完全阻止。
防火墙是任何服务器配置的重要组成部分。即使您的服务本身实现了安全功能,或者仅限于您希望它们运行的接口,防火墙也可以作为额外的保护层。正确配置的防火墙将限制访问除了您需要保持打开的特定服务以外的所有内容。仅暴露少量软件会减少服务器的攻击面,从而限制容易被利用的组件。
###这到底有多困难?
有许多防火墙可用于Linux系统,其中一些防火墙的学习曲线比其他防火墙更陡。一般来说,设置防火墙只需要几分钟时间,只需要在服务器的初始设置过程中进行,或者在您对计算机提供的服务进行更改时进行。
UFW防火墙是一个简单的选择。其他选项是使用iptables或者CSF防火墙。
专用网络是仅对某些服务器或用户可用的网络。 例如,在DigitalOcean中,一些地区的私人网络可以作为数据中心广泛的网络。V**或虚拟专用网络是在远程计算机之间创建安全连接并将连接呈现为本地专用网络的一种方式。这提供了一种配置服务的方法,就好像它们位于专用网络上一样,并通过安全连接来连接远程服务器。
利用私人而不是公共网络进行内部沟通几乎总是可取的,因为两者之间有所选择。但是,由于数据中心内的其他用户可以访问同一个网络,因此您仍然必须实施其他措施以确保您的服务器之间的通信安全。
使用V**实际上是一种映射只有您的服务器才能看到的专用网络的方法。沟通将完全私密和安全。 其他应用程序可以配置为通过V**软件公开的虚拟接口传递其流量。这样,只有公共互联网上的客户才能使用的服务需要暴露在公共网络上。
在具有此功能的数据中心中使用专用网络非常简单,只需在创建服务器期间启用接口并将应用程序和防火墙配置为使用专用网络即可。请记住,数据中心范围的专用网络与使用相同网络的其他服务器共享空间。
至于V**,最初的设置有点牵扯,但增加的安全性在大多数使用情况下是值得的。V**上的每台服务器都必须具有建立安全连接所需的共享安全和配置数据。V**启动并运行后,应用程序必须配置为使用V**通道。要了解设置V**以安全地连接您的基础设施,请查看我们的OpenV**教程。
公钥基础设施(PKI)是指为创建,管理和验证用于识别个人身份和加密通信的证书而设计的系统。SSL或TLS证书可用于向不同的实体进行身份验证。认证之后,他们也可以用来建立加密通信。
为您的服务器建立证书颁发机构和管理证书允许基础架构内的每个实体验证其他成员标识并加密其通信。这可以防止攻击者模仿基础架构中的服务器拦截流量的中间人攻击。
每台服务器都可以配置为信任集中式证书颁发机构。之后,权威标志的任何证书都可以被隐式信任。如果您用于通信的应用程序和协议支持TLS / SSL加密,则这是一种加密系统的方式,不需要V**隧道的开销(内部也经常使用SSL)。
配置证书颁发机构并设置公钥基础结构的其余部分可能涉及相当多的初始工作。此外,当需要创建,签署或撤销新证书时,管理证书可能会造成额外的管理负担。
对于许多用户而言,随着基础设施需求的增长,实施全面的公钥基础设施将变得更有意义。使用V**保护组件之间的通信可能是一个很好的停止差距措施,直到您达到PKI值得额外管理成本的地步。
到目前为止,我们已经讨论了一些可以用来提高安全性的技术。但是,大部分安全性是分析您的系统,了解可用的攻击面,并尽可能锁定组件。
服务审核是发现您的基础架构中的服务器上运行的服务的过程。通常,默认操作系统被配置为在启动时运行某些服务。安装其他软件有时可能会引入自动启动的依赖关系。
服务审计是了解系统上正在运行哪些服务,使用哪些端口进行通信以及接受哪些协议的一种方式。这些信息可以帮助您配置防火墙设置。
服务器为内部目的启动许多进程并处理外部客户端。这些代表了恶意用户的攻击面。您运行的服务越多,可访问软件中存在的漏洞也越多。
一旦你对你的机器上运行的网络服务有了一个好的概念,你就可以开始分析这些服务。有些问题,你会想问自己的是:
在基础架构中配置任何新服务器时,此类服务审核应为标准做法。
做一个基本的服务审计非常简单。 您可以使用netstat命令找出哪些服务正在侦听每个接口上的端口。显示用于侦听TCP和UDP流量的程序名称,PID和地址的简单示例是:
sudo netstat -plunt
你会看到如下所示的输出:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 887/sshd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 919/nginx
tcp6 0 0 :::22 :::* LISTEN 887/sshd
tcp6 0 0 :::80 :::* LISTEN 919/nginx
您需要注意的主要列是Proto,本地地址和PID /程序名称。如果地址是0.0.0.0,那么该服务正在接受所有接口上的连接。
文件审计是将当前系统与系统文件和文件特征记录进行比较的过程,当它处于已知状态时。这用于检测可能已被授权的系统更改。
入侵检测系统(IDS)是一种监视系统或网络未经授权的活动的软件。许多基于主机的IDS实现使用文件审计作为检查系统是否已经改变的方法。
与上述服务级别的审计类似,如果您确实想要确保安全的系统,那么对您的系统执行文件级审计将非常有用。这可以由管理员定期完成,也可以作为IDS自动化流程的一部分完成。
这些策略是确保文件系统没有被某些用户或进程改变的唯一方法。由于很多原因,入侵者往往希望保持隐藏状态,以便他们可以继续利用服务器很长一段时间。他们可能会取代版本受损的二进制文件。对文件系统进行审计会告诉你是否有任何文件已被修改,使您对服务器环境的完整性有信心。
实施IDS或进行文件审计可能是相当密集的过程。初始配置涉及审计系统有关您对服务器所做的任何非标准更改,并定义应排除的路径以创建基准读数。
这也使得日常操作更为复杂。这使更新过程变得复杂,因为您需要在运行更新之前重新检查系统,然后在运行更新之后重新创建基线以捕获软件版本的更改。您还需要将报告卸载到另一个位置,以便入侵者不能改变审计来覆盖他们的踪迹。
虽然这可能会增加您的管理负担,但是能够检查您的系统是否符合已知良好的副本,是确保在您不知情的情况下不会更改文件的唯一方法之一。一些流行的文件审计/入侵检测系统是Tripwire和Aide。
隔离执行环境指的是单个组件在其专用空间内运行的任何方法。
这可能意味着将离散的应用程序组件分离到它们自己的服务器,或者可能指的是将您的服务配置为在chroot环境或容器中运行。隔离级别在很大程度上取决于应用程序的需求和基础设施的实际情况。
将您的流程分离为单独的执行环境可提高您隔离可能出现的任何安全问题的能力。类似于舱壁和隔间可以帮助控制船体中的船体破损,分离您的个人组件可以限制入侵者对其他基础架构的访问。
根据您选择的遏制类型,隔离您的应用程序可能相对简单。通过将各个组件包装在容器中,您可以快速实现一些隔离措施,但请注意,Docker不会将其集装箱化考虑为安全功能。
为每一块创建一个chroot环境也可以提供某种程度的隔离,但这也不是一种绝对的隔离方法,因为通常有办法打破chroot环境。将组件移动到专用机器是最好的隔离级别,并且在许多情况下可能是最简单的,但是对于额外的机器可能花费更多。
上面列出的策略只是可以提高系统安全性的一些增强功能。重要的是要认识到,虽然迟到比晚起好,但安全措施的有效性会降低,等待实施的时间会更长。安全性不可能是事后考虑,必须从一开始就与您提供的服务和应用程序一起实施。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。