AppArmor配置文件语法说明

AppArmor策略是使用一种友好的配置文件语言创建的,然后将其编译为二进制策略以加载到内核中。

AppArmor策略存储在/etc/ AppArmor .d/目录下的一组文件中。

AppArmor策略被分成几个配置文件,这些配置文件通常被设计用来限制特定的应用程序。

配置文件将声明访问规则以允许对资源的访问,当配置文件中没有匹配的规则时,使用日志记录会隐式拒绝访问。

配置布局

AppArmor的配置设置存储在两个位置:

        全局设置和系统设置保存在/etc/apparmor/中;

        用户设置存储在${HOME}/.apparmor/中;

系统策略存储在/etc/apparmor. d/目录中,当实现用户策略时将存储在${HOME}/.apparmor.d/中(${APPARMOR.D}用于引用这两个目录)。

${APPARMOR.D}目录包含一组目录和配置文件。目录中的所有文件都被视为配置文件,除非它们符合以下任何一种模式,在这种情况下,这些文件将被忽略。

  • *~
  • *.bak
  • *.rpm*
  • *.dpkg-{bak,dist,new,old}

在${APPARMOR.D}下列目录有特殊意义:

  • ${APPARMOR.D}/abstractions/
  • ${APPARMOR.D}/apache2.d/
  • ${APPARMOR.D}/cache/- precompiled binary policy files
  • ${APPARMOR.D}/disable/- symlinks to profiles to disable
  • ${APPARMOR.D}/force-complain/- symlinks to profiles to set to complain mode
  • ${APPARMOR.D}/libvirt/
  • ${APPARMOR.D}/local/
  • ${APPARMOR.D}/namespaces/
  • ${APPARMOR.D}/pam/
  • ${APPARMOR.D}/tunables/

根据您的操作系统供应商和版本,您的系统可能有上述部分或全部目录。

配置文件

配置文件以配置文件的名称开头,后跟一个可选的flags字段,然后是:

一个开头 {

        后跟配置文件的规则,最后以结束

如果配置文件名称不以/开头,则应在前面加上关键字profile。例如:

/usr/bin/firefox {
    # profile contents
 }

 /usr/bin/firefox flags=(complain) {
    # profile contents
 }

 profile /usr/bin/ {
    # profile contents
 }

 profile user1 {
    # profile contents
 }

配置文件名称可以包含文件规则通配字符,以允许它们应用于多个可执行文件,请参阅文件通配(下面)了解详细信息。

注释

注释是行导向的,以#开始。在行尾跟随“#”的文本将被忽略(#include规则除外)。例如:

#  Comment 1
 #  Comment 2

 profile example {  # comment 3
    # comment 4
    /home/foo rw,  # comment at the end of a file rule
 }

Include Rules

策略文件可以包含其他文件来共享文本段。

AppArmor include遵循C include约定:

它们以#include开头,对于相对于集合包含目录的文本夹 ,后面跟着 < > ;相对于当前文件的文件,后面跟着 " "。

#是可选的,不应该在较新的配置文件中使用。例如:

 #include &l
  • 39
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1. Nginx在Ubuntu20.04中的AppArmor配置文件 在Ubuntu 20.04中,Nginx的AppArmor配置文件位于/etc/apparmor.d/usr.sbin.nginx。该文件定义了Nginx进程可以访问的文件和目录,以及可以执行的操作。例如,以下是默认的/usr/sbin/nginx AppArmor配置文件的部分内容: ``` /usr/sbin/nginx { ... # Allow read access to all file systems. # This allows Nginx to read static files and logs. / r, /sys/devices/system/cpu/ r, /sys/devices/system/cpu/** r, /proc/stat r, /proc/meminfo r, /proc/loadavg r, /etc/nginx/ r, /etc/nginx/** r, /etc/nginx/sites-enabled/ r, /etc/nginx/sites-enabled/* r, /usr/share/nginx/html/ r, /var/log/nginx/access.log w, /var/log/nginx/error.log w, /run/nginx.pid rw, ... } ``` 该配置文件允许Nginx访问一些必要的系统文件和目录,例如/proc和/sys目录,以及Nginx的配置文件和日志文件。 2. Ubuntu20.04中Docker启用AppArmor下的配置文件 在Ubuntu 20.04中,Docker默认启用AppArmor来限制容器的权限。Docker的AppArmor配置文件位于/etc/apparmor.d/docker-DEFAULT。该文件定义了Docker容器可以访问的文件和目录,以及可以执行的操作。例如,以下是默认的docker-DEFAULT AppArmor配置文件的部分内容: ``` ... # Allow read access to containers image and registry files. # Use subdirectories to make sure rslave is applied on existing directories /var/lib/docker/ r, /var/lib/docker/** rwk, /var/lib/containerd/ r, /var/lib/containerd/** rwk, /etc/docker/ r, /etc/docker/** r, # Allow rslave on container directories in case the user wants to bind mount them /var/lib/docker/*/ rslave, /var/lib/docker/*/*/ rslave, /var/lib/docker/*/*/*/ rslave, /var/lib/docker/*/*/*/*/ rslave, /var/lib/docker/*/*/*/*/*/ rslave, # Allow containerd to manage its own state /run/containerd/ r, /run/containerd/** rwk, ... ``` 该配置文件允许Docker容器访问一些必要的系统文件和目录,例如/var/lib/docker目录和/etc/docker目录,以及容器需要读取或写入的文件。 3. 优缺点比较 Nginx在Ubuntu20.04中的AppArmor配置文件和Ubuntu20.04中Docker启用AppArmor下的配置文件有以下优缺点: 优点: Nginx AppArmor配置文件: - 可以更加精细地控制Nginx进程的访问权限; - 不会影响其他进程的权限。 Docker AppArmor配置文件: - 可以更好地保护主机系统免受恶意容器的攻击; - 可以更容易地管理多个容器的权限; - 可以更容易地移植Docker容器到其他系统。 缺点: Nginx AppArmor配置文件: - 需要手动编辑,可能需要一些技术知识; - 可能无法完全保护主机系统免受Nginx进程的攻击。 Docker AppArmor配置文件: - 可能会限制容器的功能,例如无法访问某些文件或目录; - 可能会增加管理的复杂性,需要更多的配置和管理工作。 总的来说,Nginx在Ubuntu20.04中的AppArmor配置文件更适合单独控制Nginx进程的权限,而Docker启用AppArmor下的配置文件更适合保护主机系统免受Docker容器的攻击。具体使用哪种方式取决于实际需求和应用场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值