6.4. oscap の使用

oscap コマンドラインユーティリティーを使うと、ローカルシステムのスキャン、セキュリティーコンプライアンスコンテンツの確認、これらのスキャンおよび評価を基にしたレポートとガイドの生成ができます。このユーティリティーは OpenSCAP ライブラリーへのフロントエンドとしてのサービスを提供し、その機能を処理する SCAP コンテンツのタイプに基づいてモジュール (サブコマンド) にグループ化します。
以下のセクションでは oscap のインストール方法と最も一般的な操作の実行方法を説明します。これらのタスクの説明に例を用いています。特定のサブコマンドの詳細を確認するには、oscap コマンドの --help オプションを使用してください。
oscap [options] module module_operation [module_operation_options_and_arguments] --help
ここでの module は、処理されている SCAP コンテンツのタイプになります。また、module_operation は、SCAP コンテンツにおける特定の操作のサブコマンドになります。

例6.4 特定の oscap 操作に関するヘルプ

~]$ oscap ds sds-split --help
oscap -> ds -> sds-split

Split given SourceDataStream into separate files

Usage: oscap [options] ds sds-split [options] SDS TARGET_DIRECTORY

SDS - Source data stream that will be split into multiple files.
TARGET_DIRECTORY - Directory of the resulting files.

Options:
   --datastream-id <id>          - ID of the datastream in the collection to use.
   --xccdf-id <id>               - ID of XCCDF in the datastream that should be evaluated.
oscap の全機能を学習し、オプションの完全一覧を確認するには、oscap(8) man ページを参照してください。

6.4.1. oscap のインストール

システムに oscap をインストールするには、root で以下のコマンドを実行します。
~]# yum install openscap-scanner
このコマンドを使用すると、oscap が正常に動作するために必要なパッケージ (openscap パッケージを含む) をすべてインストールできます。独自のセキュリティーーコンテンツを作成するには、Script Check Engine (SCE) を提供する openscap-engine-sce パッケージもインストールする必要があります。この SCE は SCAP プロトコルの拡張機能であり、この機能を使うとコンテンツ作成者は Bash、Python、Ruby などのスクリプト言語を使ってセキュリティーーコンテンツを作成できるようになります。openscap-engine-sce パッケージは Optional チャンネルからのみ入手可能であることに注意してください。Enabling Supplementary and Optional Repositories を参照してください。
オプションとして oscap のインストール後に、oscap のバージョンの機能やこのバージョンがサポートする仕様、特定の oscap ファイルの保存場所、使用可能な SCAP オブジェクトの種類、他の役立つ情報をチェックできます。これらの情報を表示するには、以下のコマンドを実行します。
~]$ oscap -V
OpenSCAP command line tool (oscap) 1.0.4
Copyright 2009--2014 Red Hat Inc., Durham, North Carolina.

==== Supported specifications ====
XCCDF Version: 1.2
OVAL Version: 5.10.1
CPE Version: 2.3
CVSS Version: 2.0
CVE Version: 2.0
Asset Identification Version: 1.1
Asset Reporting Format Version: 1.1

==== Capabilities added by auto-loaded plugins ====
SCE Version: 1.0 (from libopenscap_sce.so.8)

==== Paths ====
Schema files: /usr/share/openscap/schemas
Schematron files: /usr/share/openscap/xsl
Default CPE files: /usr/share/openscap/cpe
Probes: /usr/libexec/openscap

