资讯专栏INFORMATION COLUMN

你的 Docker 应用是安全的吗?

darry / 1069人阅读

摘要:如今,多样化的攻击手段层出不穷,传统安全解决方案越来越难以应对网络安全攻击。自适应安全平台集成了预测预防检测和响应的能力,为您提供精准持续可视化的安全防护。

近一年来,Docker 已经逐渐成为 container 界的事实标准,成为技术人员不可或缺的技能之一,就像 Docker 宣称的那样,「Build,Ship,and Run Any App,Anywhere」,容器极大简化了环境部署的步骤,并且很好的保证了环境的一致性。

Docker 的轻量级给云市场也注入了活力,国内已经有厂商发布了基于 Docker 的公有云服务,例如:灵雀云,DaoCloud。

作为国内早期 Docker 的爱好者,笔者对 Docker 走向公有云的领域还是有些疑问的,熟悉 Docker 的人都知道,Docker 底层是共享内核的,没有物理隔离内核,会造成很大的安全问题,不知道国内的厂商是如何规避这个问题,做了哪些安全防护;但是国内有一支队伍,推出了自己的轻量级的虚拟化服务 Hyper,一种类似 Docker 的方式,但是解决的 Docker 共享内核的问题,并且在2015的东京举办的 OpenStack 大会上,带去了自己的 Hypernetes ,一个真正多租户的 Kubernetes Distro,有兴趣的朋友可以进一步了解。

笔者觉得 Docker 共享内核级别的安全,用到的人毕竟是少数,作为应用开发者,我们更关心的是跑在 Docker 中的应用是否安全,是否受到 XSS 攻击,SQL 注入攻击之类,OneAPM 公司的 OneRASP 就解决了这个安全问题,它无需改动任何代码,通过 java instrument,实现应用受到攻击的检测和防护功能。

使用 OneRASP 产品之前,要先弄清楚什么叫 RASP?很多人只听过 WAF 防护的概念,对这个了解并不多。

关于 RASP,Gartner 定义为"Runtime application self-protection (RASP) is a security technology that is built or linked into an application or application runtime environment, and is capable of controlling application execution and detecting and preventing real-time attacks",实时的应用安全防护,它在应用程序里实时对安全威胁进行监控,告警和拦截。

"Web Application Firewall",Web应用防火墙,它放置在Web应用程序外层,拦截所有它认为可疑的输入而并不分析这些输入是如何被应用程序处理的,它依赖于网络流量分析,处理不同协议的方式也不同。

在知道 RASP 这个概念前,WAF 在安全领域被广泛推广,是对应用很好的防护措施。但 RASP 会精确分析用户输入在应用程序里的行为,根据分析结果区分合法行为还是攻击行为,然后对攻击行为进行拦截。 RASP 不依赖于网络流量分析,因此避免了字符解码,复杂的正则表达式匹配以及基于签名的威胁鉴别等麻烦。

如果想使用 OneRASP ,首先需要在 OneRASP 官网注册了自己的账号,然后登录。


单击管理按钮,选择添加探针,对探针进行命名,可以把探针直接下载下来:

探针目前只能通过浏览器下载,未来还将会提供命令行的安装工具,点开探针配置,发现探针有监听和保护两种状态,仅仅为了测试,然后选择监听状态:

下面进行探针的安装,在探针设置和下载页未有明确的探针安装的链接地址,退回到首页找到帮助,进入文档页才找到,这里是安装文档。

看了下文档,并未提供官方的 Docker 镜像,看来只能自己打镜像了,目前 OneRASP 官方文档使用 tomcat 作为Web 容器,笔者使用 Docker 官方提供的 tomcat 镜像作为 base image,Dockerfile 如下:

FROM tomcat:7-jre8
MAINTAINER demo
    
ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH

WORKDIR $CATALINA_HOME

ADD OneRASP ./OneRASP

RUN sed -i "234 a CATALINA_OPTS="-javaagent:/usr/local/tomcat/OneRASP/lib/RaspAgent.jar     $CATALINA_OPTS"" $CATALINA_HOME/bin/catalina.sh

CMD ["catalina.sh", "run"]

下面我们开始build镜像

docker build -t="docker.test.com/onerasp/demo" .
启动镜像:

docker run -p 9999:8080 -d --name rasptest docker.test.com/onerasp/demo

查看进程,确认带有探针的tomcat启动成功

docker top rasptest

日志

/usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -javaagent:/usr/local/tomcat/OneRASP/lib/RaspAgent.jar -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start

启动成功。

如果要验证 RASP 是否可以防御攻击,我们还要准备一个待攻击的应用,相应的攻击脚本,最后验证我们的攻击是否有效。

待攻击应用以 webgoat 为例,如果有人不了解可以看看Github上 webgoat的介绍。

在 docker hub 可以搜到 webgoat 的镜像,实验也以 pandrew/webgoat 的 Dockerfile 基础镜像,稍作修改。

笔者的目录结构:

修改后的Dockerfile如下:

FROM java:8u40-b22-jre

RUN curl -fL https://github.com/WebGoat/WebGoat-Legacy/releases/download/v6.0.1/WebGoat-6.0.1-war-exec.jar -o /webgoat.jar

