符合性掃描 AWS OpsWorks for Chef Automate - AWS OpsWorks

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

符合性掃描 AWS OpsWorks for Chef Automate

重要

AWS OpsWorks 廚師自動化已於 2024 年 5 月 5 日終止使用壽命,並已針對新客戶和現有客戶停用。我們建議現有客戶遷移到 Chef SaaS 或替代解決方案。如果您有任何疑問,可以通過 AWS Re: post 或通過AWS 高級 Support 與 AWS Support 團隊聯繫。

合規掃描可讓您根據預先定義的政策 (也稱為規則),追蹤基礎設施中受管節點的合規狀況。合規檢視可讓您定期稽核應用程式是否有漏洞與不合規的組態。Chef 提供百種以上的預先定義合規描述檔,其為適用於特定節點組態的規則集合,可讓您用於合規掃描。您也可以使用 Chef InSpec 語言來建立自己的自訂設定檔。

如果您的伺服器尚未執行 Chef Automate 2.0,則您可以手動安裝 Audit 技術指南來設定 Chef Compliance

注意

與 AWS OpsWorks for Chef Automate 伺服器關聯的節點上的 Chef Infra 用戶端代理程式軟體 (chef-client) 支援的最低版本為 13。 x. 我們建議您執行最新、最穩定的chef-client版本,或至少執行 14.10.9。

使用 Chef Automate 2.0 中的合規

如果您的 AWS OpsWorks for Chef Automate 伺服器正在執行 Chef 自動化 2.0,請使用本節中的程序設定 Chef 合規性。

使用 Chef Automate 2.0 來執行合規掃描任務

Chef 自動化 2.0 包括廚師 InSpec 合規掃描功能,以前需要手動設置和食譜配置。您可以在執行 Chef 自動化 2.0 的 AWS OpsWorks for Chef Automate 伺服器上執行掃描工作。任務可能立即執行 (一次性)、排定稍後執行或是排定於指定時間間隔執行,例如每日一次或每兩小時一次。掃描任務的結果會傳送到合規報告。您可以在 Chef Automate 2.0 儀表板中檢視合規掃描結果,並採取因應動作。若要開啟 Compliance (合規) 標籤和檢視報告,請在 Chef Automate 儀表板上的 Scan Jobs (掃描任務) 標籤中,在受管節點列的右邊選擇 Report (報告)

若要在受管節點上執行掃描任務,您必須具備下列條件。

  • 您的命名空間至少已安裝一個合規描述檔。

  • 至少一個目標節點,可透過手動新增或 EC2 執行個體自動新增

在中 AWS OpsWorks for Chef Automate,下列目標支援掃描工作。

  • 手動新增的節點

  • aws-ec2 執行個體

  • AWS 區域

如需如何執行掃描任務的相關詳細資訊,請參閱 Chef 文件中的 Chef Automate 掃描任務

(選用,Chef Automate 2.0) 搭配 Audit 技術指南來設定合規

您可以在任何 AWS OpsWorks for Chef Automate 伺服器上設定符合性。在啟動 AWS OpsWorks for Chef Automate 伺服器之後,您可以從 Chef Automate 儀表板上安裝描述檔,或是將所需的描述檔新增至 Policyfile.rb 政策檔案中的 Audit 技術指南屬性。入門套件中包含了預先填入的 Policyfile.rb 檔案。

在您透過描述檔編輯 Policyfile.rb 做為 Audit 技術指南屬性之後,請執行 chef push 命令,將 Audit 技術指南Policyfile.rb 中所指定的其他技術指南,上傳至您的 Chef Automate 伺服器。安裝審計食譜還會為 Chef 安裝寶石 InSpec,Chef 是 Chef 生產的開源測試和審核框架。用於 Chef Automate 2.0 時,選擇 Audit 技術指南的 7.1.0 或更新版本。 InSpec 寶石必須是 2.2.102 版或更高版本。

本節中的指示會說明如何實作 opsworks-audit 技術指南。審核食譜從 Chef Automate 服務器下載指定的配置文件,根據 DevSec SSH 基準配置文件評估節點,並在每次chef-client運行時報告合規性掃描的結果。

安裝合規描述檔
  1. 如果您尚未這麼做,請登入 Chef Automate Web 儀表板。請使用您在建立 AWS OpsWorks for Chef Automate 伺服器期間下載入門套件時收到的相同登入資料。

  2. 在 Chef Automate 儀表板中,選擇 Asset Store (資產存放區) 標籤。

    合規描述檔
  3. 選擇 Available (可用) 標籤以查看預先定義的描述檔。

  4. 瀏覽描述檔清單。選擇至少符合其中一個受管節點之作業系統和組態的描述檔。若要查看描述檔的詳細資訊,包括描述檔的目標違反情況描述和基本規則程式碼,請選擇描述檔項目右側的 >。您可以選擇多個描述檔。如果您要在入門套件中設定範例,請選擇 [DevSec SSH 基準]。

    Chef 合規描述檔詳細資訊檢視
  5. 若要在您的 Chef Automate 伺服器上安裝選取的描述檔,請選擇 Get (取得)

  6. 安裝描述檔後,他們會顯示在 Profiles (描述檔) 標籤的 Chef Automate 儀表板。

搭配 Policyfile.rb 安裝技術指南
  1. 查看入門套件 Policyfile.rb 中的屬性,以查看 Audit 技術指南在 ['profiles'] 中指定 ssh-baseline 描述檔。

    # Define audit cookbook attributes default["opsworks-demo"]["audit"]["reporter"] = "chef-server-automate" default["opsworks-demo"]["audit"]["profiles"] = [ { "name": "DevSec SSH Baseline", "compliance": "admin/ssh-baseline" } ]
  2. 下載並安裝 Policyfile.rb 中所定義的技術指南。

    chef install

    所有技術指南的版本都是經由技術指南的 metadata.rb 檔案所控制。每次變更技術指南時,您都必須在技術指南的 metadata.rb 中提高其版本。

  3. Policyfile.rb 中所定義的政策 opsworks-demo 推送到您的伺服器。

    chef push opsworks-demo
  4. 驗證您的政策安裝情況。執行下列命令。

    chef show-policy

    結果應類似以下內容:

    opsworks-demo-webserver ======================= * opsworks-demo: ec0fe46314
  5. 如果您尚未完成此作業,請先將節點新增到您的伺服器,以便管理。若要將第一個節點連接到 AWS OpsWorks for Chef Automate 伺服器,請使用此入門套件中隨附的userdata.sh指令碼。它使用 AWS OpsWorks AssociateNode API 將節點連接到服務器。

    您可以遵循自動加入節點 AWS OpsWorks for Chef Automate中的步驟將節點的關聯自動化,或遵循個別加入節點中的步驟來逐一新增節點。

  6. 在更新節點的執行清單之後,chef-client 代理程式即會在下一次執行時執行您指定的配方。根據預設,這種情況會每隔 1800 秒 (30 分鐘) 發生一次。執行之後,您可以從 Chef Automate 儀表板的 Compliance (合規) 標籤,檢視合規結果,並且採取因應動作。

    Chef 合規掃描結果

執行合規掃描

在您設定好節點執行清單,並執行第一次代理程式之後,應該很快就會在 Chef Automate 儀表板中看到合規掃描結果。

Chef Compliance 報告頁面檢視

在 Chef Automate 儀表板上,選擇 Compliance (合規) 標籤。在左側導覽窗格中,選擇 Reporting (報告)。選擇 Profiles (描述檔) 標籤,選擇 Scan Results (掃描結果),然後選擇含掃描錯誤的節點,以進一步了解導致節點發生錯誤的規則。

Chef Compliance 的錯誤結果清單

