首页 > 文章列表 > 了解SELinux的三种运行模式

了解SELinux的三种运行模式

理解 SELinux 工作模式
416 2024-02-26

SELinux(Security-Enhanced Linux)是一个在Linux系统中实现强制访问控制(MAC)的安全模块。它通过将标签应用到系统对象(文件、进程等)来强制执行安全策略,以实现更细粒度的访问控制。SELinux有三种工作模式:Enforcing、Permissive和Disabled,本文将对这三种模式进行详细介绍,并提供具体的代码示例。

1. Enforcing模式

Enforcing模式是最安全且推荐使用的模式,它强制执行SELinux策略并对违规行为进行拒绝和记录。在Enforcing模式下,系统会拒绝未经许可的访问,并生成相应的日志记录。为了理解Enforcing模式,我们可以通过以下代码示例来演示如何设置文件的SELinux标签并尝试访问:

# 创建测试文件
touch testfile

# 查看文件的SELinux标签
ls -Z testfile

# 修改文件的SELinux标签为httpd_sys_content_t类型
chcon -t httpd_sys_content_t testfile

# 尝试访问文件
cat testfile

在上面的示例中,我们创建了一个名为testfile的文件,并将其SELinux标签设置为httpd_sys_content_t类型。尝试读取这个文件时,由于该文件的标签与当前进程的埙标签不匹配,会导致访问被拒绝。

2. Permissive模式

Permissive模式允许系统管理员测试SELinux策略而不会实际拦截任何访问请求。在Permissive模式下,SELinux会记录违规访问,但不会对其进行拒绝。这种模式通常用于调试和测试新的SELinux策略。以下是一个示例,演示如何在Permissive模式下查看日志记录:

# 查看当前SELinux模式
sestatus

# 切换SELinux模式为Permissive
setenforce 0

# 尝试访问被禁止的文件
cat /etc/shadow

# 查看SELinux日志记录
cat /var/log/audit/audit.log

在上述示例中,我们将SELinux模式切换为Permissive,并尝试读取/etc/shadow文件,此时日志记录会显示有关被禁止访问的信息,但实际访问仍会被允许。

3. Disabled模式

Disabled模式会完全禁用SELinux,取消任何与SELinux相关的访问控制和保护措施。这是最不推荐的模式,因为系统的安全性将受到影响。在Disabled模式下,系统将不会执行SELinux策略,也不会记录任何违规访问。以下是一个示例,演示如何禁用SELinux:

# 查看当前SELinux模式
sestatus

# 禁用SELinux
setenforce 0

# 查看当前SELinux模式
sestatus

在上面的示例中,我们通过setenforce命令将SELinux禁用,并通过sestatus命令验证了SELinux已处于Disabled模式。

总结:理解SELinux的三种工作模式对于系统安全和访问控制至关重要。Enforcing模式提供最高级别的保护,Permissive模式用于调试和测试,而Disabled模式应该尽量避免使用以确保系统的安全性。通过以上具体的代码示例,希望读者能更加深入地理解SELinux的工作模式及其优劣势。