首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用 AppArmor 限制应用的权限

开启了 AppArmor 的系统容器运行时会给容器使用默认的权限配置,当然,应用也可以使用自定义配置。本文将讲述如何容器使用 AppArmor。...可以通过以下命令检查模块是否已启用 AppArmor: $ cat /sys/module/apparmor/parameters/enabled Y AppArmor 以下两种类型的配置文件模式下运行...如 /home/** rw, 表示对 /home 下所有文件具备读写权限; 文件系统挂载规则,包括是否具备挂载、卸载权限,文件系统类型、挂载参数以及挂载路径。...AppArmor 的配置文件定义的十分灵活,更多具体使用可以参见 AppArmor 文档。 容器使用 AppArmor 主机上配置好 AppArmor 配置文件后,我们来看如何容器使用。...方式为 Pod 的 annotation 声明哪个容器使用哪个配置文件,其 key 为 container.apparmor.security.beta.kubernetes.io/<container_name

4.8K30

浅析docker的多种逃逸方法

、有些又需要允许读写, 这些文件目录将会以 tmpfs 文件系统的方式挂载容器,以实现目录 mask 的需求 特权模式下,这些目录将不再以 tmpfs 文件系统的方式挂载 Tips: Tmpfs说明...:https://blog.51cto.com/u_11495268/2424414 2.1.3、任何内核文件都是可读写 普通模式下,部分内核文件系统(sysfs、procfs)会被以只读的方式挂载容器...,以阻止容器内进程随意修改系统内核 特权模式下,内核文件系统将不再以只读的方式被挂载 2.1.4、AppArmor与Seccomp Tips AppArmor: https://www.cnblogs.com...(如果未配置的话,容器引擎默认也会启用一些对应的默认配置) 对容器进行加固 特权模式下,这些 AppArmor 或 Seccomp 相关配置将不再生效 2.1.5、cgroup读写 默认模式下,只能以只读模式操作...条件 以root用户身份容器内运行 使用SYS_ADMINLinux功能运行 缺少AppArmor配置文件,否则将允许mountsyscall cgroup v1虚拟文件系统必须以读写方式安装在容器

5.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    浅析Docker运行安全

    " -p 80:80 -d --name apparmor-nginx nginx 2.2 启用 SELinux 配置步骤 宿主机上启用 SELinux,Docker 守护进程启用 SELinux,默认启动容器就开启了...-security-opt=no-new-privileges testnnp 2.6 使用 cgroup 确保容器定义的 cgroup 运行 不使用—cgroup-parent选项 ,控制组 CGroups...5 通过docker run命令中使用—restart标志,您可以指定重启策略,以指定容器启动失败时应如何重启。...—memory-swappiness int 优化容器内存交换 (0 到 100) (默认为 -1) —mount mount 将文件系统挂载附加到容器 —name string 为容器指定一个名称...—read-only 将容器的根文件系统挂载为只读(后面会详细讲到) —restart string 配置容器的重启策略,当容器退出时重新启动(默认为“no”) —rm 当容器退出时自动移除这个容器

    2.8K10

    10大K8s应用安全加固技术

    通常,运行容器不应该在容器文件系统存储有关应用程序的任何状态。这是因为它们可能随时被降速并在集群的其他地方创建新版本。...在这种情况下,你可以工作负载清单设置readOnlyRootFilesystem标志,这将使容器的根文件系统成为只读。这可能会让那些发现应用漏洞后试图容器安装工具的攻击者感到沮丧。...与此设置有关的一个常见问题是如何处理应用程序进程运行时需要的临时文件。处理这些的最佳方法是容器挂载一个 emptyDir 卷,允许文件被写入某个位置,然后容器被销毁时自动删除。...你可以使用运行时的默认配置文件,或者(如AppArmor和SELinux)提供一个自定义的配置文件。 seccomp过滤器可以两个地方重新启用,这取决于你所使用的K8s版本。...与AppArmor一样,创建自定义SELinux策略安全性更高的环境可能很有用,但在大多数情况下,使用默认策略将提供有用的额外安全层。

    63750

    Docker安全入门与实战(一)

    ,第5部分介绍如何使用seccomp和apparmor实现Docker容器系统调用和文件访问的权限控制,第6部分介绍如何使用Hashicorp Vault安全管理docker容器敏感信息。...此功能可用,但默认情况下不启用。 1.使用用户映射 要解决特定容器的用户0宿主系统上等于root的问题,LXC允许您重新映射用户和组ID。...--privileged参数 docker run -it debian8:standard /bin/bash 文件系统限制 挂载容器根目录绝对只读,而且不同容器对应的文件目录权限分离,最好是每个容器宿主上有自己单独分区...如SELinux,AppArmor,GRSEC等,都是Docker官方推荐安装的安全加固组件。 如果先前已经安装并配置过SELinux,那么可以容器使用setenforce 1来启用它。...docker run -it --rm --cap-drop SETUID --cap-drop SETGID 还有种做法,可以考虑挂载文件系统使用nosuid属性来移除掉SUID能力。

    94940

    CAP_SYS_ADMIN之重写devices.allow进行容器逃逸

    环境搭建 执行如下命令启动存在漏洞的容器环境,赋予sys_admin权限的同时,需要关掉安全组apparmor设置 docker run -d -P --cap-add=cap_sys_admin -...-security-opt apparmor=unconfined --name=test nginx:latest 容器使用cdk进行检测,可以看到容器多了CAP_SYS_ADMIN的Capability...#-t指定挂载的类型,-o指定挂载的选项 mkdir /tmp/test && mount -t cgroup -o devices devices /tmp/test 容器内查找容器的ID...node号和文件系统类型,由于容器内的/etc/hosts、/etc/resolv.conf、/etc/hostname这三个文件是默认从宿主机挂载容器的,所以在他们的挂载信息内很容易能获取到主设备号...debugfs -w host 但是通过debugfs进行调试使用write命令将容器的文件复制到宿主机时会出现问题,虽然debugfs界面查看是正常的 write /tmp/authorized_keys

    61230

    【云原生攻防研究】一文读懂runC近几年漏洞:统计分析与共性案例研究

    通过使用runC,开发人员和运维人员可以更加灵活地管理容器,并且可以不同的容器平台之间实现容器的互操作性。 然而,近年来不断披露的漏洞给runC带来了严重的安全风险。...竞争条件的利用:两个漏洞都利用了竞争条件,容器初始化过程通过操作文件系统或路径来达到特权提升或容器逃逸的目的。 2....3.3 挂载错误目标 CVE-2019-16884:libcontainer/rootfs_linux.go 错误地检查挂载目标,因此恶意 Docker 映像可以挂载 /proc 目录上,从而绕过 AppArmor...Procfs的利用:procfs是一个伪文件系统,实际是内核虚拟文件系统。如果攻击者可以控制/proc,则实际的AppArmor和SELinux策略就不会被内核应用。...2) 限制容器权限:采取适当的措施限制容器的权限,例如使用适当的seccomp配置、AppArmor或SELinux策略,以及限制容器的资源访问权限等。

    45210

    云原生系列三:K8s应用安全加固技术

    作者:Rory McCune ​编辑将应用部署到K8s集群时,开发者面临的主要挑战是如何管理安全风险。快速解决此问题的一个好方法是开发过程对应用清单进行安全加固。...通常,运行容器不应该在容器文件系统存储有关应用程序的任何状态。这是因为它们可能随时被降速并在集群的其他地方创建新版本。...在这种情况下,你可以工作负载清单设置readOnlyRootFilesystem标志,这将使容器的根文件系统成为只读。这可能会让那些发现应用漏洞后试图容器安装工具的攻击者感到沮丧。...与此设置有关的一个常见问题是如何处理应用程序进程运行时需要的临时文件。处理这些的最佳方法是容器挂载一个 emptyDir 卷,允许文件被写入某个位置,然后容器被销毁时自动删除。...与AppArmor一样,创建自定义SELinux策略安全性更高的环境可能很有用,但在大多数情况下,使用默认策略将提供有用的额外安全层。

    4.8K21

    CVE-2019-16884:Apparmor Restriction Bypass

    影响范围 runc 1.0.0-rc8 漏洞类型 容器逃逸漏洞 利用条件 影响范围应用 漏洞概述 Docker 19.03. 2-ce和其他产品中使用的runc 1.0.0-rc8允许绕过AppArmor...限制,因为libcontainer/rootfs_linux.go错误地检查装载目标,攻击者可以容器镜像可以声明一个VOLUME并挂载至/proc,之后欺骗runc使其认为AppArmor已经成功应用从而绕过...AppArmor策略,该漏洞由Adam Iwaniuk发现并在DragonSector CTF 2019期间披露,这个CTF题目挑战将一个文件挂载到/flag-,并使用AppArmor策略拒绝访问该文件...Step 4:利用漏洞启用一个恶意镜像,可以读取/flag mkdir -p rootfs/proc/self/{attr,fd} touch rootfs/proc/self/{status,attr...docker run --rm --security-opt "apparmor=no_flag" -v /tmp/flag:/flag apparmor-bypass cat /flag Al1ex

    59020

    容器安全系列Ⅴ】- Linux强制访问控制:AppArmor 和 SELinux

    在这篇文章,我们将讨论 AppArmor 和 SELinux 如何在我们之前讨论过的其他隔离层之外提供额外的限制。...安装了 AppArmor 的系统上,我们可以开始探索如何使用 sudo aa-status 命令来使其发挥作用。这将显示有关 AppArmor 配置和状态的信息。    ...现在我们已经了解了 AppArmor 的基础知识,让我们看看可以使用自定义 AppArmor 配置文件执行哪些操作,以及如何将其应用于 Docker 容器。...,该容器将我们的主目录挂载容器。...因此,组织通常需要评估其风险状况,以确定使用它们是否有意义。本系列的下一部分,我们将介绍使用 seccomp 配置文件进行低级容器强化的另一种选择。

    12310

    如何保护K8S的Deployment资源对象

    Kubernetes ,安全性有两个方面:集群安全性和应用程序安全性。在这篇文章,我们将探讨如何保护Kubernetes Deployment资源类型和应用程序的安全。... Kubernetes 1.6 及更高版本,您可以通过设置来选择不为容器的服务帐户自动挂载 API 令牌。 automountServiceAccountToken: false....seccompProfile:容器使用的 secomp 选项;过滤进程的系统调用 readOnlyRootFilesystem:将容器的根文件系统挂载为只读;默认为false AllowPrivilegeEscalation...您可以使用文字值或文件创建 Secret,然后将它们挂载到 pod 。不要将此类信息存储容器映像和 Git 存储库。...使用安全上下文来实现各种技术,例如防止容器特权模式下以 root 用户身份运行,使用 SELinux 或 AppArmor 配置文件等等。

    72020

    CAP_SYS_ADMIN之利用notify-on-release进行容器逃逸

    容器具有SYS_ADMIN的Capability的话,则可以进行容器逃逸。它允许大量的特权操作,包括mount文件系统,交换空间,还有对各种设备的操作以及系统调试相关的调用。...环境搭建 执行如下命令启动存在漏洞的容器环境,赋予sys_admin权限的同时,需要关掉安全组apparmor设置 docker run -d -P --cap-add=cap_sys_admin -...-security-opt apparmor=unconfined --name=test nginx:latest 容器使用cdk进行检测,可以看到容器多了CAP_SYS_ADMIN的Capability...容器挂载宿主机cgroup的memory #将cgroup进行挂载 mkdir /tmp/test && mount -t cgroup -o memory cgroup /tmp/test #接着我们挂载的目录下再创建一个子进程...sh -c "echo \$\$ > /tmp/test/x/cgroup.procs" 也可以使用CDK来执行命令。

    69920

    035.集群安全-Pod安全

    ReadOnlyRootFilesystem:要求容器运行的根文件系统(rootfilesystem)必须是只读的。...MustRunAsNonRoot:必须以非root用户运行容器,要求Pod的securityContext.runAsUser设置一个非0的用户ID,或者镜像USER字段设置了用户ID,建议同时设置...Pod和容器的安全策略可以Pod或Container的securityContext字段中进行设置,如果在Pod和Container级别都设置了相同的安全类型字段,容器使用Container级别的设置...supplementalGroups:允许容器使用的其他用户组ID。 sysctls:设置允许调整的内核参数。 Container级别可以设置的安全策略类型如下。...解释:spec.securityContext设置了如下参数。 runAsUser=1000:所有容器都将以User ID 1000运行程序,所有新生成文件的User ID也被设置为1000。

    55511

    以 CentOS7.6 为基础镜像的 Docker 容器通过 NFS 将内存挂载成高速硬盘使用

    CentOS7.6 为基础镜像的 Docker 容器通过 NFS 将内存挂载成高速硬盘使用 文章目录 以 CentOS7.6 为基础镜像的 Docker 容器通过 NFS 将内存挂载成高速硬盘使用...4.2 拓展知识 4.2.1 把内存挂载成高速硬盘有 tmpfs 和 ramdisk 两种方案 4.2.2 Docker 容器的互联 4.2.3 容器的其他 NFS 解决方案 一 背景 这是最近项目中遇到的一个问题...已知的部署 docker 容器云上某个应用,读写非常频繁,对磁盘的性能要求极高,但是又不能在同一个容器内进行高强度读写。...通过对问题的分析,我采取了以下解决方案: 通过把内存挂载成硬盘,可以大幅度提高磁盘的性能; 由于不能在同一个容器内进行读写,可以使用 NFS 来解决; 允许使用特权模式,可以容器内部挂载磁盘...4.2.3 容器的其他 NFS 解决方案 nfs-ganesha 也是 NFS 容器的一个比较流行的解决方案。

    2.1K30

    十大 Docker 最佳实践,望君遵守!!

    文件系统和卷设置为只读 Docker 中一个具有安全意识的有用功能是使用只读文件系统运行容器。这减少了攻击向量,因为容器文件系统不能被篡改或写入,除非它对其文件系统文件和目录具有明确的读写权限。...以下是一些众所周知的模块: Seccomp:用于允许/禁止容器运行的系统调用 AppArmor使用程序配置文件来限制单个程序的功能 SELinux:使用安全策略,这是一组规则,告诉 SELinux...为此,您必须首先将新配置文件加载到 AppArmor 以与容器一起使用 apparmor_parser -r -W /path/to/custom_profile 现在使用自定义配置文件运行容器 docker...run --rm -it --security-opt apparmor=custom_profile hello-world 请参阅此 wiki 以了解如何创建 AppArmor 配置文件。...有多种方法可以为容器设置用户: 运行容器使用-u标志: docker run -u 1001 nobody Docker 守护程序启用用户命名空间支持 ( --userns-remap=default

    92520

    04 . Docker安全与Docker底层实现

    禁止访问一些文件系统的操作,比如创建新的设备,修改文件属性等. # 4. 禁止模块加载. 这样,就算攻击者容器取得了root权限,也不能获得本地主机的较高权限,能进行的破坏也有限....使用一些有增强安全特性的容器模板,比如带AppArmor的模板和Redhat带Selinux策略的模板.这些模板提供了额外的安全特性. 用户可以自定义访问控制机制来定制安全策略....小结 总体来说,Docker容器还是十分安全的,特别是容器使用root权限来运行进程的话....另外,用户可以使用现有工具,比如Apparmor,SELinux,GRSEC来增强安全性,甚至自己在内核实现更复杂的安全机制....联合文件系统 联合文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,他支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统.

    97640

    LSM一瞥

    如果你使用过SELinux或AppArmor,其实就已经用过LSM了。甚至,在你使用的Linux发行版本或Android系统之上,也使用了LSM。...还有一些LSM模块开发,比如SARA 和 KRSI,也许不久就会合入Linux内核源码。如果你是关注安全的系统或软件工程师,理解为什么有这么多的LSM模块是非常值得的。...SELinux基于属性实现,将文件的安全属性存储文件系统的扩展文件属性。比如,使用ls -Z /bin/bash文件的安全属性,如下所示。...SELinux使用扩展属性实现的副作用是,对于那些不支持扩展属性的文件系统对象无法保护,比如挂载NFSv4版本的NFS文件系统。...当设置lockdown为保护机密性时,所有的完整性保护都被启用,另外还要禁止的功能有:用户空间从正在运行的内核中提取潜在的机密信息,例如/proc/kcore访问,使用kprobe和bpf读取内核RAM

    1.2K30

    Security Profiles Operator发布v0.4.0

    这个可选特性可以通过将 enableBpfRecorder 设置为 true 来启用。这导致运行一个专用容器,该容器每个节点上附带一个自定义 bpf 模块来收集容器的系统调用。...这个版本从使用来自个人仓库的 selinuxd 容器,转到使用位于我们团队 quay.io 的镜像[4]。selinuxd 仓库也移到了containers 的 GitHub 组织[5]。...请注意,selinuxd 动态链接到 libsemanage,并从节点挂载 SELinux 目录,这意味着 selinuxd 容器必须运行与集群节点相同的发行版。...要启用 AppArmor 支持,请使用 SPO 分析的 enableAppArmor 功能门开关。然后使用我们的 apparmor 示例跨集群部署第一个分析文件。...度量 操作器现在暴露度量,我们新的度量文档[9]详细描述了这些度量。

    39810

    详细齐全!Docker常用基本命令

    、输出和错误流附加到正在运行的容器 build 从Dockerfile构建一个映像 commit 从容器的更改创建一个新映像 cp 容器和本地文件系统之间复制文件/文件夹 create...创建一个新容器 diff 检查容器文件系统上文件或目录的更改 events 从服务器获取实时事件 exec 正在运行的容器运行命令 export 将容器文件系统导出为tar...将映像或存储库推入注册表 rename 重命名一个容器 restart 重新启动一个或多个容器 rm 移除一个或多个容器 rmi 删除一个或多个图像 run 容器运行命令...save 将一个或多个图像保存到tar存档文件(默认情况下流到STDOUT) search Docker集线器搜索图像 start 启动一个或多个停止的容器 stats 显示容器资源使用统计数据的实时流...stop 停止一个或多个正在运行的容器 tag 创建一个引用SOURCE_IMAGE的标记TARGET_IMAGE top 显示容器的运行进程 unpause 一个或多个容器暂停所有进程

    1.4K30

    Docker

    ,第5部分介绍如何使用seccomp和apparmor实现Docker容器系统调用和文件访问的权限控制,第6部分介绍如何使用Hashicorp Vault安全管理docker容器敏感信息。...此功能可用,但默认情况下不启用。 1.使用用户映射 要解决特定容器的用户0宿主系统上等于root的问题,LXC允许您重新映射用户和组ID。...--privileged参数 docker run -it debian8:standard /bin/bash 复制 文件系统限制 挂载容器根目录绝对只读,而且不同容器对应的文件目录权限分离,最好是每个容器宿主上有自己单独分区...如SELinux,AppArmor,GRSEC等,都是Docker官方推荐安装的安全加固组件。 如果先前已经安装并配置过SELinux,那么可以容器使用setenforce 1来启用它。...docker run -it --rm --cap-drop SETUID --cap-drop SETGID 复制 还有种做法,可以考虑挂载文件系统使用nosuid属性来移除掉SUID能力。

    1.1K20
    领券