15.6. 管理子系统的 SELinux 策略
SELinux 是强制访问控制规则的集合,用于限制未经授权的访问和篡改。有关 SELinux 的详情,请参考 Red Hat Enterprise Linux 8 使用 SELinux 指南。
15.6.1. About SELinux
基本上,SELinux 识别系统中的 对象,可以是文件、目录、用户、进程、套接字或其他 Linux 主机上的任何其他操作。这些对象对应于 Linux API 对象。然后,每个对象 都会映射到安全上下文,它定义了其对象类型以及如何在 Linux 服务器上正常工作。
系统进程在 SELinux 域中运行。每个域都有一组规则,用于定义 SELinux 域如何与系统上的其他 SELinux 对象交互。然后,这组规则决定了进程可以访问哪些资源以及如何对这些资源执行的操作。
对于证书系统,每个子系统类型都在该子系统类型的特定域中运行。该子系统类型的每个实例都属于同一 SELinux 域,无论服务器上安装了三个 CA,无论系统上有多少实例都属于 http_port_t
SELinux 域。
所有子系统的规则和定义都包含整个证书系统 SELinux 策略。安装子系统时,证书系统 SELinux 策略已配置,每次使用 pkispawn
添加或使用 pkidestroy
删除子系统时,都会更新所有 SELinux 策略。
证书系统子系统以 enforcing 模式设置 SELinux,这意味着即使需要遵循所有 SELinux 规则,也可以成功执行证书系统操作。
默认情况下,证书系统子系统受 SELinux 策略限制运行。
15.6.2. 查看子系统的 SELinux 策略
所有证书系统策略都是系统 SELinux 策略的一部分。可以使用 SELinux 管理 GUI 查看配置的策略,您可以通过安装 policycoreutils-gui 软件包来获取。
运行
system-config-selinux
命令,或通过访问主 的应用程序来打开实用程序。要检查已安装证书系统 SELinux 策略的版本,请单击左侧栏中的 Policy Module 部分。
要查看单个文件和进程上设置的策略,请点击 File Labeling 部分。若要查看子系统的端口分配的策略,请单击 Network Port 部分。
15.6.3. 重新标记 nCipher netHSM 上下文
nCipher netHSM 软件没有自己的 SELinux 策略,因此证书系统包含一个默认的 netHSM 策略,如下例所示。
例 15.1. netHSM SELinux policy
default labeling for nCipher
# default labeling for nCipher
/opt/nfast/scripts/init.d/(.) gen_context(system_u:object_r:initrc_exec_t,s0) /opt/nfast/sbin/init.d-ncipher gen_context(system_u:object_r:initrc_exec_t,s0) /opt/nfast(/.)? gen_context(system_u:object_r:pki_common_t, s0)
/dev/nfast(/.*)? gen_context(system_u:object_r:pki_common_dev_t,0)
其他规则允许 pki swig_t
域与标记为 pki_common_t
和 pki_common_dev_t
的文件进行通信。
如果更改了任何 nCipher 配置(即使它位于默认目录 /opt/nfast
中),请运行 restorecon
以确保所有文件都被正确标记:
restorecon -R /dev/nfast restorecon -R /opt/nfast
restorecon -R /dev/nfast
restorecon -R /opt/nfast
如果在不同的位置安装 nCipher 软件,或者使用了不同的 HSM,则需要使用 semanage
重新标记默认的证书系统 HSM 策略。