成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

十大 Docker 優秀實踐,望君遵守?。?/h1>

安全 云安全
本文是關于容器安全的文章,展示了 10 種強化 Docker 基礎架構并保護容器和數據免受惡意攻擊的方法。

本文是關于容器安全的文章,展示了 10 種強化 Docker 基礎架構并保護容器和數據免受惡意攻擊的方法。

介紹

隨著許多公司在其基礎設施中采用 Docker,威脅參與者的攻擊面也增加了。這就需要保護 Docker 基礎設施。在本文中,提到了一些可以加強 Docker 容器安全性的要點。

要充分利用本文,必須具備以下條件:

  • 熟悉 Linux 命令行
  • 關于容器化和 Docker 的基本概念

什么是 Docker?

Docker 是一個開源容器化平臺。它允許開發人員將應用程序打包到容器中:標準化的可執行組件將應用程序源代碼與在運行該代碼所需的操作系統 (OS) 庫和依賴項相結合。

十大優秀實踐

Docker 文檔概述了在保護 Docker 容器時要考慮的四個主要方面:

  • 內核對命名空間和 cgroup 的支持
  • Docker 守護進程的攻擊面
  • 容器配置錯誤
  • 使用 AppArmor、SELinux 等 Linux 內核安全模塊等

我們將這些分解為可以遵循的 10 大實踐來強化 Docker 環境。

1. 經常更新主機和 Docker 守護進程

容器與主機系統共享內核。在容器上下文中執行的任何內核漏洞都會直接影響主機內核。內核提權漏洞 Dirty Cow 在容器中執行時會導致對主機的 root 訪問。因此,保持主機和 Docker 引擎最新很重要。

2. 不要暴露 Docker daemon socket

Docker 客戶端和 Docker 守護程序之間發生的所有通信都通過 Docker 守護程序套接字進行,這是一個 UNIX 套接字,通常位于/var/run/docker.sock,這允許訪問 Docker API。傳統的 UNIX 文件權限用于限制對該套接字的訪問。在默認配置中,該套接字由 root 用戶擁有。如果其他人獲得了對套接字的訪問權,將擁有對主機的 root 訪問權。

  • 設置權限,以便只有 root 用戶和 docker 組可以訪問 Docker 守護進程套接字
  • 使用 SSH 保護 Docker 守護進程套接字
  • 使用 TLS (HTTPS) 保護 Docker 守護程序套接字。這允許通過 HTTP 以安全的方式訪問 Docker
  • 不要讓守護程序套接字可用于遠程連接,除非您使用 Docker 的加密 HTTPS 套接字,它支持身份驗證
  • 不要使用類似的選項運行 Docker 鏡像-v /var/run/docker.sock:/var/run/docker.sock,這會在生成的容器中公開套接字。請記住,以只讀方式安裝套接字不是解決方案,只會使其更難被破壞。docker compose 文件中的一個例子是:
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"

要檢查您是否已經有一個在這種配置中運行的容器:

docker inspect --format='{{.HostConfig.Binds}}' [container id]

圖片

3. 以無 root 模式運行 Docker

可以以非 root 用戶身份運行 Docker 守護程序,以防止 Docker 中的潛在漏洞。這稱為“無 root 模式”。無 root 模式不需要 root 權限安裝 Docker 與 Docker API 通信。

在無 root 模式下,Docker 守護進程和容器在用戶命名空間中運行,默認情況下沒有 root 權限。

(1) 在無 root 模式下運行 Docker

使用 sudo 權限安裝uidmap?軟件包:

apt-get install -y uidmap

從 Docker 的網站獲取安裝腳本并運行:

curl -fSsL https://get.docker.com/rootless | sh

獲取無 root 安裝腳本:

圖片

復制以開頭的最后兩行export?并將它們粘貼到~/.bashrc?文件的末尾。這樣可以確保每次打開 Bash shell 時,都會設置這兩個變量:PATH? 和DOCKER_HOST。

圖片

.bashrc

