--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上运行代码,偷取我们的权限,在数据库中盗取数据。
但是尽管如此,我们毕竟通过组合最小化镜像和一些非常酷的Docker安全功能提升了黑客的攻击难度,让系统变得更安全了一些。
总结
我们的应用程序的安全性永远不会是完美的,但是具有不可变的基础架构有助于事件响应,允许快速恢复,并使攻击者的成本加大。
如果通过使用强大的沙箱和调整一些旋钮,你可以使你的应用程序更安全,你为什么不?
原文链接:Increasing Attacker Cost Using Immutable Infrastructure (翻译:高洪涛)
===========================================
译者介绍
高洪涛,当当网架构师,开源数据库分库分表中间件Sharding-JDBC作者。目前从事Docker,Mesos相关工作