视窗苹果电脑软件设置安全生产力Linux安卓性能配置苹果自定义设备管理iPhone设置 全部

如何使用SELinux保护Fedora

已编辑 3 几周前 通过 ExtremeHow 编辑团队

帽子安全SELinux操作系统防火墙配置网络初学者高级用户计算机

如何使用SELinux保护Fedora

翻译更新 3 几周前

安全增强Linux(SELinux)是一种集成到Linux内核中的安全架构,提供了一种灵活的强制访问控制(MAC)机制。作为最受欢迎的Linux发行版之一,Fedora利用SELinux通过控制对程序和文件的访问来增强其安全性。在本详细指南中,我们将探讨如何使用SELinux保护Fedora系统,如何管理其策略,如何处理常见场景,以及如何最大化其安全利益。

理解SELinux模式

SELinux在三种不同模式下运行,每种模式提供不同级别的安全性。让我们来看看它们:

检查SELinux状态

在进行任何更改之前,检查Fedora系统上SELinux的当前状态非常重要。这可以通过在终端中使用以下命令完成:

$ sestatus

此命令将提供有关当前模式、策略版本和SELinux状态的其他详细信息。了解您的系统是处于强制、允许还是禁用模式将有助于您进行下一步操作。

切换SELinux模式

在SELinux模式之间切换很简单,但需要管理(root)权限。要更改模式,请编辑位于/etc/selinux/config的文件并更新SELINUX=行到enforcingpermissivedisabled

# 此文件控制系统上SELinux的状态。
# SELINUX= 可以接收以下三个值之一:
#     enforcing - 强制执行SELinux安全策略。
#     permissive - SELinux打印警告而不是强制执行。
#     disabled - SELinux完全禁用。
SELINUX=enforcing
# SELINUXTYPE= 可以接收以下两个值之一:
#     targeted - 目标进程受到保护,
#     minimum - 修改目标策略。
#     MLS - 多级安全保护。
SELINUXTYPE=targeted

做出更改后,请重启系统以应用更改。您还可以使用setenforce命令在不重启的情况下临时切换强制和宽容模式:

# 将SELinux设置为强制模式
$ sudo setenforce 1
# 将SELinux设置为宽容模式
$ sudo setenforce 0

SELinux策略类型

SELinux使用一组策略来定义访问控制。两种主要类型的策略是目标和多级安全(MLS)。Fedora通常使用目标策略,为关键进程提供目标安全性:

管理SELinux布尔值

SELinux布尔值是启用或禁用特定SELinux策略规则的开关,而不修改策略本身。这允许通过临时调整实现更大的灵活性。要列出所有可用的布尔值,请使用以下命令:

$ semanage boolean -l

每个布尔值都有描述、当前值和默认值。要更改布尔值,请使用setsebool命令:

# 启用布尔值
$ sudo setsebool httpd_enable_homedirs on
# 禁用布尔值
$ sudo setsebool httpd_enable_homedirs off

为了确保更改在重启后保留,请添加-P选项:

$ sudo setsebool -P httpd_enable_homedirs on

SELinux中的上下文和标签

SELinux的整体安全性围绕着上下文和标签进行。Fedora中的文件、目录和进程都具有由用户、角色、类型和级别组成的唯一上下文。了解上下文并适当地标记它们对于维护SELinux安全性至关重要。您可以使用ls -Z命令查看文件的上下文:

$ ls -Z /var/www/html

如果您需要更改某个文件的引用,您可以使用chcon命令:

$ sudo chcon -t httpd_sys_content_t /var/www/html/index.html

需要注意的是,通过chcon手动更改的上下文可以在重新标记操作时被还原。要进行永久更改,您将使用策略和semanage fcontext命令。

SELinux故障排除

使用SELinux有时会导致权限错误。这通常表示策略规则被正确应用,但如果出乎意料,会干扰工作流程。以下是您可以排除SELinux权限故障的方法:

  1. 检查日志:SELinux将大多数访问拒绝记录到/var/log/audit/audit.log中。您可以使用ausearch进行分析:
  2. $ ausearch -m avc -ts recent
  3. 生成报告:使用SELinux故障排除程序中的sealert命令获取详细的诊断信息:
  4. $ sudo sealert -a /var/log/audit/audit.log
  5. 调整强制模式:为了检查应用程序是否因为SELinux而出现问题,临时切换到宽容模式并监控系统日志。

创建自定义SELinux策略

虽然Fedora的默认策略涵盖了许多场景,但高级用户可以创建自定义SELinux策略以涵盖独特的用例。为此,您将编写策略文件(通常以.te结尾)并使用checkmodulesemodule_package工具进行编译:

# 在.te文件中编写您的政策
module mycustom 1.0;
require {
    type user_home_t;
    type httpd_t;
    class file { read write };
}
# 允许httpd进程读取和写入用户主目录文件
allow httpd_t user_home_t:file { read write };

接下来,编译并安装您的自定义模块:

$ checkmodule -M -m -o mycustom.mod mycustom.te
$ semodule_package -o mycustom.pp -m mycustom.mod
$ semodule -i mycustom.pp

还原默认SELinux上下文

如果文件或目录的上下文不正确,这可能会导致访问问题。您可以使用restorecon命令还原默认SELinux上下文:

$ sudo restorecon -Rv /path/to/directory

此命令递归地重置与该路径的默认策略相匹配的上下文。

结论

SELinux为任何Fedora系统增加了一个重要的安全层。无论您是保护家庭设置的个人,还是维护整个组织安全的企业管理人员,了解SELinux的功能都至关重要。通过熟悉SELinux模式、策略、布尔值、上下文和策略创建,您可以利用这一强大的安全工具来确保您的Fedora系统在防止攻击和未经授权访问方面保持强大。

如果你发现文章内容有误, 您可以


评论