国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

未來 Docker 的安全

KitorinZero / 617人閱讀

摘要:我們也不再需要提供的安全標(biāo)簽的策略了。增加容器之間的隔離度,甚至可以完全拋棄機(jī)制。禁止的越多越安全。例如的插件就得管管,畢竟插件都是來自互聯(lián)網(wǎng),沒辦法保證的安全。在瀏覽器中使用執(zhí)行插件確保系統(tǒng)的安全。未來的我們將會繼續(xù)增強(qiáng)的安全功能。

當(dāng)我開始在opensource.com上面寫這一系列的docker安全的文章是,想闡述的一點(diǎn)就是:“他們快罩不住了(containers do not contain)”。

Docker 和 RedHat 的員工的工作之一就是讓這句話的正確性為0,我在redhat的團(tuán)隊(duì)就在嘗試采取其他的安全機(jī)制讓docker容器更加安全。我們正在進(jìn)行的計劃可能會對docker的將來產(chǎn)生影響。

用戶namespace
//看上去像是UID映射這個東西=

用戶namespace基于內(nèi)核namespace,可以更好地將主機(jī)和容器分離起來。

基本方法就是宿主機(jī)創(chuàng)建一系列的UID,例如60000-61000,然后映射到內(nèi)部的namespace 0-1000,也可以用GID實(shí)現(xiàn)。內(nèi)核會把docker容器內(nèi)的UID 0 識別、鑒定為外部的UID 60000,任何一個沒有被映射過的進(jìn)程或者UID在容器內(nèi)部都會被識別為UID=-1,從而禁止他們訪問容器,包括所有的鏡像都不允許訪問。如果你想使用有用戶namespace認(rèn)證的鏡像,那么你就得切換到容器內(nèi)部root用戶的UID對應(yīng)的外部ID。另一個問題就是外部UID 0掛載進(jìn)入容器的卷、硬盤等設(shè)備在容器內(nèi)部是沒有權(quán)限訪問的。你必須用chown命令將UID切換成內(nèi)部可以的UID。

chown -R 60000:60000 /var/lib/content

用戶namespace的另一個問題在于,你不許給不同的容器分配不同段的UID進(jìn)行映射。如果你有成百上千個容器,那么如何宿主機(jī)分配映射的UID就是個問題。

用戶namespace是一個很炫酷的事情,他們可以直接利用namespace的優(yōu)勢,如果把容器進(jìn)行如上的操作,那么我們可以拋棄掉所有的宿主系統(tǒng)提供的capabilities機(jī)制。也就是說,當(dāng)用戶namespace生效后,我們可以完全不再需要宿主系統(tǒng)提供的capabilities機(jī)制。我們也不再需要selinux提供的安全標(biāo)簽的策略了。

使用案例

三個可以用到用戶namespace的方案如下:

只映射UID=0。增加容器之間的隔離度,甚至可以完全拋棄capabilities機(jī)制。這樣做無疑可以增強(qiáng)容器和宿主機(jī)之間的安全性,但是也不會相對地提升容器之間的隔離度。所以只需要假設(shè)所有DOCKER容器的ROOT的外部UID為2,那么,外部的UID=2映射到容器內(nèi)部UID=0,外部GID=2映射到內(nèi)部GID=0,凡是大于2的全部映射到自己。這樣能最大程度的減少從容器內(nèi)部獲取宿主機(jī)的root權(quán)限。當(dāng)然這樣也能減少掛載文件系統(tǒng)時遇到的麻煩。這樣處理之后,內(nèi)部root用戶mount的磁盤,外部是無法讀取,(也就不會有SUID這個問題)。同樣,其余的關(guān)于用戶的namespace的處理也是一樣。

openshift式的解決辦法。每個容器都有自己多帶帶的UID/GID,如同每個用戶都有自己的UID和GID一樣。只有容器用得到內(nèi)核capabilities時這樣才有必要,用不到的時候意義不大。

按照段來映射。每個容器都映射一個UID段,每個容器映射的UID段各不相同。但是復(fù)雜性會隨著容器數(shù)目增加急劇增加。掛載文件系統(tǒng)可能會成為一個大問題。可以增加一個功能,當(dāng)容器內(nèi)部mount的時候便執(zhí)行對應(yīng)的chown UID:GID /SRC命令,這樣一定程度上可以解決掛載的問題。

然而我不認(rèn)為這三個解決方案可以疊加。我也看過對內(nèi)核“加入容器時,重設(shè)mount目錄的UID的提議”,甚至對樂死mount --bind的命令也執(zhí)行重設(shè)UID,但是我覺得這個提議交給那些寫內(nèi)核的人比較好,我也會繼續(xù)參考那些做安全人的意見。

