1 安全性和机密性 #
本章介绍计算机安全的基本概念,其中会介绍威胁和基本缓解方法。本章还提供了其他包含更多信息的章节、指南和网站的参考内容。
1.1 概述 #
Linux 的一个主要特征是它能够同时处理多个用户(多用户),并允许这些用户在同一台计算机上同时执行任务(多任务)。对于用户而言,处理本地存储的数据与处理网络中存储的数据没有任何差别。
由于存在多用户功能,不同用户的数据必须分开存储,以确保安全性和隐私性。Linux 的另一个重要特征是,即使数据媒体(例如硬盘)丢失或受损,它也能保持数据的可用性。
本章侧重于机密和隐私方面,不过综合性的安全概念还包括定期更新、可正常工作且经过测试的备份。如果没有备份,在发生数据篡改或者硬件故障后,数据恢复就会变得很困难。
使用深层防御方法实现安全性:我们认为,没有任何一种威胁缓解措施可以完全保护系统和数据,但多层防御能够大大提高攻击的难度。深层防御策略可由以下部分构成:
将口令进行哈希处理(例如,使用 PBKDF2、bcrypt 或 scrypt)并将口令加盐
加密数据(例如,使用 AES)
日志记录、监控和入侵检测
防火墙
防病毒扫描程序
明确规定的成文紧急程序
备份
物理安全性
审计、安全扫描和入侵测试
SUSE Linux Enterprise Server 中包含用于解决上面所列要求的软件。下列章节提供了保护系统的起点措施。
安全和强化指南中提供了有关强化系统的更多细节。
1.2 口令 #
Linux 系统上只会存储口令的哈希。哈希属于单向算法,可将数据打乱为难以反向推测的数字指纹。
哈希存储在普通用户无法读取的 /etc/shadow
文件中。由于性能强大的计算机能够恢复口令,因此不应向普通用户显示哈希加密的口令。
美国国家标准技术研究院 (NIST) 发布了有关口令的指导原则(可在 https://pages.nist.gov/800-63-3/sp800-63b.html#sec5 上找到)
有关如何设置口令策略的细节,请参见第 17.3 节 “。有关 Linux 上的身份验证的一般信息,请参见 ”第 I 部分 “身份验证”。
1.3 备份 #
如果您的系统被入侵,可以使用备份来恢复先前的系统状态。发生 bug 或意外时,也可以使用备份将当前系统与旧版本进行比较。对于生产系统,请务必进行某种类型的非现场备份以应对灾难等情况(例如磁带/可刻录媒体的非现场存储,或非现场发起的存储)。
出于法律原因,一些公司和组织必须谨慎考虑备份过多信息以及保留时间过长的情况。如果您的环境设有销毁旧纸质文件的相关政策,您可能还需要将此政策扩展至 Linux 备份磁带。
有关服务器的物理安全的规则也适用于备份。此外,还建议您对备份数据进行加密。可对单个备份存档执行此操作,也可对整个备份文件系统执行此操作(如适用)。如果备份媒体丢失(例如在运输途中),加密可防止有人未经授权访问这些数据。如果备份系统本身遭到入侵,则适用相同的规则。在某种程度上,加密还可确保备份的完整性。但请注意,相应人员需要能够在紧急情况下解密备份。此外,还应考虑加密密钥本身被入侵而需要替换的情况。
如果已知某个系统被入侵或疑似被入侵,请务必确定备份的完整性状态。如果在很长一段时间内都未检测到系统入侵,则有可能备份已包含被操控的配置文件或恶意程序。请保留足够长的备份历史以便检查可能的不合理差异。
即使不存在任何已知安全违规,也应定期检查各备份中重要配置文件之间的差异,这有助于发现安全问题(甚至可能的意外错误配置)。此方法最适合内容不会频繁发生更改的文件和环境。
1.4 系统完整性 #
如果能够以物理方式访问某台计算机,当已获授权的人员引导该计算机时,他们可以操控固件和引导进程来获取访问权限。您的第一项措施应该就是以物理方式锁住服务器机房,尽管并非所有计算机都能锁在不允许进入的机房中。
另外,请记得以安全的方式处置旧设备。保护引导加载程序并限制可移动媒体也有助于确保物理安全性。有关更多信息,请参见第 9 章 “物理安全性”。
考虑采取以下附加措施:
配置您的系统,使其无法从可移动设备引导。
使用 UEFI 口令、安全引导和 GRUB2 口令保护引导进程。
Linux 系统由引导加载程序启动,该程序允许向引导的内核传递其他选项。可以通过为引导加载程序额外设置一个口令,来防止其他人在引导期间使用此类参数。这对于系统安全至关重要。不仅内核本身以
root
权限运行,而且内核还是在系统启动时授予root
权限的第一个权威对象。有关在引导加载程序中设置口令的详细信息,请参见第 18.2.6 节 “设置引导口令”。
启用硬盘加密。有关更多信息,请参见第 12 章 “加密分区和文件”。
使用
cryptctl
加密托管的存储。有关更多信息,请参见第 13 章 “使用 cryptctl 对托管应用程序的存储区加密”。使用 AIDE 检测系统配置中发生的任何更改。有关更多信息,请参见第 20 章 “使用 AIDE 进行入侵检测”。
1.5 文件访问 #
由于 Linux 采用一切设置都在文件中指定的方法,文件权限对于控制对大多数资源的访问权限至关重要。这意味着,您可以使用文件权限来定义对普通文件、目录和硬件设备的访问权限。默认情况下,大多数硬件设备只能由 root
访问。但是,某些设备(例如串行端口)可供普通用户访问。
一般来说,执行某项任务时应始终尽量使用限制性最强的特权。例如,以 root
权限读写电子邮件是完全没有必要的。如果邮件程序存在 bug,攻击者可能会利用此 bug 在攻击时使用该程序所具有的权限发起攻击。如若遵守上述规则,则可以尽量减少可能的损失。
有关细节,请参见第 19.1 节 “传统文件权限”和第 19.2 节 “ACL 的优势”。
AppArmor 和 SELinux 允许您为应用程序和用户设置约束。有关细节,请参见第 V 部分 “通过 AppArmor 限制特权”和第 VI 部分 “SELinux”。
如果存在能够从所安装操作系统的外部访问硬盘的可能性(例如,通过引导在线系统或拆除硬件),请将数据加密。SUSE Linux Enterprise Server 允许您加密包含数据和操作系统的分区。有关详细信息,请参见第 12 章 “加密分区和文件”。
1.6 网络 #
保护网络服务是个至关重要的任务。应当力求保护尽可能多的 OSI 模型层。
在传输层或应用层上,应使用最新的加密算法对所有通讯进行身份验证和加密。使用虚拟专用网 (VPN) 作为物理网络上的附加安全层。
SUSE Linux Enterprise Server 提供了许多选项用于保护网络:
使用
openssl
可以创建 X509 证书。这些证书可用于对许多服务进行加密和身份验证。您可以设置自己的证书颁发机构 (CA),并在网络中将其用作信任源。有关详细信息,请参见man openssl
。向公共互联网公开最少的网络组成部分。使用防火墙规则关闭端口并卸装(最起码要禁用)不需要的服务,从而减小受攻击面。有关详细信息,请参见第 23 章 “伪装和防火墙”。
使用 OpenVPN 保护通过不安全的物理网络建立的通讯通道。有关详细信息,请参见第 24 章 “配置 VPN 服务器”。
对网络服务使用强身份验证。有关详细信息,请参见第 I 部分 “身份验证”。
1.7 软件漏洞 #
软件漏洞是软件中存在的问题,攻击者可以利用此类问题来获取未经授权的访问权限或滥用系统。如果漏洞影响到了远程服务(例如 HTTP 服务),则会造成特别严重的问题。计算机系统非常复杂,因此它们总是存在某些漏洞。
当此类问题变成已知问题时,软件开发人员必须在软件中予以修复。然后,系统管理员必须及时在受影响的系统上以安全的方式安装推出的更新。
漏洞在中心数据库(例如,由美国政府维护的国家漏洞数据库)中公告。您可以订阅这些信息源,及时了解最新发现的漏洞。在某些情况下,可以在软件更新推出之前对 bug 造成的问题加以缓解。漏洞会被分配一个公共漏洞和暴露 (CVE) 编号和一个公共漏洞评分系统 (CVSS) 分数。该分数有助于识别漏洞的严重性。
SUSE 会提供安全建议源。可通过 https://www.suse.com/en-us/support/update/ 获得。https://www.suse.com/support/security/ 上还按 CVE 编号列出了安全更新。
SUSE 采用在较旧稳定软件版本中应用重要源代码修复的做法(向后移植)。因此,即使 SUSE Linux Enterprise Server 中某个软件的版本号低于上游项目中的最新版本号,SUSE Linux Enterprise Server 中的软件版本也已包含最新的漏洞修复。
有关详细信息,请参见第 7 章 “源代码向后移植”。
管理员应该为系统中的严重漏洞做好应对准备。这包括尽最大努力强化所有计算机。另外,我们建议制定好预定义的程序,以快速安装用于解决严重漏洞的更新。
为了减轻可能的攻击所造成的损害,请使用限制性文件权限。请参见第 19.1 节 “传统文件权限”。
其他有用链接:
http://lists.opensuse.org/opensuse-security-announce/,包含 openSUSE 安全公告的邮件列表
https://nvd.nist.gov/,国家漏洞数据库
https://cve.mitre.org/,MITRE 的 CVE 数据库
https://www.bsi.bund.de/SiteGlobals/Forms/Suche/BSI/Sicherheitswarnungen/Sicherheitswarnungen_Formular.html,德国联邦信息安全局漏洞信息源
https://www.first.org/cvss/,有关公共漏洞评分系统的信息
1.8 恶意软件 #
恶意软件是旨在扰乱计算机正常运行或窃取数据的软件,包括病毒、蠕虫、勒索软件或 Rootkit。恶意软件有时会利用软件漏洞来攻击计算机。不过,它们往往是用户意外执行的,尤其是从未知来源安装第三方软件时。SUSE Linux Enterprise Server 在其下载储存库中提供了详细的程序(软件包)列表。这可以减少下载第三方软件的需要。SUSE 提供的所有软件包都已签名。下载后,SUSE Linux Enterprise Server 的软件包管理器会检查软件包的签名,以校验其完整性。
rpm
--checksig
RPM_FILE
命令可显示软件包的校验和及签名是否正确。可以在 SUSE Linux Enterprise Server 的第一张 DVD 以及全球大多数密钥服务器上找到签名密钥。
您可以使用 ClamAV 防病毒软件来检测系统上的恶意软件。ClamAV 可以集成到多个服务中,例如邮件服务器和 HTTP 代理。这样就可以在用户启动恶意软件之前将其过滤掉。
限制性用户特权可以减少意外执行代码的风险。
1.9 重要安全提示 #
以下提示简要概括了上述章节的内容:
及时了解最新的安全问题。尽快获取并安装安全公告中建议的已更新软件包。
尽可能避免使用
root
特权。设置限制性文件权限。仅使用加密的协议进行网络通讯。
禁用您绝对不需要的所有网络服务。
展开定期安全审计。例如,扫描网络中的开放端口。
使用
AIDE
(高级入侵检测环境)监控系统上文件的完整性。安装任何第三方软件时都要小心谨慎。
定期检查所有备份。
检查日志文件(例如,使用 Logwatch)。
将防火墙配置为阻止所有未明确列入白名单的端口。
采用冗余的安全措施设计。
在可能的情况下使用加密(例如,针对移动计算机的硬盘)。
1.10 报告安全问题 #
如果您发现了安全相关的问题,请先检查是否有可用的更新软件包。如果没有可用的更新,请向 <security@suse.de> 发送电子邮件。请提供问题的详细说明以及相关的软件包版本号。我们建议使用 GPG 加密电子邮件。
https://www.suse.com/support/security/contact/ 上提供了最新版本的 SUSE GPG 密钥。