IDC

如何使用semanage和避免禁用SELinux?

作者:admin 2021-04-11 我要评论

【51CTO.com快译】 SELinux颇具挑战性;当这个安全层阻止您的应用程序或服务时,您的第一个反应往往是将其设成禁用或允许。在安全至关重要的当下,您无法进行这种...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

【51CTO.com快译】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 
  2.  
  3. /etc/ssh/ssh_host.*_key regular file system_u:object_r:sshd_key_t:s0 
  4.  
  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/*.*' 
  2.  
  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 
  2.  
  3. sudo firewall-cmd --reload 

至此,您终于可以使用非标准端口,通过SSH访问支持SELinux的服务器。

想列出所有可用的端口策略,请执行以下命令:

  1. sudo semanage port –l 

结论

SELinux是一种功能很强大的工具,擅长保护Linux服务器免受不必要的更改。这种功能带来了一定程度的复杂性。熟悉上述三个命令,可使管理工作变得更轻松,而不是禁用SELinux或将其设置为“许可”模式。

原文标题:How to use semanage and avoid disabling SELinux,作者:Jack Wallen

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】


本文转载自网络,原文链接:https://www.51cto.com/

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 如何使用semanage和避免禁用SELinux?

    如何使用semanage和避免禁用SELinux?

  • 前端 | Vue 3生命周期完整指南

    前端 | Vue 3生命周期完整指南

  • 测试同学上手Spring 之AOP最易懂的解析

    测试同学上手Spring 之AOP最易懂的解析

  • 七大自动化持续代码审查工具

    七大自动化持续代码审查工具

腾讯云代理商
海外云服务器