使用 Apparmor 的 Jail-Chrooted OpenVPN 服务失败,操作不允许

使用 Apparmor 的 Jail-Chrooted OpenVPN 服务失败,操作不允许

我有一个带有 chroot-jail 的 OpenVPN 客户端,目前作为 Linux 服务运行openvpn-client@vpn

我正在尝试使其与 AppArmor 一起工作,我在 /etc/apparmor.d/usr.sbin.openvpn 中创建了 OpenVPN 配置文件,但是当 openvpn 服务尝试启动时出现此错误:

**

chroot 到 '/.vpn-jail/' 失败:操作不允许

**

没有 AppArmor,Jail-Chrooted OpenvVPN 客户端服务也可以按需要工作。

这是我当前的 OpenVPN AppArmor 配置文件,我尝试使用标志:chroot_attach、chroot_relative、namespace_relative 等……但到目前为止我还无法使其工作。

# vim:syntax=apparmor

#include <tunables/global>
#include if exists <tunables/chroot>

profile openvpn /usr/sbin/openvpn flags=(chroot_attach) {
  #include <abstractions/base>
  #include <abstractions/openssl>
  #include <abstractions/nameservice>   # embedded, but more relaxed

  capability net_admin,
  capability setuid,
  capability setgid,

  /etc/openvpn/client/*.conf                    r, # any.conf
  /etc/openvpn/client/credentials/decrypted_credentials.txt r,
  @{VPNCHROOT}/etc/openvpn/client/*.conf    r,
  @{VPNCHROOT}/etc/openvpn/client/credentials/decrypted_credentials.txt    r,

  /dev/net/tun rw,

  @{PROC}/@{pid}/net/route r,

  /var/log/openvpn/openvpn-status.log           rw,
  /var/log/openvpn/openvpn.log                  rw,
  /var/log/openvpn/ipp.txt                      rw,
  /{,var/}run/openvpn/server.pid                rw,
  /{,var/}run/openvpn/client{,-*}.pid           rw,
  /{,var/}run/openvpn/client{,-*}.status        rw,

  /{,usr/}bin/ip Cx,
  profile ip /{,usr/}bin/ip {
    /{,usr/}bin/ip r,
    #include <abstractions/base>

    capability net_admin,

    /var/log/openvpn/openvpn.log w,
  }

#  #include <local/usr.sbin.openvpn>
}

答案1

capabilities(7)告诉:

CAP_SYS_CHROOT

  • 使用chroot(2);
  • 使用 更改挂载命名空间setns(2)

Apparmor 配置中允许的其他功能均不授予使用权限chroot(2)):chroot()获取EPERM/不允许操作

您必须添加:

capability sys_chroot,

在 Apparmor 设置中。这可能成为一个迭代过程:继续,遇到下一个错误,检查应用程序日志和 Apparmor 日志(通常/var/log/audit/需要解析器的帮助),通过查看手册capabilities(7)(或任何其他限制而不是功能)修复它,直到它完全正常运行。

相关内容