運行source ~/.bashrc以在您當前的 shell 會話中設置這些變量。

運行systemctl --user start docker以啟動 Docker 引擎。

我們可以通過運行來檢查 docker 是否正在運行docker version:

圖片

4. 容器資源配置

控制組或 cgroups 是 Linux 內核功能,在實現容器的資源分配和限制方面起著關鍵作用。他們的工作不僅是確保每個容器獲得其公平份額的資源,如內存和 CPU,而且還要確保單個容器不會因耗盡其中一個資源而導致系統崩潰。

限制資源可防止拒絕服務攻擊。以下是一些可用于限制容器資源的 CLI 標志:

  • --memory=<memory size>— 最大內存量
  • --restart=on-failure:<number_of_restarts> — 重啟次數
  • --memory-swap <value>— 交換內存量
  • --cpus=<number>— 容器可用的最大 CPU 資源
  • --ulimit nofile=<number>— 文件描述符的最大數量
  • --ulimit nproc=<number>— 最大進程數

默認情況下,Docker 允許容器使用主機內核允許的盡可能多的 RAM 和 CPU 資源。因此有必要設置資源約束以防止容器和主機中的安全問題。

5. 避免使用特權容器

(1) 避免使用 --privileged 標志

Docker 具有允許容器在主機上以 root 權限運行的功能。這是通過—-privileged標志完成的。以特權模式運行的容器對主機上的所有設備都具有 root 權限。

如果攻擊者要破壞特權容器,他們就有可能輕松訪問主機上的資源。篡改系統中的安全模塊(如 SELinux)也很容易。因此,不建議在開發生命周期的任何階段以特權模式運行容器。

特權容器是主要的安全風險。濫用的可能性是無窮無盡的。攻擊者可以識別主機上運行的服務來發現和利用漏洞。他們還可以利用容器錯誤配置,例如具有弱憑據或沒有身份驗證的容器。特權容器為攻擊者提供 root 訪問權限,從而導致執行惡意代碼。避免在任何環境中使用它們。

要檢查容器是否在特權模式下運行,請使用以下命令:

docker inspect --format='{{.HostConfig.Privileged}}' [container_id]
  • true意味著容器是特權的
  • false表示容器沒有特權

(2) 使用 no-new-privileges 選項

在創建容器時添加??no-new-privileges???安全選項,以禁止容器進程使用??setuid???或??setgid??二進制文件提升其權限。這可以防止容器內的進程在執行期間獲得新的權限。因此,如果有一個設置了 setuid 或 setgid 位的程序,任何試圖通過該程序獲得特權的操作都將被拒絕。

6. 將文件系統和卷設置為只讀

Docker 中一個具有安全意識的有用功能是使用只讀文件系統運行容器。這減少了攻擊向量,因為容器的文件系統不能被篡改或寫入,除非它對其文件系統文件和目錄具有明確的讀寫權限。

以下代碼將 Docker 容器設置為只讀:

docker run --read-only alpine sh -c 'echo "read only" > /tmp'

7. Drop capabilities

Linux 內核能夠將 root 用戶的權限分解為不同的單元,稱為 capabilities。幾乎所有與 Linux root 用戶相關的特殊權限都分解為單獨的 capabilities。

圖片

capsh 顯示的特權容器的capabilities

Docker 施加了某些限制,使得使用功能變得更加簡單。文件功能存儲在文件的擴展屬性中,并且在構建 Docker 鏡像時會去除擴展屬性。這意味著您通常不必過多關注容器中的文件功能。

正如我們之前提到的,記住不要運行帶有--privileged標志的容器,因為這會將所有 Linux 內核功能添加到容器中。

最安全的設置是使用--cap-drop all 刪除所有功能,然后僅添加所需的功能。例如:

docker run --cap-drop all --cap-add CHOWN alpine

8. 使用 Linux 安全模塊

