简介保护您的Linux VPS

介绍

控制自己的Linux服务器是尝试新事物并利用一个伟大平台的力量和灵活性的机会。 但是,Linux服务器管理员必须采取与任何网络连接的计算机相同的警告,以确保其安全和安全。

有许多不同的安全主题属于“Linux安全”的一般类别,以及关于Linux服务器的适当级别的安全性的许多意见。

取消这个的主要事情是,你必须自己决定什么安全保护是必要的。 在您这样做之前,您应该意识到风险和权衡,并决定可用性和安全性之间的平衡,这对您有意义。

本文旨在帮助您了解在Linux服务器环境中采用的一些最常见的安全措施。 这不是一个详尽的列表,并不包括推荐的配置,但它将提供链接到更详细的资源,并讨论为什么每个组件是许多系统的重要组成部分。

阻止使用防火墙访问

向所有用户推荐的最简单的步骤之一是启用和配置防火墙。 防火墙作为互联网和您的机器的一般流量之间的屏障。 他们查看进入和退出服务器的流量,并决定是否应允许提供信息。

他们通过根据用户配置的一组规则检查有问题的流量来完成此操作。 通常,服务器将仅使用几个特定的​​网络端口用于合法服务。 其余的端口未被使用,并且应该被安全地保护在防火墙后面,这将拒绝去往这些位置的所有流量。

这允许您丢弃您不期望的数据,甚至在某些情况下条件化您的真实服务的使用。 Sane防火墙规则为网络安全提供了良好的基础。

有相当多的防火墙解决方案可用。 我们将简要讨论一些下面更受欢迎的选项。

UFW

UFW代表不复杂的防火墙。 其目的是提供良好的保护,而没有其他解决方案的复杂语法。

UFW以及大多数Linux防火墙,实际上是控制Linux内核中包含的netfilter防火墙的前端。 这通常是一个简单的防火墙,用于尚不熟悉Linux防火墙解决方案的人,通常是一个不错的选择。

你可以学习如何启用和配置UFW防火墙 ,并通过点击此链接了解更多信息。

IPTables

也许最着名的Linux防火墙解决方案是iptables。 IPTables是用于管理包括在Linux内核中的netfilter防火墙的另一个组件。 它已经存在了很长时间,并已经过严格的安全审计,以确保其安全。 有一个名为ip6tables的iptables版本用于创建IPv6限制。

在管理Linux机器时,您可能会遇到iptables配置。 语法最初可能很复杂,但它是一个非常强大的工具,可以配置非常灵活的规则集。

您可以了解更多关于如何实现在Ubuntu或Debian的系统中的一些iptables防火墙规则在这里,或了解如何在CentOS / RHEL基于-的Fedora /发行版用iptables在这里。

IP6表

如上所述,所述iptables用来操作包含的IPv4规则的表。 如果您的服务器上启用IPv6时,将还需要注意的IPv6相当于: ip6tables

Linux内核中包含的netfilter防火墙保持IPv4和IPv6流量完全独立。 这些存储在不同的表中。 规定分组的最终命运的规则由正在使用的协议版本确定。

这对于服务器管理员意味着,当启用版本6时,必须维护单独的规则集。 ip6tables命令股份相同的语法iptables命令,所以实现同一组的限制,在第6版表通常是直线前进。 但是,您必须确保匹配流向您的IPv6地址的流量,才能正常工作。

NFTables

虽然iptables长期以来一直是Linux环境中防火墙的标准,但最近已经在Linux内核中添加了一个名为nftables的新防火墙。 这是一个项目由同一个团队,使iptables,并打算最终替换iptables。

nftables防火墙尝试实现比找到其iptables前身更易读的语法,并在同一工具中实现IPv4和IPv6支持。 虽然大多数版本的Linux在这个时候没有一个新的足够的内核来实现nftables,它很快将是很常见的,你应该尽量熟悉它的使用。

使用SSH安全地远程登录

在管理您没有本地访问权限的服务器时,您需要远程登录。 在Linux系统上实现这一标准的安全方法是通过称为SSH的协议,代表安全shell。

