kubernets CKS 3.3 Seccomp 限制容器进程系统调用

Seccomp BPF 详细解析 Secommp (SECure COMPuting) 是 Linux 内核 2.6.12 版本引入的安全模块,主要是用来限制某一进程可用的系统调用 (system call)。它最初被用于 cpushare 这个项目,让人们可以出租自己空闲的 cpu cycle 来执行 untrusted code。这个 feature 本身并不是一个沙盒 (sandbox),它只是一种减少 Linux 内核暴露的机制,是构建一个安全的沙盒的重要组成部分。 阅读详情

对于 Linux 来说,用户层一切资源相关操作都需要通 过系统调用来完成;系统调用实现技术层次上解耦, 内核只关心系统调用API的实现,而不必关心谁调用的。
在这里插入图片描述

Seccomp(Secure computing mode) 是一个 Linux 内核安全模块,可用于应用进程允许使用的系统调用。
容器实际上是宿主机上运行的一个进程,共享宿主机内核,如果所有容器都具有任何系统调用的能力,那么容器如果被入侵,就很轻松绕过容器隔离更改宿主机系统权限或者进入宿主机。 这就可以使用Seccomp机制限制容器系统调用,有效减少攻击面。
Linux发行版内置:CentOS、Ubuntu

3.3.1 Seccomp在K8S配置

Seccomp在Kubernetes 1.3版本引入,在1.19版本成为GA版本,因此K8s中使用Seccomp可以通过以下两种方式:
• 1.19版本之前

annotations: 
  seccomp.security.alpha.kubernetes.io/pod: "localhost/<profile>" 

• 1.19版本+

apiVersion: v1 
kind: Pod 
metadata: 
  name: hello-seccomp 
spec: 
  securityContext: 
    seccompProfile: 
      type: Localhost 
      localhostProfile: <profile> # Pod所在宿主机上策略文件名,默认目录: /var/lib/kubelet/seccomp 
  containers: 
    ...

示例:禁止容器使用chmod

mkdir /var/lib/kubelet/seccomp
vi /var/lib/kubelet/seccomp/chmod.json
{
  "defaultAction": "SCMP_ACT_ALLOW",
  "syscalls": [
    {
      "names": [
      "chmod"
    ],
    "action": "SCMP_ACT_ERRNO"
    } 
  ] 
}

seccomp基本配置文件包括三个元素:
• defaultAction:在syscalls部分未定义的任何 系统调用默认动作为允许
• syscalls
• names 系统调用名称,可以换行写多个
• SCMP_ACT_ERRNO 阻止系统调用

3.3.2 docker默认容器进程系统调用限制

大多数容器运行时都提供一组允许或不允许的默认系统调用。通过使用 runtime/default 注释 或将
Pod 或容器的安全上下文中的 seccomp 类型设置为 RuntimeDefault,可以轻松地在 Kubernetes
中应用默认值。
Docker默认配置说明:https://docs.docker.com/engine/security/seccomp/

3.3.3 实例

在k8s21-worker01创建目录,并创立chmod.json文件:

[root@k8s21-worker01 ~]# mkdir /var/lib/kubelet/seccomp
[root@k8s21-worker01 ~]# vi /var/lib/kubelet/seccomp/chmod.json   
[root@k8s21-worker01 ~]# cat /var/lib/kubelet/seccomp/chmod.json
{
  "defaultAction": "SCMP_ACT_ALLOW",
  "syscalls": [
    {
      "names": [
      "chmod"
    ],
    "action": "SCMP_ACT_ERRNO"
    } 
  ] 
}

生成一个创建pod的yaml文件

kubectl run busybox0708 --image=busybox:1.28.4 --dry-run="client" -o yaml -- sleep 3600 > seccomp.yaml 

修改配置seccomp.yaml ,强制调度到k8s21-worker01,并配置Seccomp相关配置

[root@k8s21-master01 ~]# cat seccomp.yaml                         
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: busybox0708
  name: busybox0708
spec:
  securityContext: 
    seccompProfile: 
      type: Localhost 
      localhostProfile: chmod.json
  nodeName: k8s21-worker01
  containers:
  - args:
    - sleep
    - "3600"
    image: busybox:1.28.4
    name: busybox0708
  restartPolicy: Always
  [root@k8s21-master01 ~]# kubectl apply -f seccomp.yaml 

