SELinux可能具有挑战性;当此安全层阻止您的应用程序或服务时,您的第一反应通常是将其设置为“禁用”或“允许”。在当今安全至上的世界中,您无法在不将整个系统或网络置于风险之中的情况下进行此类更改。你不想要那个。为什么不使用可以帮助您的工具呢?该工具是semanage,它是SELinux策略管理工具。使用semanage,您可以调整文件上下文、端口上下文和布尔值,这将帮助您在不禁用安全系统的情况下保持系统可用。本文将介绍以下命令:semanagebooleansemanagefcontextsemanageport一旦你了解了这些命令,你应该能够更好地在你的Linux系统上使用SELinux。你需要什么?作为具有sudo权限的用户运行的Linux实例(使用SELinux)如何使用semanage布尔值?使用semanage布尔值,您可以启用和禁用允许规则集,从而为不同的用例允许不同的规则集。假设您有一个Web服务器,它必须允许读取用户内容,例如来自主目录的数据。SELinux默认不允许这样做。使用semanage布尔命令,您可以启用该功能。您可以使用semanageboolean命令通过以下命令列出所有可用的HTTP相关策略:1.sudosemanageboolean-l|grephttpd您将看到几个条目,例如:1.httpd_read_user_content(off,off)允许httpd读取用户内容每个列表包含布尔值的名称、布尔值的当前和持久状态以及布尔值的描述。如上所示,httpd_read_user_content布尔值设置为关闭。我们如何启用它?很简单:1.sudosemanageboolean-m--onhttpd_read_user_content通过-m选项,我们指示SELinux使用以下选项(--on)来修改记录(在本例中为httpd_read_user_context)。就是这样。一切就绪,SELinux将允许Web服务器读取用户内容。要查看如果您想列出所有布尔值还可以做什么,请执行以下命令:1.sudosemanageboolean-l如何使用semanagefcontext?semanagefcontext命令用于管理文件上下文定义,其中包含附加信息(例如SELinux用户、角色、类型和级别)以做出访问控制决策。文件上下文是管理员在使用SELinux时面临的最大问题之一。您可能已经创建了一个新目录来存放您的SSH主机密钥,但SELinux将不允许SSH在没有正确文件上下文的情况下访问该目录。你能做什么?您可以使用semanagefcontext更改新目录的文件上下文。和boolean一样,fcontext也有可以使用的策略。要查看可用策略的完整列表,请执行以下命令:1.sudosemanagefcontext-l要列出与SSH守护进程相关的所有策略,请执行以下命令:1.sudosemanagefcontext-l|grepsshd在列表中,您将看到以下条目:1./etc/ssh/primes常规文件system_u:object_r:sshd_key_t:s03./etc/ssh/ssh_host.*_key常规文件system_u:object_r:sshd_key_t:s05./etc/ssh/ssh_host.*_key.pub常规文件system_u:object_r:sshd_key_t:s0假设您想将SSH主机密钥放在/data/keys中。创建目录,将所有密钥移动到新的主目录中,并更改sshd_config文件以匹配新的映射。尝试使用SSH时失败。为什么?因为/data/keys没有正确的fcontext。这可以通过以下两个命令解决:1.sudosemanagefcontext-a-tsshd_key_t'/data/keys/*.*'3.sudorestorecon-r/data/keys在我们使用semanagefcontxt创建新策略后,我们必须使用restorecon命令为新文件设置安全上下文。正则表达式。获取目录中的所有文件。如何使用管理端口?正如您可能猜到的那样,semanage端口允许您在自定义端口上运行服务。如果您尝试在自定义端口上运行服务,该服务将失败。假设您想在非标准端口上运行SSH守护进程。如果您为此配置sshd_config,您会发现SELinux会阻止您获得访问权限,因为SELinux不知道您已经进行了此更改。如果要将SSH端口更改为2112:1.semanageport-a-tssh_port_t-ptcp2112然后使用以下命令将端口添加到防火墙:1.sudofirewall-cmd--add-port=2112/tcp----permanent3.sudofirewall-cmd--reload至此,你终于可以使用非标准端口通过SSH访问启用SELinux的服务器了。要列出所有可用的端口策略,请执行以下命令:1.sudosemanageport–l结论SELinux是一个强大的工具,擅长保护Linux服务器免受不必要的更改。此功能引入了一定程度的复杂性。熟悉以上三个命令可以使管理比禁用SELinux或将其设置为“宽容”模式更容易。