SSH提供端到端加密,通过安全连接隧道不安全流量的能力,X转发(通过网络连接的图形用户界面)等等。 基本上,如果您无法访问本地连接或带外管理,SSH应该是您与计算机交互的主要方式。

虽然协议本身是非常安全的,并已经进行了广泛的研究和代码审查,您的配置选择可以帮助或阻碍服务的安全性。 我们将在下面讨论一些选项。

密码与SSH密钥登录

SSH具有灵活的身份验证模式,允许您使用多种不同的方法登录。 两个最流行的选择是密码和SSH密钥认证。

虽然密码认证可能是大多数用户最自然的模型,但这两个选择的安全性也较低。 密码登录允许潜在的入侵者持续猜测密码,直到找到成功的组合。 这被称为暴力破解,并且可以很容易地被现代工具的攻击者自动化。

另一方面,SSH密钥通过生成安全密钥对来操作。 公钥被创建为一种测试类型,用于标识用户。 它可以公开共享没有问题,并且不能用于除了识别用户和允许登录具有匹配的私钥的用户之外的任何东西。 私钥应该保密,并用于通过其相关公钥的测试。

基本上,您可以在服务器上添加公共SSH密钥,它将允许您使用匹配的私钥登录。 这些键是如此复杂,暴力强迫是不实际的。 此外,您可以选择向密钥添加长密码,从而增加安全性。

要了解更多关于如何使用SSH这里的点击,并检查了这个链接,了解 。

实施fail2ban禁止恶意IP地址

有助于您的SSH配置的一般安全性的一个步骤是实施像fail2ban这样的解决方案。 Fail2ban是一种监视日志文件的服务,以便确定远程系统是否可能不是合法用户,然后临时禁止来自关联IP地址的未来流量。

设置一个完整的fail2ban策略可以允许您标记持续尝试登录失败的计算机,并添加防火墙规则以在一段时间内从其中删除流量。 这是一种阻止常用的强力方法的简单方法,因为当被禁止时,他们将需要休息一段时间。 这通常足以阻止进一步的暴力尝试。

你可以学习如何实现在Ubuntu上一个的fail2ban政策在这里。 有类似导游的DebianCentOS的在这里。

实施入侵检测系统以检测未授权的条目

要记住的一个重要考虑因素是制定一个检测未授权使用的策略。 你可能有预防措施,但你也需要知道他们是否失败。

入侵检测系统(也称为IDS)在处于已知良好状态时对配置和文件详细信息进行编目。 然后对这些记录的状态进行比较,以确定文件是否已更改或设置已修改。

有相当多的入侵检测系统。 我们将在下面讨论几个。

Tripwire

最着名的IDS实现之一是tripwire。 Tripwire编译系统文件的数据库,并使用一组密钥保护其配置文件和二进制文件。 选择配置详细信息并定义异常后,后续运行会通知其监视的文件的任何更改。

策略模型非常灵活,允许您根据环境调整其属性。 然后,您可以通过cron作业配置tripwire运行,甚至在异常活动的情况下实施电子邮件通知。

了解更多关于如何实现绊在这里。

助手

IDS的另一个选项是Aide。 与tripwire类似,Aide通过构建数据库并将当前系统状态与其存储的已知良好值进行比较来进行操作。 当出现差异时,它可以通知管理员该问题。

Aide和tripwire都为同样的问题提供类似的解决方案。 查看文档并尝试这两种解决方案,找出哪些您更喜欢。

有关指导如何使用助手作为IDS ,点击这里。

Psad

psad工具关注的是系统的不同部分,而不是上面列出的工具。 psad不监视系统文件,而是密切关注防火墙日志,以尝试检测恶意活动。

如果用户尝试使用端口扫描来探测漏洞,例如,psad可以检测此活动并动态更改防火墙规则以锁定违规用户。 该工具可以注册不同的威胁级别,并根据问题的严重程度作出响应。 它还可以选择向管理员发送电子邮件。

要了解如何使用PSAD作为一个网络ID ,请点击此链接。

Bro

基于网络的IDS的另一个选项是Bro。 Bro实际上是一个网络监控框架,可用作网络IDS或用于其他目的,如收集使用情况统计信息,调查问题或检测模式。

Bro系统分为两层。 第一层监视活动并生成它认为的事件。 第二层通过策略框架运行生成的事件,该框架指示应该对流量做什么,如果有的话。 它可以生成警报,执行系统命令,简单记录事件或采取其他路径。

要了解如何使用兄弟作为IDS ,请点击这里。

RKHunter

虽然技术上不是入侵检测系统,但是rkhunter在许多与基于主机的入侵检测系统相同的原理上操作,以便检测rootkit和已知的恶意软件。

虽然病毒在Linux世界是罕见的,恶意软件和rootkit可能会危及你的盒子或允许继续访问成功的exploiter。 RKHunter下载已知漏洞的列表,然后根据数据库检查您的系统。 它还会在一些常见应用程序中检测到不安全设置时向您发出警报。

你可以看看这篇文章,了解如何在Ubuntu上使用RKHunter

一般安全建议

虽然上述工具和配置可以帮助您保护系统的某些部分,但是良好的安全性不仅来自于实施工具并且忘记了它。 良好的安全表现在某种心态,通过勤奋,审查和作为一个过程参与安全实现。

有一些一般的规则,可以帮助设置您在正确的方向安全使用您的系统。

注意定期更新和更新

软件漏洞被发现在所有的时间在你可能有你的系统上的每种类型的软件。 分发维护者通常做好跟上最新安全补丁的工作,并将这些更新推送到他们的存储库中。

但是,如果您尚未下载并安装更新,则在存储库中提供安全更新不会对您的服务器有好处。 虽然许多服务器受益于依赖稳定,经过良好测试的系统软件版本,但是安全补丁不应该被推迟,应该被视为关键更新。

大多数发行版提供安全邮件列表和单独的安全存储库,仅下载和安装安全修补程序。

在官方频道之外下载软件时要小心

大多数用户将坚持使用官方软件库提供的软件进行分发,大多数发行版提供签名软件包。 用户通常可以信任分发维护者,并将其关注点放在官方渠道之外获取的软件的安全性上。

您可以选择信任来自项目官方网站上可用的分发包或软件的包,但请注意,除非您自己审核每个软件,否则存在风险。 大多数用户认为这是可接受的风险级别。

另一方面,从您不认识的人或组织维护的随机存储库和PPA获取的软件可能是一个巨大的安全风险。 没有设置规则,大多数非官方软件源可能是完全安全的,但请注意,每当您信任另一方时,您都会冒险。

确保你能向你自己解释你为什么信任来源。 如果你不能这样做,考虑称你的安全风险作为更多的关注比方便你会得到。

了解您的服务并限制他们

虽然运行服务器的整个要点可能提供您可以访问的服务,但将您机器上运行的服务限制为您使用和需要的服务。 将每个启用的服务视为可能的威胁向量,并尝试在不影响您的核心功能的情况下尽可能多地消除威胁向量。

这意味着如果您运行无头(无监视器连接)服务器,并且不运行任何图形(非网络)程序,您应禁用并可能卸载X显示服务器。 在其他领域也可以采取类似的措施。 没有打印机? 禁用“lp”服务。 没有Windows网络共享? 禁止“samba”服务。

您可以通过各种方式发现您在计算机上运行的服务。 本文介绍如何检测启用的服务 “创造需求列表”部分。

不要使用FTP; 请改用SFTP

这对许多人来说可能是一个困难的,但是FTP是一个本质上不安全的协议。 所有身份验证都以纯文本格式发送,这意味着任何监视服务器和本地计算机之间连接的用户都可以查看您的登录详细信息。

只有非常少的实例,FTP可能很好实现。 如果您运行的是匿名,公共,只读下载镜像,FTP是一个不错的选择。 另一种情况,FTP是一个好的选择是,当你只是在启用NAT的防火墙后面的两台计算机之间传输文件,并且您信任您的网络是安全的。

在几乎所有其他情况下,您应该使用更安全的替代方案。 SSH套件附带一个称为SFTP的替代协议,它以类似的方式在表面上操作,但它基于与SSH协议相同的安全性。

这允许您以传统上使用FTP的方式传输信息到服务器或从服务器传输信息,但没有风险。 大多数现代FTP客户端也可以与SFTP服务器通信。