RUN mkdir -p /webgoat_agent/OneRASP

ADD OneRASP /webgoat_agent/OneRASP

EXPOSE 8080

CMD ["java", "-jar","-javaagent:/webgoat_agent/OneRASP/lib/RaspAgent.jar", "/webgoat.jar"]

在当前目录下构建webgoat镜像:

sudo docker build -t="webgoat_agent_test" .

启动镜像:

sudo docker run -d --name webgoat -p 8080:8080 webgoat_agent_test

启动后,要确认两点:第一,观察控制台,确认探针连接是否正常;第二,确认应用是否正常启动。

探针连接确认:

应用启动确认:

现在所有准备工作就绪,可以按照webgoat的教程,攻击webgoat,来测试探针是否生效。

测试以 Injection Flaws 中的 XPATH Injection 为例,按照教程输入攻击脚本:

攻击成功后,会有提示,如上图。

在 OneRASP 平台查看攻击的防护日志:

点开 XPath 查看攻击详情,确认此攻击和之前攻击脚本是否一致:

由此可见,OneRASP 确实检测到了我们之前发起的那次 XPath Injection 攻击,在之后笔者又尝试了几种常见的攻击类型,例如 SQL Injection、CSRF、XSS 等,OneRASP 都监听到了攻击请求,并且定位到攻击的相关位置,试验到此结束。

对于容器内的应用,OneRASP也能起到一定的防护效果,目前安装较为繁琐。本次试验以 webgoat 作为测试应用的原因是 webgoat 易于攻击,如果放到自家的应用还需要具体的测试,而且笔者觉得试验测试的攻击集比较有限,但是对于一个无任何安全防护的裸奔的应用,肯定能起到一定的效果。

本文系 OneASP 前端工程师陈亮原创文章。如今,多样化的攻击手段层出不穷,传统安全解决方案越来越难以应对网络安全攻击。OneASP 自适应安全平台集成了预测、预防、检测和响应的能力,为您提供精准、持续、可视化的安全防护。想阅读更多技术文章,请访问 OneAPM 官方技术博客

本文转自 OneAPM 官方博客

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26513.html

相关文章

  • 数人云|20种终极工具,为你的Docker搭建安全防火墙

    摘要:为容器设计的商业安全套件,功能包括安全审计容器镜像验证运行时保护自动策略学习或入侵预防。基于一种称为的新内核技术,允许根据容器身份定义并执行网络层和层安全策略。自动发现应用程序容器和服务的行为,以及与其他类似方式检测安全升级和其他威胁。 数人云:随着越来越多的企业将生产工作负载迁移到容器当中,关于Docker的安全性,成了普遍关注的问题。 这是一个简单却又没有答案的问题,不要试图用二进...

    jlanglang 评论0 收藏0
  • 使用Docker保护软件供应链安全

    摘要:软件供应链几乎跟实际产品的供应链是相同的。确保软件供应链也十分相似。确保该扫描不止一次地发生,并在爆出新漏洞时,及时通知使用镜像的系统管理员或应用程序开发者。结论在软件生命周期的每个环节,平台都允许企业将安全纳入其中。 在Docker内部,我们花了很多时间讨论一个话题:如何将运行时安全和隔离作为容器架构的一部分?然而这只是软件流水线的一部分。 我们需要的不是一次性的标签或设置,而是需要...

    Jeffrrey 评论0 收藏0
  • 聊聊微服务集群当中的自动化工具

    摘要:本篇博客主要介绍了自动化工具这个概念,在微服务集群当中的作用,算抛砖引玉,欢迎大家提出自己的见解。而在微服务中,单个服务重新部署的代价明显要小的多。 本篇博客主要介绍了自动化工具这个概念,在微服务集群当中的作用,算抛砖引玉,欢迎大家提出自己的见解。 写在前面 在了解自动化工具的概念之前,我们先了解一下微服务和集群的概念。 什么是微服务 这个概念其实有些广泛,而我的知识广度也有限,我会尽...

    Hancock_Xu 评论0 收藏0
  • 初创公司谁来当你们的运维

    摘要:运维,哎,多么沉重的话题,初创公司的运维,哎,还能愉快的聊天吗初创公司的运维,如今其实兼技术支持系统管理员网管网络工程师研发工程师架构师,干着这些看似不相干甚至矛盾的工作。 运维,哎,多么沉重的话题,初创公司的运维,哎,还能愉快的聊天吗? showImg(https://segmentfault.com/img/remote/1460000004893272); 初创公司的运维,如今其...

    TigerChain 评论0 收藏0
  • [Docker 官方文档] 理解 Docker

    摘要:将一个轻量级的容器虚拟化平台和一组标准工作流程工具进行集成,来帮助你方便地管理和部署应用。主要包括哪些组件主要包括两个组件开源的容器虚拟化平台用于分享和管理容器的软件即服务平台。 【编者的话】本文来自 Docker 的官方文档,详细介绍了 Docker 的体系结构、重要概念、内部工作机理等内容,推荐不了解 Docker 内部原理的同学阅读。 什么是 Docker? Docker 是...

    cncoder 评论0 收藏0

发表评论

0条评论

darry

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<