了解SELinux

了解SELinux

1. SELinux 概述

  • 定义:SELinux(Security-Enhanced Linux)即安全增强型Linux,是由美国国家安全局(NSA)开发的安全机制。

  • 背景

    • 传统Linux采用自主存取控制(DAC),仅通过文件权限控制访问,存在安全隐患(如SUID/SGID特殊权限滥用、错误配置导致漏洞)。
    • SELinux引入强制存取控制(MAC),要求操作同时满足DAC(文件权限)和MAC(SELinux策略)才能执行,否则被拒绝。
  • DAC与MAC的区别

    • DAC(自主访问控制):主体是用户,访问权限由文件自身权限决定。
    • MAC(强制访问控制):主体是程序,访问权限由文件权限和SELinux安全策略共同决定。

2. SELinux 原理与特点

  • 核心原理:基于强制访问控制机制,在传统权限基础上定义各类安全类型,类型不匹配则拒绝访问。
  • 主要特点
    1. 为所有对象(文件、进程等)设置安全上下文标签(context值)。
    2. 访问控制同时依赖普通文件权限和SELinux安全策略。

3. SELinux 安全策略

  • 三种策略
    • targeted:默认策略,适用于RHEL系统,仅对关键服务(如Apache、MySQL)进行限制。
    • minimumtargeted的简化版,限制更少。
    • mls:多级安全策略,安全性极高但配置复杂。

4. SELinux 运行模式

  • 配置文件/etc/sysconfig/selinux(与/etc/selinux/config为软链接)。

    在这里插入图片描述

  • 三种模式

    1. enforcing:强制模式(默认),违反策略的操作会被阻止并记录。
    2. permissive:警告模式,仅记录违反策略的操作但不阻止,用于排查问题。
  1. disabled:禁用SELinux(需重启生效)。
  • 模式管理命令
    • 查看当前状态:getenforce
    • 临时切换模式:setenforce [0|1](0=Permissive,1=Enforcing)

5. SELinux 安全上下文(Context)

  • 组成:用户(u)、角色(r)、类型识别符(t)(核心为类型t)。

  • 查看上下文

    • 文件:ll -Z /path/to/file
    • 目录:ll -ldZ /path/to/directory
  • 修改上下文

    • 临时修改:chcon -t [类型] /path/to/object(如chcon -t tmp_t file
    • 恢复默认:restorecon -v /path/to/object(根据策略恢复)
  • 永久修改上下文

    1. 添加规则:semanage fcontext -a -t [类型] "/path(/.*)?"(/.*)?表示包含子目录)
    2. 应用规则:restorecon -RFv /path(-R递归,-F强制)
  • 标签修复

    • 当标签混乱时:touch /.autorelabel(重启后自动重新标记所有文件)
    • 或先禁用SELinux重启,再启用重启。

6. SELinux 布尔开关(Boolean)

  • 管理命令
    • 查看所有开关:getsebool -a
    • 查看开关说明:semanage boolean -l
    • 修改开关:
      • 临时:setsebool [开关名] [on|off](如setsebool ftpd_full_access on

      • 永久:setsebool -P [开关名] [on|off](-P保存到配置)

        setsebool -P ftpd_full_access on

7. SELinux 端口标记

  • 管理命令
    • 添加端口标签:semanage port -a -t [端口类型] -p [tcp|udp] [端口号]

      -a -t http_port_t -p tcp 8910

    • 查询端口标签:semanage port -l | grep [端口号]

      semanage port -l | grep 8910

    • 修改端口标签:semanage port -m -t [新类型] -p [协议] [端口号]

      semanage port -m -t pegasus_http_port_t -p tcp 8910

    • 删除端口标签:semanage port -d -t [类型] -p [协议] [端口号]

      semanage port -d -t pegasus_http_port_t -p tcp 8910

-d -t [类型] -p [协议] [端口号]`

如`semanage port -d -t pegasus_http_port_t -p tcp 8910`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值