SELinux简介

本文深入探讨了Linux SELinux安全策略的核心概念,包括安全上下文、身份识别、角色、类型及其相互关系。详细介绍了SELinux的启动、关闭与查看方式,包括使用命令行工具如getenforce、sestatus等进行操作。此外,文章还阐述了如何通过更改配置文件、重置安全上下文以及使用辅助服务来管理SELinux策略与规则。最后,提供了SELinux策略与规则管理的方法,如seinfo、sesearch、getsebool等命令的使用,以及如何通过semanage配置默认目录的安全上下文。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看安全上下文

[root@www ~]# ls -Z
drwxr-xr-x  root root root:object_r:user_home_t   Desktop
-rw-r--r--  root root root:object_r:user_home_t   install.log
-rw-r--r--  root root root:object_r:user_home_t   install.log.syslog
# root:object_r:user_home_t,就是安全上下文的内容!

    Identify:role:type
    身份识别:角色:类型
  • 身份识别 (Identify)

    root:表示 root 的帐号身份;
    system_u:表示系统程序方面的识别,通常就是程序;
    user_u:代表的是一般使用者帐号相关的身份。
    
  • 角色 (Role)

    object_r:代表的是文件或目录等文件资源,这应该是最常见的;
    system_r:代表的就是程序啦!不过,一般使用者也会被指定成为 system_r !
    
  • 类型 (Type)

    type:在文件资源 (Object) 上面称为类型 (Type);
    domain:在主体程序 (Subject) 则称为领域 (domain) 
    

对应关系

身份识别        角色          在 targeted 的意义
root        system_r    代表供 root 帐号登陆时所取得的权限
system_u    system_r    由于为系统帐号,因此是非交谈式的系统运行程序
user_u      system_r    一般可登陆使用者的程序

SELinux 的启动、关闭与查看

SELinux 支持三种模式

enforcing:强制模式,代表 SELinux 运行中,且已经正确的开始限制 domain/type 了;
permissive:宽容模式:代表 SELinux 运行中,不过仅会有警告信息并不会实际限制 domain/type 的存取。这种模式可以运来作为 SELinux 的 debug 之用;
disabled:关闭,SELinux 并没有实际运行。

查看

getenforce :查看SELinux状态

[root@www ~]# sestatus [-vb]
选项与参数:
    -v  :检查在 /etc/sestatus.conf 内的文件与程序的安全上下文内容;
    -b  :将目前策略的规则布林值列出,亦即某些规则 (rule) 是否要启动 (0/1)

更改SELinux配置文件

[root@www ~]# vi /etc/selinux/config
SELINUX=enforcing     <==调整 enforcing|disabled|permissive   #开机启动有效
SELINUXTYPE=targeted  <==目前仅有 targeted 与 strict         #开机启动有效

SELinux启动与关闭

[root@www ~]# setenforce [0|1]
选项与参数:
    0 :转成 permissive 宽容模式           #立即生效
    1 :转成 Enforcing 强制模式            #立即生效

ps -Z 这个『 -Z 』的选项可以让我们查阅程序的安全上下文

[root@www ~]# ps aux -Z |grep http
root:system_r:httpd_t root   24089 0.2 1.2 22896 9256 ? Ss 16:06 0:00 /usr/sbin/httpd
root:system_r:httpd_t apache 24092 0.0 0.6 22896 4752 ? S  16:06 0:00 /usr/sbin/httpd
root:system_r:httpd_t apache 24093 0.0 0.6 22896 4752 ? S  16:06 0:00 /usr/sbin/httpd
....(后面省略)....

重置安全上下文

[root@www ~]# chcon [-R] [-t type] [-u user] [-r role] 文件
[root@www ~]# chcon [-R] --reference=范例档 文件
选项与参数:
    -R  :连同该目录下的次目录也同时修改;
    -t  :后面接安全上下文的类型栏位!例如 httpd_sys_content_t ;
    -u  :后面接身份识别,例如 system_u;
    -r  :后面接角色,例如 system_r;
    --reference=范例档:拿某个文件当范例来修改后续接的文件的类型!
