标签: apparmor

apparmor:多个应用程序的相同配置文件

所以我有:

#include <tunables/global>

/usr/bin/python2.7 {
    /** mixrw,
    deny /** lwk,
}

/usr/lib/jvm/java-6-openjdk/jre/bin/java {
    /** mixrw,
    deny /** lwk,
}

/var/www/service/usercode/*/a.out {
    /** mixrw,
    #deny /** lwk,
}
Run Code Online (Sandbox Code Playgroud)

我怎么能让它像这样:

#include <tunables/global>

/usr/bin/python2.7 
/usr/lib/jvm/java-6-openjdk/jre/bin/java
/var/www/service/usercode/*/a.out
{
    /** mixrw,
    deny /** lwk,
}
Run Code Online (Sandbox Code Playgroud)

ubuntu apparmor

12
推荐指数
1
解决办法
418
查看次数

mysql init-file 配置选项给出找不到文件错误

我想在 mysql 启动时运行一个 SQL 脚本,但我无法在 Ubuntu 11.10 中运行它。

我在 mysql 配置文件中添加了一个“ init-file ”选项:

> sudo emacs -nw /etc/mysql/my.cnf
...
[mysqld]
init-file=/etc/mysql/mysqlinit.sql
...
Run Code Online (Sandbox Code Playgroud)

但是当我重新启动 mysql 时,它失败并显示“找不到文件”错误:

> tail /var/log/mysql/error.log
111111  7:41:06 [ERROR] /usr/sbin/mysqld: File '/etc/mysql/mysqlinit.sql' not found (Errcode: 13)
111111  7:41:06 [ERROR] Aborting
Run Code Online (Sandbox Code Playgroud)

但该文件肯定存在并且是可读的:

> ls -l /etc/mysql/mysqlinit.sql
-rwxr-xr-x 1 mysql mysql 30 2011-11-09 05:06 /etc/mysql/mysqlinit.sql
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决这个问题?这是 Ubuntu 的怪癖还是我做了一些愚蠢的事情?


信息:

我正在运行 Ubuntu 11.10 和 MySQL 5.1。

> mysqld --version
mysqld  Ver 5.1.58-1ubuntu1 for debian-linux-gnu on x86_64 ((Ubuntu))
Run Code Online (Sandbox Code Playgroud)

mysql ubuntu apparmor

11
推荐指数
1
解决办法
1万
查看次数

如何禁止 Docker Daemon 将主机的根文件系统挂载到容器中

我有以下容器设置。

在裸机服务器上安装并运行了两个 Docker 守护进程。

  1. 主 Docker 守护进程运行我的应用程序容器,将 80/443 暴露给外界。
  2. Plugin Docker Daemon运行客户提供的一些容器,这些容器通过 80/443 与我的应用程序通信。

我想让客户访问Plugin Docker Daemon的 API (2376),以便客户可以部署/启动/停止他自己的容器。客户只能访问 API,而不能访问主机 (SSH)。

我目前面临的问题是,如果客户运行的容器执行诸如docker run -v /:/host/root Ubuntu rm -rf /host/root.

我的问题是我能做些什么来防止插件 Docker 守护程序挂载根目录/或外部的任何其他目录/home/user/

  • 是否可以选择在 Docker 守护进程中启动/home/user/
  • 我可以使用一些 LSM(Linux 安全模块 SELinux/Apparmor)魔法来阻止 docker 守护进程挂载除用户 home 或 var/docker/libs 之外的部分或所有主机路径吗?
  • 可以--userns-remap帮助我实现我的目标吗?
  • 除了虚拟机,还有其他可用的选项吗?

服务器完全属于单个客户。因此,安全性或数据泄漏不是我的主要关注点。我真正想防止的是Plugin Daemon中的某个人正在做一些愚蠢的事情,这会影响我在Main Docker Daemon中运行的容器。我想保持精益并坚持仅使用 docker 的工作流程,并且不会为 VM 创建设置额外的工作流程。

linux selinux chroot apparmor docker

8
推荐指数
1
解决办法
5389
查看次数

Apparmor 外部包含的帽子不起作用

在 Ubuntu 12.04 上运行 apache2,使用 mod-apparmor 支持 change-hat。

我已经安装并验证变化帽子是工作,但它工作了外部包括帽子等提供的例如帽子phpSysInfomod-apparmor包。

我很好奇为什么这个特定的外部包含不起作用,当其他类型的包含(即:“抽象”)正在工作时。奇怪的是,如果它不起作用,包维护者会以这种方式设置它。

如果帽子不是作为“包含”提供,而是直接写入apache2配置文件,则它可以正常工作。

相关的配置文件布局如下:

/etc/
| apparmor.d/
| | apache2.d/
| | | phpsysinfo
| | usr.lib.apache2.mpm-prefork.apache2
Run Code Online (Sandbox Code Playgroud)

并且这些帽子包含在这样的 apache 配置文件中,由包维护者提供:

/etc/
| apparmor.d/
| | apache2.d/
| | | phpsysinfo
| | usr.lib.apache2.mpm-prefork.apache2
Run Code Online (Sandbox Code Playgroud)

帽子文件 ( apache2.d/phpsysinfo) 如下所示:

/usr/lib/apache2/mpm-prefork/apache2 flags=(complain) {
  #include <apache2.d>
}
Run Code Online (Sandbox Code Playgroud)

ubuntu apache-2.2 apparmor

5
推荐指数
0
解决办法
331
查看次数

Apparmor 拒绝 ntpd 访问其自己的日志

ntpd 抱怨它无法访问自己的日志

# ntpd -qgddd 
...
11 Sep 16:23:00 ntpd[7262]: can't open /var/log/ntpstats/peerstats.20130911: Permission denied
...
11 Sep 16:23:01 ntpd[7262]: can't open /var/log/ntpstats/peerstats.20130911: Permission denied
...
11 Sep 16:23:01 ntpd[7262]: can't open /var/log/ntpstats/loopstats.20130911: Permission denied
Run Code Online (Sandbox Code Playgroud)

strace 表示同意

open("/var/log/ntpstats/loopstats.20130911", O_WRONLY|O_CREAT|O_APPEND, 0666) = -1 EACCES (Permission denied)
Run Code Online (Sandbox Code Playgroud)

根据 syslog apparmor 阻止它这样做

[526597.819210] type=1400 audit(1378909374.692:91): apparmor="DENIED" operation="open" parent=1013 profile="/usr/sbin/ntpd" name="/usr/local/sbin/" pid=7262 comm="ntpd" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
[526597.819277] type=1400 audit(1378909374.692:92): apparmor="DENIED" operation="open" parent=1013 profile="/usr/sbin/ntpd" name="/usr/local/bin/" pid=7262 comm="ntpd" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
[526597.819330] type=1400 audit(1378909374.692:93): …
Run Code Online (Sandbox Code Playgroud)

logging ntpd apparmor

5
推荐指数
1
解决办法
3221
查看次数

nginx 真的需要在其 AppArmor 策略中使用 dac_override 吗?

我正在为nginxUbuntu 14.04构建 AppArmor 策略,如果不启用该dac_override功能,我将无法使其工作。

是否nginx真的需要启用此功能或有什么方法可以解决它?覆盖所有自由访问控制看起来有风险,但在 AppArmor 约束中这可能很常见。

nginx 不受限制地运行良好,所以我认为没有权限问题,但我是 AppArmor 的新手,所以我可能是错的。

nginx apparmor

5
推荐指数
1
解决办法
1431
查看次数

在共享主机上使用 nginx + php-fpm 设置权限的最佳方法?

我正在 Debian 上使用 nginx 和 php-fpm 运行共享托管服务器。

一切正常,php-fpm 为作为单独用户运行的每个用户提供了单独的池,并且他们每个人都有自己的袜子。

然而,Nginx 作为 www-data 运行,因为我不想为每个用户拥有单独的 nginx 进程。

这意味着为了让 nginx 能够访问用户数据,/home 的权限必须是 drwxr-x--x。问题是,所有用户都可以访问其他用户的文件。

在不授予其他用户访问权限的情况下,让 nginx 访问用户文件的最佳方法是什么。以 root 身份运行 nginx 不是一种选择。但是 AppArmor 会有帮助吗?

permissions debian nginx php-fpm apparmor

4
推荐指数
1
解决办法
4063
查看次数

如何在 ubuntu 上正确保护 Unicorn/RoR 服务器?或者,强化 RoR 应用程序堆栈?

我在 Ubuntu 12.04 上运行的 Unicorn 服务器很少,我希望保护它们免受提供远程 shell 的攻击。

我主要关心的是,部署 ModSecurity 是否有意义?

另一件事是,我看到 Unicorn 通常从端口 8080 运行,并将其转发到用作反向代理的 Apache/NginX 服务器端口 80。

我在想我可以使用以下内容:

  • Apache 上的 ModSecurity
  • 使用 mod_qos 作为工作线程(线程)的 Apache,以防止来自任何主机的过多请求
  • 从指定用户运行独角兽服务器并通过 AppArmor 或 SELinux(如果它是 Redhat/Centos)将其隔离

我想知道,是否有另一个像 PHP Suhosin 这样的 RoR 强化框架/补丁。

ubuntu ruby-on-rails unicorn apache-2.2 apparmor

2
推荐指数
1
解决办法
1071
查看次数