进入pod执行chmod, 发现没有权限

[root@k8s21-master01 ~]# kubectl exec -it busybox0708 -- sh
/ # 
/ # 
/ # touch /root/wangjinxiong.txt
/ # chmod 777 /root/wangjinxiong.txt
chmod: /root/wangjinxiong.txt: Operation not permitted
/ # 
LINUX SECCOMP模块介绍 Seccomp是 "secure computing" 的 缩写。Linux内核2.6.12版本(2005年3月8日)引入。是linux一个安全模块,用于限制程序系统调用;我们来看下例子。 阅读详情

相关推荐

Docker与seccomp之间的关系

在本文中,我们介绍了Docker和seccomp的概念,并探讨了它们之间的联系。通过配置seccomp规则,可以限制容器内应用程序能够执行的系统调用,从而提高整体系统的安全性。Docker是一种用于构建、发布和运行应用程序的开放平台,而seccomp则是一个安全机制,用于限制进程在操作系统上执行的系统调用。因此,在使用seccomp时,开发人员需要对应用程序进行全面的分析和测试,确保规则的正确性和有效性。通过定义适当的规则,可以防止容器内的应用程序执行潜在的危险操作,从而提高容器的安全性。

DevWizard的博客 350

kubernetes--分析容器系统调用:Sysdig

Sysdig是一个非常强大的系统监控分析和故障排查工具。汇聚strace+tcpdump+iftop+lsof工具功能为一身。sysdig除了能获取系统资源利用率、进程、网络连接、系统调等信息,还具备了很强的分析能力,例如:1.按照CPU使用率对进程排序2.按照数据包对进程排序3.打开最多文件描述符进程4.查看进程打开了哪些文件5.查看进程HTTP请求报文6.查看机器上容器列表及资源使用情况项目地址:https://github.com/draios/sysdig。

m0_57911290的博客 3586

Docker与seccomp:保护Docker容器的系统调用

Docker和seccomp之间有着密切的联系,seccomp为Docker容器提供了一种保护机制,通过限制系统调用的使用来减少攻击面。它提供了一个轻量级的虚拟化环境,使得应用程序可以在独立的容器中运行,而不会干扰主机操作系统或其他容器。通过使用seccomp,可以在容器中限制特定系统调用的使用,从而减少潜在的攻击面。下面我们将探讨Docker和seccomp之间的联系,并提供一些示例代码来演示如何在Docker容器中使用seccomp。通过编写类似的规则,可以根据实际需求限制容器中的系统调用。

ByteWhizX的博客 590

kubernetes---Seccomp限制容器进程系统调用

Seccomp 代表安全计算(Secure Computing)模式,自 2.6.12 版本以来,一直是 Linux 内核的一个特性。它可以用来沙箱化进程的权限,限制进程从用户态到内核态的调用。Kubernetes 能使你自动将加载到节点上的 seccomp 配置文件应用到你的 Pod 和容器。识别你的工作负载所需要的权限是很困难的。

m0_57911290的博客 1万+

LeRobot SO-ARM100 学习笔记(2) diffusion module

对 lerobot 中的 diffusion policy 进行基本的代码阅读

mikhailbran的博客 1588

Debian 12 安装nodejs(包括node、npm、npx、yarn、pnpm、cnpm、bun)

【代码】Debian 12 安装nodejs。

mirana的专栏 8032

Docker 容器隔离关键技术:Seccomp

它通过限制系统调用的范围,减少攻击面,提升容器的隔离性。尽管默认启用了标准策略,但 Seccomp 可以根据需求进行自定义,进一步加强容器的安全性。是一种内核安全机制,用来限制容器内的程序可以调用哪些系统调用(Syscalls)。通过列清单的方式,Seccomp 可以指定哪些系统调用被允许、被拒绝或需要特殊处理,从而增强容器的安全性。特权容器的权限设计初衷是为了绕过所有安全限制,因此它会自动禁用 Seccomp。由于特权容器拥有宿主机级别的权限,攻击者可以轻易利用容器中的漏洞获取宿主机的控制权。

pumpkin84514的博客 1786

4.7W防削顶单声道D类音频功率放大器HT6872介绍

