Linux笔记之SELinux 与 AppArmor

Linux SELinux 与 AppArmor

Linux系统通过强制访问控制(MAC,Mandatory Access Control)机制增强安全性,主要代表为SELinuxAppArmor。本章将详细讲解这两种安全模块的基本概念、配置方法及常用命令。


一、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 对比

特性SELinuxAppArmor
配置难度较高较低
安全级别更精细的强制访问控制应用级访问控制
策略应用范围全系统每个程序
默认支持的发行版Red Hat、CentOS 等Ubuntu、Debian 等

四、小结

通过本章学习,你已经掌握了以下内容:

  1. SELinux

    • SELinux的概述、状态查看及策略类型。
    • 动态与永久修改SELinux模式。
    • 使用上下文管理文件的SELinux属性。
  2. AppArmor

    • AppArmor的概述、状态查看及配置方法。
    • 启用、禁用和自定义Profile的操作流程。
  3. 对比分析

    • 理解了SELinux与AppArmor在安全管理中的不同特点及适用场景。

通过选择合适的安全模块并进行合理配置,可以大幅提升Linux系统的安全性和管理效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人间酒中仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值