理論+實操:docker安全概述——remote遠程調用訪問+限制訪問流量+TLS加密通訊

一:docker中容器與常規的虛擬化平臺中虛擬機的區別

1.1 隔離與共享

虛擬機通過添加Hypervisor(管理程序程序虛擬層),虛擬出網卡、內存、CPU等虛擬硬件,再在其上建立虛擬機,每個虛擬機都有自己的系統內核。

而Docker容器則是通過隔離的方式,將文件系統、進程、設備、網絡等資源進行隔離,再對權限、CPU資源等進行控制,最終讓容器之間互不影響,容器無法影響宿主機。容器與宿主機共享內核、文件系統、硬件等資源。

1.2 性能與損耗

與虛擬機相比,容器資源損耗要少。同樣的宿主機下,能夠建立容器的數量要比虛擬機多。

但是,虛擬機的安全性要比容器稍好,要從虛擬機攻破到宿主機或者其他虛擬機,就需要先攻破Hypervsior,但是極其困難。

而docker容器與宿主機共享內核、文件系統等資源,更有可能對其他容器、宿主機產生影響。

二:Docker存在的安全問題

2.1 Docker自身漏洞

作爲一款應用Docker本身實現上會有代碼缺陷,在官方記錄Docker歷史版本工作共有超過20項漏洞。

黑客常用的攻擊手段主要有代碼執行、權限提升、信息泄露、權限繞過等。目前Docker版本更迭非常快,Docker用戶最好將Docker升級爲最新版本。

docker更新考慮的第一個就是安全,然後就是資源利用率

2.2 Docker源碼問題

Docker提供了Docker hub(公有倉庫),可以讓用戶上傳創建的鏡像,以便其他用戶下載,快速搭建環境。但同時也帶來了一些安全隱患。例如下面三種方式:

2.2.1 黑客上傳惡意鏡像

如果有黑客在製作的鏡像中植入木馬、後門等惡意團建,那麼環境一開始就變得不安全,後續更沒有安全可言。

2.2.2 鏡像中使用有漏洞的軟件

Docker hub上能下載的鏡像裏面,有一大部分都安裝了有漏洞的軟件;所以下載鏡像後,需要檢查裏面軟件的版本信息,對應的版本是否存在漏洞,並及時更新打賞補丁

2.2.3 中間人攻擊篡改鏡像

鏡像在傳輸過程中可能被篡改,目前新版本的Docker已經提供了相應的校驗機制來預防這個問題。

三:Docker架構缺陷與安全機制

docker本身的架構與機制就可能產生問題。例如這樣一種攻擊場景,黑客已經控制了宿主機上的一些容器,或者獲得了通過在共有公國雲上建立容器的方式,然後對宿主機或其他容器發起了攻擊。

3.1 容器之間的局域網攻擊

主機上的容器之間可以構成局域網,因此針對局域網的ARP欺騙、嗅探、廣播風暴等攻擊方式可能會出現

所以,在一個主機上部署多個容器需要合理的配置網絡,設置iptables規則

3.2 DDos攻擊耗盡資源

DDos攻擊:就是佔用資源但是不幹活

Cgroups資源配額安全機制就是要防止此類攻擊的,不要爲單一地容器分配過多的資源即可避免此類問題

3.3 有漏洞的系統調用

Docker與虛擬機的一個重要的區別就是Docker與宿主機共用一個操作系統內核。

一旦宿主內核存在可以越權或者提權漏洞,儘管Docker使普通用戶執行,在容器被入侵時,攻擊者還可以利用內核漏洞跳到宿主機做更多的事情

3.4 共享root用戶權限

如果以root用戶權限運行容器,容器內的root用戶也就擁有了宿主機的root權限

四:Docker安全基線標準

下面從內核、主機、網絡、鏡像、容器以及其它等6個方面總結Docker安全基線標準。

4.1 內核級別

1.及時更新內核

2.User NameSpace(容器內的root權限在容器之外處於非高權限狀態)。

3.Cgroups(對資源的配額的度量)。

4.SELinux/AppArmor/GRSEC(控制文件訪問權限)。

5.Capability(權限劃分)。

6.Seccomp(限定系統調用)。