用戶namespace已經(jīng)并入libcontainer了,也已經(jīng)打好了能這樣讓docker運(yùn)行起來的補(bǔ)丁。

Seccomp(一個沙箱)

有個問題,那就是這里和別的地方提到的容器隔離措施全都是依賴與內(nèi)河。空氣和電腦接觸,但是空氣無法和電腦內(nèi)核交流。但是容器就不一樣,所有的容器都是直接和內(nèi)核進(jìn)行交換信息。如果宿主機(jī)有個漏洞,那么這個漏洞就擊垮所有的安全措施,docker容器也會變得無法控制。

X86_64的linux內(nèi)核有超過600個系統(tǒng)調(diào)用。只要其中其中有一個有漏洞,那么都可以導(dǎo)致容器的權(quán)限提升。因此,有些系統(tǒng)調(diào)用是基本用不到的,所以應(yīng)該禁止使用這些系統(tǒng)調(diào)用。禁止的越多越安全。

Seccomp是google開發(fā)的禁止系統(tǒng)調(diào)用的沙盒類型的程序。例如Chrome的插件就得管管,畢竟插件都是來自互聯(lián)網(wǎng),沒辦法保證100%的安全。Google在Chrome瀏覽器中使用Seccomp執(zhí)行chrome插件確保系統(tǒng)的安全。

我的同事Paul Moore,決定將Seccomp簡化從而構(gòu)建一個C庫來管理系統(tǒng)調(diào)用庫。現(xiàn)在他的成果Libseccomp也在qemu,lxc,和systemd等軟件中開始使用了。

我們也開始用go封裝這個庫然后再libcontainer中調(diào)用,進(jìn)行過濾系統(tǒng)調(diào)用。

一般而言我們認(rèn)為這些系統(tǒng)調(diào)用是可以禁止容器調(diào)用的:kexec_load, open_by_handle_at, init_module, finit_module, delete_module, iopl, ioperm, swapon, swapoff, sysfs, sysctl, adjtimex, clock_adjtime, lookup_dcookie, perf_event_open, fanotify_init, kcmp.

我們也在尋求其他可以禁止的系統(tǒng)調(diào)用,歡迎給提議。除此之外,我們考慮禁止調(diào)用許多舊的網(wǎng)絡(luò)調(diào)用: Amateur Radio X.25 (3), IPX (4), Appletalk (5), Netrom (6), Bridge (7), ATM VPC (8), X.25 (9), Amateur Radio X.25 PLP (11), DECNet (12), NetBEUI (13), Security (14), PF_KEY key management API (15), 還有所有比 AF_NETLINK (16) 需求的權(quán)限更多的系統(tǒng)調(diào)用。

加入系統(tǒng)調(diào)用過濾器的另一個方面就是可以過濾掉所有非本架構(gòu)的調(diào)用,例如X86-64的電腦默認(rèn)情況下是無法使用32位的系統(tǒng)接口的。我們希望這個方案被設(shè)置成為seccomp的默認(rèn)選項(xiàng)。

禁止了其他架構(gòu)的系統(tǒng)調(diào)用,我們可以簡單地認(rèn)為我們直接縮小了一半被內(nèi)核提權(quán)、內(nèi)核攻擊的風(fēng)險。

調(diào)整seccomp

類似于系統(tǒng)capabilities和selinux標(biāo)簽,我們允許使用命令行自己決定自己需要使用/禁止那些系統(tǒng)調(diào)用:

docker run -d --security-opt seccomp:allow:clock_adjtime ntpd

這條命令將會允許容器內(nèi)使用clock_adjtime調(diào)用,因?yàn)槭莕tpd服務(wù),所以必須得用來調(diào)整時間。
同樣,

docker run -d --security-opt seccomp:deny:getcwd /bin/sh

這條命令將會禁止容器內(nèi)執(zhí)行的shell查詢當(dāng)前自己所在的目錄。redhat的Matt Heon有一個展示這個功能的短片。

視頻地址:https://www.youtube.com/watch?feature=player_embedded&v=sw3NjVMMXz8

我們默認(rèn)會禁止很多的系統(tǒng)調(diào)用,但是仍舊有很多很危險的系統(tǒng)調(diào)用沒有被禁止。你可以全部禁止,然后慢慢地加入希望使用的系統(tǒng)調(diào)用。

docker run -d --security-opt seccomp:deny:all --security-opt seccomp:allow:getcwd /bin/sh