==== Inbuilt CPE names ====
Red Hat Enterprise Linux - cpe:/o:redhat:enterprise_linux
Red Hat Enterprise Linux 5 - cpe:/o:redhat:enterprise_linux:5
Red Hat Enterprise Linux 6 - cpe:/o:redhat:enterprise_linux:6
Red Hat Enterprise Linux 7 - cpe:/o:redhat:enterprise_linux:7
Fedora 16 - cpe:/o:fedoraproject:fedora:16
Fedora 17 - cpe:/o:fedoraproject:fedora:17
Fedora 18 - cpe:/o:fedoraproject:fedora:18
Fedora 19 - cpe:/o:fedoraproject:fedora:19
Fedora 20 - cpe:/o:fedoraproject:fedora:20
Fedora 21 - cpe:/o:fedoraproject:fedora:21
Red Hat Enterprise Linux Optional Productivity Applications - cpe:/a:redhat:rhel_productivity
Red Hat Enterprise Linux Optional Productivity Applications 5 - cpe:/a:redhat:rhel_productivity:5

==== Supported OVAL objects and associated OpenSCAP probes ====
system_info                  probe_system_info           
family                       probe_family                
filehash                     probe_filehash              
environmentvariable          probe_environmentvariable   
textfilecontent54            probe_textfilecontent54     
textfilecontent              probe_textfilecontent       
variable                     probe_variable              
xmlfilecontent               probe_xmlfilecontent        
environmentvariable58        probe_environmentvariable58 
filehash58                   probe_filehash58            
inetlisteningservers         probe_inetlisteningservers  
rpminfo                      probe_rpminfo               
partition                    probe_partition             
iflisteners                  probe_iflisteners           
rpmverify                    probe_rpmverify             
rpmverifyfile                probe_rpmverifyfile         
rpmverifypackage             probe_rpmverifypackage      
selinuxboolean               probe_selinuxboolean        
selinuxsecuritycontext       probe_selinuxsecuritycontext
file                         probe_file                  
interface                    probe_interface             
password                     probe_password              
process                      probe_process               
runlevel                     probe_runlevel              
shadow                       probe_shadow                
uname                        probe_uname                 
xinetd                       probe_xinetd                
sysctl                       probe_sysctl                
process58                    probe_process58             
fileextendedattribute        probe_fileextendedattribute 
routingtable                 probe_routingtable
oscap を効果的に使用する前に、システムでセキュリティーーコンテンツをインストールまたはインポートする必要があります。たとえば、現時点で最も新しくかつ詳細な Linux 向けセキュリティーーポリシーを含む SCAP Security Guide (SSG) パッケージ (scap-security-guide) をインストールできます。SCAP Security Guide パッケージをシステムにインストールするには、root で次のコマンドを実行します。
~]# yum install scap-security-guide
システムに scap-security-guide をインストールした後は、特に指定されていなければ、SSG セキュリティーコンテンツは /usr/share/xml/scap/ssg/content/ ディレクトリーに格納され、他のセキュリティーコンプライアンス作業を進めることができます。
個別のニーズに合致する可能性のある既存の SCAP コンテンツの他のソースが必要な場合は、「その他のリソース」 を参照してください。
システムに SCAP コンテンツをインストールした後に、コンテンツへのファイルパスを提供すると oscap はコンテンツを処理できます。oscap ユーティリティーは SCAP バージョン 1.2 をサポートしており、SCAP バージョン 1.1 および 1.0 とも後方互換性があるので、特別な要件を必要とせずに以前のバージョンの SCAP コンテンツを処理できます。

6.4.2. SCAP コンテンツの表示

SCAP 標準は、数多くのファイル形式を定義します。oscap ユーティリティーは、多くの形式に適合するファイルを処理したり、作成したりすることができます。SCAP コンテンツの特定ファイルをさらに処理するには、そのファイルタイプでの oscap の使い方を理解する必要があります。特定のファイルの使い方が分からない場合は、ファイルを開いて読んでみるか、oscapinfo モジュールを使うことができます。これはファイルを解析し、ヒューマンリーダブルな形式で関連情報を抽出します。
以下のコマンドを実行すると、SCAP ドキュメントの内部構造を調べることができます。また、ドキュメントタイプ、仕様バージョン、ドキュメントのステータス、ドキュメントの公開日、ドキュメントがファイルシステムにコピーされた日付などの便利な情報が表示されます。
oscap info file
ここでの file は、調べているセキュリティーコンテンツファイルへの完全パスになります。以下の例で oscap info コマンドの使用方法を示します。