考慮使用像 seccomp 或 AppArmor 這樣的安全模塊。以下是一些眾所周知的模塊:

  • Seccomp:用于允許/禁止在容器中運行的系統調用
  • AppArmor:使用程序配置文件來限制單個程序的功能
  • SELinux:使用安全策略,這是一組規則,告訴 SELinux 什么可以訪問或不能訪問,以強制執行策略允許的訪問。

這些安全模塊可用于為進程和用戶的訪問權限提供另一個級別的安全檢查,超出標準文件級訪問控制所提供的安全檢查。

(1) seccomp

默認情況下,容器獲取默認的 seccomp 配置文件。

https://github.com/moby/moby/blob/master/profiles/seccomp/default.json

這可以用以下命令覆蓋:

docker run --rm -it --security-opt seccomp=./seccomp/profile.json hello-world

圖片圖片

使用 Seccomp 配置文件運行容器

使用 Seccomp 配置文件,您可以選擇容器中允許哪些系統調用以及拒絕哪些系統調用,因為在生產環境中并非全部都需要。您可以從 Docker 文檔中了解有關編寫 seccomp 配置文件的更多信息。

(2) AppArmor

默認情況下,容器使用docker-default? AppArmor 模板??梢允褂?-security-opt自定義配置文件覆蓋默認設置。

為此,您必須首先將新配置文件加載到 AppArmor 中以與容器一起使用:

apparmor_parser -r -W /path/to/custom_profile

現在使用自定義配置文件運行容器

docker run --rm -it --security-opt apparmor=custom_profile hello-world

請參閱此 wiki 以了解如何創建 AppArmor 配置文件。

https://gitlab.com/apparmor/apparmor/-/wikis/QuickProfileLanguage

責任編輯:趙寧寧 來源: 進擊云原生
相關推薦

2022-07-29 14:18:11

數據安全數據丟失防護

2024-11-15 15:56:56

2025-04-03 11:25:39

2023-09-20 16:22:44

2023-03-13 16:25:28

2022-08-19 15:42:26

安全數據隱私網絡安全

2021-11-05 09:00:00

Selenium工具自動化測試

2023-03-09 15:05:46

HTMLWeb 開發SEO

2021-05-11 20:53:42

設計系統語言開發

2024-10-30 16:30:17

2025-02-26 08:00:00

DevOps開發自動化

2013-06-18 09:17:16

云部署IT云安全

2013-09-03 09:37:50

2024-09-03 14:51:11

2009-07-16 16:20:46

CMS介紹

2013-06-18 09:24:36

云部署實踐云計算

2020-08-17 16:15:45

Docker容器云安全

2021-12-30 10:54:53

Hive調優實踐

2022-01-05 09:30:16

勒索軟件網絡安全攻擊

2015-09-23 17:12:18

API設計原則
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91视视频在线观看入口直接观看 | 中国美女一级黄色片 | 色网在线看 | 国产精品亚洲一区 | 色在线免费 | 一区二区三区视频在线观看 | www.久久影视 | 福利视频日韩 | 91av在线看| 久久久久久国产一区二区三区 | 超碰天天 | 女朋友的闺蜜3韩国三级 | 综合色播| 欧美日韩国产中文 | 91av在线视频观看 | 日韩中文在线 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 成年视频在线观看 | 黄色av免费网站 | 国产在线精品免费 | 在线观看视频一区 | 国产日韩欧美一区二区在线播放 | 神马久久久久久久久久 | 国产精品一区二区三区99 | 亚洲视频精品在线 | 欧美一区二区在线观看视频 | 欧美一二三| 欧美精品一区二区三区在线播放 | 国外成人免费视频 | 中文字幕精品一区二区三区精品 | 在线播放国产一区二区三区 | 国产精品资源在线 | 欧美一区二区三区在线看 | 日韩图区 | 日韩午夜在线播放 | 久久久久久久av麻豆果冻 | 久久精品二区亚洲w码 | 亚洲精品久久久一区二区三区 | 福利视频日韩 | 少妇精品久久久久久久久久 | 四虎影院新网址 |