7.禁止將容器的命名空間與宿主機進程命名空間共享。

4.2 主機級別

1.爲容器創建獨立存儲分區

2.僅運行必要的服務

3.禁止將宿主機上敏感目錄映射到容器

4.對Docker守護進程、相關文件和目錄進行審計

5.設置適當的默認文件描述符數

(文件描述符:內核(kernel)利用文件描述符(file descriptor)來訪問文件。文件描述符是非負整數。打開現存文件或新建文件時,內核會返回一個文件描述符。讀寫文件也需要文件描述符來指定待讀寫的文件)

6.用戶權限爲root的Docker相關文件的訪問權限應該爲644或者更低權限。

7.週期性檢查每個主機的容器清單,並清理不必要的容器

一臺服務器可以預留兩個網卡端口,用來做負載均衡等流量轉發

4.3 網絡級別

1.通過iptables設定規則實現禁止或允許容器之間網絡流量

2.允許docker修改iptables

3.禁止將docker綁定到其他IP/port或者unix socket

4.禁止在容器上映射特權端口,就是別映射已用端口

5.容器上只開放所需要的端口

6.禁止在容器上使用主機網絡(host)模式

7.若宿主機有多個網卡,將容器進入流量綁定到特定的主機網卡上

4.4 鏡像級別

1.創建本地鏡像倉庫服務器

2.鏡像中軟件都爲最新本版本。

3.使用可信鏡像文件,並通過安全通道下載

4.重新構建鏡像而非對容器和鏡像打補丁

5.合理管理鏡像標籤,及時移除不再使用的鏡像

6.使用鏡像掃描

7.使用鏡像簽名

4.5 容器級別

1.容器最小化,操作系統鏡像最小化

2.容器以單一主進程的方式運行

3.禁止使用–privileged標記使用特權容器

4.禁止在容器上運行ssh服務

5.以只讀的方式掛載容器的根目錄系統

6.明確定義屬於容器的數據盤符

7.通過設置on-failure限制容器常識重啓的次數,容器反覆重啓容易丟失數據

8.限制在容器中可用的進程數,以防止fork bomb(迅速增長子進程,耗盡系統進程數量)

4.6 其他設置

1.定期對宿主機系統及容器進行安全審計

2.使用最少資源和最低權限運行容器

3.避免在統一宿主機上部署大量容器,維持在一個能夠管理的數量

4.監控Docker容器的使用,性能以及其他各項指標

5.增加實時威脅檢測和時間相應功能

6.使用中心和遠程日誌收集服務

k8s或者zabbix可以監控docker

五:使用本地登錄容器實現最小化

如果盡在容器中運行必要的服務,像SSH等服務是不能輕易開啓去鏈接容器的;

通常使用本exec 去鏈接進入容器

docker exec -itt 容器ID bash

六:Docker remote( 遠程調用) api訪問控制

docker的遠程調用API接口存在未授權訪問漏洞,至少應限制外網訪問

建議使用Socket方式訪問,socket 是使用tcp協議訪問

6.1 環境如下

當前docker鏡像(安裝harbor倉庫)

[root@docker ~]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
compose_nginx_nginx         latest              e3abfd076454        4 days ago          726MB
cirros                      latest              3c82e4d066cf        7 weeks ago         12.6MB
127.0.0.1/gsy/cirros        vers1               3c82e4d066cf        7 weeks ago         12.6MB
centos                      7                   5e35e350aded        5 months ago        203MB
vmware/harbor-log           v1.2.2              36ef78ae27df        2 years ago         200MB
vmware/harbor-jobservice    v1.2.2              e2af366cba44        2 years ago         164MB
vmware/harbor-ui            v1.2.2              39efb472c253        2 years ago         178MB
vmware/harbor-adminserver   v1.2.2              c75963ec543f        2 years ago         142MB
vmware/harbor-db            v1.2.2              ee7b9fa37c5d        2 years ago         329MB
vmware/nginx-photon         1.11.13             6cc5c831fc7f        2 years ago         144MB
vmware/registry             2.6.2-photon        5d9100e4350e        2 years ago         173MB
vmware/postgresql           9.6.4-photon        c562762cbd12        2 years ago         225MB
vmware/clair                v2.0.1-photon       f04966b4af6c        2 years ago         297MB
vmware/harbor-notary-db     mariadb-10.1.10     64ed814665c6        3 years ago         324MB
vmware/notary-photon        signer-0.5.0        b1eda7d10640        3 years ago         156MB
vmware/notary-photon        server-0.5.0        6e2646682e3c        3 years ago         157MB
photon                      1.0                 e6e4e4a2ba1b        3 years ago         128MB