HT6872是一款低EMI,防削顶失真,单声道免滤波D类音频功率放大器。在6.5V电源,10%THD+N,4Ω负载条件下,输出4.71W功率,在各类音频终端应用中维持高效率并提供AB类放大器的性能。

weichen_78的博客 4703

kubernets CKS内容及题库

kubernets CKS认证及考题教程,包含知识点学习及考题分析,帮助广大网友通过CKS考试

cloud_engineer的博客 6602

体验灵雀云-创建基于Docker的云服务

今天体验了一下灵雀云,创建了第一个基于Docker的云服务。 1.登录灵雀云 2.开始使用 登录之后,从"控制台"进入操作界面,开始创建服务。 首先需要选择一个镜像。灵雀云已经为您提供了一些常用的镜像列表。请在“常用镜像”列表中,选择“其它”,然后找到“alauda/hello-world”镜像,点击它右侧的“选择”按钮,进入服务参数配置页面。 选择完要创建的

tomcat的专栏 3236

深度揭秘!用 DeepSeek 打造超智能电商客服系统全流程

摘要:本文围绕使用 DeepSeek 开发电商智能客服展开详细教程。先介绍前期准备,包括了解 DeepSeek、获取 API 权限与搭建开发环境。接着阐述数据收集预处理,结合电商业务逻辑实现商品与订单信息查询。还提及优化性能的方法,如模型微调、多轮对话管理和错误处理。然后说明了基于 Web 和云平台的部署方案。最后强调持续监控和改进的重要性,通过设置监控指标、收集分析用户反馈来优化系统,助力开发者打造高效电商智能客服。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 7815

kubernets CKS 4.1 Pod安全上下文(一)

安全上下文(Security Context):K8s对Pod和容器提供的安全机制,可以设置Pod特权和访问控制。

cloud_engineer的博客 1253

vue2学习笔记2-老规矩,从Hello World开始,了解Vue实例和模板

想要把“Hello,World”放置在页面上,首先需要准备一个HTML的块级元素div,来承接内容。

l_q_l的专栏 1259

CKS-系统强化-SECcomp(sysdig)

linux kernel从2.6.23版本开始所支持的一种安全机制 在Linux系统里,大量的系统调用(systemcall)直接暴露给用户态程序。但是,并不是所有的系统调用都被需要,而且不安全的代码滥用系统调用会对系统造成安全威胁。通过seccomp,我们限制程序使用某些系统调用,这样可以减少系统的暴露面,使程序进入一种“安全”的状态。官方说明 https://www.kernel.org/doc/Documentation/prctl/seccomp_filter.txt我们系统有300多个系

weixin_45081220的博客 526

软件设计师---钉子户

软件设计师---钉子户

我从不打没有准备的仗! 2万+

Ultralytics YOLOv8 英伟达™ Jetson®处理器部署

英伟达™(NVIDIA®)Jetson 是一系列嵌入式计算板卡,旨在为边缘设备带来加速的 AI(人工智能)计算。这些小巧而功能强大的设备围绕英伟达™(NVIDIA®)的GPU架构打造,能够直接在设备上运行复杂的人工智能算法和深度学习模型,而无需依赖云计算资源。Jetson 板卡通常用于机器人、自动驾驶汽车、工业自动化和其他需要在本地以低延迟和高效率执行人工智能推理的应用中。此外,这些板卡基于 ARM64 架构,与传统 GPU 计算设备相比运行功耗更低。英伟达™(NVIDIA®)JetPack SDK。

机器人控制与仿真应用 3878

使用 pam module 与 seccomp 技术禁止用户加载内核模块

在从 manual 中学习 seccomp 技术这篇文章中,我谈及了使用 seccomp 让用户无法加载内核模块的功能,在本文中尝试写个简单的 demo 来验证下可行性。

龙瑜的博客 1417

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

渗透测试——漏洞扫描工具

然后还要将all这个压缩包里的plugin_feed_info.inc提取出来,命令行是 tar -zxvf all-2.0.tar.gz plugin_feed_info.inc,然鹅,我提取不出来。将下载好的插件移动到Nessus目录下,然后输入sudo /opt/nessus/sbin/nessuscli update all-2.0.tar.gz。用户名和密码随便写写就好,随后将会更新补丁,OK,这样Nessus可以使用了。将会获得一串数字,然后去激活码的这个网站,输入自己的邮箱获取激活码。

