Azure Kubernetes Service (AKS) Ubuntu 映像與 Internet Security (CIS) 基準中心保持一致
作為安全服務,Azure Kubernetes Service (AKS) 符合 SOC、ISO、PCI DSS 和 HIPAA 標準。 本文涵蓋套用至 AKS 所使用的 Ubuntu 映像的安全性 OS 設定。 此安全性設定是以符合 CIS 基準的 Azure Linux 安全性基準為基礎。 如需 AKS 安全性的詳細資訊,請參閱<Azure Kubernetes Service (AKS) 中應用程式和叢集的安全性概念>。 如需 AKS 安全性的詳細資訊,請參閱 Azure Kubernetes Service (AKS) 中應用程式和叢集的安全性概念。 如需 CIS 基準的詳細資訊,請參閱網際網路安全中心 (CIS) 基準。 如需適用於 Linux 的 Azure 安全性基準的詳細資訊,請參閱 Linux 安全性基準。
Ubuntu LTS 18.04
AKS 叢集部署在主機虛擬機器上,主機虛擬機器會執行具有內建安全設定的作業系統。 此作業系統用於 AKS 上執行的容器。 此主機作業系統是以套用安全性設定的 Ubuntu 18.04.LTS 映像為基礎。
作為安全性最佳化的作業系統一部分:
- AKS 依預設會提供安全性最佳化的主機 OS,但沒有選項可選取替代作業系統。
- 安全性最佳化的主機 OS 是專門針對 AKS 所建置和維護,且無法在 AKS 平台外部獲得支援。
- 已在作業系統中停用一些不必要的核心模組驅動程式,以縮小受攻擊面。
注意
Azure 會將每日修補檔 (包括安全性修補檔) 套用至 AKS 虛擬機器主機,其與 CIS 基準不相關。
在主機 OS 中內建安全性設定的目標是要減少受攻擊區,並以安全的方式將容器的部署最佳化。
以下是 CIS Ubuntu 18.04 LTS 基準測試 v2.1.0 建議的結果。
建議可出於下列其中一種原因:
- 潛在的作業影響 - 未套用建議,因為其會對服務造成負面影響。
- 包含在其他地方 - Azure 雲端計算中的另一個控制項中有該建議。
以下是已實作的 CIS 規則:
CIS 段落編號 | 建議描述 | 狀態 | 原因 |
---|---|---|---|
1 | 初始設定 | ||
1.1 | 檔案系統設定 | ||
1.1.1 | 停用未使用的檔案系統 | ||
1.1.1.1 | 確定已停用 cramfs 檔案系統的掛接 | 通過 | |
1.1.1.2 | 確定已停用 freevxfs 檔案系統的掛接 | 通過 | |
1.1.1.3 | 確定已停用 jffs2 檔案系統的掛接 | 通過 | |
1.1.1.4 | 確定已停用 HFS 檔案系統的掛接 | 通過 | |
1.1.1.5 | 確定已停用 hfsplus 檔案系統的掛接 | 通過 | |
1.1.1.6 | 確定已停用 udf 檔案系統的掛接 | 失敗 | 潛在的作業影響 |
1.1.2 | 確定已設定 /tmp | 失敗 | |
1.1.3 | 確定 /tmp 分割區上已設定 nodev 選項 | 失敗 | |
1.1.4 | 確定 /tmp 分割區上已設定 nosuid 選項 | 通過 | |
1.1.5 | 確定 /tmp 分割區上已設定 noexec 選項 | 通過 | |
1.1.6 | 確定已設定 /dev/shm | 通過 | |
1.1.7 | 確定 /dev/shm 分割區上已設定 nodev 選項 | 通過 | |
1.1.8 | 確定 /dev/shm 分割區上已設定 nosuid 選項 | 通過 | |
1.1.9 | 確定 /dev/shm 分割區上已設定 noexec 選項 | 失敗 | 潛在的作業影響 |
1.1.12 | 確定 /var/tmp 分割區包含 nodev 選項 | 通過 | |
1.1.13 | 確定 /var/tmp 分割區包含 nosuid 選項 | 通過 | |
1.1.14 | 確定 /var/tmp 分割區包含 noexec 選項 | 通過 | |
1.1.18 | 確定 /home 分割區包含 nodev 選項 | 通過 | |
1.1.19 | 確定在抽取式媒體分割區上設定 nodev 選項 | 不適用 | |
1.1.20 | 確定在抽取式媒體分割區上設定 nosuid 選項 | 不適用 | |
1.1.21 | 確定在抽取式媒體分割區上設定 noexec 選項 | 不適用 | |
1.1.22 | 請確認已在所有全局可寫入的目錄上設定黏滯位 | 失敗 | 潛在的作業影響 |
1.1.23 | 停用自動掛接 | 通過 | |
1.1.24 | 停用 USB 儲存體 | 通過 | |
1.2 | 設定軟體更新 | ||
1.2.1 | 確定已設定套件管理員存放庫 | 通過 | 包含在其他地方 |
1.2.2 | 確定已設定 GPG 金鑰 | 不適用 | |
1.3 | 檔案系統完整性檢查 | ||
1.3.1 | 確定已安裝 AIDE | 失敗 | 包含在其他地方 |
1.3.2 | 確定已定期檢查檔案系統完整性 | 失敗 | 包含在其他地方 |
1.4 | 安全開機設定 | ||
1.4.1 | 確定未覆寫開機載入器設定的權限 | 失敗 | |
1.4.2 | 確定已設定開機載入器密碼 | 失敗 | 不適用 |
1.4.3 | 確保已設定開機載入器組態的權限 | 失敗 | |
1.4.4 | 確定單一使用者模式所需的驗證 | 失敗 | 不適用 |
1.5 | 其他流程強化 | ||
1.5.1 | 確定已啟用 XD/NX 支援 | 不適用 | |
1.5.2 | 確定已啟用位址空間配置隨機化 (ASLR) | 通過 | |
1.5.3 | 確定已停用預先連結 | 通過 | |
1.5.4 | 確定核心傾印已受限 | 通過 | |
1.6 | 強制存取控制 | ||
1.6.1 | 設定 AppArmor | ||
1.6.1.1 | 確定已安裝 AppArmor | 通過 | |
1.6.1.2 | 確定開機載入器設定中已啟用 AppArmor | 失敗 | 潛在的作業影響 |
1.6.1.3 | 確定所有 AppArmor 設定檔都處於強制執行或抱怨模式 | 通過 | |
1.7 | 命令列警告橫幅 | ||
1.7.1 | 確定已正確設定當天的訊息 | 通過 | |
1.7.2 | 確定已設定 /etc/issue.net 的權限 | 通過 | |
1.7.3 | 確定已設定 /etc/issue 的權限 | 通過 | |
1.7.4 | 確保已設定 /etc/motd 的權限 | 通過 | |
1.7.5 | 確定已正確設定遠端登入警告橫幅 | 通過 | |
1.7.6 | 確定已正確設定本機登入警告橫幅 | 通過 | |
1.8 | GNOME 顯示管理員 | ||
1.8.2 | 確定已設定 GDM 登入橫幅 | 通過 | |
1.8.3 | 確定已啟用 disable-user-list | 通過 | |
1.8.4 | 確定未啟用 XDCMP | 通過 | |
1.9 | 確定已安裝更新、修補檔和其他安全性軟體 | 通過 | |
2 | 服務 | ||
2.1 | 特殊用途服務 | ||
2.1.1 | 時間同步處理 | ||
2.1.1.1 | 確定時間同步處理正在使用中 | 通過 | |
2.1.1.2 | 確定已設定 systemd-timesyncd | 不適用 | AKS 使用 ntpd 進行 timesync |
2.1.1.3 | 確定已設定 chrony | 失敗 | 包含在其他地方 |
2.1.1.4 | 確定已設定 ntp | 通過 | |
2.1.2 | 確定未安裝 X 視窗系統 | 通過 | |
2.1.3 | 確定未安裝 Avahi 伺服器 | 通過 | |
2.1.4 | 確定未安裝 CUPS | 通過 | |
2.1.5 | 確定未安裝 DHCP 伺服器 | 通過 | |
2.1.6 | 確定未安裝 LDAP 伺服器 | 通過 | |
2.1.7 | 確定未安裝 NFS | 通過 | |
2.1.8 | 確定未安裝 DNS 伺服器 | 通過 | |
2.1.9 | 確定未安裝 FTP 伺服器 | 通過 | |
2.1.10 | 確定未安裝 HTTP 伺服器 | 通過 | |
2.1.11 | 確定未安裝 IMAP 和 POP3 伺服器 | 通過 | |
2.1.12 | 確定未安裝 Samba | 通過 | |
2.1.13 | 確定未安裝 HTTP Proxy 伺服器 | 通過 | |
2.1.14 | 確定未安裝 SNMP 伺服器 | 通過 | |
2.1.15 | 確定已設定郵件傳輸代理程式使用僅限本機模式 | 通過 | |
2.1.16 | 確定未安裝 rsync 服務 | 失敗 | |
2.1.17 | 確定未安裝 NIS 伺服器 | 通過 | |
2.2 | 服務用戶端 | ||
2.2.1 | 確定未安裝 NIS 用戶端 | 通過 | |
2.2.2 | 確定未安裝 rsh 用戶端 | 通過 | |
2.2.3 | 確定未安裝 talk 用戶端 | 通過 | |
2.2.4 | 確定未安裝 Telnet 用戶端 | 失敗 | |
2.2.5 | 確定未安裝 LDAP 用戶端 | 通過 | |
2.2.6 | 確定未安裝 RPC | 失敗 | 潛在的作業影響 |
2.3 | 確定已移除或遮罩非必要的服務 | 通過 | |
3 | 網路設定 | ||
3.1 | 停用未使用的網路通訊協定和裝置 | ||
3.1.2 | 確定已停用無線介面 | 通過 | |
3.2 | 網路參數 (僅限主機) | ||
3.2.1 | 確定已停用封包重新導向傳送 | 通過 | |
3.2.2 | 確定已停用 IP 轉送 | 失敗 | 不適用 |
3.3 | 網路參數 (主機和路由器) | ||
3.3.1 | 確定不接受來源路由封包 | 通過 | |
3.3.2 | 確定不接受 ICMP 重新導向 | 通過 | |
3.3.3 | 確定不接受安全 ICMP 重新導向 | 通過 | |
3.3.4 | 確定會記錄可疑的封包 | 通過 | |
3.3.5 | 確定會忽略廣播 ICMP 要求 | 通過 | |
3.3.6 | 確定會忽略假 ICMP 回應 | 通過 | |
3.3.7 | 確定已啟用反轉路徑篩選 | 通過 | |
3.3.8 | 確定已啟用 TCP SYN Cookie | 通過 | |
3.3.9 | 確定不接受 IPv6 路由器公告 | 通過 | |
3.4 | 不常見的網路通訊協定 | ||
3.5 | 防火牆設定 | ||
3.5.1 | 設定 UncomplicatedFirewall | ||
3.5.1.1 | 確定已安裝 ufw | 通過 | |
3.5.1.2 | 確定未隨 ufw 一起安裝 iptables-persistent | 通過 | |
3.5.1.3 | 確定已啟用 ufw 服務 | 失敗 | 包含在其他地方 |
3.5.1.4 | 確保已設定 ufw 回送流量 | 失敗 | 包含在其他地方 |
3.5.1.5 | 確定已設定 ufw 輸出連線 | 不適用 | 包含在其他地方 |
3.5.1.6 | 確定所有開啟的連接埠都有 ufw 防火牆規則 | 不適用 | 包含在其他地方 |
3.5.1.7 | 確定 ufw 預設拒絕防火牆原則 | 失敗 | 包含在其他地方 |
3.5.2 | 設定 nftables | ||
3.5.2.1 | 確定已安裝 nftables | 失敗 | 包含在其他地方 |
3.5.2.2 | 確定已使用 nftable 解除安裝或停用 ufw | 失敗 | 包含在其他地方 |
3.5.2.3 | 確定已使用 nftable 排清 iptable | 不適用 | 包含在其他地方 |
3.5.2.4 | 確定 nftables 資料表存在 | 失敗 | 包含在其他地方 |
3.5.2.5 | 確定 nftables 基底鏈結存在 | 失敗 | 包含在其他地方 |
3.5.2.6 | 確定已設定 nftables 回送流量 | 失敗 | 包含在其他地方 |
3.5.2.7 | 確定已設定輸出和已建立的連線 | 不適用 | 包含在其他地方 |
3.5.2.8 | 確保 nftables 預設拒絕防火牆原則 | 失敗 | 包含在其他地方 |
3.5.2.9 | 確定已啟用 nftables 服務 | 失敗 | 包含在其他地方 |
3.5.2.10 | 確定 nftables 規則是永久的 | 失敗 | 包含在其他地方 |
3.5.3 | 設定 iptables | ||
3.5.3.1 | 設定 iptables 軟體 | ||
3.5.3.1.1 | 確定已安裝 iptables 套件 | 失敗 | 包含在其他地方 |
3.5.3.1.2 | 確定未隨 iptable 一起安裝 nftables | 通過 | |
3.5.3.1.3 | 確定已使用 iptables 解除安裝或停用 ufw | 失敗 | 包含在其他地方 |
3.5.3.2 | 設定 IPv4 iptables | ||
3.5.3.2.1 | 確保 iptables 預設拒絕防火牆原則 | 失敗 | 包含在其他地方 |
3.5.3.2.2 | 確定已設定 iptables 回送流量 | 失敗 | 不適用 |
3.5.3.2.3 | 確定已設定 iptables 輸出和已建立的連線 | 不適用 | |
3.5.3.2.4 | 確定所有開啟的連接埠都有 iptables 防火牆規則 | 失敗 | 潛在的作業影響 |
3.5.3.3 | 設定 IPv6 ip6tables | ||
3.5.3.3.1 | 確保 ip6tables 預設拒絕防火牆原則 | 失敗 | 包含在其他地方 |
3.5.3.3.2 | 確定已設定 ip6tables 回送流量 | 失敗 | 包含在其他地方 |
3.5.3.3.3 | 確定已設定 ip6tables 輸出和已建立的連線 | 不適用 | 包含在其他地方 |
3.5.3.3.4 | 確定所有開啟的連接埠都有 ip6tables 防火牆規則 | 失敗 | 包含在其他地方 |
4 | 記錄與稽核 | ||
4.1 | 設定系統會計 (AuditD) | ||
4.1.1.2 | 確定已啟用稽核 | ||
4.1.2 | 設定資料保留期 | ||
4.2 | 設定記錄 | ||
4.2.1 | 設定 rsyslog | ||
4.2.1.1 | 確定已安裝 rsyslog | 通過 | |
4.2.1.2 | 確定已啟用 rsyslog 服務 | 通過 | |
4.2.1.3 | 確定已設定記錄 | 通過 | |
4.2.1.4 | 確定已設定 rsyslog 預設檔案權限 | 通過 | |
4.2.1.5 | 確定 rsyslog 已設定為將記錄傳送至遠端記錄主機 | 失敗 | 包含在其他地方 |
4.2.1.6 | 確定遠端 rsyslog 訊息只會在指定的記錄主機上接受。 | 不適用 | |
4.2.2 | 設定日誌 | ||
4.2.2.1 | 確定已將日誌設定為將記錄傳送至 rsyslog | 通過 | |
4.2.2.2 | 確定已將日誌設定為壓縮大型記錄檔 | 失敗 | |
4.2.2.3 | 確定已將日誌設定為將記錄檔寫入永續性磁碟 | 通過 | |
4.2.3 | 確定已設定所有記錄檔的權限 | 失敗 | |
4.3 | 確定已設定 logrotate | 通過 | |
4.4 | 確定 logrotate 指派適當的權限 | 失敗 | |
5 | 存取、驗證和授權 | ||
5.1 | 設定以時間為基礎的工作排程器 | ||
5.1.1 | 確定已啟用並執行 cron 精靈 | 通過 | |
5.1.2 | 確定已設定 /etc/crontab 的權限 | 通過 | |
5.1.3 | 確定已設定 /etc/cron.hourly 的權限 | 通過 | |
5.1.4 | 確定已設定 /etc/cron.daily 的權限 | 通過 | |
5.1.5 | 確定已設定 /etc/cron.weekly 的權限 | 通過 | |
5.1.6 | 確定已設定 /etc/cron.monthly 的權限 | 通過 | |
5.1.7 | 確定已設定 /etc/cron.d 的權限 | 通過 | |
5.1.8 | 確定 cron 限制為已授權的使用者 | 失敗 | |
5.1.9 | 確定 at 限制為已授權的使用者 | 失敗 | |
5.2 | 設定 sudo | ||
5.2.1 | 確定已安裝 sudo | 通過 | |
5.2.2 | 確定 sudo 命令使用 pty | 失敗 | 潛在的作業影響 |
5.2.3 | 確定 sudo 記錄檔存在 | 失敗 | |
5.3 | 設定 SSH 伺服器 | ||
5.3.1 | 確定已設定 /etc/ssh/sshd_config 的權限 | 通過 | |
5.3.2 | 確定已設定 SSH 私人主機金鑰檔案的權限 | 通過 | |
5.3.3 | 確定已設定 SSH 公用主機金鑰檔案的權限 | 通過 | |
5.3.4 | 確定 SSH 存取受到限制 | 通過 | |
5.3.5 | 確定 SSH LogLevel 適當 | 通過 | |
5.3.7 | 確定 SSH MaxAuthTries 設定為 4 或更低 | 通過 | |
5.3.8 | 確定已啟用 SSH IgnoreRhosts | 通過 | |
5.3.9 | 確定已停用 SSH HostbasedAuthentication | 通過 | |
5.3.10 | 確定已停用 SSH 根登入 | 通過 | |
5.3.11 | 確定已停用 SSH PermitEmptyPasswords | 通過 | |
5.3.12 | 確定已停用 SSH PermitUserEnvironment | 通過 | |
5.3.13 | 確定只使用強式加密 | 通過 | |
5.3.14 | 確定僅使用強式 MAC 演算法 | 通過 | |
5.3.15 | 確定只使用強式金鑰交換演算法 | 通過 | |
5.3.16 | 確定已設定 SSH 閒置逾時間隔 | 失敗 | |
5.3.17 | 確定 SSH LoginGraceTime 設定為一分鐘或更低 | 通過 | |
5.3.18 | 確定已設定 SSH 警告橫幅 | 通過 | |
5.3.19 | 確定已啟用 SSH PAM | 通過 | |
5.3.21 | 確定已設定 SSH MaxStartups | 失敗 | |
5.3.22 | 確定 SSH MaxSessions 有限 | 通過 | |
5.4 | 設定 PAM | ||
5.4.1 | 確定已設定密碼建立需求 | 通過 | |
5.4.2 | 確定已設定密碼嘗試失敗的鎖定 | 失敗 | |
5.4.3 | 確定密碼重複使用受到限制 | 失敗 | |
5.4.4 | 確保密碼雜湊演算法為 SHA-512 | 通過 | |
5.5 | 使用者帳戶和環境 | ||
5.5.1 | 設定陰影密碼套件參數 | ||
5.5.1.1 | 確定以設定密碼變更之間的最小天數 | 通過 | |
5.5.1.2 | 確定密碼到期日為 365 天或更短 | 通過 | |
5.5.1.3 | 確定密碼到期警告天數為 7 天或更多 | 通過 | |
5.5.1.4 | 確定非作用中密碼鎖定為 30 天或更短 | 通過 | |
5.5.1.5 | 確保所有使用者的上次密碼變更日期是過去的日期 | 失敗 | |
5.5.2 | 確定系統帳戶受到保護 | 通過 | |
5.5.3 | 確定根帳戶的預設群組為 GID 0 | 通過 | |
5.5.4 | 確定預設使用者 umask 為 027 或更嚴格 | 通過 | |
5.5.5 | 確定預設使用者殼層逾時為 900 秒或更短 | 失敗 | |
5.6 | 確定根登入僅限於系統主控台 | 不適用 | |
5.7 | 確定會限制 su 命令的存取權 | 失敗 | 潛在的作業影響 |
6 | 系統維護 | ||
6.1 | 系統檔案權限 | ||
6.1.2 | 確定已設定 /etc/passwd 的權限 | 通過 | |
6.1.3 | 確定已設定 /etc/passwd- 的權限 | 通過 | |
6.1.4 | 確定已設定 /etc/group 的權限 | 通過 | |
6.1.5 | 確定已設定 /etc/group- 的權限 | 通過 | |
6.1.6 | 確定已設定 /etc/shadow 的權限 | 通過 | |
6.1.7 | 確定已設定 /etc/shadow- 的權限 | 通過 | |
6.1.8 | 確定已設定 /etc/gshadow 的權限 | 通過 | |
6.1.9 | 確定已設定 /etc/gshadow- 的權限 | 通過 | |
6.1.10 | 確定沒有世界可寫入的檔案存在 | 失敗 | 潛在的作業影響 |
6.1.11 | 確定沒有未擁有的檔案或目錄存在 | 失敗 | 潛在的作業影響 |
6.1.12 | 確定沒有未分組的檔案或目錄存在 | 失敗 | 潛在的作業影響 |
6.1.13 | 稽核 SUID 可執行檔 | 不適用 | |
6.1.14 | 稽核 SGID 可執行檔 | 不適用 | |
6.2 | 使用者和群組設定 | ||
6.2.1 | 確定 /etc/passwd 中的帳戶使用已遮蔽密碼 | 通過 | |
6.2.2 | 確定密碼欄位不是空的 | 通過 | |
6.2.3 | 確保 /etc/passwd 中的所有群組都存在於 /etc/group 中 | 通過 | |
6.2.4 | 確保所有使用者的主目錄皆存在 | 通過 | |
6.2.5 | 確保使用者擁有其主目錄 | 通過 | |
6.2.6 | 確定使用者的主目錄權限為 750 或更嚴格 | 通過 | |
6.2.7 | 確定使用者的 dot 檔案沒有群組或全域寫入權限 | 通過 | |
6.2.8 | 確保沒有任何使用者有 .netrc 檔案 | 通過 | |
6.2.9 | 確保沒有任何使用者有 .forward 檔案 | 通過 | |
6.2.10 | 確保沒有任何使用者有 .rhosts 檔案 | 通過 | |
6.2.11 | 確保根是唯一的 UID 0 帳戶 | 通過 | |
6.2.12 | 確定根路徑完整性 | 通過 | |
6.2.13 | 確保沒有任何重複的 UID 存在 | 通過 | |
6.2.14 | 確保沒有任何重複的 GID 存在 | 通過 | |
6.2.15 | 確保沒有重複的使用者名稱 | 通過 | |
6.2.16 | 確定沒有重複的群組名稱 | 通過 | |
6.2.17 | 確保陰影群組是空的 | 通過 |
下一步
如需 AKS 安全性的詳細資訊,請參閱下列文章: