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クライアントツールに含まれています。

次の表に、必要なパッケージを一覧表示します。

Table 1. OpenSCAPパッケージ
オペレーティングシステム 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 Linux Enterprise Server 12および15のDISA STIGプロファイル

  • SUSE Linux Enterprise Server 12および15のANSSI-BP-028プロファイル

  • SUSE Linux Enterprise Server 12および15のPCI-DSSプロファイル

  • SUSE Linux Enterprise Server 15のHIPAAプロファイル

  • SUSE Linux Enterprise Server for SAP Applications 15のパブリッククラウドイメージ用ハードニング

  • SUSE Linux Enterprise 15用のパブリッククラウドハードニング

  • SLE 12および15の標準のシステムセキュリティプロファイル

非SUSEオペレーティングシステム用の含まれているプロファイルはコミュニティによって提供されています。 これらはSUSEによって公式にサポートされていません。

3. OpenSCAPコンテンツファイル

OpenSCAPは、テストルールを定義するためにSCAPコンテンツファイルを使用します。 これらのコンテンツファイルは、XCCDFまたはOVAL標準に基づいて作成されます。 SCAPセキュリティガイドに加えて、公開されているコンテンツファイルをダウンロードし、要件に合わせてカスタマイズできます。 デフォルトのコンテンツファイルテンプレート用にSCAPセキュリティガイドパッケージをインストールできます。 また、XCCDFまたはOVALに精通している場合は、自分のコンテンツファイルを作成できます。

SCAPコンテンツファイルを作成するためにテンプレートを使用することをお勧めします。 独自のカスタムコンテンツファイルを作成して使用する場合は、自己責任で行ってください。 カスタムコンテンツファイルの使用によってシステムが損傷した場合、SUSEによるサポートを受けられない可能性があります。

コンテンツファイルを作成したら、そのファイルをクライアントに転送する必要があります。 これは、物理ストレージメディアを使用するか、Saltを介してネットワーク上で他のファイルを移動するのと同じ方法で行うことができます(例えば、 salt-cpSalt ファイルサーバ)、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を使用することもできます。

プロシージャ:Web UIから監査スキャンを実行する
  1. SUSE Multi-Linux Manager Web UIで、システム  システムリストに移動し、スキャンしたいクライアントを選択します。

  2. `Audit`タブに移動し、`Schedule`サブタブを選択します。

  3. `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`の値を増やす必要があるかもしれません。

  4. スキャンは、クライアントの次にスケジュールされた同期時に実行されます。

XCCDFコンテンツファイルは、リモートシステムで実行される前に検証されます。 コンテンツファイルに無効な引数が含まれている場合、テストは失敗します。

プロシージャ:APIから監査スキャンを実行する
  1. 開始する前に、スキャンするクライアントにPythonおよびXML-RPCライブラリがインストールされていることを確認します。

  2. 既存のスクリプトを選択するか、`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)を使用します。

  3. コマンドプロンプトから、スキャンするクライアント上でスクリプトを実行します。

6. スキャン結果

実行したスキャンに関する情報はSUSE Multi-Linux Manager Web UIにあります。 結果の表を表示するには、Audit  OpenSCAP  All Scansに移動します。 この表のデータに関する詳細情報については、All Scansを参照してください。

スキャンに関する詳細情報が利用できるようにするには、クライアントでそれを有効にする必要があります。 SUSE Multi-Linux Manager Web UIで、Admin  Organizationsに移動し、クライアントが所属する組織をクリックします。 `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結果の保持期間の設定
  1. ホーム  私の組織  設定に移動します。

  2. `SCAP`の下で、`Allow Deletion of SCAP Results`をオンにします。

  3. `Allow Deletion After`に日数を入力します(デフォルトは90です)。

プロシージャ:SCAPスキャン結果の削除
  1. Audit  OpenSCAP  All Scansに移動します。

  2. 削除したいスキャンのチェックボックスを選択します。

  3. 確認をクリックします。

8. 修復

クライアントシステムを強化するために、修復用のBashスクリプトとAnsible playbookが同じSCAPセキュリティガイドパッケージで提供されます。 例: 例:

Listing 1. bashスクリプト
/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
Listing 2. Ansible playbook
/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スクリプトを実行します。

  1. システム  概要タブからインスタンスを選択します。 次に、詳細  リモートコマンドで、次のようなBashスクリプトを記述します:

    #!/bin/bash
    chmod +x -R /usr/share/scap-security-guide/bash
    /usr/share/scap-security-guide/bash/sle15-script-stig.sh
  2. スケジュールをクリックします。

フォルダー名とスクリプト名は、ディストリビューションとバージョンによって異なります。 例は修復Bashスクリプトの例セクションにリストされています。

8.1.2. 複数のシステムでシステムセットマネージャを使用してbashスクリプトを実行する

複数のシステムでリモートコマンドとして一度にBashスクリプトを実行します。

  1. システムグループが作成されたら、`System Groups`をクリックし、テーブルから`Use in SSM`を選択します。

  2. `System Set Manager`から、Misc  Remote Commandの下で、次のようなBashスクリプトを記述します:

    #!/bin/bash
    chmod +x -R /usr/share/scap-security-guide/bash
    /usr/share/scap-security-guide/bash/sle15-script-stig.sh
  3. スケジュールをクリックします。

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