你的 Docker 应用是安全的吗?
近一年來,Docker 已經(jīng)逐漸成為 container 界的事實(shí)標(biāo)準(zhǔn),成為技術(shù)人員不可或缺的技能之一,就像 Docker 宣稱的那樣,「Build,Ship,and Run Any App,Anywhere」,容器極大簡化了環(huán)境部署的步驟,并且很好的保證了環(huán)境的一致性。
Docker 的輕量級給云市場也注入了活力,國內(nèi)已經(jīng)有廠商發(fā)布了基于 Docker 的公有云服務(wù),例如:靈雀云,DaoCloud。
作為國內(nèi)早期 Docker 的愛好者,筆者對 Docker 走向公有云的領(lǐng)域還是有些疑問的,熟悉 Docker 的人都知道,Docker 底層是共享內(nèi)核的,沒有物理隔離內(nèi)核,會造成很大的安全問題,不知道國內(nèi)的廠商是如何規(guī)避這個(gè)問題,做了哪些安全防護(hù);但是國內(nèi)有一支隊(duì)伍,推出了自己的輕量級的虛擬化服務(wù) Hyper,一種類似 Docker 的方式,但是解決的 Docker 共享內(nèi)核的問題,并且在2015的東京舉辦的 OpenStack 大會上,帶去了自己的 Hypernetes ,一個(gè)真正多租戶的 Kubernetes Distro,有興趣的朋友可以進(jìn)一步了解。
筆者覺得 Docker 共享內(nèi)核級別的安全,用到的人畢竟是少數(shù),作為應(yīng)用開發(fā)者,我們更關(guān)心的是跑在 Docker 中的應(yīng)用是否安全,是否受到 XSS 攻擊,SQL 注入攻擊之類,OneAPM 公司的 OneRASP 就解決了這個(gè)安全問題,它無需改動(dòng)任何代碼,通過 java instrument,實(shí)現(xiàn)應(yīng)用受到攻擊的檢測和防護(hù)功能。
使用OneRASP產(chǎn)品之前,要先弄清楚什么叫 RASP?很多人只聽過 WAF 防護(hù)的概念,對這個(gè)了解并不多。
關(guān)于 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",實(shí)時(shí)的應(yīng)用安全防護(hù),它在應(yīng)用程序里實(shí)時(shí)對安全威脅進(jìn)行監(jiān)控,告警和攔截。
"Web Application Firewall",Web應(yīng)用防火墻,它放置在Web應(yīng)用程序外層,攔截所有它認(rèn)為可疑的輸入而并不分析這些輸入是如何被應(yīng)用程序處理的,它依賴于網(wǎng)絡(luò)流量分析,處理不同協(xié)議的方式也不同。
在知道 RASP 這個(gè)概念前,WAF 在安全領(lǐng)域被廣泛推廣,是對應(yīng)用很好的防護(hù)措施。但 RASP 會精確分析用戶輸入在應(yīng)用程序里的行為,根據(jù)分析結(jié)果區(qū)分合法行為還是攻擊行為,然后對攻擊行為進(jìn)行攔截。 RASP 不依賴于網(wǎng)絡(luò)流量分析,因此避免了字符解碼,復(fù)雜的正則表達(dá)式匹配以及基于簽名的威脅鑒別等麻煩。
如果想使用 OneRASP ,首先需要在 OneRASP 官網(wǎng)注冊了自己的賬號,然后登錄。
單擊管理按鈕,選擇添加探針,對探針進(jìn)行命名,可以把探針直接下載下來:
探針目前只能通過瀏覽器下載,未來還將會提供命令行的安裝工具,點(diǎn)開探針配置,發(fā)現(xiàn)探針有監(jiān)聽和保護(hù)兩種狀態(tài),僅僅為了測試,然后選擇監(jiān)聽狀態(tài):
下面進(jìn)行探針的安裝,在探針設(shè)置和下載頁未有明確的探針安裝的鏈接地址,退回到首頁找到幫助,進(jìn)入文檔頁才找到,這里是安裝文檔。
看了下文檔,并未提供官方的 Docker 鏡像,看來只能自己打鏡像了,目前 OneRASP 官方文檔使用 tomcat 作為Web 容器,筆者使用 Docker 官方提供的 tomcat 鏡像作為 base image,Dockerfile 如下:
FROM tomcat:7-jre8 MAINTAINER demo<demo@demo.com>ENV CATALINA_HOME /usr/local/tomcat ENV PATH $CATALINA_HOME/bin:$PATHWORKDIR $CATALINA_HOMEADD OneRASP ./OneRASPRUN sed -i '234 a CATALINA_OPTS="-javaagent:/usr/local/tomcat/OneRASP/lib/RaspAgent.jar $CATALINA_OPTS"' $CATALINA_HOME/bin/catalina.shCMD ["catalina.sh", "run"]下面我們開始build鏡像
docker build -t="docker.test.com/onerasp/demo" .
啟動(dòng)鏡像:
查看進(jìn)程,確認(rèn)帶有探針的tomcat啟動(dòng)成功
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啟動(dòng)成功。
如果要驗(yàn)證 RASP 是否可以防御攻擊,我們還要準(zhǔn)備一個(gè)待攻擊的應(yīng)用,相應(yīng)的攻擊腳本,最后驗(yàn)證我們的攻擊是否有效。
待攻擊應(yīng)用以 webgoat 為例,如果有人不了解可以看看Github上 webgoat的介紹。
在 docker hub 可以搜到 webgoat 的鏡像,實(shí)驗(yàn)也以 pandrew/webgoat 的 Dockerfile 基礎(chǔ)鏡像,稍作修改。
筆者的目錄結(jié)構(gòu):
修改后的Dockerfile如下:
在當(dāng)前目錄下構(gòu)建webgoat鏡像:
sudo docker build -t="webgoat_agent_test" .啟動(dòng)鏡像:
sudo docker run -d --name webgoat -p 8080:8080 webgoat_agent_test啟動(dòng)后,要確認(rèn)兩點(diǎn):第一,觀察控制臺,確認(rèn)探針連接是否正常;第二,確認(rèn)應(yīng)用是否正常啟動(dòng)。
探針連接確認(rèn):
應(yīng)用啟動(dòng)確認(rèn):
現(xiàn)在所有準(zhǔn)備工作就緒,可以按照webgoat的教程,攻擊webgoat,來測試探針是否生效。
測試以 Injection Flaws 中的 XPATH Injection 為例,按照教程輸入攻擊腳本:
攻擊成功后,會有提示,如上圖。
在 OneRASP 平臺查看攻擊的防護(hù)日志:
點(diǎn)開 XPath 查看攻擊詳情,確認(rèn)此攻擊和之前攻擊腳本是否一致:
由此可見,OneRASP 確實(shí)檢測到了我們之前發(fā)起的那次 XPath Injection 攻擊,在之后筆者又嘗試了幾種常見的攻擊類型,例如 SQL Injection、CSRF、XSS 等,OneRASP 都監(jiān)聽到了攻擊請求,并且定位到攻擊的相關(guān)位置,試驗(yàn)到此結(jié)束。
對于容器內(nèi)的應(yīng)用,OneRASP也能起到一定的防護(hù)效果,目前安裝較為繁瑣。本次試驗(yàn)以 webgoat 作為測試應(yīng)用的原因是 webgoat 易于攻擊,如果放到自家的應(yīng)用還需要具體的測試,而且筆者覺得試驗(yàn)測試的攻擊集比較有限,但是對于一個(gè)無任何安全防護(hù)的裸奔的應(yīng)用,肯定能起到一定的效果。
本文系 OneASP 前端工程師陳亮原創(chuàng)文章。如今,多樣化的攻擊手段層出不窮,傳統(tǒng)安全解決方案越來越難以應(yīng)對網(wǎng)絡(luò)安全攻擊。OneASP 自適應(yīng)安全平臺集成了預(yù)測、預(yù)防、檢測和響應(yīng)的能力,為您提供精準(zhǔn)、持續(xù)、可視化的安全防護(hù)。想技術(shù)文章,請?jiān)L問 OneAPM 官方技術(shù)博客
本文轉(zhuǎn)自 OneAPM 官方博客
轉(zhuǎn)載于:https://www.cnblogs.com/oneapm/p/5147938.html
總結(jié)
以上是生活随笔為你收集整理的你的 Docker 应用是安全的吗?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VxWorks6.6 pcPentium
- 下一篇: Win10 IoT 10 中文显示乱码或