第 1 章 RHEL 安全强化概述

由于越来越多地依赖强大的、联网的计算机来帮助经营企业和跟踪我们的个人信息,围绕着网络和计算机安全的实践已经形成了整个行业。企业纷纷征询安全专家的知识和技能,以适当地审核系统,并为其量身定制适合企业运营要求的解决方案。因为大多数机构动态程度更高,所以相关员工会在本地和远程访问关键的公司 IT 资源,因此对安全计算环境的需求也随之变得更高。

不幸的是,很多机构以及个人用户都认为安全性是自带的。用户通常会更专注于系统的功能、生产率、方便性、易用性。而对安全的考虑通常是在发生了系统被入侵后才进行。在将网站连接到一个不受信任的网络(如互联网)之前,采取正确的措施是挫败许多入侵企图的有效手段。

1.1. 什么是计算机安全性?

计算机安全性是一个涵盖计算和信息处理范围的一般术语。依靠计算机系统和网络进行日常业务交易和获取关键信息的行业,将其数据视为其整体资产的重要组成部分。一些术语和指标已经进入了我们的日常商业词汇,如总拥有成本(TCO)、投资回报率(ROI)和服务质量(QoS)。利用这些指标,各行业可以计算数据完整性和高可用性(HA)等方面,作为其规划和流程管理成本的一部分。在某些行业,如电子商务,数据的可用性和可信度可能意味着成功与失败的区别。

1.2. 安全标准化

每个行业的企业都依赖于标准制定机构制定的规章制度,如美国医学协会(AMA)或电气和电子工程师协会(IEEE)。对于信息安全性,同样如此。许多安全顾问和供应商都同意被称为CIA的标准安全模型,即保密性、完整性和可用性。这种三层模型是评估敏感信息风险和制定安全政策的一个普遍接受的组成部分。下文将进一步详细介绍中情局的模式。

  • 机密性 - 敏感信息必须只对一组预定义的个人可用。应限制未经授权的信息传输和使用。例如,信息的保密性确保了客户的个人或财务信息不会被未经授权的个人出于恶意目的(如身份盗窃或信用欺诈)获取。
  • 完整性 -- -- 不应以导致信息不完整或不正确的方式改变信息。应限制未经授权的用户修改或销毁敏感信息的能力。
  • 可用性 -- -- 信息应在任何需要的时候供授权用户使用。可用性是一种保证,即可以按照商定的频率和及时性获得信息。这通常以百分比来衡量,并在网络服务提供商及其企业客户使用的服务水平协议(SLA)中正式约定。

1.3. 加密软件和认证

Red Hat Enterprise Linux经过了多项安全认证,如FIPS 140-2Common Criteria(CC),以确保遵循行业最佳实践。

RHEL 8核心加密组件知识库文章对红帽企业级Linux 8核心加密组件进行了概述,记录了它们是哪些组件,如何选择,如何集成到操作系统中,如何支持硬件安全模块和智能卡,以及加密认证如何适用于它们。

1.4. 安全控制

计算机安全通常分为三个不同的主要类别,通常称为控制

  • 物理学
  • 技术方面
  • 行政

这三大类确定了正确实施安全的主要目标。在这些控制中,有一些子类别进一步详细说明了控制和如何实施这些控制。

1.4.1. 实际控制

实物控制是指在规定的结构中实施安全措施,用于阻止或防止未经授权接触敏感材料。物理控制的例子有:

  • 闭路监控摄像机
  • 运动或热报警系统
  • 安全保护
  • 照片 ID
  • 金属门锁定
  • 生物统计学(包括指纹、声音、脸部、虹膜、笔迹和其他用于识别个人的自动方法)。

1.4.2. 技术控制

技术控制以技术为基础,控制整个物理结构和网络上敏感数据的访问和使用。技术控制的范围很广,包括以下技术:

  • 加密
  • 智能卡
  • 网络验证
  • 访问控制
  • 文件完整性审核软件

1.4.3. 管理控制

管理控制确定了安全的人为因素。它们涉及一个组织内的各级人员,并通过以下方式确定哪些用户可以使用哪些资源和信息:

  • 培训并认知
  • 灾难和恢复计划
  • 人员与隔离策略
  • 人员注册和核算

1.5. 漏洞评估

