更安全的本地Docker網路
上週我寫了《探索本地Docker橋接網路》。在這篇文章中我介紹瞭如何使用nmap探索由同一橋接網路上的其它容器公開的服務,並展示了在這些服務沒有對映到主機的公有介面的埠的情況下如何去訪問這些服務。這是一個問題,因為大多數映象的工具、資料庫以及微服務都帶有不安全的預設配置。較為變通的工程師或管理員可能會把這些映象放到可以保護他們的防火牆或網路拓撲結構中。這隻適用於配置了防火牆和網路拓撲的環境。
預設情況下,Docker允許任意的跨容器通訊,在我看來這是一件好事,它不僅可以降低應用複雜度而且還降低了學習曲線。對於任何一個技術來說,能讓使用者快速上手,同時又有清晰的學習路徑是非常重要的。在Docker中,我們需要知道如何加強它們的容器網路。人們應該學會的第一件事就是如何禁用任意的跨容器通訊:啟動Docker守護程式時設定
icc=false
。docker -d --icc=false ....
當以這種方式啟動Docker時,它將配置iptables(防火牆):在橋接網路中移除所有容器間的通訊,這將禁止容器之間的通訊。
Chain FORWARD (policy ACCEPT) target prot opt source destination DROP all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
如果你不想讓你的容器間直接通訊,那我們推薦你這樣做。但是需要注意的是這樣做無法阻止主機的公共介面與可以公開訪問的對映到另一個容器的埠之間的通訊(譯者注:當然無法阻止,對映的埠主機肯定可以訪問啦)。
這可以滿足很多人的需求,但故事並沒有到此結束。
當跨容器通訊被禁用時,你可以在容器建立時使用容器連線來確保指定容器間的通訊。當你建立一個容器並指定另一個作為連線的目標時,Docker建立相應的連線。例如:
docker run -d --name ex_a busybox /bin/sh docker run -d --name ex_b --link ex_a:other busybox /bin/sh
如果今天我對Docker所有的部分都缺乏激情,很可能使用容器連線只是為了服務發現。當你連線兩個容器時,Docker為了使用此容器會設定帶有“位置”資訊的環境變數,此處有太多隱藏的問題。程式或者使用者建立的容器可以指定連線的別名。但是容器內的軟體必須與別名一致,否則它不知道要尋找什麼。即使我認為連線提供了埠資訊以及網路地址資訊,我依然更喜歡DNS。幸運的是,連線不僅僅是為了服務發現。
當你禁用了跨容器通訊時,為了使連線的容器之間得以通訊Docker會輸出異常。以下是摘自有這樣異常的iptables。
Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT tcp -- 172.17.0.3 172.17.0.4 tcp spt:80 ACCEPT tcp -- 172.17.0.4 172.17.0.3 tcp dpt:80 DROP all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
這是容器連線的最強大的應用。連線允許你用簡單的斷言來定義容器之間的關係。就輕量級而言,Docker確實比任何我用過的其他工具都更好。
原文連結:Safer Local Docker Networks (翻譯:田浩浩 校對:李穎傑)
===========================
譯者介紹
田浩浩,悉尼大學USYD碩士研究生,目前在珠海從事Android應用開發工作。業餘時間專注Docker的學習與研究,希望通過DockerOne把最新最優秀的譯文貢獻給大家,與讀者一起暢遊Docker的海洋。
相關文章
- TLSv 1.3 網路安全標準通過 帶來更安全的網路環境TLS
- 教育網路安全實踐丨如何讓科研院所網路更安全?
- 應對網路威脅NGFW看得懂的安全更安全
- 網路安全法6.1起施行,怎樣讓你的網站更安全?網站
- Socks Proxy如何讓你更安全的瀏覽網際網路
- 【Docker】(11)---Docker的網路概念Docker
- 哪些人更適合學習網路安全?
- 網管如何設定網咖路由器讓網路更安全路由器
- Docker的網路(三)Docker
- 1.04 docker的網路Docker
- Docker的網路管理Docker
- Docker 網路Docker
- Docker網路Docker
- kvm網路,docker網路,,vm網路Docker
- Docker 新網路 overlay 網路Docker
- Docker 網路管理Docker
- Docker網路原理Docker
- Docker網路管理Docker
- [Docker 系列]docker 學習八,Docker 網路Docker
- 網路安全衛士X-KEY,讓檔案更私密(轉)
- Android本地網路播放Android
- Docker容器的網路連線Docker
- Docker的網路模式詳解Docker模式
- Docker 網路管理的未來Docker
- 【網路安全】你必須知道的幾個網路安全概念
- 在本地建立docker的registryDocker
- 6.Docker網路Docker
- Docker網路一覽Docker
- 41_Docker網路Docker
- IBM推出區塊鏈雲服務,可打造更安全網路IBM區塊鏈
- 【網路安全】知名網路安全企業有哪些?
- Mac 檢視本地網路配置Mac
- 構築更安全的“第五空間”,綠盟科技釋出《2019網路安全觀察》報告
- AVG攜手QQ電腦管家,捍衛網際網路安全更進一步
- docker容器網路bridgeDocker
- Docker四種網路模式Docker模式
- Docker幾種網路模式Docker模式
- 重建docker0網路Docker