1. 强制访问控制(MAC)
SELinux通过**强制访问控制(MAC)**机制,突破传统Linux“自主访问控制(DAC)”的限制,由内核强制实施安全规则,限制进程和用户对系统资源(文件、端口、设备等)的访问行为,即使root用户也无法绕过SELinux的限制。
2. 安全策略(Policy)
SELinux采用预定义策略(如targeted、strict、mls)定义进程与资源的访问规则。其中,targeted是CentOS默认策略,仅保护常见网络服务(如httpd、mysqld),对本机系统限制极少;strict对所有进程进行严格控制;mls提供多级安全保护(如分级信息访问),适用于高安全需求场景。
3. 安全上下文(Security Context)
每个进程(域,Domain)、文件/目录、端口等对象均关联安全上下文(格式:用户:角色:类型:级别,如unconfined_u:unconfined_r:unconfined_t:s0)。SELinux通过比对进程域与资源上下文的“类型”(Type)字段,决定是否允许访问,是MAC机制的核心判断依据。
4. 类型强制(TE,Type Enforcement)
类型强制是SELinux的关键技术,通过为进程分配“域”(Domain)、为资源分配“类型”(Type),并定义域与类型之间的访问规则(如“httpd_t类型的进程能否读写/var/www/html/t类型的文件”),实现对进程行为的精准约束,防止进程越权访问资源。
5. 审计与监控
SELinux会记录所有违反安全策略的访问尝试(如进程试图访问未授权的文件),日志存储在/var/log/audit/audit.log中。管理员可通过ausearch(查看拒绝事件)、aureport(生成统计报告)等工具分析日志,快速定位安全问题。
6. 多工作模式
SELinux支持三种运行模式,适配不同安全需求:
7. 策略自定义与布尔值配置
管理员可通过工具自定义SELinux策略:
audit.log中提取拒绝事件,生成自定义策略模块(.pp文件),解决特定应用的SELinux问题(如允许httpd访问自定义端口);setsebool -P httpd_can_network_connect 1允许httpd发起网络连接;