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 上找到)
有关如何设置口令策略的细节,请参见第 10.3 节 “。有关 Linux 上的身份验证的一般信息,请参见 ”第 I 部分 “身份验证”。
1.3 系统完整性 #
如果能够以物理方式访问某台计算机,当已获授权的人员引导该计算机时,他们可以操控固件和引导进程来获取访问权限。您的第一项措施应该就是以物理方式锁住服务器机房,尽管并非所有计算机都能锁在不允许进入的机房中。
考虑采取以下附加措施:
通过以下两种方式将系统配置为无法从可移动设备引导:彻底拆除驱动器,或设置 UEFI 口令并将 UEFI 配置为只能从硬盘引导。
为使引导过程具备更高的防篡改能力,请启用 UEFI 安全引导功能。有关安全引导的详细信息,请参见第 13 章 “UEFI(统一可扩展固件接口)”。
Linux 系统由引导加载程序启动,该程序通常允许向引导的内核传递其他选项。可以通过为引导加载程序额外设置一个口令,来防止其他人在引导期间使用此类参数。这对于系统安全至关重要。不仅内核本身以
root
权限运行,而且内核还是在系统启动时授予root
权限的第一个权威对象。有关在引导加载程序中设置口令的详细信息,请参见第 14.2.6 节 “设置引导口令”。
启用硬盘加密。有关更多信息,请参见第 13 章 “对分区和文件进行加密”。
使用
cryptctl
加密托管的储存区。有关更多信息,请参见第 14 章 “使用 cryptctl 对托管应用程序进行储存加密”。使用 AIDE 检测系统配置中发生的任何更改。有关更多信息,请参见第 16 章 “使用 AIDE 进行入侵检测”。
1.4 文件访问 #
由于 Linux 采用一切设置都在文件中指定的方法,文件权限对于控制对大多数资源的访问权限至关重要。这意味着,您可以使用文件权限来定义对普通文件、目录和硬件设备的访问权限。默认情况下,大多数硬件设备只能由 root
访问。但是,某些设备(例如串行端口)可供普通用户访问。
一般来说,执行某项任务时应始终尽量使用限制性最强的特权。例如,以 root
权限读写电子邮件是完全没有必要的。如果邮件程序存在 bug,攻击者可能会利用此 bug 在攻击时使用该程序所具有的权限发起攻击。如若遵守上述规则,则可以尽量减少可能的损失。
有关细节,请参见第 12.1 节 “传统文件权限”和第 12.2 节 “ACL 的优势”。
AppArmor 和 SELinux 允许您为应用程序和用户设置约束。有关细节,请参见第 IV 部分 “通过 AppArmor 限制特权”和第 V 部分 “SELinux 对比”。
如果存在能够从所安装操作系统的外部访问硬盘的可能性(例如,通过引导在线系统或拆除硬件),请将数据加密。SUSE Linux Enterprise Server 允许您加密包含数据和操作系统的分区。有关详细信息,请参见第 13 章 “对分区和文件进行加密”。
1.5 网络 #
保护网络服务是个至关重要的任务。应当力求保护尽可能多的 OSI 模型层。
在传输层或应用层上,应使用最新的加密算法对所有通讯进行身份验证和加密。使用虚拟专用网 (VPN) 作为物理网络上的附加安全层。
SUSE Linux Enterprise Server 提供了许多选项用于保护网络:
使用
openssl
可以创建 X509 证书。这些证书可用于对许多服务进行加密和身份验证。您可以设置自己的证书颁发机构 (CA),并在网络中将其用作信任源。有关细节,请参见man openssl
。通常至少会向公共因特网公开网络的某些部分。使用防火墙规则关闭端口并卸装(最起码要禁用)不需要的服务,以此减小受攻击面。有关详细信息,请参见第 19 章 “伪装和防火墙”。
使用 OpenVPN 保护通过不安全的物理网络建立的通讯通道。有关详细信息,请参见第 20 章 “配置 VPN 服务器”。
对网络服务使用强身份验证。有关详细信息,请参见第 I 部分 “身份验证”。
1.6 软件漏洞 #
软件漏洞是软件中存在的问题,攻击者可以利用此类问题来获取未经授权的访问权限或滥用系统。如果漏洞影响到了远程服务(例如 HTTP 服务),则会造成特别严重的问题。计算机系统非常复杂,因此它们总是存在某些漏洞。
当此类问题变成已知问题时,通常软件开发人员必须在软件中予以修复。然后,系统管理员必须及时在受影响的系统上以安全的方式安装推出的更新。
漏洞通常在中心数据库(例如,由美国政府维护的国家漏洞数据库)中公告。您可以订阅这些信息源,及时了解最新发现的漏洞。在某些情况下,可以在软件更新推出之前对 bug 造成的问题加以缓解。漏洞会分配到一个公共漏洞和暴露 (CVE) 编号和一个公共漏洞评分系统 (CVSS) 分数。该分数有助于识别漏洞的严重性。
SUSE 会提供安全建议源。可通过 https://www.suse.com/en-us/support/update/ 获得。https://www.suse.com/security/cve/ 上还按 CVE 编号列出了安全更新。
SUSE 采用在较旧稳定软件版本中应用重要源代码修复的做法(向后移植)。因此,即使 SUSE Linux Enterprise Server 中某个软件的版本号低于上游项目中的最新版本号,SUSE Linux Enterprise Server 中的软件版本也已包含最新的漏洞修复。
有关更多信息,请参见第 6 章 “向后移植源代码”。
一般情况下,管理员应该为系统中的严重漏洞做好应对准备。这包括尽最大努力强化所有计算机。另外,我们建议制定好预定义的程序,以快速安装用于解决严重漏洞的更新。
为了减轻可能的攻击所造成的损害,请使用限制性文件权限。请参见第 12.1 节 “传统文件权限”。SUSE 提供了有关强化 SUSE Linux Enterprise Server 的指南。有关详细信息,请参见强化指南。
其他有用链接:
http://lists.opensuse.org/opensuse-security-announce/,包含 openSUSE 安全公告的邮件列表
https://nvd.nist.gov/home,国家漏洞数据库
https://cve.mitre.org/,MITRE 的 CVE 数据库
https://www.first.org/cvss/,有关公共漏洞评分系统的信息
1.7 恶意软件 #
恶意软件是旨在扰乱计算机正常运行或窃取数据的软件,包括病毒、蠕虫、勒索软件或 Rootkit。恶意软件有时会利用软件漏洞来攻击计算机。不过,它们往往是用户意外执行的,尤其是从未知来源安装第三方软件时。SUSE Linux Enterprise Server 在其下载储存库中提供了详细的程序(软件包)列表。这可以减少下载第三方软件的需要。SUSE 提供的所有软件包都已签名。下载后,SUSE Linux Enterprise Server 的软件包管理器会检查软件包的签名,以校验其完整性。
rpm
--checksig RPM_FILE
命令可显示软件包的校验和及签名是否正确。可以在 SUSE Linux Enterprise Server 的第一张 DVD 以及全球大多数密钥服务器上找到签名密钥。
您可以使用 ClamAV 防病毒软件来检测系统上的恶意软件。ClamAV 可以集成到多个服务中,例如邮件服务器和 HTTP 代理。这样就可以在用户启动恶意软件之前将其过滤掉。
限制性用户特权可以减少意外执行代码的风险。
1.8 重要安全提示 #
以下提示简要概括了上述章节的内容:
及时了解最新的安全问题。尽快获取并安装安全公告中建议的已更新软件包。
尽可能避免使用
root
特权。设置限制性文件权限。仅使用加密的协议进行网络通讯。
禁用您绝对不需要的所有网络服务。
展开定期安全审计。例如,扫描网络中的开放端口。
使用
AIDE
(高级入侵检测环境)监视系统上文件的完整性。安装任何第三方软件时都要小心谨慎。
定期检查所有备份。
检查日志文件(例如,使用 logwatch)。
将防火墙配置为阻止所有未显式列入白名单的端口。
采用冗余的安全措施设计。
在可能的情况下使用加密(例如,针对移动计算机的硬盘)。
1.9 报告安全问题 #
如果您发现了安全相关的问题,请先检查是否有可用的更新软件包。如果没有可用的更新,请向 <security@suse.de> 发送电子邮件。请提供问题的详细说明以及相关的软件包版本号。我们建议使用 GPG 加密电子邮件。
https://www.suse.com/support/security/contact/ 上提供了最新版本的 SUSE GPG 密钥。