三二互联专业提供速度最快最稳定的美国服务器、香港服务器。中美直连,亚洲优化![ 代理登陆 ] [ 付款方式 ] [ 找回密码 ][ 电子协议责任书 ]
硬件资源保障

采用高配品牌服务器

主流强悍CPU配置

确保服务高速稳定运行

中美直连线路

中美直连亚洲优化

采用中国CN2骨干网络

保证速度飞快稳定高效

如何使用AppArmor限制进程权限?

美国、香港服务器

如何使用AppArmor限制进程权限?

12-18   来源:

 AppArmor 是 Ubuntu/Debian 系统默认的 强制访问控制(MAC) 工具,通过配置文件限制进程的资源访问范围(如文件读写、网络连接、命令执行),即使进程被入侵,也能避免权限扩散。以下是 从安装到配置的完整实操流程,以限制 Nginx 进程为例:

一、 前提条件
适用系统:Ubuntu 16.04+、Debian 9+(默认预装 AppArmor,CentOS/RHEL 更常用 SELinux)。
检查 AppArmor 状态
bash
运行
# 查看服务状态(显示 active (exited) 即为正常)
systemctl status apparmor
# 查看已加载的配置文件
aa-status
若未安装,执行以下命令安装:
bash
运行
sudo apt update && sudo apt install apparmor apparmor-utils -y
二、 AppArmor 配置模式说明
AppArmor 对进程有 3 种管控模式,可按需切换:
模式 作用 适用场景
Enforce(强制模式) 严格执行配置规则,违反规则的操作直接被拒绝 生产环境,已验证配置无误
Complain(投诉模式) 违反规则时不拒绝,仅记录日志 配置调试阶段,用于生成规则模板
Disabled(禁用模式) 不对进程做任何限制 临时排查问题
三、 实操步骤:限制 Nginx 进程权限
以 Nginx 为例,通过 自动生成规则 + 手动优化 的方式配置 AppArmor。
1. 切换到投诉模式,生成基础规则
投诉模式会监控 Nginx 的所有行为,自动记录其所需的访问权限,生成初步配置文件。
bash
运行
# 1. 为 Nginx 启用投诉模式(aa-genprof 会自动生成配置文件)
sudo aa-genprof nginx
 
# 2. 此时终端会提示:"Start nginx, then generate the profile"
# 手动启动/重启 Nginx,触发正常业务行为(如访问网页、读取配置)
sudo systemctl restart nginx
# 访问一次 Nginx 主页,模拟正常请求
curl http://localhost
 
# 3. 回到 aa-genprof 终端,按 Enter 键扫描日志,生成规则
# 按提示选择权限(一般选 "a"=allow 允许必要权限)
# 完成后按 "f"=finish 结束生成
生成的配置文件路径:/etc/apparmor.d/usr.sbin.nginx(对应 Nginx 主程序路径 /usr/sbin/nginx)。
2. 手动优化配置文件(关键步骤)
自动生成的规则可能存在冗余或遗漏,需手动编辑配置文件,精准限制权限。
bash
运行
sudo nano /etc/apparmor.d/usr.sbin.nginx
配置文件的核心语法:
规则语法 作用 示例
/path/to/file r 允许读取文件 /etc/nginx/** r
/path/to/file w 允许写入文件 /var/log/nginx/** rw
/path/to/file m 允许修改文件 /var/www/html/** rwm
network inet tcp 允许 TCP 网络连接 network inet tcp
deny /path/to/file 拒绝访问某文件 deny /root/** rw
Nginx 优化后的配置示例:
ini
# 基础路径(Nginx 主程序)
/usr/sbin/nginx {
    # 允许读取 Nginx 配置文件
    /etc/nginx/** r,
    # 允许读取网站根目录,禁止写入(防止篡改网页)
    /var/www/html/** r,
    # 允许读写日志文件
    /var/log/nginx/** rw,
    # 允许读取系统库文件
    /usr/lib/x86_64-linux-gnu/** r,
    # 允许 TCP 网络连接(监听 80/443 端口)
    network inet tcp,
    # 拒绝访问敏感目录(防止读取/etc/passwd等)
    deny /etc/shadow r,
    deny /root/** rw,
    # 继承默认规则
    #include
}
3. 切换到强制模式,生效规则
bash
运行
# 1. 加载配置文件
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.nginx
 
# 2. 将 Nginx 切换到强制模式
sudo aa-enforce /usr/sbin/nginx
 
# 3. 验证模式(显示 /usr/sbin/nginx: enforce 即为成功)
aa-status | grep nginx
4. 验证限制效果
故意让 Nginx 执行违规操作,测试 AppArmor 是否拦截:
bash
运行
# 尝试让 Nginx 写入网站根目录(配置中仅允许读取)
sudo -u www-data echo "test" > /var/www/html/test.txt
# 查看 AppArmor 日志(会记录拒绝操作)
sudo grep -i nginx /var/log/syslog | grep -i apparmor
若日志中出现 apparmor="DENIED" 记录,说明规则生效。
四、 常用管理命令
切换进程模式
bash
运行
# 切换到投诉模式
sudo aa-complain /usr/sbin/nginx
# 切换到强制模式
sudo aa-enforce /usr/sbin/nginx
# 禁用某进程的 AppArmor 规则
sudo aa-disable /usr/sbin/nginx
更新配置文件
修改配置后,需重新加载规则:
bash
运行
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.nginx
查看拒绝日志
AppArmor 会将违规行为记录到系统日志,用于调试:
bash
运行
# 查看所有 DENIED 记录
sudo grep -i "apparmor=DENIED" /var/log/syslog
五、 最佳实践
先投诉后强制:新进程配置时,先在投诉模式运行 1-2 天,收集所有正常行为,再切换到强制模式,避免误拦截业务。
最小权限原则:只允许进程访问业务必需的文件 / 网络,禁止访问敏感目录(如 /root、/etc/shadow)。
定期维护规则:当进程升级或业务变更时(如 Nginx 新增配置目录),需同步更新 AppArmor 规则。

三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快

上一篇:没有了 下一篇:如何判断服务器的内存使用率是否正常?

美国GIA服务器三二互联版权所有 WWW.250.cc 2008-2015 All Rights Reserved
三二互联 - 专业的美国C3服务器香港vps、抗DOOS流量清洗、云备份系统、网站加速系统、美国GIA服务器和香港云服务器产品提供商
三二互联24小时在线工单系统为您提供全面、专业、周到的技术支持与服务
咨询热线:400-679-9994(免长话费)