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