Linux笔记之SELinux 与 AppArmor
Linux SELinux 与 AppArmor
Linux系统通过强制访问控制(MAC,Mandatory Access Control)机制增强安全性,主要代表为SELinux和AppArmor。本章将详细讲解这两种安全模块的基本概念、配置方法及常用命令。
一、SELinux
1、SELinux 概述
概念说明
SELinux(Security-Enhanced Linux)是Linux内核的一个安全模块,用于通过定义安全策略来限制用户及进程对系统资源的访问。SELinux提供三种工作模式:
- Enforcing:强制执行策略。
- Permissive:记录违规行为但不阻止。
- Disabled:关闭SELinux。
状态查看
使用以下命令查看当前SELinux状态:
getenforce
输出示例:
Enforcing
或者查看详细状态:
sestatus
输出示例:
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 33
Policy from config file: targeted
2、SELinux 策略类型
概念说明
SELinux使用策略来决定进程和资源间的访问权限。常见的两种策略:
- Targeted:大部分进程运行在非限制模式,仅部分关键进程受控。
- MLS(Multi-Level Security):提供多级别安全控制,较少使用。
查看当前策略:
sestatus | grep "Policy from config file"
3、SELinux 配置
修改SELinux模式
通过setenforce
命令动态修改SELinux模式:
setenforce 0 # 切换为Permissive模式
setenforce 1 # 切换为Enforcing模式
修改配置文件实现永久设置:
sudo vim /etc/selinux/config
将SELINUX
值设置为以下之一:
SELINUX=enforcing
SELINUX=permissive
SELINUX=disabled
实际操作
修改为Permissive
模式并验证:
sudo setenforce 0
getenforce
输出结果:
Permissive
4、管理SELinux上下文
概念说明
SELinux通过上下文(context)控制文件、目录或进程的访问权限。上下文信息包括user:role:type:level
四部分,通常关注type
字段。
查看文件的SELinux上下文:
ls -Z filename
输出示例:
-rw-r--r--. root root system_u:object_r:etc_t:s0 filename
修改上下文:
sudo chcon -t httpd_sys_content_t /var/www/html/index.html
还原默认上下文:
sudo restorecon /var/www/html/index.html
二、AppArmor
1、AppArmor 概述
概念说明
AppArmor(Application Armor)是另一个Linux安全模块,通过为每个程序设置独立的权限配置文件(profile)来实现访问控制。与SELinux相比,AppArmor更易于配置,适合应用安全管理。
2、AppArmor 启用状态
查看AppArmor是否启用:
sudo aa-status
输出示例:
AppArmor status: apparmor is enabled and all processes are in enforce mode.
3、配置AppArmor
配置文件路径
AppArmor的配置文件通常位于:
/etc/apparmor.d/
启用与禁用Profile
启用某个Profile:
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx
禁用某个Profile:
sudo aa-disable /etc/apparmor.d/usr.sbin.nginx
实际操作
以Nginx为例,启用其AppArmor规则:
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx
sudo systemctl restart nginx
查看状态:
sudo aa-status | grep nginx
输出结果:
/usr/sbin/nginx enforced
4、自定义AppArmor配置文件
创建Profile
生成模板:
sudo aa-genprof /path/to/application
编辑生成的Profile文件并调整规则后加载:
sudo aa-enforce /etc/apparmor.d/profile_name
三、SELinux 与 AppArmor 对比
特性 | SELinux | AppArmor |
---|---|---|
配置难度 | 较高 | 较低 |
安全级别 | 更精细的强制访问控制 | 应用级访问控制 |
策略应用范围 | 全系统 | 每个程序 |
默认支持的发行版 | Red Hat、CentOS 等 | Ubuntu、Debian 等 |
四、小结
通过本章学习,你已经掌握了以下内容:
-
SELinux:
- SELinux的概述、状态查看及策略类型。
- 动态与永久修改SELinux模式。
- 使用上下文管理文件的SELinux属性。
-
AppArmor:
- AppArmor的概述、状态查看及配置方法。
- 启用、禁用和自定义Profile的操作流程。
-
对比分析:
- 理解了SELinux与AppArmor在安全管理中的不同特点及适用场景。
通过选择合适的安全模块并进行合理配置,可以大幅提升Linux系统的安全性和管理效率。