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或将其设置为“许可”模式。