SELinux:宽容模式VS强制模式(selinux宽容模式有啥用)
nanshan 2024-10-15 11:28 30 浏览 0 评论
本文首发:看雪论坛 http://bbs.pediy.com/thread-215552.htm
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,来查看当前的状态信息。
使用 setenforce 命令
Enforcing和 Permissive 之间的切换使用setenforce命令。该命令支持 4 个参数:Enforcing,Permissive, 1, 0。
该命令可以临时调整模式。比如,你系统是以 Permissive 模式启动的,你在启动后想调整到 Enforcing 模式,你可以执行setenforce 1来启用 Enforcing 模式。
SELinux 配置文件
当系统启动时从配置文件/etc/selinux/config读取参数SELinux的默认值。
上图中,系统默认启动 Enforcing 模式。
使用 enforcing 内核启动选项
另一个决定哪种模式启动的方法是使用enforcing启动参数。该参数会覆盖配置文件中的设置,所以即使设置了SELinux=Enforcing,然而你启动参数enforcing=0,则系统依然会以 Permissive 模式启动。
应用程序行为上的不同
当我们观察运行在 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
编辑配置文件/etc/selinux/config,设置SELinux=disabled
?你需要明确的几点
SELinux 有两种模式:Permissive 和 Enforcing。
在 Permissive 模式下,SELinux 不会强制执行它的策略,但是会记录它应该block(或者 grant)的动作的行为。
SELinux-aware 的应用程序,在 Permissive 模式下和 SELinux 完全关闭的情况下,可能有不同的行为。
特定的类型可以指定为 Perssive 模式,而系统中其他的仍以 Enforcing 模式运行。
完全关闭的 SELinux 会导致文件 context 的不同,所以之后恢复时,需要整个文件系统 relabel。
原文链接:https://wiki.gentoo.org/wiki/SELinux/Tutorials/Permissive_versus_enforcing
本文由 看雪翻译小组 ghostway 编译
声明:转载请保留文章的完整性,注明作者、译者及出处, 并附上原文链接。
相关推荐
- 服务器数据恢复—Raid5数据灾难不用愁,Raid5数据恢复原理了解下
-
Raid5数据恢复算法原理:分布式奇偶校验的独立磁盘结构(被称之为raid5)的数据恢复有一个“奇偶校验”的概念。可以简单的理解为二进制运算中的“异或运算”,通常使用的标识是xor。运算规则:若二者值...
- 服务器数据恢复—多次异常断电导致服务器raid不可用的数据恢复
-
服务器数据恢复环境&故障:由于机房多次断电导致一台服务器中raid阵列信息丢失。该阵列中存放的是文档,上层安装的是Windowsserver操作系统,没有配置ups。因为服务器异常断电重启后,rai...
- 服务器数据恢复-V7000存储更换磁盘数据同步失败的数据恢复案例
-
服务器数据恢复环境:P740+AIX+Sybase+V7000存储,存储阵列柜上共12块SAS机械硬盘(其中一块为热备盘)。服务器故障:存储阵列柜中有磁盘出现故障,工作人员发现后更换磁盘,新更换的磁盘...
- 「服务器数据恢复」重装系统导致XFS文件系统分区丢失的数据恢复
-
服务器数据恢复环境:DellPowerVault系列磁盘柜;用RAID卡创建的一组RAID5;分配一个LUN。服务器故障:在Linux系统层面对LUN进行分区,划分sdc1和sdc2两个分区。将sd...
- 服务器数据恢复-ESXi虚拟机被误删的数据恢复案例
-
服务器数据恢复环境:一台服务器安装的ESXi虚拟化系统,该虚拟化系统连接了多个LUN,其中一个LUN上运行了数台虚拟机,虚拟机安装WindowsServer操作系统。服务器故障&分析:管理员因误操作...
- 「服务器数据恢复」Raid5阵列两块硬盘亮黄灯掉线的数据恢复案例
-
服务器数据恢复环境:HPStorageWorks某型号存储;虚拟化平台为vmwareexsi;10块磁盘组成raid5(有1块热备盘)。服务器故障:raid5阵列中两块硬盘指示灯变黄掉线,无法读取...
- 服务器数据恢复—基于oracle数据库的SAP数据恢复案例
-
服务器存储数据恢复环境:某品牌服务器存储中有一组由6块SAS硬盘组建的RAID5阵列,其中有1块硬盘作为热备盘使用。上层划分若干lun,存放Oracle数据库数据。服务器存储故障&分析:该RAID5阵...
- 「服务器虚拟化数据恢复」Xen Server环境下数据库数据恢复案例
-
服务器虚拟化数据恢复环境:Dell某型号服务器;数块STAT硬盘通过raid卡组建的RAID10;XenServer服务器虚拟化系统;故障虚拟机操作系统:WindowsServer,部署Web服务...
- 服务器数据恢复—RAID故障导致oracle无法启动的数据恢复案例
-
服务器数据恢复环境:某品牌服务器中有一组由4块SAS磁盘做的RAID5磁盘阵列。该服务器操作系统为windowsserver,运行了一个单节点Oracle,数据存储为文件系统,无归档。该oracle...
- 服务器数据恢复—服务器磁盘阵列常见故障表现&解决方案
-
RAID(磁盘阵列)是一种将多块物理硬盘整合成一个虚拟存储的技术,raid模块相当于一个存储管理的中间层,上层接收并执行操作系统及文件系统的数据读写指令,下层管理数据在各个物理硬盘上的存储及读写。相对...
- 「服务器数据恢复」IBM某型号服务器RAID5磁盘阵列数据恢复案例
-
服务器数据恢复环境:IBM某型号服务器;5块SAS硬盘组成RAID5磁盘阵列;存储划分为1个LUN和3个分区:第一个分区存放windowsserver系统,第二个分区存放SQLServer数据库,...
- 服务器数据恢复—Zfs文件系统下误删除文件如何恢复数据?
-
服务器故障:一台zfs文件系统服务器,管理员误操作删除服务器上的数据。服务器数据恢复过程:1、将故障服务器所有磁盘编号后取出,硬件工程师检测所有硬盘后没有发现有磁盘存在硬件故障。以只读方式将全部磁盘做...
- 服务器数据恢复—Linux+raid5服务器数据恢复案例
-
服务器数据恢复环境:某品牌linux操作系统服务器,服务器中有4块SAS接口硬盘组建一组raid5阵列。服务器中存放的数据有数据库、办公文档、代码文件等。服务器故障&检测:服务器在运行过程中突然瘫痪,...
- 服务器数据恢复—Sql Server数据库数据恢复案例
-
服务器数据恢复环境:一台安装windowsserver操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。在windows服务器内装有SqlServer数据库。存储空间LU...
- 服务器数据恢复—阿里云ECS网站服务器数据恢复案例
-
云服务器数据恢复环境:阿里云ECS网站服务器,linux操作系统+mysql数据库。云服务器故障:在执行数据库版本更新测试时,在生产库误执行了本来应该在测试库执行的sql脚本,导致生产库部分表被tru...
你 发表评论:
欢迎- 一周热门
-
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
WindowsServer2022|配置NTP服务器的命令
-
Ubuntu系统Daphne + Nginx + supervisor部署Django项目
-
WIN11 安装配置 linux 子系统 Ubuntu 图形界面 桌面系统
-
解决Linux终端中“-bash: nano: command not found”问题
-
NBA 2K25虚拟内存不足/爆内存/内存占用100% 一文速解
-
Linux 中的文件描述符是什么?(linux 打开文件表 文件描述符)
-
K3s禁用Service Load Balancer,解决获取浏览器IP不正确问题
-
- 最近发表
-
- 服务器数据恢复—Raid5数据灾难不用愁,Raid5数据恢复原理了解下
- 服务器数据恢复—多次异常断电导致服务器raid不可用的数据恢复
- 服务器数据恢复-V7000存储更换磁盘数据同步失败的数据恢复案例
- 「服务器数据恢复」重装系统导致XFS文件系统分区丢失的数据恢复
- 服务器数据恢复-ESXi虚拟机被误删的数据恢复案例
- 「服务器数据恢复」Raid5阵列两块硬盘亮黄灯掉线的数据恢复案例
- 服务器数据恢复—基于oracle数据库的SAP数据恢复案例
- 「服务器虚拟化数据恢复」Xen Server环境下数据库数据恢复案例
- 服务器数据恢复—RAID故障导致oracle无法启动的数据恢复案例
- 服务器数据恢复—服务器磁盘阵列常见故障表现&解决方案
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)