由下圖可見,虛擬機器是通過管理系統(hypervisor)模擬出 cpu、記憶體、網路等硬體,然後在這些模擬的硬體上建立客戶核心和作業系統。這樣做的好處就是虛擬機器有自己的核心和作業系統,並且硬體都是通過虛擬機器管理系統模擬出來的,使用者程式無法直接使用到主機的作業系統和硬體資源,因此虛擬機器也對隔離性和安全性有著更好的保證。而 docker 容器則是通過 linux 核心的 namespace 技術實現了檔案系統、程序、裝置以及網路的隔離,然後再通過 cgroups 對 cpu、記憶體等資源進行限制,最終實現了容器之間相互不受影響,由於容器的隔離性僅僅依靠核心來提供,因此容器的隔離性也遠弱於虛擬機器。
既然虛擬機器安全性這麼好,為什麼我們還要用容器呢?其實兩者各有利弊,只是在業務快速開發與迭代的今天,容器秒級啟動、效能損耗小,映象占用小等特性更加匹配當今主流的業務場景。● 基礎軟體漏洞:由於容器需要安裝基礎的軟體包,如果軟體包存在漏洞,則可能會被不法分子利用並且侵入容器,影響其他容器或主機安全。
● 映象倉庫漏洞:無論是 docker 官方的映象倉庫還是私有映象倉庫,都有可能被攻擊和篡改映象,當我們使用映象時,就可能成為攻擊者的目標物件。
● 使用者程式漏洞:使用者自己構建的軟體包可能存在漏洞或者被植入惡意指令碼,這樣會導致執行時提權影響其他容器或主機安全。
● selinux:是 linux 的乙個核心安全模組,提供了安全訪問的策略機制,通過設定 selinux 策略可以實現某些程序允許訪問某些檔案。
● grsecurity:是乙個對核心的安全擴充套件,可通過智慧型訪問控制,提供記憶體破壞防禦,檔案系統增強等多種防禦形式。
--cpus:限制 cpu 配額
--memory:限制記憶體配額
--pids-limit:限制容器的 pid 個數
### 舉例:
docker容器的安全加固
社群中常用的做法是利用lxcfs來提供容器中的資源可見性。lxcfs是乙個開源的fuse 使用者態檔案系統 實現來支援lxc容器。lxcfs通過使用者態檔案系統,在容器中提供下列 procfs 的檔案 proc cpuinfo proc diskstats proc meminfo proc sta...
docker容器的安全加固
社群中常用的做法是利用lxcfs來提供容器中的資源可見性。lxcfs是乙個開源的fuse 使用者態檔案系統 實現來支援lxc容器。lxcfs通過使用者態檔案系統,在容器中提供下列 procfs 的檔案 proc cpuinfo proc diskstats proc meminfo proc sta...
Docker容器真的安全嗎?
本文基於我今年在dockercon上的演講。它將討論docker容器安全性,我們當前的位置以及發展的方向。這是有關docker安全性的系列文章的一部分 請閱讀第二部分 我聽到並讀到很多人都認為docker容器實際上是沙箱應用程式 意味著他們可以使用docker作為根在自己的系統上執行隨機應用程式。他...