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

译文
开发 开发工具
本文介绍的三个semanage命令有助于大大简化SELinux的处理。

[[390322]]

【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】

责任编辑:华轩 来源: 51CTO
相关推荐

2020-07-04 11:08:34

SELinuxLinux操作系统

2019-07-26 10:35:52

Linux禁用SELinux

2011-05-31 14:22:23

2018-11-19 09:50:51

Linux命令操作系统

2011-11-25 10:20:14

虚拟化桌面虚拟化VDI

2019-05-13 10:23:28

Linux网卡命令

2012-09-05 11:09:15

SELinux操作系统

2019-09-24 08:56:00

内存Redis使用

2013-10-09 13:43:09

2017-08-18 09:05:50

2013-05-06 16:36:55

SELinuxSELinux故障

2012-04-13 16:26:49

虚拟化云计算云停滞

2018-04-26 11:00:17

数据移动数据中心云端

2010-09-07 14:27:04

Cookie

2023-11-01 13:32:42

Go代码

2010-04-01 15:16:45

CentOS系统

2021-01-29 08:00:00

服务器安全SELinux

2014-10-15 10:01:12

2022-04-08 08:00:00

NFT数字资产骗局

2009-05-13 11:13:07

MySQL定位性能故障
点赞
收藏

51CTO技术栈公众号