例6.5 SCAP コンテンツの情報表示

~]$ oscap info /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml
Document type: Source Data Stream
Imported: 2014-03-14T12:22:01

Stream: scap_org.open-scap_datastream_from_xccdf_ssg-rhel7-xccdf-1.2.xml
Generated: (null)
Version: 1.2
Checklists:
        Ref-Id: scap_org.open-scap_cref_ssg-rhel7-xccdf-1.2.xml
                Profiles:
                        xccdf_org.ssgproject.content_profile_test
                        xccdf_org.ssgproject.content_profile_rht-ccp
                        xccdf_org.ssgproject.content_profile_common
                        xccdf_org.ssgproject.content_profile_stig-rhel7-server-upstream
                Referenced check files:
                        ssg-rhel7-oval.xml
                                system: http://oval.mitre.org/XMLSchema/oval-definitions-5
Checks:
        Ref-Id: scap_org.open-scap_cref_ssg-rhel7-oval.xml
        Ref-Id: scap_org.open-scap_cref_output--ssg-rhel7-cpe-oval.xml
        Ref-Id: scap_org.open-scap_cref_output--ssg-rhel7-oval.xml
Dictionaries:
        Ref-Id: scap_org.open-scap_cref_output--ssg-rhel7-cpe-dictionary.xml

6.4.3. システムのスキャン

oscap の最も重要な機能は、ローカルシステムの設定および脆弱性スキャンを実行することです。以下はコマンドの一般的な構文になります。
oscap [options] module eval [module_operation_options_and_arguments]
oscap ユーティリティーでは、XCCDF (eXtensible Configuration Checklist Description Format) ベンチマークと OVAL (Open Vulnerability and Assessment Language) 定義の両方で表示される SCAP コンテンツに対してシステムのスキャンを行うことができます。セキュリティーポリシーは単一の OVAL または XCCDF ファイルの場合もあれば、複数の別個の XML ファイルの場合もあります。後者の場合は、各ファイルが異なるコンポーネントを表します (XCCDF、OVAL、CPE、CVE、その他)。スキャン結果は、標準出力と XML ファイルの両方にプリントすることができます。この結果のファイルは oscap でさらに処理され、人間が判読可能な形式のレポートを生成することができます。以下は、このコマンドの最も一般的な使用例になります。

例6.6 SSG OVAL 定義を使用したシステムのスキャン

すべての定義を評価しながら SSG OVAL 定義ファイルに対してシステムのスキャンを実行するには、以下のコマンドを実行します。
~]$ oscap oval eval --results scan-oval-results.xml /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml
スキャン結果は、scan-oval-results.xml ファイルとして現在のディレクトリーに保存されます。

例6.7 SSG OVAL 定義を使用したシステムのスキャン

SSG データストリームファイルで表されるセキュリティーポリシーから特定の OVAL 定義を評価するには、以下のコマンドを実行します。
~]$ oscap oval eval --id oval:ssg:def:100 --results scan-oval-results.xml /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml
スキャン結果は、scan-oval-results.xml ファイルとして現在のディレクトリーに保存されます。

例6.8 SSG XCCDF ベンチマークを使用したシステムのスキャン

システム上の xccdf_org.ssgproject.content_profile_rht-ccp プロファイルの SSG XCCDF ベンチマークを実行するには、以下のコマンドを実行します。
~]$ oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_rht-ccp --results scan-xccdf-results.xml /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml
スキャン結果は、scan-xccdf-results.xml ファイルとして現在のディレクトリーに保存されます。

注記