只要有时间、资源和动机,攻击者几乎可以入侵任何系统。目前所有的安全程序和技术都不能保证任何系统完全不受入侵。路由器有助于确保互联网的网关安全。防火墙有助于保护网络边缘的安全。虚拟专用网络以加密流的方式安全地传递数据。入侵检测系统对恶意活动发出警告。然而,每一种技术的成功都取决于一些变量,包括:

  • 负责配置、监测和维护技术的工作人员的专业知识;
  • 能够快速有效地修补和更新服务和内核。
  • 责任人能够对网络保持持续的警惕。

鉴于数据系统和技术的动态状态,保障企业资源的安全是相当复杂的。由于这种复杂性,通常很难为您的所有系统找到专家资源。虽然有可能在高水平上拥有信息安全许多领域的知识,但很难留住在几个以上主题领域有专长的工作人员。这主要是因为信息安全的每个主题领域都需要持续关注和重视。信息安全不会停滞不前。

漏洞评估是对您的网络和系统安全的内部审计;其结果表明您的网络的保密性、完整性和可用性。通常情况下,脆弱性评估从侦察阶段开始,在此期间收集有关目标系统和资源的重要数据。这个阶段导致了系统准备阶段,在这个阶段,目标基本上是检查所有已知的漏洞。准备阶段的高潮是报告阶段,在这一阶段,将调查结果分为高、中、低三类;并讨论改善目标安全(或减轻脆弱性风险)的方法。

如果你要对你的家进行脆弱性评估,你很可能会检查你家里的每一扇门,看看它们是否关闭和锁定。你还会检查每一扇窗户,确保它们完全关闭,并正确地锁住。这个概念同样适用于系统、网络和电子数据。恶意用户是您数据的窃取者和破坏者。然后,您可以专注于自己的工具、精力和措施来应对恶意用户。

1.5.1. 定义评估并测试

漏洞调查可分为两种类型:outside looking ininside looking around

当进行外部漏洞评估时,您会试图从外部破坏您的系统。这可能使您以一个外部攻击者的角度来对安全进行考虑。您会看到攻击者可以看到的内容 - 可公开路由的 IP 地址、您的 DMZ 系统、防火墙的外部接口等等。DMZ 代表"非军事区",对应一个计算机或小子网络,该网络位于可信内部网络(如公司专用 LAN)与不可信外部网络(如公共互联网)之间。通常情况下,DMZ包含了可以访问互联网流量的设备,如Web(HTTP)服务器、FTP服务器、SMTP(电子邮件)服务器和DNS服务器。

当你进行内窥式漏洞评估时,由于你是内部人员,你的地位被提升为受信任,所以你处于优势地位。这是你和你的同事登录系统后的观点。你可以看到打印服务器、文件服务器、数据库和其他资源。

这两种类型的漏洞评估会有分大区别。作为内部公司,为您提供比外部更多的特权。在大多数机构中,安全性被配置为把入侵者挡在外部。在保障组织内部安全方面做得很少(如部门防火墙、用户级访问控制和内部资源的认证程序)。通常情况下,在内部寻找的时候,资源会多很多,因为大部分系统都是公司内部的。一旦您位于公司以外,您的状态就不被信任。外界能提供给你的系统和资源通常是非常有限的。

漏洞评估和渗透测试之间是有区别的。可将漏洞评估作为入渗透试的第一步。从评估中获得的信息用于测试。评估是为了检查漏洞和潜在的弱点,而渗透测试实际上是试图利用评估结果。

设计网络基础结构是一个动态过程。安全性信息和物理安全是动态的。执行评估会显示一个概述,它可能会报告假的正状态和假的负状态。假的正状态代表,攻击发现安全漏洞,但这些漏洞实际并不存在。假的负状态代表,没有发现存在的安全漏洞。

安全管理员的所起到的效果取决于使用的工具及自己所具有的知识。使用目前任何一个评估工具对您的系统运行,几乎可以保证会有一些假的正状态。无论是因为程序错误还是用户错误,其结果都是相同的。工具可能会发现假的正状态,但更严重的是假的负状态。

现在,已定义了漏洞评估与中路测试之间的差异,请仔细检查评估结果,然后先仔细检查插入性测试,作为您最新最佳实践方法的一部分。

警告

不要尝试在生产环境中利用漏洞。这样做会对您的系统和网络的生产率效率造成负面影响。

以下列表将检查执行漏洞的一些好处。

  • 树立主动关注信息安全的意识。
  • 在攻击这发现潜在的漏洞之前,发现潜在的漏洞。
  • 使系统保持最新,并应用了补丁程序。
  • 在开发专业人士方面促进增长和协助。
  • 中止商业损失和负面的公共形象。

1.5.2. 建立漏洞评估方法

为了帮助选择脆弱性评估的工具,制定脆弱性评估方法是有帮助的。遗憾的是,目前还没有预先确定或行业认可的方法;但是,常识和最佳做法可以作为充分的指导。

目标是什么?我们是在看一台服务器,还是在看我们的整个网络和网络内的一切?我们是外部还是内部的?这些问题的答案非常重要,因为它们不仅有助于确定选择哪些工具,而且有助于确定使用这些工具的方式。

要了解更多关于建立方法论的信息,请参见以下网站:

1.5.3. 脆弱性评估工具

评估可以从使用某种形式的信息收集工具开始。在评估整个网络时,先绘制布局图,找到正在运行的主机。定位后,单独检查每个主机。专注于这些主机需要另外一组工具。了解使用哪些工具可能是查找漏洞的最关键步骤。

以下工具只是可用工具中的一些选择:

  • Nmap是一个流行的工具,可以用来查找主机系统和这些系统上的开放端口。要从AppStream仓库安装Nmap以根用户身份输入yum install nmap命令。更多信息请参见nmap(1)man 页面。
  • OpenSCAP套件的工具,如oscap命令行工具和scap-workbench图形工具,提供了一个完全自动化的合规性审计。如需更多信息,请参阅扫描系统以了解安全合规和漏洞
  • 高级入侵检测环境(Advanced Intrusion Detection Environment,简称 AIDE)是一个实用工具,它可以创建系统上的文件数据库,然后利用该数据库来确保文件的完整性,并检测系统入侵。如需更多信息,请参阅使用 AIDE 检查完整性

1.6. 安全隐患

1.6.1. 对网络安全的威胁

在配置网络的以下方面时,错误的做法会增加被攻击的风险。

不安全的构架

一个错误配置的网络是未授权用户的主要入口点。让一个基于信任的、开放的本地网络暴露在高度不安全的互联网上,就像让一扇门在一个犯罪猖獗的社区里敞开一样--在一段时间内可能不会发生任何事情,但终究会有人利用这个机会。

广播网络

系统管理员往往没有意识到网络硬件在其安全方案中的重要性。简单的硬件,如集线器和路由器,依靠的是广播或非交换原理,即每当一个节点在网络上向接收节点传输数据时,集线器或路由器就会发送数据包的广播,直到接收节点接收并处理数据。这种方法最容易受到外部入侵者和本地主机上未经授权用户的地址解析协议(ARP)或媒体访问控制(MAC)地址欺骗。

中央服务器

另一个潜在的网络弱点是集中式的计算环境。许多企业常用的降低成本措施是将所有服务整合到一台功能强大的机器上。这可以很方便,因为它比多服务器配置更容易管理,成本也大大降低。然而,集中式服务器会在网络上引入单点故障。如果中央服务器被入侵,可能会使网络完全失去作用,甚至更糟的是,容易发生数据操纵或被盗。在这些情况下,中央服务器就成了一扇开放的大门,可以访问整个网络。

1.6.2. 服务器安全隐患

服务器安全与网络安全同样重要,因为服务器往往掌握着组织的大量重要信息。如果服务器被入侵,其所有内容都可能被破解者随意窃取或操纵。以下小节详细介绍了一些主要问题。

未使用的服务和开放端口

Red Hat Enterprise Linux 8 的完整安装包含超过 1000 个应用程序和库软件包。然而,大多数服务器管理员并不会选择安装发行版中的每一个包,而是宁愿安装包的基本安装,包括几个服务器应用程序。

系统管理员经常出现的情况是,安装操作系统时没有注意到底安装了哪些程序。这可能会有问题,因为可能会安装不需要的服务,用默认设置配置,并可能打开。这可能会导致不需要的服务,如Telnet、DHCP或DNS,在管理员没有意识到的情况下,在服务器或工作站上运行,这反过来又会给服务器带来不需要的流量,甚至给破解者提供进入系统的潜在途径。

未应用补丁的服务

默认安装中包含的大多数服务器应用程序都是可靠的、经过全面测试的软件。在生产环境中使用多年,他们的代码已经被彻底完善,很多bug已经被发现并修复。

然而,世上没有完美的软件,总有进一步完善的空间。较新的软件通常不会象预期的一样严格测试,因为它最近才开始在生产环境中使用,或者可能不像其它服务器软件一样流行。

开发人员和系统管理员经常在服务器应用程序中发现可利用的错误,并将信息发布在错误跟踪和安全相关网站上,如Bugtraq邮件列表(http://www.securityfocus.com。)或计算机应急小组(CERT)网站(http://www.cert.org).虽然这些机制是提醒社区了解安全隐患的有效方法,但效果取决于系统管理员是否立即对系统进行了补丁。这一点尤其正确,因为破解者可以访问这些同样的漏洞跟踪服务,并会随时利用这些信息来破解未打补丁的系统。良好的系统管理需要保持警惕,不断地跟踪程序漏洞,并进行适当的系统维护,以确保更安全的计算环境

管理员疏忽

管理员如果没有对系统进行补丁,则会对服务器安全性造成最大的威胁。这既适用于没有经验的管理者,也适用于过于自信或积极进取的管理者。

有些管理员没有给服务器和工作站打补丁,而有些管理员则没有观察系统内核或网络流量的日志消息。另一个常见错误是服务的默认密码或密钥没有改变。例如,有些数据库有默认的管理密码,因为数据库开发商认为系统管理员在安装后会立即更改这些密码。如果数据库管理员没有修改这个密码,即使是没有经验的破解者也可以使用一个广为人知的默认密码来获得数据库的管理权限。这些只是几个例子,说明不注意管理会导致服务器被入侵。

本质上不安全的服务

如果选择的网络服务本身就不安全,即使是最警惕的组织也会成为漏洞的受害者。例如,有许多服务是在假设它们是在受信任的网络上使用的情况下开发的;然而,一旦服务在互联网上变得可用这一假设就失效了(互联网本身就是不受信任的)。

一个不安全的网络服务是那些需要未加密用户名和密码进行验证的服务。Telnet 和 FTP 是两个这样的服务。如果数据包嗅探软件监测到远程用户和这种服务之间的流量,用户名和密码很容易被截获。

从本质上讲,这类服务也更容易成为安全行业所说的中间人攻击的猎物。在这种类型的攻击中,攻击者通过欺骗网络上被破解的名称服务器指向他的机器而不是目标服务器来重定向网络流量。一旦有人打开了对服务器的远程会话,攻击者的机器就会作为一个无形的管道,静静地坐在远程服务和毫无戒心的用户之间捕捉信息。这样,攻击者可以在没有服务器或者用户的情况下收集管理密码和原始数据。

另一类不安全的服务包括网络文件系统和信息服务,如NFS或NIS,它们是明确为局域网使用而开发的,但不幸的是,它们被扩展到包括广域网(为远程用户)。默认情况下,NFS 没有配置任何验证或安全机制以防止供节者挂载 NFS 共享并访问包含的任何内容。NIS也一样,在纯文本ASCII或DBM(ASCII衍生的)数据库中,有网络上每台计算机必须知道的重要信息,包括密码和文件权限。获得这个数据库访问权限的攻击者可访问网络中的每个用户帐户,包括管理员的帐户。

默认情况下,Red Hat Enterprise Linux 8 在发布时关闭了所有这些服务。然而,由于管理员经常发现自己被迫使用这些服务,因此仔细配置至关重要。

1.6.3. 工作站和家用PC安全面临的威胁

工作站和家用PC可能不像网络或服务器那样容易受到攻击,但由于它们通常包含敏感数据,如信用卡信息,因此它们是系统破解者的目标。工作站也可以在用户不知情的情况下被合用,被攻击者当作"僵尸"机进行协同攻击。由于这些原因,了解工作站的漏洞可以让用户省去重新安装操作系统的麻烦,或者更糟糕的是,从数据窃取中恢复。

密码错误

坏的密码是攻击者进入系统最容易的方法之一。

脆弱的客户应用程序

虽然管理员可能拥有一个完全安全和打过补丁的服务器,但这并不意味着远程用户在访问它时是安全的。例如,如果服务器在公共网络上提供Telnet或FTP服务,攻击者就可以在网络上传递纯文本用户名和密码时捕捉到它们,然后使用账户信息访问远程用户的工作站。

即使使用安全协议,如SSH,如果远程用户不更新他们的客户端应用程序,他们可能会受到某些攻击。例如,SSH协议版本1的客户端容易受到恶意SSH服务器的X转发攻击。一旦连接到服务器,攻击者就可以悄悄地捕捉到客户端在网络上的任何按键和鼠标点击。这个问题在SSH第2版协议中得到了修复,但用户要跟踪哪些应用程序存在此类漏洞,并在必要时进行更新。

1.7. 常见的漏洞和攻击

表 1.1 “常见漏洞” 详细介绍了一些最常见的漏洞和入侵者用来访问组织网络资源的入口。这些常见漏洞的关键是解释它们是如何执行的,以及管理员如何正确地保护他们的网络免受此类攻击。

表 1.1. 常见漏洞

开发描述备注

无密码或默认密码

将管理密码留空或使用产品供应商设置的默认密码。这在路由器和防火墙等硬件中最为常见,但一些在Linux上运行的服务也可以包含默认的管理员密码(尽管Red Hat Enterprise Linux 8并没有提供这些密码)。

常见于网络硬件,如路由器、防火墙、VPN和网络连接存储(NAS)设备。

在许多传统操作系统中很常见,特别是那些捆绑服务的系统(如UNIX和Windows)。

管理员有时会在匆忙中创建特权用户账户,并将密码置空,这就为发现该账户的恶意用户创造了一个完美的入口。

默认共享密钥

安全服务有时为了开发或评估测试的目的,会打包默认的安全密钥。如果不改变这些密钥,并将其放置在互联网的生产环境中,所有拥有相同默认密钥的用户都可以访问该共享密钥资源,以及其中包含的任何敏感信息。

最常见于无线接入点和预配置的安全服务器设备中。

IP欺骗

远程机器作为本地网络上的一个节点,发现服务器的漏洞,并安装后门程序或木马程序来控制你的网络资源。

欺骗是相当困难的,因为它涉及到攻击者预测TCP/IP序列号,以协调与目标系统的连接,但有几个工具可以帮助破解者执行这样的漏洞。

取决于目标系统运行的服务(如rshtelnet、FTP等),这些服务使用基于源的认证技术,与ssh或SSL/TLS中使用的PKI或其他形式的加密认证相比,不推荐使用这些技术。

窃听

通过窃听两个节点之间的连接,收集网络上两个活动节点之间传递的数据。

这类攻击主要通过Telnet、FTP、HTTP传输等纯文本传输协议来实现。

远程攻击者必须能够访问局域网内被入侵的系统,才能进行这种攻击;通常破解者使用了主动攻击(如IP欺骗或中间人)来入侵局域网内的系统。

预防措施包括具有加密密钥交换、一次性密码或加密认证的服务,以防止密码窥探;还建议在传输过程中进行强加密。

服务漏洞

攻击者在互联网上运行的服务中发现了一个缺陷或漏洞;通过这个漏洞,攻击者控制了整个系统和它可能持有的任何数据,并可能控制网络上的其他系统。

基于HTTP的服务,如CGI,容易被远程命令执行,甚至是交互式shell访问。即使HTTP服务以"nobody"等非特权用户的身份运行,配置文件和网络地图等信息也可以被读取,或者攻击者可以发起拒绝服务攻击,耗尽系统资源或使其对其他用户不可用。

服务有时会存在开发和测试过程中未被注意到的漏洞;这些漏洞(如缓冲区溢出,攻击者使用任意值使服务崩溃,从而填满应用程序的内存缓冲区,给攻击者提供一个交互式命令提示符,攻击者可以从该提示符中执行任意命令)可以给攻击者提供完全的管理控制。

管理员应确保服务不以根用户身份运行,并应警惕来自供应商或安全组织(如CERT和CVE)的应用程序的补丁和勘误更新。

应用程序漏洞

攻击者在桌面和工作站应用程序(如电子邮件客户端)中发现故障,并执行任意代码,植入木马程序以备将来入侵,或使系统崩溃。如果被入侵的工作站在网络的其他地方拥有管理权限,则可能会被进一步利用。

工作站和台式机更容易被利用,因为工作人员没有专业知识或经验来防止或发现漏洞;当他们安装未经授权的软件或打开未经请求的电子邮件附件时,必须告知个人他们正在承担的风险。

可以实施保障措施,使电子邮件客户端软件不会自动打开或执行附件。此外,使用Red Hat Network;或其他系统管理服务自动更新工作站软件,可以减轻多座安全部署的负担。

拒绝服务(DoS)攻击

攻击者或一组攻击者通过向目标主机(服务器、路由器或工作站)发送未经授权的数据包来协调攻击组织的网络或服务器资源。这就迫使合法用户无法使用该资源。

美国报告的最新 DoS 问题单在 2000 年发生。几个高流量的商业和政府网站被一个协调的ping flood攻击,使用几个高带宽连接的受损系统作为僵尸,或重定向广播节点,使其无法使用。

源数据包通常是伪造的(以及重播),使得调查攻击的真实来源变得困难。

使用iptables和网络入侵检测系统(如Snort)的入口过滤(IETF rfc2267)的进展,协助管理员追踪和防止分布式DoS攻击。


为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。