wuli1024的博客 5011

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

k8s进阶5——AppArmor、Seccomp、ImagePolicyWebhook

1、AppArmor限制容器对资源访问实战。 2、Seccomp限制容器进程系统调用实战,分别基于自定义策略和容器运行时默认策略。 3、ImagePolicyWebhook控制器实战

百慕卿君博客 2795

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

docker ip限制_Confine 拍了拍你,问要不要强化下你的 docker 容器

作者|绿盟科技 NS-SRC 潘雨晨刚才那个拍了拍你的 Confine 是一个可为Docker镜像生成Seccomp配置文件的框架,它通过减小容器可能遭受的Linux内核攻击面来强化容器。总体目标是在保证容器及其内部应用正常运行的前提下,过滤掉容器不需要的所有系统调用(syscalls),以缓解来自内核的漏洞攻击。那么问题来了, docker 已经有默认的 Seccomp 配置文件,...

weixin_35334000的博客 1651

docker run:–security-opt seccomp=unconfined选项解析 (安全计算模式Secure Computing Mode,实现系统调用过滤,禁用或允许某些系统调用)

Seccomp,即安全计算模式,是 Linux 内核的一部分,用于限制进程可以使用的系统调用2。通过禁止或限制对某些系统调用的访问,Seccomp 可以有效减少攻击者能够利用的攻击面。Docker 在默认情况下启用了 Seccomp,并提供了一个默认的配置文件,该文件白名单了大约300个系统调用,其他的则被禁止。这意味着在 Docker 容器中运行的进程只能访问这些已经过滤的系统调用。总的来说,Docker 的选项是一个强大的工具,可以提供更大的灵活性。

Dontla的博客 9288

Docker Seccomp特性学习笔记

什么是Seccomp? Secure computing mode (seccomp):Linux kernel的一个特性。在Docker中利用这个特性限制container中可以做哪些操作。 Seccomp在Ubuntu 16.04+上可用 在docker运行的host kernel上执行可以查看kernel是否enable了Seccomp: $ grep CONFIG_SECC...

legenddcr的专栏 4543

Docker 中 jdk8容器里无法使用 JDK 的 jmap 等命令的问题

Docker 中 jdk8容器里无法使用 JDK 的 jmap 等命令的问题

J_Lee 849

Docker Seccomp策略配置指南:从入门到生产级防护的完整路径

掌握Docker容器的Seccomp安全配置方法,有效防范系统调用层面的安全威胁。适用于生产环境加固、多租户隔离等场景,通过定制化Seccomp策略过滤危险系统调用,提升容器运行时安全。配置灵活、兼容性强,是实现最小权限原则的关键手段,值得收藏。

FastProceed的博客 764

docker基础

公有云:适用于需要快速部署和弹性扩展,且对隐私和安全要求不高的企业。私有云:适合对数据安全、合规性有严格要求的企业,如金融、医疗、政府等。混合云:适合那些需要结合公有云的弹性和私有云的安全控制的企业,特别是那些需要分阶段迁移到云上或者处理大量敏感数据的企业。不同企业可以根据自身业务需求和预算选择适合的云计算模式。Docker是一个开源的应用容器引擎,基于Go语言开发并遵从Apache2.0协议。它允许开发者将应用及其依赖打包到一个可移植的容器中,然后发布到任何支持Docker的平台上。

2301_80613136的博客 1210

Docker引擎安全机制:深入理解Seccomp配置

Seccomp(Secure computing mode)是Linux内核提供的一种安全机制,它允许进程限制自身能够执行的系统调用(syscall)。在Docker容器环境中,seccomp扮演着至关重要的角色,它通过限制容器内进程可用的系统调用来增强容器的安全性。 ## Seccomp工作原理 Seccomp本质上是一个系统调用过滤器,它通过以下方式工作: 1. **默认拒绝**:默认情

gitblog_00927的博客 505
上一篇: kubernetes CKS 3.2 AppArmor限制容器对资源访问
下一篇: kubernets CKS 4.1 Pod安全上下文(一)
cloud_engineer
博客等级 码龄5年 9390粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值