docker容器的安全加固

2021-09-24 04:39:17 字數 2984 閱讀 4251

社群中常用的做法是利用lxcfs來提供容器中的資源可見性。lxcfs是乙個開源的fuse(使用者態檔案系統)實現來支援lxc容器。

lxcfs通過使用者態檔案系統,在容器中提供下列 procfs 的檔案:

/proc/cpuinfo

/proc/diskstats

/proc/meminfo

/proc/stat

/proc/swaps

/proc/uptime

比如,把宿主機的 /var/lib/lxcfs/proc/memoinfo 檔案掛載到docker容器的/proc/meminfo位置後。容器中程序讀取相應檔案內容時,lxcfs的fuse實現會從容器對應的cgroup中 讀取正確的記憶體限制。從而使得應用獲得正確的資源約束設定

問題:我們在不做這個的時後,預設建立的容器檢視到的記憶體相關資訊是主機的,這是不合理的。我們前面已經學過資源控制了,已經控制了資源,檢視到的又不符合,這是不對的。

安裝完lxcfs之後,會在/var/lib目錄下生成lxcfs目錄。只是/var/lib/lxcfs目錄中沒有內容。

[root@server1 ~]# cd /var/lib/lxcfs/

[root@server1 lxcfs]# ls

[root@server1 lxcfs]# lxcfs /var/lib/lxcfs/ & #按回車結束,千萬不要用crtl+c,因為ctrl+c會將該程序殺死。

[1] 2562

[root@server1 lxcfs]# hierarchies:

0: fd: 5: devices

1: fd: 6: hugetlb

2: fd: 7: perf_event

3: fd: 8: blkio

4: fd: 9: net_prio,net_cls

5: fd: 10: freezer

6: fd: 11: memory

7: fd: 12: cpuacct,cpu

8: fd: 13: pids

9: fd: 14: cpuset

10: fd: 15: name=systemd

[root@server1 lxcfs]# cd

[root@server1 ~]# cd /var/lib/lxcfs/ #啟動lxcfs之後,會在/var/lib/lxcfs目錄下生成cgroup目錄和proc目錄

[root@server1 lxcfs]# ls

cgroup proc

[root@server1 ~]# docker run -it --name vm5 -m 200m \

> -v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo \

> -v /var/lib/lxcfs/proc/diskstats:/proc/diskstats:rw \

> -v /var/lib/lxcfs/proc/meminfo:/proc/meminfo:rw \

> -v /var/lib/lxcfs/proc/stat:/proc/stat:rw \

> -v /var/lib/lxcfs/proc/swaps:/proc/swaps:rw \

> -v /var/lib/lxcfs/proc/uptime:/proc/uptime:rw \

> ubuntu

root@37d78a73f207:/# free -m #我們可以看到總記憶體為200m,表示配置成功

total used free shared buffers cached

mem: 200 1 198 314 0 0

-/+ buffers/cache: 1 198

swap: 200 0 200

root@37d78a73f207:/#

有的時候我們需要容器具備更多的許可權,比如操作核心模組,控制swap交換分割槽,掛載usb磁碟,修改mac位址等。

我們建立容器後,進入容器的root帳號的許可權是受限制的,不是真正的root使用者。

加入–privileged=true引數,獲得的是具有管理員許可權的root使用者。

–privileged=true 的許可權非常大,接近於宿主機的許可權,為了防止使用者的濫用,需要增加限制,只提供給容器必須的許可權。此時docker 提供了許可權白名單的機制,使用–cap-add新增必要的許可權。

docker容器的安全加固

社群中常用的做法是利用lxcfs來提供容器中的資源可見性。lxcfs是乙個開源的fuse 使用者態檔案系統 實現來支援lxc容器。lxcfs通過使用者態檔案系統,在容器中提供下列 procfs 的檔案 proc cpuinfo proc diskstats proc meminfo proc sta...

Docker基礎 10 docker安全加固

docker安全加固 命令設定限制記憶體使用 root server2 shm docker run memory 200m memory swap 200m it busybox 但是隔離不徹底,顯示仍為宿主及記憶體,雖然實際記憶體限制是生效的。一 加固隔離1 安裝開啟 yum install l...

Docker 容器安全

由下圖可見,虛擬機器是通過管理系統 hypervisor 模擬出 cpu 記憶體 網路等硬體,然後在這些模擬的硬體上建立客戶核心和作業系統。這樣做的好處就是虛擬機器有自己的核心和作業系統,並且硬體都是通過虛擬機器管理系統模擬出來的,使用者程式無法直接使用到主機的作業系統和硬體資源,因此虛擬機器也對隔...