日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

docker 2375 vulnerability and self-signatuer certifications

發布時間:2025/6/17 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker 2375 vulnerability and self-signatuer certifications 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Docker暴露2375端口,引起安全漏洞

?

今天有小伙伴發現Docker暴露出2375端口,引起了安全漏洞。我現在給大家介紹整個事情的來龍去脈,并告訴小伙伴們,怎么修復這個漏洞。

為了實現集群管理,Docker提供了遠程管理接口。Docker Daemon作為守護進程,運行在后臺,可以執行發送到管理接口上的Docker命令。正是因為錯誤的使用了Docker遠端接口,引起安全漏洞。

啟動Docker Daemon時,加入-H 0.0.0.0:2375,Docker Daemon就可以接收遠端的Docker Client發送的指令。注意,Docker是把2375端口作為非加密端口暴露出來,一般是用在測試環境中。此時,沒有任何加密和認證過程,只要知道Docker主機的IP,任何人都可以管理這臺主機上的容器和鏡像。

漏洞是什么

國內牛人開發了一套牛逼的搜索引擎-鐘馗之眼,可以掃描出主機上的暴露的端口。在ZoomEye.org上輸入關鍵字docker port:2375,立即可以掃描出所有暴露了2375端口的Docker主機。因為沒有加密,知道了主機IP以后,黑客就可以為所欲為了。 目前全球有717臺機器暴露出2375端口!真是太可怕了!

這些主機分布在全球各個國家,其中,美國的主機最多。這是因為Docker是美國的使用率最高,國內也會在一兩年內大規模使用Docker。所有小伙伴們必須解決安全問題。

黑客在查詢到主機IP以后,就可以管理這些主機上的容器了。

docker -H IP:2375 infoContainers: 8 Running: 8 Paused: 0 Stopped: 0 Images: 62 Server Version: 1.11.0

通過這個漏洞,甚至可以獲取主機信息。攻擊者簡直就能為所欲為。

docker -H IP:2375 run --rm -v /:/root alpine cat /root/etc/hostnamedocker-node-5

如何發現漏洞

小伙伴們,趕快檢查一下你的Docker是否暴露了2375端口。

1.檢查docker daemon進程,查看是否開啟2375端口。

ps -ef | grep docker/usr/bin/docker daemon -H=tcp://0.0.0.0:2375

2.通過遠程管理的方式,向Docker主機發送命令。

docker -H 192.168.0.10:2375 infoContainers: 41 Running: 16 Paused: 0 Stopped: 25 Images: 821 Server Version: 1.10.3

如何修復該漏洞

如果要安全的管理遠程Docker主機,應該怎么做呢?其實,Docker本身提供了加密的遠程管理端口2376,配合CA證書,就能提供TLS連接了。

首先要準備5個證書和秘鑰文件,分別是ca.pem、server-cert.pem、server-key.pem、client-cert.pem和client-key.pem。其中,server-cert.pem中限制了能夠訪問Docker主機的客戶端列表。

啟動Docker Deamon時,需要設置-H、–tls、–tlscacert=ca.pem、–tlscert=server-cert.pem和–tlskey=server-key.pem。此時,只有客戶端列表中的主機能夠訪問Docker主機。

具體配置比較復雜,我現在為大家詳細介紹這些步驟。

1.生成CA私鑰ca-key.pem,使用該私鑰對CA證書簽名。

ca-key.pem是一個臨時文件,最后可以刪除。

openssl genrsa -out ~/docker/ca-key.pem 4096

2.使用CA私鑰生成自簽名CA證書ca.pem。生成證書時,通過-days 365設置證書的有效期。單位為天,默認情況下為30天。

opensslreq -x509 -sha256 -batch -subj '/C=CN/ST=Sichuan/L=Chengdu/O=GhostcloudCo.,Ltd/OU=Laboratory/CN=www.ghostcloud.cn' -new -days 365 -key ~/docker/ca-key.pem -out ~/docker/ca.pem

生成CA證書時,需要提供一些公司信息。

C表示國家,中國為CN。

ST表示省,比如Sichuan。

L表示城市,比如Chengdu。

O表示公司,比如Ghostcloud Co.,Ltd。

OU表示部門名字,比如Laboratory。

CN表示公司域名,比如www.ghostcloud.cn。

3.生成服務器私鑰server-key.pem和CSR(Certificate Signing Request)server-csr.pem。CN為DockerDaemon。

server-csr.pem是一個臨時文件,生成server-cert.pem以后,可以刪除。

opensslgenrsa -out ~/docker/server-key.pem 4096openssl req -subj '/CN=DockerDaemon' -sha256 -new -key ~/docker/server-key.pem -out ~/docker/server-csr.pem

4.使用CA證書生成服務器證書server-cert.pem。TLS連接時,需要限制客戶端的IP列表或者域名列表。只有在列表中的客戶端才能通過客戶端證書訪問Docker Daemon。在本例中,只允許127.0.0.1和192.168.1.100的客戶端訪問。如果添加0.0.0.0,則所有客戶端都可以通過證書訪問Docker Daemon。

allow.list是一個臨時文件,生成server-cert.pem以后,可以刪除。

echosubjectAltName = IP:127.0.0.1,IP:192.168.1.100 > ~/docker/allow.listopenssl x509 -req -days 365 -sha256 -in ~/docker/server-csr.pem -CA ~/docker/ca.pem -CAkey ~/docker/ca-key.pem -CAcreateserial -out ~/docker/server-cert.pem -extfile ~/docker/allow.list

5.生成客戶端私鑰client-key.pem和CSRclient-csr.pem。CN為DockerClient。

client-csr.pem是一個臨時文件,生成client-cert.pem以后,可以刪除。

opensslgenrsa -out ~/docker/client-key.pem 4096openssl req -subj '/CN=DockerClient' -new -key ~/docker/client-key.pem -out ~/docker/client-csr.pem

6.使用CA證書生成客戶端證書client-cert.pem。需要加入extendedKeyUsage選項。

echoextendedKeyUsage = clientAuth > ~/docker/options.listopenssl x509 -req -days 365 -sha256 -in ~/docker/client-csr.pem -CA ~/docker/ca.pem -CAkey ~/docker/ca-key.pem -CAcreateserial -out ~/docker/client-cert.pem-extfile ~/docker/options.list

7.成功生成了需要的證書和秘鑰,可以刪除臨時文件。

rm -f ~/docker/server-csr.pem ~/docker/client-csr.pem ~/docker/allow.list ~/docker/options.list

8.為了保證證書和私鑰的安全,需要修改文件的訪問權限。

chmod0444 ~/docker/ca.pem ~/docker/server-cert.pem ~/docker/client-cert.pemchmod 0400 ~/docker/ca-key.pem ~/docker/server-key.pem ~/docker/client-key.pem

9.重啟Docker Daemon,加入ca.pem、server-cert.pem和server-key.pem。-H=0.0.0.0:2376表示Docker Daemon監聽在2376端口。

dockerdaemon --tlsverify --tlscacert=~/docker/ca.pem --tlscert=~/docker/server-cert.pem --tlskey=~/docker/server-key.pem -H=0.0.0.0:2376

10.在客戶端,運行docker命令時,加入ca.pem、client-cert.pem和client-key.pem。本例中,只有127.0.0.1和192.168.1.100的客戶端可以訪問Docker Daemon。

docker--tlsverify --tlscacert=~/docker/ca.pem --tlscert=~/docker/client-cert.pem --tlskey=~/docker/client-key.pem -H=tcp://127.0.0.1:2376 infoContainers: 41 Running: 16 Paused: 0 Stopped: 25 Images: 821 Server Version: 1.10.3

現在小伙伴們就可以安全的遠程控制Docker主機了。


轉載于:https://www.cnblogs.com/SZLLQ2000/p/8175608.html

總結

以上是生活随笔為你收集整理的docker 2375 vulnerability and self-signatuer certifications的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。