要了解如何使用SFTP安全地传输文件 ,请查看本指南。

实施明智的用户安全策略

在管理用户时,您可以采取多个步骤来更好地保护系统。

一个建议是禁用根登录。 由于根用户存在于任何类似POSIX的系统上,它是一个功能强大的帐户,因此它是许多攻击者的有吸引力的目标。 在配置了sudo访问权限后,或者如果您很习惯使用su命令,禁用root登录通常是个好主意。 许多人不同意这个建议,但检查它是否适合你。

这是可能的SSH服务中禁用远程root用户登录或禁用本地登录,您可以在限制/etc/securetty的文件。 您还可以将root用户的shell设置为非shell以禁用根shell访问,并设置PAM规则以限制根登录。 红帽有一个伟大的文章如何禁用root登录

使用用户帐户实现的另一个好的策略是为每个用户和服务创建唯一的帐户,并给他们只有最低限度的权限来完成他们的工作。 锁定他们不需要访问权限的所有权限,并在没有阻止他们的情况下占用所有权限。

这是一个重要的策略,因为如果一个用户或服务被攻破,它不会导致多米诺骨牌效应,允许攻击者获得更多的系统。 这种分隔系统帮助您隔离问题,就像一个舱壁和水密门系统可以帮助防止船舶在有船体破裂时下沉。

类似于上面讨论的服务策略,您还应该注意禁用不再需要的任何用户帐户。 当您卸载软件或用户无法再访问系统时,可能会发生这种情况。

注意权限设置

文件权限是许多用户沮丧的巨大来源。 找到一个权限的平衡,允许你做你需要做的,而不暴露自己的伤害可能是困难的,需要仔细注意和思考在每个场景。

设置一个合理的umask策略(定义新文件和目录的默认权限的属性)可以在创建良好的默认值上有很大的帮助。 您可以了解如何权限的工作,以及如何调整你的umask值在这里。

一般来说,你应该在设置任何事情之前三思而后行,以便世界可写,特别是如果它以任何方式访问互联网。 这可能有极端的后果。 此外,你不应该在权限中设置SGID或SUID位,除非你完全知道你在做什么。 此外,请检查您的文件是否拥有所有者和组。

根据您的具体用法,您的文件权限设置会有很大的差异,但您应该始终尝试查看是否有一种方法可以获得较少的权限。 这是最容易出错的事情之一,也是一个在互联网上有很多不好的建议的地方。

定期检查服务器上的恶意软件

虽然Linux通常不如Windows的恶意软件为目标,它绝不免疫恶意软件。 结合实施IDS检测入侵企图,扫描恶意软件可以帮助识别活动的痕迹,表明您的计算机上安装了非法软件。

有许多可用于Linux系统的恶意软件扫描程序,可用于定期验证服务器的完整性。 Linux的恶意软件检测,也被称为maldet或LMD,是可以很容易地安装和配置扫描已知恶意软件签名一种流行的选择。 它可以手动运行以执行一次性扫描,也可以进行守护进程以运行定期计划的扫描。 来自这些扫描的报告可通过电子邮件发送给服务器管理员。

如何保护您正在使用的特定软件

虽然本指南不够大,无法通过保护各种服务或应用程序的细节,但在线提供了许多教程和指南。 您应该阅读您打算在系统上实现的每个项目的安全建议。

此外,诸如web服务器或数据库管理系统的流行服务器软件具有专用于安全性的整个网站和数据库。 一般来说,您应该先阅读并确保每项服务的安全性,然后再上线。

您可以查看我们的保卫科为您正在使用的软件更具体的建议。

结论

您现在应该对您可以在Linux服务器上实现的常规安全实践有一个正确的理解。 虽然我们努力提及许多重要的领域,但在结束时,你必须自己做出许多决定。 当您管理服务器时,您必须对您的服务器的安全性负责。

这不是你可以在一开始就配置一个快速的流程,它是审计你的系统,实施解决方案,评估日志和警报,重新评估你的需求等进程和持续的练习。你需要警惕保护您的系统,并始终评估和监控您的解决方案的结果。

作者:Justin Ellingwood
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