已编辑 3 几周前 通过 ExtremeHow 编辑团队
帽子安全SELinux操作系统防火墙配置网络初学者高级用户计算机
翻译更新 3 几周前
安全增强Linux(SELinux)是一种集成到Linux内核中的安全架构,提供了一种灵活的强制访问控制(MAC)机制。作为最受欢迎的Linux发行版之一,Fedora利用SELinux通过控制对程序和文件的访问来增强其安全性。在本详细指南中,我们将探讨如何使用SELinux保护Fedora系统,如何管理其策略,如何处理常见场景,以及如何最大化其安全利益。
SELinux在三种不同模式下运行,每种模式提供不同级别的安全性。让我们来看看它们:
在进行任何更改之前,检查Fedora系统上SELinux的当前状态非常重要。这可以通过在终端中使用以下命令完成:
$ sestatus
此命令将提供有关当前模式、策略版本和SELinux状态的其他详细信息。了解您的系统是处于强制、允许还是禁用模式将有助于您进行下一步操作。
在SELinux模式之间切换很简单,但需要管理(root)权限。要更改模式,请编辑位于/etc/selinux/config
的文件并更新SELINUX=
行到enforcing
、permissive
或disabled
。
# 此文件控制系统上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使用一组策略来定义访问控制。两种主要类型的策略是目标和多级安全(MLS)。Fedora通常使用目标策略,为关键进程提供目标安全性:
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的整体安全性围绕着上下文和标签进行。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权限故障的方法:
/var/log/audit/audit.log
中。您可以使用ausearch
进行分析:$ ausearch -m avc -ts recent
sealert
命令获取详细的诊断信息:$ sudo sealert -a /var/log/audit/audit.log
虽然Fedora的默认策略涵盖了许多场景,但高级用户可以创建自定义SELinux策略以涵盖独特的用例。为此,您将编写策略文件(通常以.te
结尾)并使用checkmodule
和semodule_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
如果文件或目录的上下文不正确,这可能会导致访问问题。您可以使用restorecon
命令还原默认SELinux上下文:
$ sudo restorecon -Rv /path/to/directory
此命令递归地重置与该路径的默认策略相匹配的上下文。
SELinux为任何Fedora系统增加了一个重要的安全层。无论您是保护家庭设置的个人,还是维护整个组织安全的企业管理人员,了解SELinux的功能都至关重要。通过熟悉SELinux模式、策略、布尔值、上下文和策略创建,您可以利用这一强大的安全工具来确保您的Fedora系统在防止攻击和未经授权访问方面保持强大。
如果你发现文章内容有误, 您可以