关闭selinux面具模块_关闭selinux_关闭selinux命令

本文首发:看雪论坛

SELinux-hardened 系统通常运行在 Enforcing 模式下,即意味着安全策略决定你是否可以执行你想执行的动作。但是,当你尝试调试 Permissive 的问题时,你需要临时性的关闭 SELinux,你可以选择使 SELinux 运行在 Permissive 模式下,或者整个系统关闭 SELinux,或者对某一类型使用 Permissive 模式。

❤ Permissive 和 Enforcing 之间切换

支持Permissive策略的目的是为了即使在SELinux系统运行下,那些应用程序依然有权限执行它们想执行的那些动作。在SELinux的Permissive模式下运行的程序不会被SELinux的安全策略保护,而该模式真正的目的是要记录若程序运行在 Enforcing 模式下,它的哪些行为会被拒绝,以便管理员有一个整体的感知。

如果 Kernel 启动的时候支持 SELinux 开发者模式(CONFIG_SECURITY_SELINUX_DEVELOP=y),则支持在 Enforcing 和 Permissive 模式之间切换。否则,内核默认会以 Enforcing 模式启动,而且不允许切换,这样的 Kernel 被认为是最安全的(即使一个黑客已经获得管理员权限,并且成功的执行了关闭 SELinux 的指令,SELinux 也不会被关闭)。大部分的发布版本都拥有开发者模式。之后,一旦你拥有管理员权限,你可以 rebuild 策略,随心所欲的添加到 privileges 中。处于开发者模式下的Kernel还可以再加固,有一个 boolean 选项secure_mode_policyload来禁止切换到 Permissive 模式下,直到你重启系统。

使用命令getenforce或者sestatus,来查看当前的状态信息。

关闭selinux命令_关闭selinux面具模块_关闭selinux

使用 setenforce 命令

Enforcing和 Permissive 之间的切换使用setenforce命令。该命令支持 4 个参数:Enforcing,Permissive, 1, 0。

该命令可以临时调整模式。比如,你系统是以 Permissive 模式启动的,你在启动后想调整到 Enforcing 模式,你可以执行setenforce 1来启用 Enforcing 模式。

SELinux 配置文件

当系统启动时从配置文件/etc/selinux/config读取参数SELinux的默认值。

关闭selinux面具模块_关闭selinux命令_关闭selinux

上图中,系统默认启动 Enforcing 模式。

使用 enforcing 内核启动选项

另一个决定哪种模式启动的方法是使用enforcing启动参数。该参数会覆盖配置文件中的设置,所以即使设置了SELinux=Enforcing,然而你启动参数enforcing=0,则系统依然会以 Permissive 模式启动。

关闭selinux_关闭selinux面具模块_关闭selinux命令

应用程序行为上的不同

当我们观察运行在 Permissive 模式下的程序,SELinux 策略似乎没有起作用,其实不完全是,还是有一点作用的。有一种程序可以称为 SELinux-aware 的应用程序,这种程序知道当前系统的 SELinux 处于哪种模式下,而且在 Permissive 和 Enforcing 两种模式下,程序的行为是不同的。大部分的应用程序在 Permissvie 和 Enforcing 模式下的行为没有什么不同。SELinux-aware 的应用程序通常链接着 libselinux.so 库,可以使用 scanelf 工具查看。

该例子程序在 Permissive 模式下运行会发生错误ENTRYPOINT FAILED

❤标记一类型为 Permissive

之前介绍的都是整体上的切换,系统要么运行在 Enforcing 下,要么运行在 Permissive 下。

幸运地是,SELinux 有一个巧妙的特性,你可以指定一个特定的 domain 运行 Permissive,而其他的仍然运行 Enforcing 模式。你所做的只是告诉 semanage 哪个 domain 你想让它处于 Permissive 模式下。

可以使用semanage permissive ‐l查看当前 Permissive 模式下的 domain。

❤完全关闭 SELinux

如果你需要完全关闭 SELinux,有两个选择:更新配置文件,使用启动参数。然而,在执行之前,你需要了解关闭后的结果:关闭 SELinux 同时关闭了 context 的产生。意味着,每一个文件的创建和修改(使用替换文件方式的修改,像 vim 之类的)都不会使用 SELinux context 了。如果你之后又以 SELinux 开启的方式启动了,SELinux 将拒绝加载/读取这些文件(它们会被赋予 default_t context (没有扩展属性),只有默认的行为(不是所有的 domain 可以读取和使用))。

因此,当你以 SELinux 关闭的方式启动系统后,你再以 SELinux 开启的方式启动,你需要做整个文件系统的 relabel 操作,而且需要在 Permissive 模式下操作。这之后,你才能再以 Enforcing 模式启动。

通过启动参数禁用 SELinux

如果CONFIG_SELINUX_BOOTPARAM参数启用,你可以使用selinux=0来禁用SELinux

关闭selinux_关闭selinux面具模块_关闭selinux命令

通过配置文件来禁用 SELinux

编辑配置文件/etc/selinux/config,设置SELinux=disabled

❤你需要明确的几点

原文链接:

本文由 看雪翻译小组 ghostway 编译

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,永久会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: yjxmw518