一般而言,您會看到不相容的掃描結果,因為新節點尚未滿足 DevSec SSH 基準設定檔中的所有規則。DevSec 強化架構是以社群為基礎的專案,提供說明書以修正違反 DevSec SSH 基準設定檔中規則的問題。

(選用) 解決未合規的結果

入門套件包含開放原始碼食譜ssh-hardening,您可以執行它來修正針對 DevSec SSH 基準設定檔執行時不符合規定的結果。

注意

說明ssh-hardening書會對節點進行變更,以符合 DevSec SSH 基準規則。在任何生產節點上執行此食譜之前,請在 Chef Automate 主控台中檢閱 DevSec SSH 基準設定檔的詳細資料,以瞭解食譜針對違規的規則。在任何生產節點上執行之前,請先檢閱開放原始碼 ssh-hardening 技術指南的資訊。

執行 ssh-hardening 技術指南
  1. 在文字編輯器中,將 ssh-hardening 技術指南附加到 Policyfile.rb 執行清單中。Policyfile.rb 執行清單應該符合下列項目。

    run_list 'chef-client', 'opsworks-webserver', 'audit', 'ssh-hardening'
  2. 更新 Policyfile.rb,接著將其推送到您的 AWS OpsWorks for Chef Automate 伺服器。

    chef update Policyfile.rb chef push opsworks-demo
  3. opsworks-demo 政策相關聯的節點會自動更新執行清單,並將 ssh-hardening 技術指南套用到下一次的 chef-client 執行。

    由於您使用的是 chef-client 技術指南,因此節點會定期 (預設為每隔 30 分鐘一次) 進行狀態檢查。在下次簽入時,會執行ssh-hardening食譜,並協助改善節點安全性,以符合 DevSec SSH 基準設定檔的規則。

  4. 在第一次執行 ssh-hardening 技術指南之後,請等待 30 分鐘再次執行 Compliance (合規) 掃描。在 Chef Automate 儀表板中查看結果。DevSec 安全殼層基準掃描初始執行時發生的不相容結果應該已解決。

使用 Chef Automate 1.x 中的合規

如果您的 AWS OpsWorks for Chef Automate 服務器正在運行廚師自動化 1. x,使用本節中的程序設定 Chef 合規性。

(選用、Chef Automate 1.x) 設定 Chef Compliance

您可以在任何 AWS OpsWorks for Chef Automate 伺服器上設定 Chef 合規性。啟動 AWS OpsWorks for Chef Automate 伺服器之後,請選擇您想要透過 Chef Automate 儀表板中的描述檔來執行的描述檔。安裝描述檔之後,請執行 berks 命令,將 Audit 技術指南上傳至您的 Chef Automate 伺服器。安裝審核食譜還會安裝 gem InSpec,Chef 生產的開源測試框架,可讓您將自動化測試集成到部署管道的任何階段。用於 Chef Automate 1.x 時,選擇 Audit 技術指南的 5.1.0 或更新版本。 InSpec 寶石必須是 1.24.0 或更高版本。

入 AWS OpsWorks for Chef Automate 門套件包括一本包裝食譜opsworks-audit,可下載並安裝適合您的 Chef Audit 食譜版本。此說明opsworks-audit書也會指示chef-client代理程式根據您在本主題稍後從 Chef 的合規性主控台安裝的 DevSecSSH 基準設定檔來評估節點。依據您的偏好設定,您也可以使用技術指南來設定 Compliance (合規)。本節中的指示會說明如何實作 opsworks-audit 技術指南。

安裝 Compliance (合規) 描述檔
  1. 如果您尚未這麼做,請登入 Chef Automate Web 儀表板。使用您在建立伺服器時下載入門套件時收到的認 AWS OpsWorks for Chef Automate 證。

  2. 在 Chef Automate 儀表板上,選擇 Compliance (合規) 標籤。

    Chef Compliance 描述檔
  3. 在左側導覽列中,選擇 Profile Store (描述檔存放區),然後選擇 Available (可用) 標籤,以查看預先定義的描述檔。

  4. 瀏覽描述檔清單。選擇至少符合其中一個受管節點之作業系統和組態的描述檔。若要查看描述檔的詳細資訊,包括描述檔的目標違反情況描述和基本規則程式碼,請選擇描述檔項目右側的 >。您可以選擇多個描述檔。

    Chef Compliance 描述檔詳細資訊檢視
  5. 若要在您的 Chef Automate 伺服器上安裝選取的描述檔,請選擇 Get (取得)

  6. 當下載完成後,請前往下一個步驟。

安裝和設定 opsworks-audit 技術指南
  1. 此步驟是選用的,但可以節省步驟 6 將配方新增至節點執行清單的時間。編輯 roles/opsworks-example-role.rb 檔案 (其隨附於您建立 AWS OpsWorks for Chef Automate 伺服器期間所下載的入門套件中)。新增下列這幾行。最後一行會標示為註解,因為您可以選擇是否要在執行 Compliance (合規) 掃描之後新增 ssh-hardening 技術指南和配方,以解決未合規節點的問題。

    run_list( "recipe[chef-client]", "recipe[apache2]", "recipe[opsworks-audit]" # "recipe[ssh-hardening]" )
  2. 使用文字編輯器,在 Berksfile 中指定所需的技術指南。入門套件中會為您提供 Berksfile 範例。在這個範例中,我們會安裝 Chef Infra 用戶端 (chef-client) 技術指南、apache2 技術指南和 opsworks-audit 技術指南。您的 Berksfile 應該如下所示。

    source 'https://supermarket.chef.io cookbook 'chef-client' cookbook 'apache2', '~> 5.0.1' cookbook 'opsworks-audit', path: 'cookbooks/opsworks-audit', '~> 1.0.0'

    所有技術指南的版本都是經由技術指南的 metadata.rb 檔案所控制。每次變更技術指南時,您都必須在技術指南的 metadata.rb 中提高其版本。

  3. 執行下列命令,將技術指南下載並安裝到本機電腦上的 cookbooks 資料夾或工作用電腦中。

    berks vendor cookbooks
  4. 執行下列命令,將廠商處理的技術指南上傳到 AWS OpsWorks for Chef Automate 伺服器。

    knife upload .
  5. 執行下列命令,藉由顯示目前伺服器上可用的技術指南清單來驗證 opsworks-audit 技術指南的安裝。

    knife cookbook list
  6. 如果您尚未完成此作業,請先將節點新增到您的伺服器,以便管理。您可以遵循自動加入節點 AWS OpsWorks for Chef Automate中的步驟將節點的關聯自動化,或遵循個別加入節點中的步驟來逐一新增節點。編輯節點執行清單,以新增您在步驟 1 中指定的 opsworks-example-role 角色。在這個範例中,我們會編輯 RUN_LIST 指令碼 (您用來自動化節點的關聯) 中的 userdata 屬性。

    RUN_LIST="role[opsworks-example-role]"

    如果您略過步驟 1,且尚未設定角色,請將個別配方的名稱新增至執行清單。儲存您的變更,並依照中步驟 3:使用無人執行的關聯指令碼建立執行個體的步驟將使用者資料指令碼套用至 Amazon EC2 執行個體。

    RUN_LIST="recipe[chef-client],recipe[apache2],recipe[opworks-audit]"
  7. 在更新節點的執行清單之後,chef-client 代理程式即會在下一次執行時執行您指定的配方。根據預設,這種情況會每隔 1800 秒 (30 分鐘) 發生一次。執行之後,Chef Automate 儀表板中會顯示您的 Compliance (合規) 結果。

執行合規掃描

在您設定好節點執行清單,並執行第一次代理程式協助程式之後,應該很快就會在 Chef Automate 儀表板中看到合規掃描結果。

Chef Compliance 報告頁面檢視

在 Chef Automate 儀表板上,選擇 Compliance (合規) 標籤。在左側導覽窗格中,選擇 Reporting (報告)。選擇 Profiles (描述檔) 標籤,選擇 Scan Results (掃描結果),然後選擇含掃描錯誤的節點,以進一步了解導致節點發生錯誤的規則。

Chef Compliance 的錯誤結果清單

一般而言,您會看到不相容的掃描結果,因為新節點尚未滿足 DevSec SSH 基準設定檔中的所有規則。DevSec 強化架構是以社群為基礎的專案,提供說明書以修正違反 DevSec SSH 基準設定檔中規則的問題。

(選用) 解決未合規的結果

入門套件包含開放原始碼食譜ssh-hardening,您可以執行它來修正針對 DevSec SSH 基準設定檔執行時不符合規定的結果。

注意

說明ssh-hardening書會對節點進行變更,以符合 DevSec SSH 基準規則。在任何生產節點上執行此食譜之前,請在 Chef Automate 主控台中檢閱 DevSec SSH 基準設定檔的詳細資料,以瞭解食譜針對違規的規則。在任何生產節點上執行之前,請先檢閱開放原始碼 ssh-hardening 技術指南的資訊。

執行 ssh-hardening 技術指南
  1. 在文字編輯器中,將 ssh-hardening 技術指南附加到 Berksfile。您的 Berksfile 應該如下所示。

    source 'https://supermarket.chef.io' cookbook 'chef-client' cookbook 'apache2', '~> 5.0.1' cookbook 'opsworks-audit', path: 'cookbooks/opsworks-audit', '~> 1.0.0' # optional cookbook 'ssh-hardening'
  2. 執行下列命令,將 ssh-hardening 技術指南下載到本機技術指南資料夾,然後將其上傳至您的 AWS OpsWorks for Chef Automate 伺服器。

    berks vendor cookbooks knife upload .
  3. ssh-hardening 配方新增到您的節點執行清單中,如 安裝和設定 opsworks-audit 技術指南中的步驟 1 和 6 所述。

    如果您更新 opsworks-example-role.rb 檔案,請執行下列命令,將變更上傳至您的伺服器。

    knife upload .

    如果您直接更新執行清單,請執行下列命令以上傳變更。節點名稱通常為執行個體 ID。

    knife node run_list add <node name> 'recipe[ssh-hardening]'
  4. 由於您使用的是 chef-client 技術指南,因此節點會定期 (預設為每隔 30 分鐘一次) 進行狀態檢查。在下次簽入時,會執行ssh-hardening食譜,並協助改善節點安全性,以符合 DevSec SSH 基準設定檔的規則。

  5. 在第一次執行 ssh-hardening 技術指南之後,請等待 30 分鐘再次執行 Compliance (合規) 掃描。在 Chef Automate 儀表板中查看結果。DevSec 安全殼層基準掃描初始執行時發生的不相容結果應該已解決。

合規更新

在 AWS OpsWorks for Chef Automate 伺服器上,符合性功能會由排程的系統維護自動更新。隨著 Chef 自動化,Chef Infra 服務器和 Chef InSpec 的更新版本可用於您的 AWS OpsWorks for Chef Automate 服務器,您可能需要檢查和更新在服務器上運行的審計食譜和 Chef InSpec gem 的受支持版本。您已經在 AWS OpsWorks for Chef Automate 伺服器上安裝的設定檔不會作為維護的一部分進行更新。

社群和自訂合規描述檔

Chef 目前包含超過 100 種合規掃描描述檔。您可以將社群和自訂描述檔新增至清單,然後根據這些描述檔下載並執行合規掃描,如同已包含的描述檔一般。您可從 Chef Supermarket 取得以社群為基礎的合規描述檔。自訂描述檔是以 Ruby 為基礎的程式,其中包括控制項資料夾,這些控制項可以指定您的掃描規則。

另請參閱