當前docker up容器

[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS              PORTS                                                              NAMES
94630e81bb21        vmware/harbor-jobservice:v1.2.2    "/harbor/harbor_jobs…"   2 days ago          Up 2 days                                                                              harbor-jobservice
e68e275ba6c5        vmware/nginx-photon:1.11.13        "nginx -g 'daemon of…"   2 days ago          Up 2 days           0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp   nginx
278c281594c9        vmware/harbor-ui:v1.2.2            "/harbor/harbor_ui"      2 days ago          Up 2 days                                                                              harbor-ui
b7adea7dfc28        vmware/registry:2.6.2-photon       "/entrypoint.sh serv…"   2 days ago          Up 2 days           5000/tcp                                                           registry
b587a5b5a4f9        vmware/harbor-db:v1.2.2            "docker-entrypoint.s…"   2 days ago          Up 2 days           3306/tcp                                                           harbor-db
8fbb66df3206        vmware/harbor-adminserver:v1.2.2   "/harbor/harbor_admi…"   2 days ago          Up 2 days                                                                              harbor-adminserver
b282d0c45952        vmware/harbor-log:v1.2.2           "/bin/sh -c 'crond &…"   2 days ago          Up 2 days           127.0.0.1:1514->514/tcp                                            harbor-log
[root@docker ~]# 

查看客戶端

[root@remote ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@remote ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@remote ~]# 

所謂Docker remote( 遠程調用) api訪問控制便是在不使用ssh鏈接目標端的方式去查看目標端的容器狀態

關閉核心防護

[root@docker ~]# setenforce 0
setenforce: SELinux is disabled

6.2 修改配置文件docker.service

修改第14行參數

-H 指定協議

[root@docker ~]# vim /usr/lib/systemd/system/docker.service 
 14 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H unix:///var/run/docker.sock -Htcp://192.168.247.20:2375

6.3 重啓服務

[root@docker ~]# systemctl daemon-reload
[root@docker ~]# systemctl restart docker
[root@docker ~]# netstat -natp | grep 2375
tcp        0      0 192.168.247.20:2375     0.0.0.0:*               LISTEN      9905/dockerd        

6.4 開放端口

[root@docker ~]# firewall-cmd --get-active-zones
public
  interfaces: eth0 eth1
[root@docker ~]# firewall-cmd --zone=public --add-port=2375/tcp
success

6.5 使用remote節點去測試docker,成功

備註:使用本地測試的話,指定127.0.0.1

[root@remote ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@remote ~]# docker -H tcp://192.168.247.20:2375 ps -a
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS                       PORTS                                                              NAMES
94630e81bb21        vmware/harbor-jobservice:v1.2.2    "/harbor/harbor_jobs…"   2 days ago          Exited (2) 3 minutes ago                                                                        harbor-jobservice
e68e275ba6c5        vmware/nginx-photon:1.11.13        "nginx -g 'daemon of…"   2 days ago          Exited (128) 3 minutes ago   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp   nginx
278c281594c9        vmware/harbor-ui:v1.2.2            "/harbor/harbor_ui"      2 days ago          Up 29 seconds                                                                                   harbor-ui
b7adea7dfc28        vmware/registry:2.6.2-photon       "/entrypoint.sh serv…"   2 days ago          Exited (2) 3 minutes ago     5000/tcp                                                           registry
b587a5b5a4f9        vmware/harbor-db:v1.2.2            "docker-entrypoint.s…"   2 days ago          Exited (128) 3 minutes ago   3306/tcp                                                           harbor-db
8fbb66df3206        vmware/harbor-adminserver:v1.2.2   "/harbor/harbor_admi…"   2 days ago          Exited (2) 3 minutes ago                                                                        harbor-adminserver
b282d0c45952        vmware/harbor-log:v1.2.2           "/bin/sh -c 'crond &…"   2 days ago          Up 3 minutes                 127.0.0.1:1514->514/tcp                                            harbor-log
[root@remote ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@remote ~]# 

6.6 測試拉取鏡像

[root@remote ~]# docker -H tcp://192.168.247.20:2375 pull nginx
Using default tag: latest
[root@remote ~]# docker -H tcp://192.168.247.20:2375 images | grep nginx
nginx                       latest              602e111c06b6        2 days ago          127MB
compose_nginx_nginx         latest              e3abfd076454        4 days ago          726MB
vmware/nginx-photon         1.11.13             6cc5c831fc7f        2 years ago         144MB

到docker終端驗證查看

[root@docker ~]# docker images | grep nginx
nginx                       latest              602e111c06b6        2 days ago          127MB
compose_nginx_nginx         latest              e3abfd076454        4 days ago          726MB
vmware/nginx-photon         1.11.13             6cc5c831fc7f        2 years ago         144MB

6.7 測試開啓容器

[root@remote ~]# docker -H tcp://192.168.247.20:2375 run -itd --name gsycs nginx /bin/bash
f08182d315e6da8a43953695b72350302ba2d01e8d4cbf9fbeee7f8864e1468c
[root@remote ~]# docker -H tcp://192.168.247.20:2375 ps -a | grep gsycs
f08182d315e6        nginx                              "/bin/bash"              10 seconds ago      Up 11 seconds                 80/tcp    
[root@docker ~]# docker ps -a | grep gsy
f08182d315e6        nginx                              "/bin/bash"              48 seconds ago      Up 48 seconds                 80/tcp                                                             gsycs
[root@docker ~]# 

6.8 若是反饋無法連接,需要清空doker節點的iptables規則然後指定

error durin connect: Get http://192.168.247.20:2375/v1.40/containers/json:dial tcp 192.168.247.20:2375: connect: no route to host
[root@docker ~]# iptables -L;iptables -F

七:限制流量流向

使用防火牆過濾限制docker容器的源IP地址與外界通訊

[root@docker ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.247.0/24" reject"
[root@docker ~]# firewall-cmd --reload

大量問題的產生是因爲Docker容器端口外放引起的漏洞,除了操作系統賬戶權限控制上的問題,更在於對Docker Daemon的進程管理上存在隱患

目前常用的Docker版本都支持Docker Daemon 管理宿主iptables,而且一旦啓動進程上加上-p host_port:容器_port的端口映射,Docker Daemon會直接增加對應的forward chain並且-j ACCEPT;而默認的Drop規則實在INPUT鏈做,對docker無法限制,這邊留下了很嚴重的安全隱患

因此建議如下:

1.不在有外網IP的主機上使用Docker服務

2.使用K8s等docker編排系統管理Docker容器

3.宿主上docker daemon啓動命令加上一個–iptables=false,然後把常用iptables寫進文件裏,使用iptables-restore去執行

八:鏡像安全

docker鏡像安全掃描,在鏡像倉庫客戶端使用證書認證,對下載的鏡像進行檢查

通過CVE數據庫同步掃描鏡像,一旦發現漏洞則通知用戶處理,或者直接組織鏡像繼續構建

如果公司使用自己的鏡像,可以跳過此步;否則,至少需要驗證baseimage的md5等(哈希)特徵值,確認一致後再基於baseimage進一步構建

一般來說,要確保只從受信任的庫中獲取鏡像,並且不建議使用–insecure-registry=[]參數

推薦使用harbor私有倉庫

九:Docker-TLS加密通訊

爲了防止鏈路劫持、會話劫持等問題導致Docker通信時被中間人攻擊,cs兩端應該通過加密方式通訊

做TLS加密要保持環境的純淨,docker內沒有鏡像和容器

防止做了TLS後,還是有沒有加密的數據傳輸

CA認證,確保發出去的消息進行加密,保持自己身份的唯一性

9.1 修改hosts文件

[root@ct ~]# vim /etc/hosts
127.0.0.1 ct
192.168.247.20  ct
192.168.247.142 gsy
[root@localhost ~]# vim /etc/hosts
192.168.247.20 ct

9.2 準備製作CA證書

[root@ct ~]# mkdir TLS
[root@ct ~]# cd ~/TLS/
[root@ct TLS]# ls
[root@ct TLS]# 

9.3 創建CA密鑰

備註:密碼設爲123123

rsa,非對稱密鑰,位數256位,-out 輸出密鑰文件ca-key.pem

[root@ct TLS]# openssl genrsa -aes256 -out ca-key.pem 4096
Generating RSA private key, 4096 bit long modulus
................................................................................................................................................................++
..................................................................................................................................................................++
e is 65537 (0x10001)
Enter pass phrase for ca-key.pem:
Verifying - Enter pass phrase for ca-key.pem:
[root@ct TLS]# ls
ca-key.pem
[root@ct TLS]# 

這個只是一個原材料,接下來就用它創建CA證數

9.4 基於CA密鑰創建CA證書

pem 證書

-subj 項目名稱

-new 新請求。

-x509 輸出一個x509結構,而不是cert. req。

-days 由-x509生成的證書的有效天數。

[root@ct TLS]# openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem
Enter pass phrase for ca-key.pem:此處輸入ca-key.pem密碼
You have new mail in /var/spool/mail/root
[root@ct TLS]# ls
ca-key.pem  ca.pem
[root@ct TLS]# 

9.5 創建ct節點證書

CA證書只是一個官方認證的證證書

接下來要創建ct、localhost的證書

此時創建ct的證書是有三步

1.設置私鑰 確保安全加密

2.私鑰簽名 確保身份真實不可抵賴

3.製作證書

csr是一個簽名文件

[root@ct TLS]# openssl genrsa -out ct-key.pem 4096 		#創建服務器密鑰
Generating RSA private key, 4096 bit long modulus
........................................................................................................++
...........................................................................................++
e is 65537 (0x10001)
You have new mail in /var/spool/mail/root
[root@ct TLS]# ls
ca-key.pem  ca.pem  ct-key.pem
[root@ct TLS]# openssl req -subj "/CN=*" -sha256 -new -key ct-key.pem -out ct.csr	#簽名私鑰,csr是一個簽名文件
[root@ct TLS]# ls
ca-key.pem  ca.pem  ct.csr  ct-key.pem
[root@ct TLS]# openssl x509 -req -days 1000 -sha256 -in ct.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out ct-cert.pem
#//使用ca證書與私鑰證書籤名,導入簽名ct.csr,指定CA文件和密鑰文件,確定官方授權輸入123123
Signature ok
subject=/CN=*
Getting CA Private Key
Enter pass phrase for ca-key.pem:
[root@ct TLS]# ls
ca-key.pem  ca.pem  ca.srl  ct-cert.pem  ct.csr  ct-key.pem

9.6 同理生成localhost節點密鑰

生成local密鑰

[root@ct TLS]# openssl genrsa -out local-key.pem 4096
Generating RSA private key, 4096 bit long modulus
...............................................................................................++
.....................................................................................................++
e is 65537 (0x10001)

創建簽名文件

[root@ct TLS]# openssl req -subj "/CN=client" -new -key local-key.pem -out local.csr
[root@ct TLS]# ls
ca-key.pem  ca.pem  ca.srl  ct-cert.pem  ct.csr  ct-key.pem  local.csr  local-key.pem

創建配置文件,指定擴展密鑰用途

[root@ct TLS]# echo extendedKeyUsage=clientAuth > extfile.cnf

簽名證書

[root@ct TLS]# openssl x509 -req -days 1000 -sha256 -in local.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out local-cert.pem -extfile extfile.cnf
Signature ok
subject=/CN=client
Getting CA Private Key
Enter pass phrase for ca-key.pem:

查看當前文件

root@ct TLS]# ls
ca-key.pem  ca.pem  ca.srl  ct-cert.pem  ct.csr  ct-key.pem  extfile.cnf  local-cert.pem  local.csr  local-key.pem

9.7 刪除不需要的文件

刪除簽名文件,配置文件

[root@ct TLS]# rm -rf ca.srl ct.csr extfile.cnf local.csr 
[root@ct TLS]# ls
ca-key.pem  ca.pem  ct-cert.pem  ct-key.pem  local-cert.pem  local-key.pem

9.8 ct節點配置docker.service

新增指定 --tlsverify

–tlscacert=/root/TLS/ca.pem

–tlscert=/root/TLS/ct-cert.pem

–tlskey=/root/TLS/ct-key.pem

-H tcp://0.0.0.0:2376

-H unix:///var/run/docker.sock

[root@ct TLS]# vim /usr/lib/systemd/system/docker.service 
 14 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --tlsverify --tlscacert=/root/TLS/ca.pem --tlscert=/root/TLS/ct-cert.pem --tlskey=/root/TLS/ct-key.pem -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
[root@ct TLS]# systemctl daemon-reload
[root@ct TLS]# systemctl restart docker
[root@ct TLS]# netstat -natp | grep docker
tcp6       0      0 :::2376                 :::*                    LISTEN      55402/dockerd   
[root@ct TLS]# setenforce 0
setenforce: SELinux is disabled

本地驗證

[root@ct TLS]# docker --tlsverify --tlscacert=ca.pem --tlskey=ct-key.pem --tlscert=ct-cert.pem -H tcp://ct:2376 images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
systemctl           new                 a2c3616f15d1        5 days ago          717MB

9.9 scp將local節點所需文件scp過去

[root@ct TLS]# scp ca.pem [email protected]:/etc/docker
[email protected]'s password: 
ca.pem                                                                                                                                                                       100% 1765   464.9KB/s   00:00    
[root@ct TLS]# scp local* [email protected]:/etc/docker
[email protected]'s password: 
local-cert.pem                                                                                                                                                               100% 1696   275.4KB/s   00:00    
local-key.pem                                                                                                                                                                100% 3243   989.6KB/s   00:00    
[root@ct TLS]# 

9.10 local節點指定加密文件遠程調用測試

[root@localhost ~]# cd /etc/docker/
[root@localhost docker]# ls
ca.pem  key.json  local-cert.pem  local-key.pem
[root@localhost docker]# docker --tlsverify --tlscacert=ca.pem --tlscert=local-cert.pem --tlskey=local-key.pem -H tcp://192.168.247.20:2376 ps
error during connect: Get https://192.168.247.20:2376/v1.40/containers/json: dial tcp 192.168.247.20:2376: connect: no route to host

出現報錯,ct清空iptables

[root@ct TLS]# iptables -F
[root@ct TLS]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
systemctl           new                 a2c3616f15d1        5 days ago          717MB

再次測試,出現如下報錯

[root@localhost docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@localhost docker]# docker --tlsverify --tlscacert=ca.pem --tlscert=local-cert.pem --tlskey=local-key.pem -H tcp://192.168.247.20:2376 ps
error during connect: Get https://192.168.247.20:2376/v1.40/containers/json: x509: cannot validate certificate for 192.168.247.20 because it doesn't contain any IP SANs
#獲取https://192.168.247.20:2376/v1.40/containers/json: x509:無法驗證192.168.247.20的證書,因爲它不包含任何IP SANs

使用主機名可以正常訪問

[root@localhost docker]# docker --tlsverify --tlscacert=ca.pem --tlscert=local-cert.pem --tlskey=local-key.pem -H tcp://ct:2376 ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost docker]# docker --tlsverify --tlscacert=ca.pem --tlscert=local-cert.pem --tlskey=local-key.pem -H tcp://ct:2376 images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
systemctl           new                 a2c3616f15d1        5 days ago          717MB

十:dockerfile、compose創建容器注意要點

2016 年的 8 月 Github 上大量泄露個人或企業各種賬號密碼,出現這種問題一般都使用 dockerfile 或者 docker-compose 文件創建容器。
如果這些文件中存在賬號密碼等認證信息, 一旦 Docker 容器對外開放,則這些宿主機上的敏感信息也會隨之泄露。
因此可以通過以下 方式檢查容器創建模板的內容。

# check created users 
grep authorized_keys $dockerfile 
# check OS users 
grep "etc/group" $dockerfile 
# Check sudo users 
grep "etc/sudoers.d" $dockerfile 
# Check ssh key pair 
grep ".ssh/.*id_rsa" $dockerfile 
# Add your checks in below
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章