共计 2314 个字符,预计需要花费 6 分钟才能阅读完成。
SELinux 颇具挑战性; 当这个平安层阻止您的应用程序或服务时,您的第一个反馈往往是将其设成“禁用”或“容许”。在平安至关重要的当下,您无奈进行这种更改,否则您的整个零碎或网络安全堪忧。您不想那样。
为何不应用可助您一臂之力的工具? 这款工具就是 semanage,它是 SELinux 策略管理工具。借助 semanage,您能够调整文件上下文、端口上下文和布尔值,这将有助于您确保零碎可应用,又不用禁用平安零碎。
本文将介绍以下命令:
- semanage boolean
- semanage fcontext
- semanage port
晓得这些命令后,您应该可能在 Linux 零碎上更好地应用 SELinux。
您须要什么?
运行中的 Linux 实例(应用 SELinux)
领有 sudo 特权的用户
如何应用 semanage boolean?
应用 semanage boolean,您能够启用和禁用容许规定集,因此能够为不同的用例容许不同的规定集。假如您有一台 Web 服务器,必须容许读取用户内容,比方来自主目录的数据。SELinux 默认状况下不容许这么做。应用 semanage boolean 命令,您能够启用该性能。
您能够应用 semanage boolean 命令,通过以下命令列出所有可用的 HTTP 相干策略:
1. sudo semanage boolean -l | grep httpd
您将看到几项条目,比方:
1. httpd_read_user_content (off , off) Allow httpd to read user content
每份列表含有布尔值的名称、布尔值的以后和长久状态以及布尔值形容。如上所示,httpd_read_user_content 布尔值设为 off。咱们如何启用它? 很简略:
1. sudo semanage boolean -m --on httpd_read_user_content
应用 - m 选项,咱们批示 SELinux 应用前面的选项 (–on) 来批改记录(本例中是 httpd_read_user_context)。
就是这样。您已实现了设置,SELinux 将容许 Web 服务器读取用户内容。
如果想要列出所有布尔值,看看您还能够做些什么,执行以下命令:
1. sudo semanage boolean -l
如何应用 semanage fcontext?
semanage fcontext 命令用于管理文件上下文定义,这蕴含额定信息(比方 SELinux 用户、角色、类型和级别),以做出访问控制决策。文件上下文是管理员在 SELinux 上面临的最大问题之一。您可能曾经创立了一个新目录来包容 SSH 主机密钥,然而如果没有正确的文件上下文,SELinux 不会容许通过 SSH 拜访该目录。
您能够执行什么操作?
能够应用 semanage fcontext 更改新目录的文件上下文。
与 boolean 一样,fcontext 也有能够应用的策略。想查看可用策略的残缺列表,请执行以下命令:
1. sudo semanage fcontext -l
如果想列出所有与 SSH 守护程序无关的策略,请执行以下命令:
1. sudo semanage fcontext -l | grep sshd
在该列表中,您将看到以下条目:
1. /etc/ssh/primes regular file system_u:object_r:sshd_key_t:s0
3. /etc/ssh/ssh_host.*_key regular file system_u:object_r:sshd_key_t:s0
5. /etc/ssh/ssh_host.*_key.pub regular file system_u:object_r:sshd_key_t:s0
假如您要将 SSH 主机密钥放在 /data/keys 中。创立目录,将所有键挪动到新主目录中,并更改 sshd_config 文件以匹配新映射。尝试应用 SSH 时,它会失败。为什么? 因为 /data/keys 没有正确的 fcontext。能够应用以下两个命令解决该问题:
1. sudo semanage fcontext -a -t sshd_key_t '/data/keys/*.*'
3. sudo restorecon -r /data/keys
咱们应用 semanage fcontxt 创立新策略之后,必须应用 restorecon 命令对新文件设置平安上下文。正则表达式 . 获取目录中的所有文件。
如何应用 semanage port?
您可能猜到了,semanage port 让您能够在自定义端口上运行服务。如果您尝试在自定义端口上运行服务,该服务会失败。假如您想在非标准端口上运行 SSH 守护程序。如果您仅为此配置 sshd_config,会发现 SELinux 将阻止您取得拜访权限,因为 SELinux 不晓得您已进行了此更改。
如果想把 SSH 端口更改为 2112:
1. semanage port -a -t ssh_port_t -p tcp 2112
而后就要应用以下命令将端口增加到防火墙:
1. sudo firewall-cmd --add-port=2112/tcp --permanent
3. sudo firewall-cmd --reload
至此,您终于能够应用非标准端口,通过 SSH 拜访反对 SELinux 的服务器。
想列出所有可用的端口策略,请执行以下命令:
1. sudo semanage port –l
论断
SELinux 是一种性能很弱小的工具,善于爱护 Linux 服务器免受不必要的更改。这种性能带来了肯定水平的复杂性。相熟上述三个命令,可使管理工作变得更轻松,而不是禁用 SELinux 或将其设置为“许可”模式。