事實(shí)上,docker中運(yùn)行sh需要比getcwd更多的系統(tǒng)調(diào)用。被禁止掉的調(diào)用都會記錄在/var/log/autit/audit.log。如果audit沒有運(yùn)行的話,那么將會記錄在/var/log/messages中。

未來的docker

我們將會繼續(xù)增強(qiáng)docker的安全功能。如果linux內(nèi)核中出現(xiàn)新的安全功能,或者linux內(nèi)核中有安全功能的改進(jìn),我們也會去盡量的利用這些功能,加固容器的安全性。

另一個方面是我們開始關(guān)注容器的管理。目前的管理方式是,如果你能有權(quán)限對docker的socket和端口發(fā)送數(shù)據(jù)的話,那么你就能對docker做任何事情。(譯注:尤其是端口,docker remote api這種東西目前完全是無法禁止的) 很遺憾的是目前我們的解決辦法只有禁止非root用戶的/run/docker.socket接口的訪問。我們也開始著手增加授權(quán),這樣管理員就能證明自己是管理員,而不是有權(quán)力訪問接口的別的用戶。我們也開始增加適當(dāng)?shù)墓芾碛涗浀墓δ埽瑢⒐芾韱T對某些容器的是否是特權(quán)運(yùn)行的情況記錄到syslog或者journalctl。除此之外,我們還可能增加基于角色的訪問控制(RBAC),簡單的來說,就是超級管理員控制其他的管理員。例如:

一星級管理員只允許開啟、停止容器。

二星級管理員有權(quán)利新建非特權(quán)的容器。

三星級管理員有最大的權(quán)力運(yùn)行所有的容器,并且賦予容器最大的權(quán)限。

結(jié)論

當(dāng)這些安全措施實(shí)施之后,docker容器會更大程度的讓你的宿主機(jī)遠(yuǎn)離風(fēng)險。我們的目標(biāo)就是讓容器能包含星辰大海。

  

原文 未來Docker的安全

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/26378.html

相關(guān)文章

  • 未來 Docker 安全

    摘要:我們也不再需要提供的安全標(biāo)簽的策略了。增加容器之間的隔離度,甚至可以完全拋棄機(jī)制。禁止的越多越安全。例如的插件就得管管,畢竟插件都是來自互聯(lián)網(wǎng),沒辦法保證的安全。在瀏覽器中使用執(zhí)行插件確保系統(tǒng)的安全。未來的我們將會繼續(xù)增強(qiáng)的安全功能。 當(dāng)我開始在opensource.com上面寫這一系列的docker安全的文章是,想闡述的一點(diǎn)就是:他們快罩不住了(containers do not c...

    A Loity 評論0 收藏0
  • 未來 Docker 安全

    摘要:我們也不再需要提供的安全標(biāo)簽的策略了。增加容器之間的隔離度,甚至可以完全拋棄機(jī)制。禁止的越多越安全。例如的插件就得管管,畢竟插件都是來自互聯(lián)網(wǎng),沒辦法保證的安全。在瀏覽器中使用執(zhí)行插件確保系統(tǒng)的安全。未來的我們將會繼續(xù)增強(qiáng)的安全功能。 當(dāng)我開始在opensource.com上面寫這一系列的docker安全的文章是,想闡述的一點(diǎn)就是:他們快罩不住了(containers do not c...

    codeGoogle 評論0 收藏0
  • Flux7 Docker 系列教程(五):Docker 安全

    摘要:本系列教程翻譯自,系列共有九篇,本文譯自第五篇。因此,本系列教程關(guān)鍵的第五章用來討論可能面臨的安全問題以及它們是如何影響到整體的安全性的。一些必要的安全措施包括使用非特權(quán)用戶運(yùn)行容器。本圖中列舉了幾個用于維護(hù)和授權(quán)的安全性。 本系列教程翻譯自 Flux7 Docker Tutorial Series,系列共有九篇,本文譯自第五篇 Part 5: Docker Security。該系列所...

    ztyzz 評論0 收藏0
  • Docker 1.8.0增加Content Trust,容器安全性提升

    摘要:這對來說異常重要,因?yàn)槿萜骷夹g(shù)未來將取代傳統(tǒng)廠商和的虛擬機(jī)技術(shù)。同時還產(chǎn)生一個,來防止。 showImg(https://segmentfault.com/img/bVoOgx); Docker這家初創(chuàng)公司,讓Docker在Linux容器中構(gòu)建和部署應(yīng)用越來越受歡迎,最近宣布了一項(xiàng)行特性,Docker在其最新版本的開源產(chǎn)品中增添Content Trust,這項(xiàng)功能將為使用容器的人們提供...

    Noodles 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<