runC是一个开源项目,由Docker公司(之前称为Docker Inc.)主导开发,并在GitHub上进行维护。它是Docker自版本1.11起采用的默认容器运行时(runtime),也是其他容器编排平台(如Kubernetes)的基础组件之一。因此在容器生态系统中,runC扮演着关键的角色。runC是一个CLI工具,用于根据Open Container Initiative(OCI)规范在Linux系统上生成和运行容器。它是一个基本的容器运行时工具,负责启动和管理容器的生命周期,包括创建、运行、暂停、恢复和销毁容器。通过使用runC,开发人员和运维人员可以更加灵活地管理容器,并且可以在不同的容器平台之间实现容器的互操作性。
在2020年Black hat北美会议上,来自Palo Alto Networks的高级安全研究员Yuval Avrahami分享了利用多个漏洞成功从Kata containers逃逸的议题[1]。
35C3 CTF是在第35届混沌通讯大会期间,由知名CTF战队Eat, Sleep, Pwn, Repeat于德国莱比锡举办的一场CTF比赛。比赛中有一道基于Linux命名空间机制的沙盒逃逸题目。赛后,获得第三名的波兰强队Dragon Sector发现该题目所设沙盒在原理上与docker exec命令所依赖的runc(一种容器运行时)十分相似,遂基于题目经验对runc进行漏洞挖掘,成功发现一个能够覆盖宿主机runc程序的容器逃逸漏洞。该漏洞于2019年2月11日通过邮件列表披露,分配编号CVE-2019-5736。
近日国外安全研究员发布了可导致容器逃逸的runc漏洞 POC,该漏洞影响runc 1.0.0-rc94以及之前的版本,对应CVE编号:CVE-2021-30465。
可以使用 docker ps 命令查看容器内进程的和port。也可以使用 docker top 命令查看容器内的相关进程,包括它们的PID和其它信息。可以使用docker port命令查看容器暴露的端口。
RunC是一个基于OCI标准的轻量级容器运行时工具,用来创建和运行容器,该工具被广泛应用于虚拟化环境中,然而不断披露的逃逸漏洞给runC带来了严重的安全风险,如早期的CVE-2019-5736、CVE-2021-30465。就在今年的1月31日,网络安全供应商Synk又披露了runC 命令行工具和BuildKit 组件中的4个安全漏洞,攻击者可以利用这些漏洞逃离容器的边界并发起后续攻击。这些漏洞编号分别为 CVE-2024-21626、CVE-2024-23651、CVE-2024-23652 和 CVE-2024-23653,这些漏洞被 Snyk统称为Leaky Vessels[1][2]。
当然生产环境肯定不差 100M 这点空间,还是带上一些常用的工具在生产环境跑比较好。本文只是在玩 Nix 时候的自娱自乐,没有什么实际意义。
为什么复制到这个 /usr/bin/ 里面,因为docker 文件夹下都是docker 的命令,也就是可执行文件,也就是我们操作docker 的指令。
2019年6月份,Docker容器被曝存在权限逃逸安全漏洞(漏洞编号:CVE-2018-15664),攻击者可利用此漏洞访问主机文件系统的任意文件,该漏洞攻击的基本前提是FllowSymlinkInScope遭受了最基本的TOCTOU攻击(即time-to-check-time-to-use攻击,黑客可利用窗口期在解析资源路径之后但在分配的程序开始在资源上操作之前修改路径),这里的FllowSymlinkInScope的目的是获取一个既定路径并以安全的方式将其解析,就像该进程是在容器内那样,完整路径被解析后被解析的路径传递了一个比特位,之后在另外一个比特位上操作(在docker cp情况下,在创建流式传输到客户端的文档时打开),如果攻击者能够在路径解析之后但在操作之前添加一个符号链接组件,那么就能以root身份在主机上解析符号链接路径组件,在"Docker cp"情况下它将导致任何人读取并写入主机任何路径的访问权限
Docker是一个开源的容器化平台,用于帮助开发者更轻松地构建、打包、分发和运行应用程序。它基于容器化技术,利用操作系统层级的虚拟化来隔离应用程序和其依赖的环境。通过使用Docker,开发者可以在不同的主机上快速部署和扩展应用程序,而不需要担心环境配置和依赖问题。
本文翻译整理自Quarkslab实验室[1],主要追溯了三个与Kubernetes相关的漏洞:CVE-2017-1002101、CVE-2021-30465和CVE-2021-25741,分别介绍了这些漏洞的原理以及对应的修复措施,并阐述了它们之间的关联——均与HostPath有关。在介绍漏洞之前,我们需要先了解一下Kubernetes相关的背景知识。
开发人员可根据软件开发最佳做法来编写需要最少权限的软件。 但是,某些软件(如性能监视工具)由于操作系统规则,需要管理员权限。 以下指南介绍使用 .NET Core 编写此类软件的适用方案。
近日,研究人员向Kubernetes安全团队报告了一个可导致容器逃逸的安全漏洞[1],获得编号CVE-2021-25741,目前的CVSS3.x评分为8.8[2],属于高危漏洞。该漏洞引起社区的广泛讨论[3]。有人指出,CVE-2021-25741漏洞是由2017年的CVE-2017-1002101漏洞的补丁不充分导致,事实也的确如此。
David Eastman主持了一场技术版的古董鉴定节目,通过回顾前容器(甚至是Chef之前!)时代的软件工具Capistrano。
Docker是一种流行的容器化平台,它允许开发人员在独立、可移植的环境中构建、打包和部署应用程序。在使用Docker时,常常需要在Docker容器和主机之间进行文件的复制和共享。Docker提供了一个名为docker cp的命令,可以轻松地在容器和主机之间复制文件和目录。本文将详细介绍docker cp命令的使用方法和常见示例。
将golang编译的二进制文件 opena 拷贝到容器的 /usr1 下面,执行显示:
这几天在学习折腾 docker 的时候遇到一个很常见的问题,就是 run container 的时候发现大部分 image 默认使用的时间都是 UTC (Universal Time Coordinated,UTC)世界协调时间,跟平时中使用的 CST (China Standard Time UTC+8:00) 中国沿海时间(北京时间) 差别有点大,很不适应。
写在前面: Docker Compose 可以编排多容器应用。通过 Docker Compose,你可以通过 Compose 文件来配置应用服务。 通过一条命令,您就可以启动配置中的全部服务
Fracker是一套PHP函数调用追踪与分析的工具,其目标是在PHP应用程序的手动安全评估期间协助安全研究人员。
在日常使用 Linux 或者 macOS 时,我们并没有运行多个完全分离的服务器的需要,但是如果我们在服务器上启动了多个服务,这些服务其实会相互影响的,每一个服务都能看到其他服务的进程,也可以访问宿主机器上的任意文件,这是很多时候我们都不愿意看到的,我们更希望运行在同一台机器上的不同服务能做到完全隔离,就像运行在多台不同的机器上一样。
基础是一步一步的get到的。随着自己写基础知识,也发现了很多原先没有注意到的知识点。工作是我们把知识进行应用的地方,但是也不应该不能让工作把我们局限住。继续扩展学习。 我们今天学习下Docker的rootfs相关的命令
在某些系统故障的排查过程中,需要找出某个应用程序的工作目录、完整命令行等信息。通常会通过ps及top等命令来查看进程信息,但往往只能查到相对路径、部分命令行等。遇到这种情况时,有些小伙伴可能就束手无策,不知所措直接去问研发的同事了。遇到这样的情况,是不是真的没有办法了呢?
最近在读《计算机程序的构造和解释》,里面有一句话:代码必须能够被人阅读,只是机器恰巧可以执行。
他们必须在过程的顶部进入人体,在任何其他声明块(即input,output等),并具有以下语法:
Linux Namespace 是 Linux 提供的一种内核级别环境隔离的方法。用官方的话来说,Linux Namespace 将全局系统资源封装在一个抽象中,从而使 namespace 内的进程认为自己具有独立的资源实例。这项技术本来没有掀起多大的波澜,是容器技术的崛起让他重新引起了大家的注意。
Nginx是Linux和BSD用户中最受欢迎的web服务器之一,因为它具有丰富的功能指令集和优越的灵活性。如果您是一名Web开发人员,那么您可能正在使用Nginx或Apache服务器。因此,深入了解Nginx如何从命令行工作是很重要的。幸运的是,您可以通过掌握一些Nginx命令来提高DevOps技能。我们的编辑为您选择了这些经常使用的命令,并为启动Linux管理员提供了全面的讨论。那就请你阅读本文以了解关于这些命令的更多信息。
linux 进程在树中排序。每个进程都可以产生子进程,并且除了最顶层的进程之外,每个进程都有一个父进程。
原文:https://www.jianshu.com/p/94adb682ca6e
Pipework允许您在任意复杂的场景中将容器连接在一起。Pipework使用cgroups和namespace,并使用“普通”LXC容器(用它创建lxc-start)和令人敬畏的Docker。
DevOps概念的流行跟近些年微服务架构的兴起有很大关系,DevOps是Dev(Development)和Ops(Operations)的结合,Dev负责开发,Ops负责部署上线,Docker出现之前,公司需要搭建一个数据库环境,有了Docker之后,只需在一些开源的基础镜像上构建出公司自己的镜像即可。
容器中的磁盘文件随着容器的生而生,随着容器的死而灭,这给运行在容器中的重要应用来说存在一些问题:
在操作系统中,文件实际上是一个指针,只不过它指向的不是内存地址,而是一个外部存储地址(这里的外部存储可以是硬盘、U盘、甚至是网络)
Systemd 是一系列工具的集合,其作用也远远不仅是启动操作系统,它还接管了后台服务、结束、状态查询,以及日志归档、设备管理、电源管理、定时任务等许多职责,并支持通过特定事件(如插入特定 USB 设备)和特定端口数据触发的 On-demand(按需)任务。
Systemd是一个命令组,涉及到系统管理的方方面面,而systemctl是Systemd的主命令,用于管理系统。
我在mac下的NTFS分区里运行Vagrant up,正常启动虚拟机,但是ssh连接的时候却出现了问题,如下图:
有些时候我们可能因为系统或者某些软件的缓存占得比较多,想把他们从C盘移动到其他地方。但是软件本身并没有提供修改缓存文件夹的功能。这下应该怎么办呢?其实还真有一个好办法可以完美解决,这就是今天要为大家介绍的符号链接。
在 Linux 中,点文件是隐藏的文本文件,从 Bash、Git 到 i3 或 VSCode 等更复杂的许多应用程序,都用它存储配置设置。
命名空间将全局系统资源包装在一个抽象中,使得命名空间中的进程认为它们拥有独立的资源实例。命名空间可用于多种目的,最重要的是实现容器,一种轻量级虚拟化技术。本系列的第二篇文章将看一下命名空间的一些细节和 API。本系列中的第一篇文章对命名空间进行了总览。本文将看一下命名空间的 API 中的一些细节,并在一些例子中展示运行中的 API。
systemctl 是管理操作系统和服务的命令,是与 systemd 交互的主要工具,其实现的功能包含了 service 和 chkconfig 这两个命令的功能。
systemctl 命令是 systemd 系统和服务的管理命令,systemctl 是与 systemd 交互的主要工具,其实现的功能包含了 service 和 chkconfig 这两个命令的功能。
通过容纳Nginx,我们减少了系统管理员的开销。我们将不再需要通过包管理器管理Nginx或从源代码构建它。Docker容器允许我们在发布新版本的Nginx时简单地替换整个容器。我们只需要维护Nginx配置文件和我们的内容。
在编写和运行软件项目时,我们经常会遇到各种错误和异常。其中之一是在编译代码时遇到的错误。这篇文章将讨论如何解决一种常见的编译错误,即"ERROR: Unable to find the development tool cc in your path"。我们将了解这个错误的原因以及如何纠正它。
“内网渗透的本质是信息收集”,这句话不仅适用于传统内网,也同样适用于云原生环境。在进入传统内网的后渗透阶段时,首先要做的工作便是对当前所处环境做详细的信息收集,为下一步行动做铺垫。如果收集到主机的系统版本和补丁信息,攻击者可以通过对比分析出适用于当前环境的系统漏洞,有的放矢地攻击,高效率的同时也尽可能减少了痕迹。
Docker就是虚拟化的一种轻量级替代技术。Docker的容器技术不依赖任何语言、框架或系统,可以将App变成一种 标准化的、可移植的、自管理的组件,并脱离服务器硬件在任何主流系统中开发、调试和运行 简单的说就是,在 Linux 系统上迅速创建一个容器(类似虚拟机)并在容器上部署和运行应用程序,并通过配置文件 可以轻松实现应用程序的自动化安装、部署和升级,非常方便。因为使用了容器,所以可以很方便的把生产环境和开 发环境分开,互不影响,这是 docker 最普遍的一个玩法。
runC社区于2024年2月1日披露了高危安全漏洞CVE-2024-21626,攻击者可以利用该漏洞越权访问宿主机文件或执行二进制程序,详细内容参见下文
题图摄于Austin (本文作者系 VMware 中国研发云原生实验室工程师,从事联邦学习 FATE/ KubeFATE 开源项目开发。) 需要加入KubeFATE开源项目讨论群的同学,请关注本公众号后回复 “kubefate” 即可。 VMware招聘机器学习和云原生开发工程师 FATE 已经发布了首个长期支持版本,怎样快速体验新版本的FATE来做联邦学习的实验任务呢,接下来我们带领大家一起使用 docker-compose 来快速部署 FATE v1.5.0 LTS。 本文将指导你在两台 Linux
我总觉得字节是跟Node过不去了,初赛和决赛都整了个Node题目,当然PHP、Java都是必不可少的,只是我觉得Node类型的比较少见,所以感觉挺新鲜的。
最近有朋友在公众号文章中留言需要我分享一下运维的面试题,经过一天的整理终于好了,对于想年底跳槽或者明年春季跳槽,以及参加春招的大学生都是有帮助的。
1. 优化SQL 1)通过show status了解各种sql的执行频率 show status like 'Com_%' 了解 Com_select,Com_insert 的执行次数 2) 通过Explain分析低效的sql语句 3) 建立合适的索引 4) 通过show status like 'Handler_%'查看索引的使用情况 handler_read_key:根据索引读取行的请求数。如果该值
在容器的整个生命周期中,拉取镜像是最耗时的步骤之一。Harter 等人的研究[1]表明:
领取专属 10元无门槛券
手把手带您无忧上云