温馨提示×

Ubuntu Context安全设置怎么做

小樊
53
2025-10-05 10:38:51
栏目: 智能运维

Ubuntu默认安全框架:AppArmor
Ubuntu系统默认采用AppArmor(Application Armor)作为安全模块,通过为应用程序定义安全配置文件(Profile),限制其可访问的文件、网络端口、系统能力等资源,实现进程与资源的隔离。AppArmor的配置基于路径,策略生效后,违规行为会被记录到系统日志(/var/log/syslog/var/log/kern.log)。

1. 检查AppArmor状态

使用以下命令确认AppArmor是否启用及运行状态:

sudo apparmor_status

输出示例:

apparmor module is loaded.
12 profiles are loaded.
12 profiles are in enforce mode.
...
  • loaded:配置文件已加载;
  • enforce mode:策略生效(违规行为被阻止并记录);
  • complain mode:策略不生效,但违规行为被记录(用于调试)。

2. 管理AppArmor配置文件

AppArmor的配置文件位于/etc/apparmor.d/目录,文件名通常与应用程序的二进制路径相关(如/usr/sbin/nginx的配置文件为usr.sbin.nginx)。

  • 查看配置文件语法:配置文件使用简洁的语法定义规则,例如Nginx的简化Profile:
    #include <tunables/global>
    /usr/sbin/nginx {
      #include <abstractions/apache2-common>  # 包含通用规则
      #include <abstractions/base>
      capability net_bind_service,            # 允许绑定网络端口
      /etc/nginx/** r,                        # 允许读取/etc/nginx目录下的所有文件
      /usr/sbin/nginx mr,                     # 允许读取和执行nginx二进制文件
      /var/log/nginx/** rw,                   # 允许读写/var/log/nginx目录下的文件
    }
    
    关键符号说明:r=读、w=写、x=执行、m=内存映射。
  • 加载/卸载配置文件:修改配置文件后,需重新加载使其生效:
    sudo apparmor_parser -r /etc/apparmor.d/<profile_name>  # 重新加载(replace)
    sudo apparmor_parser -R /etc/apparmor.d/<profile_name>  # 卸载(remove)
    

3. 切换AppArmor模式

  • 全局模式切换:修改/etc/apparmor.d/force-complain文件(存在则全局进入complain模式),或使用aa-complain命令针对特定应用程序:
    sudo aa-complain /usr/sbin/nginx  # 将nginx设置为complain模式
    sudo aa-enforce /usr/sbin/nginx   # 切回enforce模式
    
  • 模式验证:通过apparmor_status命令查看各Profile的模式状态。

4. 日志分析与策略优化

当应用程序因AppArmor限制无法正常运行时,需通过日志分析违规原因:

sudo dmesg | grep apparmor          # 查看内核日志中的AppArmor拒绝信息
sudo journalctl -f -u apparmor      # 实时查看apparmor服务的日志(需systemd)

日志示例:

apparmor="DENIED" operation="open" profile="/usr/sbin/nginx" name="/var/www/html/test.txt" pid=1234 comm="nginx"

根据日志提示,编辑对应Profile添加允许规则(如上述/var/www/html/** r),然后重新加载配置。

5. 可选:安装SELinux(非默认)

若需使用SELinux(Security-Enhanced Linux,基于标签的安全模块),需先卸载AppArmor(避免冲突),再安装SELinux相关组件:

sudo systemctl stop apparmor
sudo apt purge apparmor             # 卸载AppArmor
sudo apt install selinux-basics selinux-policy-default auditd  # 安装SELinux
  • 激活SELinux
    sudo selinux-activate             # 添加内核启动参数并创建自标签文件
    
  • 设置模式:修改/etc/selinux/config文件,将SELINUX=设置为enforcing(强制模式)、permissive(宽容模式)或disabled(禁用),重启系统生效。
  • 查看上下文
    ls -Z                             # 查看文件/目录的安全上下文
    ps -eZ                            # 查看进程的安全上下文
    
  • 修改上下文:使用chcon临时修改(重启或restorecon会还原),restorecon恢复默认上下文:
    sudo chcon -t httpd_sys_content_t /var/www/html/test.txt  # 临时修改
    sudo restorecon -v /var/www/html/test.txt                 # 恢复默认
    

注意事项

  • Ubuntu生态对AppArmor的支持更完善,除非有特殊需求(如迁移自SELinux环境),否则建议优先使用AppArmor;
  • 修改安全策略前,建议先进入complain模式调试,避免误拦截导致系统服务不可用;
  • 定期检查日志,及时优化Profile以适应应用程序的变化。

0