--profile コマンドラインの引数は、特定の XCCDF またはデータストリームファイルからセキュリティープロファイルを選択します。利用可能なプロファイルの一覧は、oscap info コマンドを実行すると確認できます。--profile コマンドライン引数が省略されると、SCAP 標準で必要とされるデフォルトの XCCDF プロファイルが使用されます。デフォルトの XCCDF プロファイルは適切なセキュリティーポリシーである場合もありますが、そうでない場合もあることに注意してください。

6.4.4. レポートおよびガイドの生成

oscap のもうひとつの便利な機能は、ヒューマンリーダブルな形式で SCAP コンテンツを生成することです。oscap ユーティリティーを使うと、XML ファイルを HTML またはプレーンテキスト形式に変換できます。この機能は、セキュリティーガイドやチェックリストの生成に使用できます。これらは、セキュアなシステム設定のガイドになるとともに、情報ソースの役割も果たします。システムスキャンの結果も、読みやすい結果レポートに変換することができます。一般的なコマンド構文は以下のようになります。
oscap module generate sub-module [specific_module/sub-module_options_and_arguments] file
ここでの modulexccdf または oval に、sub-module は生成されたドキュメントのタイプに、file は XCCDF または OVAL ファイルになります。
以下でこのコマンドの最も一般的な使用例を示します。

例6.9 チェックリスト付きガイドの生成

チェックリスト付きの SSG ガイドを xccdf_org.ssgproject.content_profile_rht-ccp プロファイル用に作成するには、以下のコマンドを実行します。
~]$ oscap xccdf generate guide --profile xccdf_org.ssgproject.content_profile_rht-ccp /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml > ssg-guide-checklist.html
ガイドは、ssg-guide-checklist.html ファイルとして現在のディレクトリーに保存されます。

例6.10 SSG OVAL スキャン結果をレポートに変換する

SSG OVAL スキャンの結果を HTML ファイルに変換するには、以下のコマンドを実行します。
~]$ oscap oval generate report scan-oval-results.xml > ssg-scan-oval-report.html
結果のレポートは ssg-scan-oval-report.html ファイルとして現在のディレクトリーに保存されます。この例では、scan-oval-results.xml ファイルが保存されている場所からこのコマンドが実行されることを想定しています。それ以外の場合は、スキャン結果を含んでいるファイルの完全修飾パスを指定する必要があります。

例6.11 SSG XCCDF スキャン結果をレポートに変換する

SSG XCCDF スキャンの結果を HTML ファイルに変換するには、以下のコマンドを実行します。
~]$ oscap xccdf generate report scan-xccdf-results.xml > scan-xccdf-report.html
結果レポートは ssg-scan-xccdf-report.html ファイルとして現在のディレクトリーに保存されます。別の方法では、--report コマンドライン引数を使用すると、スキャン時にこのレポートが生成できます。
~]$ oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_rht-ccp --results scan-xccdf-results.xml --report scan-xccdf-report.html /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml

6.4.5. SCAP コンテンツの検証

システム上でセキュリティーポリシーを使い始める前に、ポリシーを検証してポリシー内の構文エラーやセマンティックエラーを避けるようにしてください。oscap ユーティリティーを使うと、SCAP XML スキーマに対してセキュリティーコンテンツを検証することができます。検証結果は、標準エラーストリーム (stderr) にプリントされます。このような検証コマンドの一般的な構文は以下のようになります。
oscap module validate [module_options_and_arguments] file
ここでの file は、検証されているファイルへの完全パスになります。唯一の例外はデータストリームモジュール (ds) で、これは validate ではなく sds-validate 演算を使用します。以下の例で示されているように、特定のデータストリーム内の SCAP コンポーネントは自動的に検証され、各コンポーネントは別個に指定されないことに注意してください。
~]$ oscap ds sds-validate /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml
OVAL 仕様のような特定の SCAP コンテンツの場合、スキマトロン検証も実行できます。スキマトロン検証は標準の検証よりも遅いものの、より深い分析を提供するのでより多くのエラーを検出できます。以下の SSG 例では、このコマンドの通常の使用方法を示しています。
~]$ oscap oval validate --schematron /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml

6.4.6. OpenSCAP を使用してシステムを修正

OpenSCAP を使用すると、コンプライアンスに準拠しない状態のシステムを自動的に修正できます。システムの修正には、XCCDF ファイルと手順が必要です。scap-security-guide package には、特定の修正手順が含まれます。
システムの修正は以下の 2 つの手順で構成されます。
  1. OpenSCAP は XCCDF 評価を実行します。
  2. 結果の評価は、OVAL 定義を評価することによって実行されます。失敗した各ルールは修正の候補としてマークされます。
  3. OpenSCAP は適切な修正要素を検索および解決し、環境を準備して、修正スクリプトを実行します。
  4. 修正スクリプトの出力は OpenSCAP によって取得され、rule-result 要素内に格納されます。修正スクリプトの戻り値も格納されます。
  5. OpenSCAP が修正スクリプトを実行すると、すぐに OVAL 定義が再び評価されます (修正スクリプトが正しく適用されたことを検証します)。この 2 回目の実行時に、OVAL 評価が成功を返す場合、ルールの結果は fixed になり、それ以外の場合は error になります。
  6. 修正の詳細な結果は出力 XCCDF ファイルに格納されます。このファイルには 2 つの TestResult 要素が含まれます。最初の TestResult 要素は修正前のスキャンを表します。2 つ目の TestResult は最初の要素から派生し、修正結果を含みます。
修正に関して、OpenSCAP には、オンライン、オフライン、およびレビューの 3 つの操作モードがあります。

6.4.6.1. OpenSCAP オンライン修正

オンライン修正は、スキャン時に修正要素を実行します。評価と修正は単一のコマンドの一部として実行されます。
オンライン修正を有効にするには、--remediate コマンドラインオプションを使用します。たとえば、scap-security-guide パッケージを使用してオンライン修正を実行するには、以下のコマンドを実行します。
~]$ oscap xccdf eval --remediate --profile xccdf_org.ssgproject.content_profile_rht-ccp --results scan-xccdf-results.xml /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml
このコマンドの出力は 2 つのセクションから構成されます。最初のセクションには、修正前のスキャンの結果が示され、2 つ目のセクションには修正の適用後のスキャンの結果が示されます。2 つ目の部分には fixederror の結果のみを含めることができます。fixed 結果は、スキャンが修正が合格した後に実行されたことを示します。error 結果は修正の適用後であっても評価が合格していないことを示します。

6.4.6.2. OpenSCAP オフライン修正

オフライン修正では、修正実行を延期できます。最初のステップでは、システムの評価のみが実行され、結果は XCCDF ファイルの TestResult 要素に格納されます。
2 つ目のステップでは、oscap が修正スクリプトを実行し、結果を検証します。データが失われないよう結果を入力ファイルに格納することが推奨されます。オフライン修正中に、OpenSCAP は入力ファイルに基づいて新しい TestResult 要素を作成し、すべてのデータを継承します。新しく作成された TestResult で異なる唯一の点は失敗した rule-result 要素です。これらの要素に対して修正が実行されます。
scap-security-guide パッケージを使用してオフライン修正を実行するには、以下のコマンドを実行します。
~]$ oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_rht-ccp --results scan-xccdf-results.xml /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml
~]$ oscap xccdf remediate --results scan-xccdf-results.xml scan-xccdf-results.xml

6.4.6.3. OpenSCAP 修正レビュー

レビューモードでは、ユーザーがレビューのために修正手順をファイルに保存できます。この操作中に修正コンテンツは実行されません。
修正手順をシェルスクリプトの形式で生成するには、以下のコマンドを実行します。
~]$ oscap xccdf generate fix --template urn:xccdf:fix:script:sh --profile xccdf_org.ssgproject.content_profile_rht-ccp --output my-remediation-script.sh /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml