首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏嵌入式ARM和Linux

    LSM vs SECCOMP

    快速SECCOMP入门 为什么不能只使用LSM? 为什么不能只使用seccomp? 结论 假设你已经了解了LSM内核安全模块,也知道如何使用它们加固系统的安全。 但是,你还知道了另一种工具seccomp(Linux安全计算)。你可能非常想知道,LSM和Seccomp有什么区别?为什么不能将Seccomp设计为LSM模块?什么时候使用Seccomp? ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &prog); 上面的代码创建了一个seccomp过滤器。 重申一遍:seccomp减少攻击面。 为什么不能只使用seccompseccomp无法对LSM采用的相同策略进行建模。 最接近的方法是使用systemd的系统调用过滤器或者在容器中使用seccomp过滤器(比如docker) 即使使用systemd的系统调用过滤器和docker seccomp策略,seccomp过滤器的管理最好还是由应用程序开发者实现

    1.1K30编辑于 2022-12-20
  • 来自专栏皮振伟的专栏

    seccomp引起的SIGSYS问题 ​

    在一次启动中,qemu发生了错误:qemu-system-x86_64: network script /etc/qemu-ifup failed with status 159 问题的原因是因为seccomp 分析 实例代码 构造一段实例代码,在父进程中初始化了seccomp,禁用了execve这个syscall,在子进程中尝试调用execve运行其他的程序。 ("seccomp_rule_add fail\n"); return 0; } ret = seccomp_load(ctx); if (ret < 0) { printf("seccomp_load fail\n"); return 0; } seccomp_release(ctx); pid = 在执行到44行的execve的发生coredump,这也证实了上文配置的seccomp生效。

    2.7K10发布于 2019-07-30
  • 来自专栏运维开发王义杰

    linux容器之Apparmor和Seccomp

    Apparmor和Seccomp的概念和特点。 Apparmor和Seccomp都是Linux内核的安全模块,可以用来限制容器或进程的访问权限和资源使用。 如强制模式(阻止违反策略的行为)、投诉模式(记录违反策略的行为)和不可知模式(不执行任何策略) 支持继承和堆叠,可以在一个容器或进程中应用多个策略 支持能力和网络控制,可以限制容器或进程的特权操作和网络访问 Seccomp 如严格模式(只允许read、write、exit和sigreturn四个系统调用)和过滤模式(允许自定义过滤规则)1 支持多层过滤,可以在一个容器或进程中应用多个过滤规则1 以上是关于Apparmor和Seccomp ,如果您想要了解更多细节,您可以访问官方网站(https://apparmor.net/ 和 https://www.kernel.org/doc/html/latest/userspace-api/seccomp_filter.html

    57240编辑于 2023-08-21
  • 来自专栏网络安全

    【容器安全系列Ⅵ】- Linux seccomp隔离

    Syscalls 和 seccomp 概述     Seccomp 过滤器是一种限制进程可以执行哪些 Linux 系统调用的方法。系统调用本质上是用户空间程序和 Linux 内核之间的接口。 Docker 容器中的 Seccomp 筛选器     作为 Docker 实施的默认限制集的一部分,seccomp 过滤器将应用于任何新容器。 此系统调用就会被 Docker 的 seccomp 过滤器阻止。     为了创建这种 seccomp 过滤,Docker 创建了一个调用允许列表,然后阻止了列表中未列出的任何系统调用。 创建自定义 seccomp 筛选器     尽管 Docker 默认的 seccomp 配置文件提供了良好的隔离策略,但在某些情况下,需要更加个性化的限制。 在这些情况下,您将需要一个自定义 seccomp 配置文件。     对于 Docker,您可以指定 JSON 格式的 seccomp 配置文件。

    73710编辑于 2024-09-07
  • 来自专栏CNCF

    浅谈Linux SECCOMP安全机制在容器中的使用

    Linux自身安全机制之SECCOMP 01 SECCOMP的由来 Seccomp是 "secure computing" 的 缩写。是Linux内核2.6.12版本(2005年3月8日)中引入。 > void configure_seccomp() { printf("Configuring seccomp\n"); prctl(PR_SET_SECCOMP, SECCOMP_MODE_STRICT 升级Seccomp-BPF 直到2012年7月12日Linux 3.5内核版本中, 引入seccomp第二种匹配模式:SECCOMP_MODE_FILTER。 返回值 SECCOMP_RET_ALLOW - 允许继续使用系统调用 SECCOMP_RET_KILL - 终止系统调用 SECCOMP_RET_ERRNO - 返回设置的errno值 SECCOMP_RET_TRACE 的使用 容器中 seccomp的使用,本质是对Seccomp-BPF的再封装使用;通过简单的配置文件来达快速设置多个容器的seccomp安全应用(以下全部以docker为例)。

    8.3K21发布于 2021-03-15
  • 来自专栏Android群英传

    Android O 中的 seccomp 过滤器

    seccomp 过滤器 Android O 包含一个已被安装到 zygote (所有 Android 应用均派生自该进程) 中的 seccomp 过滤器。 在测试时切换 seccomp 过滤器 除了记录错误,seccomp 安装程序在运行 userdebug 和 eng builds 的设备上遵从 setenforce,这将允许您测试 seccomp 是否引发了某个问题 由于您无法从一个正在运行的进程中移除 seccomp 策略,所以您必须重新启动 shell 以使该选项生效。 设备制造商 由于 Android O 在 //bionic/libc/seccomp 包含相关的 seccomp 过滤器,因此设备制造商无需进行任何额外的实现。 相关源码 SYSCALLS.TXT SECCOMP_BLACKLIST.TXT SECCOMP_WHITELIST.TXT

    2.6K30发布于 2018-07-20
  • 来自专栏运维开发王义杰

    使用Apparmor和Seccomp来增强容器的安全性

    Docker支持使用Apparmor和Seccomp来增强容器的安全性。 中找到,可以根据需要修改和加载 使用自定义的Apparmor策略,该策略可以在主机上创建和加载,然后在运行容器时指定–security-opt apparmor=<profile_name>选项 使用Seccomp 的方法有: 使用Docker提供的默认Seccomp策略,该策略会在运行容器时自动应用,除非指定了–security-opt seccomp=unconfined选项 使用Docker提供的示例Seccomp 策略,该策略可以在https://github.com/moby/moby/blob/master/profiles/seccomp/default.json中找到,可以根据需要修改和保存 使用自定义的 Seccomp策略,该策略可以在主机上创建和保存为JSON文件,然后在运行容器时指定–security-opt seccomp=<file_name>选项 以上是关于Apparmor和Seccomp在Docker

    1K40编辑于 2023-08-21
  • 来自专栏charlieroro

    docker 安全

    下面简单了解下内核安全组件seccomp和apparmor seccompseccomp主要用于限制容器程序可以使用的系统调用,可以使用如下方式查看当前系统是否支持seccomp # grep CONFIG_SECCOMP = /boot/config-$(uname -r) CONFIG_SECCOMP=y seccomp使用profile 白名单机制来配置容器程序的权限,在运行容器时会使用默认配置,当然也可以使用--security-opt seccomp默认情况下会block大约44个系统调用。 使用docker info可以看到如下信息,默认会启动seccomp且使用默认profile Security Options: seccomp Profile: default 下面为使用自定义 :latest /bin/sh 在docker的go源码中定义了seccomp支持的平台以及action和operation,源码总对seccomp的结构体定义如下,包含默认动作,使用的平台集以及系统调用集

    1.2K20发布于 2020-03-24
  • 来自专栏皮振伟的专栏

    [qemu][seccomp]虚拟化安全sandbox技术分析

    分析: 1, seccomp support is disabled ? 在编译的时候,没有打开CONFIG_SECCOMP编译选项。 ? 从configure文件上来看,如果安装了libseccomp就是默认打开的;再或者就是--enable-seccomp和--disable-seccomp来控制。 用来保存seccomp的规则。 b,bpf生成。用来生成bpf代码。 c,使用syscall加载到kernel。 prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, program); 4, PR_SET_SECCOMP ? 看一段man page,大意是说通过prctl的 PR_SET_SECCOMP可以限制进程使用syscall。更多的话,需要参考内存文档。

    3.5K10发布于 2018-07-23
  • 来自专栏伪架构师

    介绍一个小工具:Security Profiles Operator

    RBAC、Networkpolicy、SecurityContext 等等,种种措施中,像我这样基础不牢的 YAML 工程师最头大的可能就要数 SecurityContext 里面的 SELinux、Seccomp 目前支持的功能矩阵如下: 功能 Seccomp SELinux AppArmor Profile CRD Yes Yes Yes ProfileBinding Yes No No Deploy profiles 借助 SPO 传递 Seccomp 创建一个 Seccomp Profile,其中加入了对系统调用的审计日志: apiVersion: security-profiles-operator.x-k8s.io : SCMP_ACT_LOG Apply 之后 kubectl get sp seccomp-profile-sample -o yaml ,会发现状态如下: metadata: ... bash-5.0# cat seccomp-profile-sample.json {"defaultAction":"SCMP_ACT_LOG"} 接下来执行一下 CURL 点什么,登录节点看看日志

    92210编辑于 2022-03-31
  • 来自专栏云微的一点分享

    操作系统大赛:基于 eBPF 的容器监控工具 Eunomia 初赛报告(容器信息收集、安全规则与 seccomp

    4.7. seccomp: syscall准入机制 Seccomp(全称:secure computing mode)在2.6.12版本(2005年3月8日)中引入linux内核,将进程可用的系统调用限制为四种 Seccomp来源于Cpushare项目,Cpushare提出了一种出租空闲linux系统空闲CPU算力的想法,为了确保主机系统安全出租,引入seccomp补丁,但是由于限制太过于严格,当时被人们难以接受 尽管seccomp保证了主机的安全,但由于限制太强实际作用并不大。 在实际应用中需要更加精细的限制,为了解决此问题,引入了Seccomp – Berkley Packet Filter(Seccomp-BPF)。 Seccomp-BPF是Seccomp和BPF规则的结合,它允许用户使用可配置的策略过滤系统调用,该策略使用Berkeley Packet Filter规则实现,它可以对任意系统调用及其参数(仅常数,无指针取消引用

    57020编辑于 2023-02-24
  • 来自专栏LINUX阅码场

    分歧还是共存?详解Android内核安全

    TSYNC功能可以实现从多线程程序中使用Seccomp-BPF。这种能力仅限具有seccomp支持上游的架构:ARM、ARM64、x86 和 x86_64。 : create internal mode-setting function (seccomp:创建内部 mode-setting函数),作者:Kees Cook 6.b8a9cff seccomp setting routines (seccomp:拆分模式设置例行程序),作者:Kees Cook 8.e985fd4 seccomp: add “seccomp” syscall (seccomp seccomp: allow mode setting across threads (seccomp:允许跨线程模式设置),作者:Kees Cook 13.f14a5db seccomp: implement SECCOMP_FILTER_FLAG_TSYNC (seccomp:实施 SECCOMP_FILTER_FLAG_TSYNC),作者:Kees Cook 14.9ac8600 seccomp:

    2K30编辑于 2022-09-28
  • 来自专栏云计算运维

    为什么 strace 在 Docker 中不起作用?

    假设 3:ptrace 系统的调用被 seccomp-bpf 规则阻止了 我也知道 Docker 使用 seccomp-bpf 来阻止容器进程运行许多系统调用。 让我们来验证一下这个假设 —— 如果我们禁用了所有的 seccomp 规则,strace 能在 Docker 容器中工作吗? 在 containerd 的 seccomp 实现中,在 contrib/seccomp/seccomp/seccomp_default.go 中,有一堆代码来确保如果一个进程有一个能力,那么它也会(通过 seccomp 规则)获得访问权限,以使用与该能力相关的系统调用。 /seccomp.go 和 默认的 seccomp 配置文件中,也有一些其他的代码似乎做了一些非常类似的事情,所以有可能就是这个代码在做这个事情。

    11.2K30发布于 2021-09-18
  • 来自专栏小樱的经验随笔

    /var/lib/gems/2.5.0/gems/seccomp-tools-1.3.0/lib/seccomp-tools/dumper.rb:125: warning: Insecure worl

    /var/lib/gems/2.5.0/gems/seccomp-tools-1.3.0/lib/seccomp-tools/dumper.rb:125: warning: Insecure world writable dir /home/python/.local in PATH, mode 040777 解决方案 问题描述: 在安装完 seccomp-tools 工具想使用的时候报错了如下错误:

    62150发布于 2020-01-15
  • 来自专栏sunsky

    安装elasticsearch 5.x, 6.x 常见问题(坑)的解决

    WARN ][o.e.b.JNANatives ] unable to install syscall filter: java.lang.UnsupportedOperationException: seccomp unavailable: requires kernel 3.5+ with CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER compiled in at org.elasticsearch.bootstrap.Seccomp.linuxImpl (Seccomp.java:349) ~[elasticsearch-5.0.0.jar:5.0.0] at org.elasticsearch.bootstrap.Seccomp.init(Seccomp.java and fix your configuration or disable system call filters at your own risk   原因:   这是在因为Centos6不支持SecComp

    86140发布于 2020-08-20
  • 来自专栏LEo的网络日志

    09 Jan 2022 在docker上启用open policy agent

    policies/authz.rego package docker.authz default allow = false allow { not deny } deny { seccomp_unconfined } seccomp_unconfined { # This expression asserts that the string on the right-hand side is equal input.Body.HostConfig.SecurityOpt[_] == "seccomp:unconfined" } 该策略会拒绝disable seccomp的容器运行,策略文件使用rego语言定义规则 测试策略是否生效 $ docker run --security-opt seccomp:unconfined hello-world docker: Error response from daemon 可以看到,如果运行的容器没有启用seccomp,就会无法运行。还可以定义其他规则,比如检查user的权限等,都可以通过策略文件实现精确控制。

    77320编辑于 2023-10-17
  • 来自专栏WindCoder

    ELK实时日志管理-报错与解决

    8.附录2-报错与解决 8.1 Elasticsearch 8.1.1 CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER are needed 错误提示: java.lang.UnsupportedOperationException : seccomp unavailable: CONFIG_SECCOMP not compiled into kernel, CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER

    1.6K30发布于 2018-09-19
  • 来自专栏JAVA烂猪皮

    ES系列(一):编译准备与server启动过程解析

    (VALID, BOGUS) ret = linux_syscall(arch.seccomp, SECCOMP_SET_MODE_FILTER, bogusArg); = -1) { throw new UnsupportedOperationException("seccomp unavailable: seccomp(SECCOMP_SET_MODE_FILTER } } // check for SECCOMP_MODE_FILTER if (linux_prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER (arch.seccomp, SECCOMP_SET_MODE_FILTER, SECCOMP_FILTER_FLAG_TSYNC, new NativeLong(pointer)) ! (SECCOMP_SET_MODE_FILTER): {}, falling back to prctl(PR_SET_SECCOMP)

    4.2K50发布于 2021-05-11
  • 来自专栏有价值炮灰

    Android/Linux Root 的那些事儿

    Seccomp seccomp 是 secure computing 的缩写,准确来说不算是访问控制,但也能对进程起到限制作用。其设计的初衷是为了减少内核的攻击面,限制目标进程对系统调用的访问范围。 随后在 2007 年,引入了一个 prctl 系统调动的新操作 PR_SET_SECCOMP,使用 SECCOMP_MODE_STRICT 参数,并且去除了 /proc/PID/seccomp 的接口。 后来,内核进行了一系列重构,添加了新的 seccomp 系统调用并去除了 prctl 的对应接口,从这个时期开始,seccomp 就使用 BPF 程序来控制系统调用以及调用参数的限制。 从系统调用层面,主要通过 seccomp(2) 来操作进程的 seccomp 状态: int seccomp(unsigned int operation, unsigned int flags, void 、seccomp_load 等接口方便系统管理员的策略开发。

    1.6K50编辑于 2023-02-12
  • 来自专栏CNCF

    Security Profiles Operator发布v0.4.0

    其中一个亮点是,我们现在能够使用操作器的日志丰富器记录 seccomp 和 SELinux 分析文件。 seccomp 相关改进 除了基于日志丰富器的记录,我们现在提供了一个替代方式,使用 ebpf 记录 seccomp 分析文件。 顺便说一下,我们现在也将记录器主机的 seccomp 概要架构添加到已记录的概要文件中。 我们还将 seccomp 概要文件 API 从 v1alpha1 升级到 v1beta1。 唯一改变的是,seccomp profile type Architectures 现在指向[]Arch,而不是[]*Arch。 从用户的角度来看,它的工作原理和记录 seccomp 分析文件差不多。

    53510编辑于 2021-12-22
领券