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

SELinux颇具挑战性;当这个安全层阻止您的应用程序或服务时,您的第一个反应往往是将其设成“禁用”或“允许”。在安全至关重要的当下,您无法进行这种更改,否则您的整个系统或网络安全堪忧。您不想那样。

创新互联是一家专注于成都网站建设、成都做网站与策划设计,安宁网站建设哪家好?创新互联做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:安宁等地区。安宁做网站价格咨询:028-86922220

为何不使用可助您一臂之力的工具?这款工具就是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或将其设置为“许可”模式。

分享文章:如何使用semanage和避免禁用SELinux?
文章分享:http://www.shufengxianlan.com/qtweb/news7/133907.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联