OpenSCAPによるシステムセキュリティ
SUSE Multi-Linux ManagerはOpenSCAPを使用してクライアントを監査します。 これにより、任意のクライアントのコンプライアンススキャンをスケジュール設定し、表示することができます。
1. SCAPについて
セキュリティコンテンツ自動化プロトコル(SCAP)は、コミュニティのアイデアから派生した相互運用可能な仕様の統合です。 これは、企業システムのシステムセキュリティを維持するために、米国国立標準技術研究所(NIST)によって維持されている仕様の一連です。
SCAPは、システムセキュリティを維持するための標準化されたアプローチを提供するために作成され、使用される標準はコミュニティや企業のニーズに応じて継続的に変化します。 新しい仕様は、NISTのSCAPリリースサイクルによって管理され、一貫した反復可能な改訂作業フローを提供します。 詳細については、以下を参照してください。
SUSE Multi-Linux ManagerはOpenSCAPを使用してSCAP仕様を実装します。 OpenSCAPは、拡張可能な構成チェックリスト記述形式(XCCDF)を利用する監査ツールです。 XCCDFは、チェックリストの内容を表現する標準的な方法であり、セキュリティチェックリストを定義します。 また、一般プラットフォーム列挙(CPE)、一般構成列挙(CCE)、およびオープン脆弱性および評価言語(OVAL)などの他の仕様と組み合わせて、SCAPで表現されたチェックリストを作成し、SCAP検証済み製品によって処理できるようにします。
OpenSCAPは、SUSEセキュリティチームによって生成されたコンテンツを使用してパッチの存在を確認します。 OpenSCAPは、標準および仕様に基づいたルールを使用して、システムセキュリティ構成設定をチェックし、妥協の兆候を調査します。 SUSEセキュリティチームに関する詳細については、 https://www.suse.com/support/security.を参照してください。
2. SCAPスキャンのためのクライアントの準備
開始する前に、SCAPスキャン用にクライアントシステムを準備する必要があります。
|
OpenSCAP監査は、SSH接続メソッドを使用するSaltクライアントでは使用できません。 |
|
クライアントのスキャンは、スキャンされるクライアントのメモリと計算能力を大量に消費する可能性があります。 Red Hatクライアントの場合、スキャンされる各クライアントに対して少なくとも2 GBのRAMが利用可能であることを確認してください。 |
開始する前に、クライアントにOpenSCAPスキャナーとSCAPセキュリティガイド(コンテンツ)パッケージをインストールしてください。 オペレーティングシステムに応じて、これらのパッケージはベースオペレーティングシステムに含まれているか、SUSE Multi-Linux Managerクライアントツールに含まれています。
次の表に、必要なパッケージを一覧表示します。
| オペレーティングシステム | Scanner (スキャナ) | 内容 |
|---|---|---|
SLES |
openscap-utils |
scap-security-guide |
openSUSE |
openscap-utils |
scap-security-guide |
RHEL |
openscap-utils |
scap-security-guide-redhat |
CentOS |
openscap-utils |
scap-security-guide-redhat |
Oracle Linux |
openscap-utils |
scap-security-guide-redhat |
Ubuntu |
libopenscap8 |
scap-security-guide-ubuntu |
Debian |
libopenscap8 |
scap-security-guide-debian |
RHEL 7および互換システムでは、古い内容を含む`scap-security-guide`パッケージが提供されています。 `scap-security-guide-redhat`パッケージはSUSE Multi-Linux Managerクライアントツールに含まれているので、それを使用することをお勧めします。
|
SUSEは、さまざまなopenscapプロファイル用の`scap-security-guide`パッケージを提供します。 `scap-security-guide`の現在のバージョンでは、SUSEは以下のプロファイルをサポートしています:
非SUSEオペレーティングシステム用の含まれているプロファイルはコミュニティによって提供されています。 これらはSUSEによって公式にサポートされていません。 |
3. OpenSCAPコンテンツファイル
OpenSCAPは、テストルールを定義するためにSCAPコンテンツファイルを使用します。 これらのコンテンツファイルは、XCCDFまたはOVAL標準に基づいて作成されます。 SCAPセキュリティガイドに加えて、公開されているコンテンツファイルをダウンロードし、要件に合わせてカスタマイズできます。 デフォルトのコンテンツファイルテンプレート用にSCAPセキュリティガイドパッケージをインストールできます。 また、XCCDFまたはOVALに精通している場合は、自分のコンテンツファイルを作成できます。
|
SCAPコンテンツファイルを作成するためにテンプレートを使用することをお勧めします。 独自のカスタムコンテンツファイルを作成して使用する場合は、自己責任で行ってください。 カスタムコンテンツファイルの使用によってシステムが損傷した場合、SUSEによるサポートを受けられない可能性があります。 |
コンテンツファイルを作成したら、そのファイルをクライアントに転送する必要があります。
これは、物理ストレージメディアを使用するか、Saltを介してネットワーク上で他のファイルを移動するのと同じ方法で行うことができます(例えば、 salt-cpや Salt ファイルサーバ)、ftp`または`scp。
管理しているSUSE Multi-Linux Managerのクライアントにコンテンツファイルを配布するためのパッケージを作成することをお勧めします。 パッケージは署名および検証することで、その整合性を確保できます。 詳細については、カスタムチャンネルを参照してください。
4. OpenSCAPプロファイルの検索
異なるオペレーティングシステムは、異なるOpenSCAPコンテンツファイルとプロファイルを提供します。1つのコンテンツファイルには、複数のプロファイルが含まれている場合があります。
RPMベースのオペレーティングシステムでは、次のコマンドを使用して、使用可能なSCAPファイルの場所を決定します。
rpm -ql <scap-security-guide-package-name-from-table>
DEBベースのオペレーティングシステムでは、次のコマンドを使用して、使用可能なSCAPファイルの場所を決定します。
dpkg -L <scap-security-guide-package-name-from-table>
ニーズに合う1つの SCAPコンテンツファイルを特定したら、クライアントに使用可能なプロファイルを一覧にします。
oscap info /usr/share/xml/scap/ssg/content/ssg-sle15-ds.xml
Document type: Source Data Stream
Imported: 2021-03-24T18:14:45
Stream: scap_org.open-scap_datastream_from_xccdf_ssg-sle15-xccdf-1.2.xml
Generated: (null)
Version: 1.2
Checklists:
Ref-Id: scap_org.open-scap_cref_ssg-sle15-xccdf-1.2.xml
Status: draft
Generated: 2021-03-24
Resolved: true
Profiles:
Title: CIS SUSE Linux Enterprise 15 Benchmark
Id: xccdf_org.ssgproject.content_profile_cis
Title: Standard System Security Profile for SUSE Linux Enterprise 15
Id: xccdf_org.ssgproject.content_profile_standard
Title: DISA STIG for SUSE Linux Enterprise 15
Id: xccdf_org.ssgproject.content_profile_stig
Referenced check files:
ssg-sle15-oval.xml
system: http://oval.mitre.org/XMLSchema/oval-definitions-5
ssg-sle15-ocil.xml
system: http://scap.nist.gov/schema/ocil/2
https://ftp.suse.com/pub/projects/security/oval/suse.linux.enterprise.15.xml
system: http://oval.mitre.org/XMLSchema/oval-definitions-5
Checks:
Ref-Id: scap_org.open-scap_cref_ssg-sle15-oval.xml
Ref-Id: scap_org.open-scap_cref_ssg-sle15-ocil.xml
Ref-Id: scap_org.open-scap_cref_ssg-sle15-cpe-oval.xml
Dictionaries:
Ref-Id: scap_org.open-scap_cref_ssg-sle15-cpe-dictionary.xml
スキャンを実行するためのファイルパスとプロファイルをメモします。
5. 監査スキャンの実行
コンテンツファイルをインストールまたは転送した後、監査スキャンを実行できます。 監査スキャンは、SUSE Multi-Linux Manager Web UIを使用してトリガーできます。 定期的なスキャンをスケジュールするために、SUSE Multi-Linux Manager APIを使用することもできます。
SUSE Multi-Linux Manager Web UIで、に移動し、スキャンしたいクライアントを選択します。
`Audit`タブに移動し、`Schedule`サブタブを選択します。
`Path to XCCDF Document`フィールドに、クライアントで使用するSCAPテンプレートおよびプロファイル用のパラメータを入力します。 例:
Command: /usr/bin/oscap xccdf eval
Command-line arguments: --profile xccdf_org.ssgproject.content_profile_stig
Path to XCCDF document: /usr/share/xml/scap/ssg/content/ssg-sle15-ds.xml
`--fetch-remote-resources`パラメータを使用する場合、大量のRAMが必要になります。 さらに、`file_recv_max_size`の値を増やす必要があるかもしれません。
スキャンは、クライアントの次にスケジュールされた同期時に実行されます。
|
XCCDFコンテンツファイルは、リモートシステムで実行される前に検証されます。 コンテンツファイルに無効な引数が含まれている場合、テストは失敗します。 |
開始する前に、スキャンするクライアントにPythonおよびXML-RPCライブラリがインストールされていることを確認します。
既存のスクリプトを選択するか、`system.scap.scheduleXccdfScan`を使用してシステムスキャンをスケジュールするスクリプトを作成します。 例:
#!/usr/bin/python3 import xmlrpc.client client = xmlrpc.client.ServerProxy('https://server.example.com/rpc/api') key = client.auth.login('username', 'password') client.system.scap.scheduleXccdfScan(key, <1000010001>, '<path_to_xccdf_file.xml>', '--profile <profile_name>') client.auth.logout(session_key)この例では:
`<1000010001>`はシステムID (sid)です。
<path_to_xccdf_file.xml>`はクライアント上のコンテンツファイルの場所を示すパスです。 たとえば、/usr/share/xml/scap/ssg/content/ssg-sle15-ds.xml`と指定します。
<profile_name>`は`oscap`コマンドの追加引数です。 たとえば、`united_states_government_configuration_baseline(USGCB)を使用します。コマンドプロンプトから、スキャンするクライアント上でスクリプトを実行します。
6. スキャン結果
実行したスキャンに関する情報はSUSE Multi-Linux Manager Web UIにあります。 結果の表を表示するには、に移動します。 この表のデータに関する詳細情報については、All Scansを参照してください。
スキャンに関する詳細情報が利用できるようにするには、クライアントでそれを有効にする必要があります。 SUSE Multi-Linux Manager Web UIで、に移動し、クライアントが所属する組織をクリックします。 `Configuration`タブに移動し、`Enable Upload of Detailed SCAP Files`オプションをオンにします。 有効にすると、すべてのスキャンで追加のHTMLファイルが生成され、追加情報が含まれます。 結果には、次のような追加の行が表示されます:
Detailed Results: xccdf-report.html xccdf-results.xml scap-yast2sec-oval.xml.result.xml
コマンドラインからスキャン情報を取得するには、`spacewalk-report`コマンドを使用します:
spacewalk-report system-history-scap spacewalk-report scap-scan spacewalk-report scap-scan-results
また、SUSE Multi-Linux Manager APIを使用して、`system.scap`ハンドラで結果を表示することもできます。
7. SCAPスキャン結果の削除
設定された保持期間を過ぎたSCAPスキャンのみが削除可能です。 保持期間は`Organization Configuration`セクションで設定できます。
に移動します。
`SCAP`の下で、`Allow Deletion of SCAP Results`をオンにします。
`Allow Deletion After`に日数を入力します(デフォルトは90です)。
に移動します。
削除したいスキャンのチェックボックスを選択します。
確認をクリックします。
8. 修復
クライアントシステムを強化するために、修復用のBashスクリプトとAnsible playbookが同じSCAPセキュリティガイドパッケージで提供されます。 例: 例:
/usr/share/scap-security-guide/bash/sle15-script-cis.sh /usr/share/scap-security-guide/bash/sle15-script-standard.sh /usr/share/scap-security-guide/bash/sle15-script-stig.sh
/usr/share/scap-security-guide/ansible/sle15-playbook-cis.yml /usr/share/scap-security-guide/ansible/sle15-playbook-standard.yml /usr/share/scap-security-guide/ansible/sle15-playbook-stig.yml
クライアントシステムでAnsibleを有効にした後、リモートコマンドまたはAnsibleを使用して実行できます。
8.1. Bashスクリプトを使用して修復を実行する
すべてのターゲットシステムに`scap-security-guide`パッケージをインストールします。 詳細については、Ansible制御ノードのセットアップを参照してください。
パッケージ、チャネル、スクリプトは、各オペレーティングシステムおよびディストリビューションによって異なります。 例は修復Bashスクリプトの例セクションにリストされています。
8.1.1. リモートコマンドとして単一システムでBashスクリプトを実行する
単一システムでリモートコマンドとしてBashスクリプトを実行します。
-
タブからインスタンスを選択します。 次に、で、次のようなBashスクリプトを記述します:
#!/bin/bash chmod +x -R /usr/share/scap-security-guide/bash /usr/share/scap-security-guide/bash/sle15-script-stig.sh
-
スケジュールをクリックします。
|
フォルダー名とスクリプト名は、ディストリビューションとバージョンによって異なります。 例は修復Bashスクリプトの例セクションにリストされています。 |
8.1.2. 複数のシステムでシステムセットマネージャを使用してbashスクリプトを実行する
複数のシステムでリモートコマンドとして一度にBashスクリプトを実行します。
-
システムグループが作成されたら、`System Groups`をクリックし、テーブルから`Use in SSM`を選択します。
-
`System Set Manager`から、の下で、次のようなBashスクリプトを記述します:
#!/bin/bash chmod +x -R /usr/share/scap-security-guide/bash /usr/share/scap-security-guide/bash/sle15-script-stig.sh
-
スケジュールをクリックします。
8.2. 修復Bashスクリプトの例
8.2.1. SUSE Linux Enterprise openSUSE およびバリアント。
例 SUSE Linux Enterprise および openSUSE スクリプトデータ。
- パッケージ
-
scap-security-guide
- チャンネル
-
-
SLE12:SLES12 アップデート
-
SLE15:SLES15 モジュールベースシステムアップデート
-
- Bashスクリプトディレクトリ
-
/usr/share/scap-security-guide/bash/ - Bashスクリプト
-
opensuse-script-standard.sh sle12-script-standard.sh sle12-script-stig.sh sle15-script-cis.sh sle15-script-standard.sh sle15-script-stig.sh
8.2.2. Red Hat Enterprise Linux および CentOS Bashスクリプトデータ
例 Red Hat Enterprise Linux および CentOS スクリプトデータ。
|
centos7-updatesの`scap-security-guide`には、Red Hat Enterprise Linuxスクリプトのみが含まれています。 |
- パッケージ
-
scap-security-guide-redhat
- チャンネル
-
-
SUSE Managerツール
-
- Bashスクリプトディレクトリ
-
/usr/share/scap-security-guide/bash/ - Bashスクリプト
-
centos7-script-pci-dss.sh centos7-script-standard.sh centos8-script-pci-dss.sh centos8-script-standard.sh fedora-script-ospp.sh fedora-script-pci-dss.sh fedora-script-standard.sh ol7-script-anssi_nt28_enhanced.sh ol7-script-anssi_nt28_high.sh ol7-script-anssi_nt28_intermediary.sh ol7-script-anssi_nt28_minimal.sh ol7-script-cjis.sh ol7-script-cui.sh ol7-script-e8.sh ol7-script-hipaa.sh ol7-script-ospp.sh ol7-script-pci-dss.sh ol7-script-sap.sh ol7-script-standard.sh ol7-script-stig.sh ol8-script-anssi_bp28_enhanced.sh ol8-script-anssi_bp28_high.sh ol8-script-anssi_bp28_intermediary.sh ol8-script-anssi_bp28_minimal.sh ol8-script-cjis.sh ol8-script-cui.sh ol8-script-e8.sh ol8-script-hipaa.sh ol8-script-ospp.sh ol8-script-pci-dss.sh ol8-script-standard.sh rhel7-script-anssi_nt28_enhanced.sh rhel7-script-anssi_nt28_high.sh rhel7-script-anssi_nt28_intermediary.sh rhel7-script-anssi_nt28_minimal.sh rhel7-script-C2S.sh rhel7-script-cis.sh rhel7-script-cjis.sh rhel7-script-cui.sh rhel7-script-e8.sh rhel7-script-hipaa.sh rhel7-script-ncp.sh rhel7-script-ospp.sh rhel7-script-pci-dss.sh rhel7-script-rhelh-stig.sh rhel7-script-rhelh-vpp.sh rhel7-script-rht-ccp.sh rhel7-script-standard.sh rhel7-script-stig_gui.sh rhel7-script-stig.sh rhel8-script-anssi_bp28_enhanced.sh rhel8-script-anssi_bp28_high.sh rhel8-script-anssi_bp28_intermediary.sh rhel8-script-anssi_bp28_minimal.sh rhel8-script-cis.sh rhel8-script-cjis.sh rhel8-script-cui.sh rhel8-script-e8.sh rhel8-script-hipaa.sh rhel8-script-ism_o.sh rhel8-script-ospp.sh rhel8-script-pci-dss.sh rhel8-script-rhelh-stig.sh rhel8-script-rhelh-vpp.sh rhel8-script-rht-ccp.sh rhel8-script-standard.sh rhel8-script-stig_gui.sh rhel8-script-stig.sh rhel9-script-pci-dss.sh rhosp10-script-cui.sh rhosp10-script-stig.sh rhosp13-script-stig.sh rhv4-script-pci-dss.sh rhv4-script-rhvh-stig.sh rhv4-script-rhvh-vpp.sh sl7-script-pci-dss.sh sl7-script-standard.sh
8.2.3. Ubuntu Bashスクリプトデータ
例 Ubuntu スクリプトデータ。
- パッケージ
-
scap-security-guide-ubuntu
- チャンネル
-
-
SUSE Managerツール
-
- Bashスクリプトディレクトリ
-
/usr/share/scap-security-guide/ - Bashスクリプト
-
ubuntu1804-script-anssi_np_nt28_average.sh ubuntu1804-script-anssi_np_nt28_high.sh ubuntu1804-script-anssi_np_nt28_minimal.sh ubuntu1804-script-anssi_np_nt28_restrictive.sh ubuntu1804-script-cis.sh ubuntu1804-script-standard.sh ubuntu2004-script-standard.sh
8.2.4. Debian Bashスクリプトデータ
例 Debian スクリプトデータ。
- パッケージ
-
scap-security-guide-debian
- チャンネル
-
-
SUSE Managerツール
-
- Bashスクリプトディレクトリ
-
/usr/share/scap-security-guide/bash/ - Bashスクリプト
-
# Debian 12 debian12-script-anssi_np_nt28_average.sh debian12-script-anssi_np_nt28_high.sh debian12-script-anssi_np_nt28_minimal.sh debian12-script-anssi_np_nt28_restrictive.sh debian12-script-standard.sh