在Linux系统安全领域,SELinux与AppArmor是两种主流的强制访问控制(MAC)机制。本文将通过具体配置案例对比这两种机制的安全策略实施。
SELinux配置示例
首先启用SELinux并设置为 enforcing 模式:
# 编辑 /etc/selinux/config
SELINUX=enforcing
# 重启系统后验证状态
getenforce
# 输出应为 Enforcing
创建一个受限的Web服务上下文:
# 为httpd设置特定的SELinux域
semanage login -a -s staff_u -r s0 system_u
semanage fcontext -a -t httpd_exec_t /var/www/cgi-bin/*
restorecon -R /var/www/cgi-bin/
AppArmor配置示例
安装并启用AppArmor:
# Ubuntu/Debian系统
sudo apt install apparmor apparmor-utils
sudo systemctl enable apparmor
sudo systemctl start apparmor
# 创建配置文件
sudo nano /etc/apparmor.d/usr.sbin.apache2
配置内容如下:
#include <tunables/global>
/usr/sbin/apache2 {
include <abstractions/base>
include <abstractions/nameservice>
capability net_bind_service,
capability setuid,
capability setgid,
/usr/sbin/apache2 mrwkl,
/etc/apache2/** rwkl,
/var/www/** rwkl,
}
加载配置:
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.apache2
安全策略对比
在实际部署中,SELinux通过细粒度的类型强制控制,适用于高安全要求环境;而AppArmor通过路径为基础的访问控制,更适合快速部署。两者都支持审计日志收集:
# SELinux审计
ausearch -m avc -ts recent
# AppArmor审计
journalctl | grep apparmor
建议根据组织安全需求选择合适的机制,并定期审查安全策略配置。

讨论