SElinux

一 SElinux是什么
    SElinux是美国国家安全局开发为linux安全强化,是在程序、文件等权限设置时依据的一个核心模块。
        自主式存取控制(DAC):根据程序的拥有者和文件rwx权限决定操作者对文件有无存取权限,所以root就可以操作任何文件(不安全,容易误操作)。
        委任式存取控制(MAC):针对特定的程序与特定的程序与文件进行权限控管(root也是)。
        SElinux就是通过MAC方式来控制程序,它有些控管默认的政策和规则。
二SElinux运行模式
    
    
    1)主体程序(进程)必须要通过SELinux政策内的规则放行后,就可以与目标资源进行安全性上下文的比对。
     2)若比对失败则无法存取目标,若比对成功则可以开始存取目标。

    (服务用不了跟SElinux有关的:要么是规则的布林值限制直接定义了,要么就是安全上下文不匹配

    目前的政策一般用targeted。(getsebool -a 可查看规则限制)
   
   SELinux策略包括两点:安全上下文
     SElinux域:对进程资源进行管理(其实算是进程的安全上下文
        ps -Z 查看
        
    SElinux安全性上下文:对系统资源进行限制(文件目录的安全上下文
        安全性上下文存在于主体程序中与目标文件资源中。每个文件都有,存在文件的indoe中。
        ls -Z 可查看
        
        
        可分为三字段:  Identify (_u):role (_r):type (_t) 
        Identify(身份识别):
            1.unconfined_u:不受限用户。
            2.system_u:系统用户。
        role(角色):
            1.object_r:代表文件和目录等文件资源。
            2.system_r:代表程序。
        type(类型)(重要!)
            1.type:在文件资源上
            2.domain:在主体程序上(进程的
            type与domain匹配,程序才能够顺利读取文件资源
三 SElinux模式
    1.enforcing:强制模式。运行,开始限制domain/type.
    2.permissive:宽容模式。运行,不限制只警告
    3.disabled:关闭。
   

    SElinux相关命令(/etc/selinux/config)
        1.getenforce 查看SElinux状态
        2.sestatues 查看SELinux的政策
         -v检测列于 /etc/sestatus.conf 内的文件与程序的安全本文内容
          -b 将目前规则的规则布林值列出,也就是某些规则(role)是否启动(0/1)
        3.SElinux开启与关闭 修改/etc/selinux/config下的SELINUX=(mode)  (要重启,必须的)
        4.setenforce nu 开启状态模式切换 (不用重启)
            0 permissive模式
            1 Enforcing模式

四 SElinux政策里的规则管理(查看SElinux政策的规则是否允许某些服务在某些目录下开发)
    1.getsebool 规则名 查看规则是否启动
      -a 列出所有系统的所有SElinux规则的布林值设置启动
   
    2.setsebool 设置规则的布林值开启/关闭
        -P 永久生效

    (扩充工具应用)
    规则具体限制要查看需seinfo sesearch工具(默认不安装 yum install setools-console-*
    1.seinfo 
      -A 列出SELinux的状态、规则布林值、身份识别、角色、类别
      -u 列出SElinux的所有身份识别(user)种类
      -r 列出SELinux的所有角色(role)种类
      -t 列出SELinux的所有类别(type)种类
      -b 列出所有规则种类
    2.sesearch [-A] [-s 主体类别] [-t 目标类别] [-b 布林值]
        -a 列出后面数据允许"读取或放行"的相关数据
      -t type
      -b SELinux规则
   

五 SElinux安全本文的修改(主要用于文件因SElinux的type不符合要求而无法运行的修改)
    1.chcon file/dir
      -R 连同该目录下的此目录也同时修改
      -t type 指定安全文本的类型字段
       -u Identify 指定身份
       -r role 指定角色
      -v 若有变化,列出变化结果
      --reference=file1(范例文档) 拿某个文档当范例来修改后接文件
    2.restorecon file/dir 把目录下的文件恢复成默认目录的type (常用)
     -R 连同次目录一起修改
     -v 显示过程
      -e 排除目录
      -i 忽略不存在文件
      -F 强制恢复
    3.semanage 默认目录的安全性本文查询与修改
    {login|user|port|interface|fcontext|translation}
     fcontext : 主要用于安全环境。(/etc/selinux/targeted/contexts/
      -l 查询
      -a 增加目录的默认安全性本文设置
      -m 修改
      -d 删除
         -t type 指定安全文本的类型字段
         -u Identify 指定身份
         -r role 指定角色
    修改后,ll -Z 显示不会立即变,可用 restorecon -Rv 目录 恢复立即才会生效
(整理自《鸟哥》《Linux就该这么学》)
    

### SELinux 配置概述 SELinux(Security-Enhanced Linux)是一种强制访问控制系统,旨在通过更精细的权限管理来提高系统的安全性。它不仅依赖于传统的 DAC(Discretionary Access Control),还引入了 MAC(Mandatory Access Control)。这种双重验证机制确保只有经过明确授权的操作才能被执行。 #### SELinux 的三种模式 SELinux 支持三种运行模式: 1. **Enforcing**:这是默认模式,在此模式下,SELinux 执行所有的安全策略并记录任何被拒绝的动作。 2. **Permissive**:在此模式下,SELinux 不会阻止任何操作,但它会记录违反策略的行为以便调试和分析。 3. **Disabled**:完全禁用 SELinux 功能[^1]。 可以通过 `getenforce` 命令查看当前 SELinux 运行模式,并使用 `setenforce` 切换模式(仅限临时更改)。永久修改需编辑 `/etc/selinux/config` 文件中的 `SELINUX=enforcing|permissive|disabled` 参数[^3]。 --- ### SELinux 配置方法 #### 1. 查看 SELinux 当前状态 要检查 SELinux 是否启用以及其当前模式,可执行以下命令: ```bash sestatus ``` #### 2. 修改文件或目录的安全上下文 SELinux 使用安全上下文标记文件、目录和其他对象。如果某些应用程序无法正常工作,可能是因为它们缺少正确的安全上下文。可以使用 `ls -Z` 查看文件的安全上下文,并使用 `chcon` 或 `restorecon` 更改这些上下文。 例如,恢复某个目录的标准安全上下文: ```bash restorecon -R /var/www/html/ ``` #### 3. 创建自定义策略模块 对于复杂场景下的需求,可能需要创建自定义策略模块。以下是基本流程: 1. 记录审计日志中因 SELinux 而受阻的操作: ```bash grep AVC /var/log/audit/audit.log | audit2allow -m mymodule > mymodule.te ``` 2. 编译生成的 `.te` 文件为二进制模块: ```bash checkmodule -M -m -o mymodule.mod mymodule.te semodule_package -o mymodule.pp -m mymodule.mod ``` 3. 加载新编写的策略模块至系统中: ```bash semodule -i mymodule.pp ``` 以上过程能够有效扩展 SELinux 默认行为以适应特定业务环境的要求[^1]。 --- ### 常见问题及解决方案 #### 问题一:Web 服务无法读取指定路径的数据 原因可能是目标数据未分配给 web 应用所需的安全上下文标签。尝试重新设定相关联的内容属性即可解决问题: ```bash chcon -t httpd_sys_content_t /path/to/data ``` 或者利用工具自动修复整个树形结构内的所有项目: ```bash restorecon -Rv /path/to/data ``` #### 问题二:数据库客户端连接失败 当 MySQL 数据库或其他类似的后台服务遇到认证错误时,应核查是否由于 SELinux 导致通信障碍。调整布尔值参数或许能缓解此类状况: ```bash setsebool -P allow_httpd_mod_auth_pam on ``` #### 问题三:邮件传输代理 (MTA) 出现异常 Postfix 等 MTA 工具可能会因为缺乏适当许可而崩溃。确认是否有足够的权利去处理队列里的消息包件: ```bash semanage permissive -a postfix_master_t ``` 每种情况都需要具体分析对应的 AVCS 条目,从而采取针对性措施加以修正[^2]。 --- ### 结论 通过对 SELinux 正确配置与维护,可以在保障灵活性的同时极大提升操作系统层面防护水平。尽管初期学习曲线较陡峭,但从长远来看收益显著。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值