chcon 是透过直接指定的方式来处理安全性本文的类型数据。

[root@www ~]# restorecon [-Rv] 文件或目录
选项与参数:
    -R  :连同次目录一起修改;
    -v  :将过程显示到萤幕上

辅助SELinux的服务

setroubleshoot --> 错误信息写入 /var/log/messages
    cat /var/log/messages | grep setroubleshoot
    sealert -l 6c028f77-ddb6-4515-91f4-4e3e719994d4

SELinux 的策略与规则管理

[root@www ~]# seinfo [-Atrub]
选项与参数:
    -A  :列出 SELinux 的状态、守则布林值、身份识别、角色、类别等所有资讯
    -t  :列出 SELinux 的所有类别 (type) 种类
    -r  :列出 SELinux 的所有角色 (role) 种类
    -u  :列出 SELinux 的所有身份识别 (user) 种类
    -b  :列出所有守则的种类 (布林值)

[root@www ~]# sesearch [-a] [-s 主体类别] [-t 目标类别] [-b 布林值]
选项与参数:
    -a  :列出该类别或布林值的所有相关信息
    -t  :后面还要接类别,例如 -t httpd_t
    -b  :后面还要接布林值的规则,例如 -b httpd_enable_ftp_server

布林值的查询与修改

[root@www ~]# getsebool [-a] [布林值条款]
选项与参数:
    -a  :列出目前系统上面的所有布林值条款配置为开启或关闭值

[root@www ~]# setsebool [-P] 布林值=[0|1]
选项与参数:
    -P  :直接将配置值写入配置档,该配置数据未来会生效的!

默认目录的安全上下文查询与修改

[root@www ~]# semanage {login|user|port|interface|fcontext|translation} -l
[root@www ~]# semanage fcontext -{a|d|m} [-frst] file_spec
选项与参数:
    fcontext :主要用在安全性本文方面的用途, -l 为查询的意思;
    -a :添加的意思,你可以添加一些目录的默认安全性本文类型配置;
    -m :修改的意思;
    -d :删除的意思。
范例:利用 semanage 配置 /srv/samba 目录的默认安全性本文为 publiccontentt
[root@www ~]# mkdir /srv/samba
[root@www ~]# ll -Zd /srv/samba
drwxr-xr-x  root root root:object_r:var_t    /srv/samba
# 如上所示,默认的情况应该是 var_t 这个咚咚的!

[root@www ~]# semanage fcontext -l | grep '/srv'
/srv/.*                     all files   system_u:object_r:var_t:s0
/srv/([^/]*/)?ftp(/.*)?     all files   system_u:object_r:public_content_t:s0
/srv/([^/]*/)?www(/.*)?     all files   system_u:object_r:httpd_sys_content_t:s0
/srv/([^/]*/)?rsync(/.*)?   all files   system_u:object_r:public_content_t:s0
/srv/gallery2(/.*)?         all files   system_u:object_r:httpd_sys_content_t:s0
/srv                        directory   system_u:object_r:var_t:s0 <==看这里!
# 上面则是默认的 /srv 底下的安全性本文数据,不过,并没有指定到 /srv/samba 啦

[root@www ~]# semanage fcontext -a -t public_content_t "/srv/samba(/.*)?"
[root@www ~]# semanage fcontext -l | grep '/srv/samba'
/srv/samba(/.*)?            all files   system_u:object_r:public_content_t:s0

[root@www ~]# cat /etc/selinux/targeted/contexts/files/file_contexts.local
# This file is auto-generated by libsemanage
# Please use the semanage command to make changes
/srv/samba(/.*)?    system_u:object_r:public_content_t:s0
# 其实就是写入这个文件的罗! ^_^

[root@www ~]# restorecon -Rv /srv/samba* <==尝试恢复默认值
[root@www ~]# ll -Zd /srv/samba
drwxr-xr-x  root root system_u:object_r:public_content_t /srv/samba/
# 有默认值,以后用 restorecon 来修改比较简单!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值