用不可变的基础设施提高攻击者的攻击成本

简介: 本文讲的是用不可变的基础设施提高攻击者的攻击成本,Docker 容器的一个便捷之处在于它们是不可变的。Docker 附带一个写入时复制的文件系统,意味着基础镜像不能被修改,除非你显式地发布一个提交。
本文讲的是用不可变的基础设施提高攻击者的攻击成本,

Docker 容器的一个便捷之处在于它们是不可变的。Docker 附带一个写入时复制的文件系统,意味着基础镜像不能被修改,除非你显式地发布一个提交。

这么便利的原因之一是,你很容易检查出被修改的地方,如果试图调查一个安全事件,这可能会派上用场。

Demo 应用

以这个 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) {  
Links found  
... 
eval($_GET['shell']);  
?>

看起来某些人正在不应该使用eval的地方使用eval !任何攻击者都可能发现这个漏洞,并在远程机器上执行任意命令:

 curl -s http://localhost/\?shell\=system\("id"\)\; | grep "uid="
uid=33(www-data) gid=33(www-data) groups=33(www-data)  

攻击者对刚被攻破的主机的第一个动作是通过下载 PHP 的 Shell 和其他工具包让自己反客为主。有些攻击者甚至可能会改写你的网站:

从被 hack 恢复

回到不可变性,写入时复制的文件系统提供的一个很酷的特性就是可以看到发生的所有更改。通过使用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,简单地将其命名为shell.php。但我们的关注点应该是让网站重新上线。

我们可以通过docker commit命令存储这个镜像,供以后参考,并且由于容器是不可变的( :tada: ),我们可以重新启动我们的容器,现在所有都恢复了:

 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
HACKED BY SUPER ELITE GROUP OF HACKERS  
# cat shell.php

看起来我们被著名的 SUPER ELITE GROUP OF HACKERS 攻击了。¯_(ツ)_/¯

提高攻击者的成本

被攻击后可以看到容器里的改变很有意义,但是如果我们可以第一时间就避免被攻击呢?这就是--read--only发挥用处的地方了。

--read-only这个参数可以限制 Docker 不允许写入容器的文件系统。这就避免了任何对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文件的企图破灭了。 :sunglasses:

这就刀枪不入了吗?

不,绝对不是。除非我们能修复这个 RCE 漏洞,否则攻击者仍然能在我们的主机上执行代码,窃取我们的凭证,泄漏我们数据库中的数据。

配合运行最小化镜像和一些很酷的 Docker 安全特性,你可以使攻击者继续骚扰并占用你的网络变得难。

结论

我们的应用程序的安全性从来就不完美,但通过不可变的基础设施协助完成事件响应,实现快速恢复,可以加大攻击者的难度。

如果用一个强大的沙盒并且调整几个旋钮就可以让你的应用更加安全,为什么不这样做呢? :whale:






原文发布时间为:2016年12月13日

本文来自云栖社区合作伙伴掘金,了解相关信息可以关注掘金网站。
目录
相关文章
|
5月前
|
机器学习/深度学习 存储 安全
网络防线的构筑者:洞悉网络安全漏洞与加固信息防护
【7月更文挑战第40天】 在数字化时代,每一次键盘的敲击、每一条数据的传输,都携带着潜在的风险。网络安全与信息安全已成为个人至企业乃至国家安全的屏障。本文将深入探讨网络安全漏洞的本质、加密技术的关键作用以及提升安全意识的必要性,旨在为读者提供一套系统性的网络防护策略和实践建议。
|
6月前
|
SQL 安全 物联网
构筑网络堡垒:洞悉网络安全漏洞与加固信息防线
【5月更文挑战第83天】 在数字化时代,个人、企业乃至国家安全面临着前所未有的挑战。黑客攻击、数据泄露及恶意软件等安全威胁层出不穷,这要求我们不仅要了解潜在的网络安全漏洞,还需掌握加密技术并提升安全意识。本文将深入探讨网络安全的脆弱点,介绍当前加密技术的进展,并分析如何通过提高个体和组织的安全意识来构建更坚固的信息防线。
|
6月前
|
SQL 安全 算法
网络防线的构筑者:漏洞、加密与意识
【7月更文挑战第18天】在数字化浪潮中,网络安全与信息安全成为维护信息资产的重要屏障。本文将深入探讨网络安全漏洞的类型与应对策略,解析当前加密技术的作用与局限,并强调提升个人与企业的安全意识对于构建坚固网络防线的重要性。
40 4
|
8月前
|
存储 安全 算法
网络防御先锋:揭秘网络安全漏洞与加固信息防线
【5月更文挑战第15天】在数字时代的风口浪尖,网络安全已成为维护信息完整性、确保数据流通安全的关键。本文将深入探讨网络安全中存在的漏洞、加密技术的进展以及提升安全意识的重要性,旨在为读者构建一道坚固的信息防线提供知识支持和实践指导。
59 2
|
8月前
|
存储 安全 物联网
网络防御前线:洞悉网络安全漏洞与加固信息防线
【5月更文挑战第4天】 在数字化时代,网络安全已成为维护信息完整性、确保数据传输安全的关键阵地。本文将深入探讨网络安全领域的重要议题—包括识别和应对安全漏洞、应用加密技术以及提升个体和企业的安全意识。通过对这些关键要素的剖析,我们旨在为读者提供一个关于如何构建坚固网络防御体系的全面视角。
83 6
|
8月前
|
存储 安全 物联网
网络防御先锋:洞悉网络安全漏洞与加固信息防线
【5月更文挑战第30天】 在数字化的浪潮中,网络安全已成为维护信息完整性、确保数据传输安全的重要领域。随着技术的进步,网络攻击手段不断升级,了解和防御这些安全威胁变得日益重要。本文将探讨网络安全中的漏洞挖掘、加密技术和提升个体及组织的安全意识等方面,以期为读者提供全面而深入的网络安全知识,帮助构建更为坚固的信息防线。
|
8月前
|
SQL 监控 安全
构筑网络堡垒:网络安全漏洞剖析与防御策略
【5月更文挑战第17天】随着信息技术的迅猛发展,网络安全成为维护信息完整性、保障用户隐私的关键。本文深入分析了网络安全中常见的漏洞类型及其成因,并探讨了加密技术在数据保护中的应用。同时,强调了提升安全意识在防范网络威胁中的重要性。通过综合措施,构建多层次的网络安全防护体系,为个人和组织的数字资产提供坚实的保障。
|
8月前
|
SQL 安全 网络安全
网络防线之盾:揭秘网络安全漏洞与防御技术
在数字化时代,网络安全成为守护信息完整性、保障用户隐私的关键。本文深入探讨了网络安全领域内常见的安全漏洞,分析了加密技术在数据保护中的作用,并强调了提升个人和企业安全意识的重要性。通过实例和案例分析,文章为读者提供了一道了解和应对网络威胁的窗口,同时指出了未来网络安全发展的趋势和挑战。
58 2
|
8月前
|
存储 SQL 安全
网络防线之钥:洞悉网络安全漏洞与加固信息防护
在数字化时代,数据成为了新石油,而网络安全则是保护这些宝贵资源不被非法开采的关键。本文将探讨网络安全中的漏洞问题、加密技术的应用以及提升个人和企业的安全意识。通过深入分析常见的安全威胁,我们揭示了网络攻击者的入侵手段,并提供了相应的防御策略。同时,文章还将讨论如何通过强化加密措施和提高整体的安全认知,来构建更为坚固的信息安全防线。
|
8月前
|
安全 网络安全 数据安全/隐私保护
网络安全攻防技术与实践:防御黑客入侵的有效手段
在当今互联网高速发展的时代,网络安全问题越来越受到人们的重视。黑客攻击已经成为一个严重的问题,给我们的个人隐私和企业的商业机密带来了极大的风险。本文将介绍一些网络安全攻防技术,以帮助读者加强网络安全意识,保护自己的信息安全。