「SSHサーバ設定のパスワードなしログイン許可/不許可」の確認サンプルで、SCAPの構成要素XCCDFの構造を理解するOpenSCAPで脆弱性対策はどう変わる?(6)(2/2 ページ)

» 2019年11月19日 05時00分 公開
[面和毅OSSセキュリティ技術の会]
前のページへ 1|2       

その他のXML情報

 XCCDFはその他のXML情報を含むことができます。

metadata(titleやcreator、publisherなど)

 metadataとして<xccdf:metadata>〜</xccdf:metadata>で囲んで、titleやcreator、publisherなどの情報を含めることができます(図7)。

  <ns0:metadata>
    <dc:publisher>JSOSS-SIG for Testing XCCDF</dc:publisher>
    <dc:creator>JSOSS-SIG</dc:creator>
    <dc:contributor>Kazuki Omo</dc:contributor>
  </ns0:metadata>
図7 metadata

platform(CPE名)

 <xccdf:platform>で指定し、スキャン対象のプラットフォームデータとしてCPE(Common Platform Enumeration:共通プラットフォーム一覧)名を与えています。

 example-xccdf.xml(図1)では、下記のようにCentOS 7のCPE情報を与えています。

<ns0:platform idref="cpe:/o:centos:centos:7" />

status(状態)

 <xccdf:status>〜</xccdf:status>で囲み、XCCDFドキュメントのステータス(状態)を記述するのに使用します。

 example-xccdf.xml(図1)では下記のように、「draft」としてあります。

<ns0:status date="2019-10-14">draft</ns0:status>

reference(参考情報)

 <xccdf:reference>〜</xccdf:reference>で囲み、何らかの参考情報を加えたい際に使用します。example-xccdf.xml(図1)ではSSHDで「Empty Password="yes"」を指定した際に発生する問題についてのレファレンスを下記のようにして加えてあります。

<ns0:reference href="https://www.niap-ccevs.org/Profile/PP.cfm">FIA_AFL.1</ns0:reference>

各要素(item)についての説明

Benchmark

 <xccdf:Benchmark>を用いて、ベンチマークで使用されるチェックアイテムを定義します。

 Benchmarkで使用できる子要素の代表的なものを表1にまとめています。

表1
Property Type 詳細
Status(element) 特殊 1〜n ベンチマークのステータス(必須)と日付(オプション)。StatusはBenchmarkに必須
dc-status(element) 特殊 0〜n ダブリンコアフォーマット(https://www.dublincore.org/specifications/dublin-core/dces/)によるステータスの記述
title(element) 文字列 0〜n ベンチマークのタイトル。ベンチマークはタイトルを持たなくてはならない
description(element) HTML 0〜n ベンチマークの詳細説明。ベンチマークはdescriptionを持たなくてはならない
notice(element) HTML 0〜n ライセンスやコピーライトなどの法的な注意
front-matter(element) HTML 0〜n ベンチマークドキュメントの冒頭の紹介事項。ドキュメント生成時のみ使用される
rear-matter(element) HTML 0〜n ベンチマークドキュメントの結末の紹介事項。ドキュメント生成時のみ使用される
reference(element) 特殊 0〜n ベンチマークドキュメントのサポート参照
plain-text(element) 文字列 0〜n ユニークな識別子込みで定義されるテキストブロック
cpe2:platform(element) 特殊 0〜1 CPE2で記述された検査対象プラットフォーム
platform(element) 文字列 0〜n このベンチマークを適用可能なプラットフォーム
version(element) 文字列 1 ベンチマークのバージョン
metadata(element) 特殊 0〜n ベンチマークのXMLメタデータ(authorship、publisher、supportなど)
model(element) URI 0〜n このベンチマークのスコアを計算するときに使用される推奨スコアリングモデルのURI
Profile(element) 特殊 0〜n Profileの項参照
Value(element) 特殊 0〜n Valueの項参照
Group(element) 特殊 0〜n Groupの項参照
Rule(element) 特殊 0〜n Ruleの項参照
TestResult(element) 特殊 0〜n TestResultの項参照
signature(element) 特殊 0〜n 著者のデジタル署名。ベンチマークの整合性のために使用される
id(attribute) 特殊 1 ベンチマークのユニークなID
style(attribute) 文字列 0〜1 ベンチマークのスタイル。「SCAP 1.2」などが入る
style-href(attribute) URI 0〜1 ベンチマークのスタイル(SCAP 1.2など)のURI
xml:lang(attribute) 特殊 0〜1 言語

Group

 <xccdf:Group>を用いて、Groupを定義します。

 Groupで使用できる子要素(Rule、Valueと共通)で代表的なものを表2にまとめています。

表2
Property Type 詳細
Status(element) 特殊 0〜n itemのステータス(必須)と日付(オプション)。Statusはbenchmarkに必須
dc-status(element) 特殊 0〜n ダブリンコアフォーマットによるステータスの記述
version(element) 文字列 0〜1 itemのバージョン
title(element) 文字列 0〜n itemのタイトル。itemはタイトルを持たなくてはならない
description(element) HTML 0〜n itemの詳細説明
warning(element) HTML 0〜n ベンチマークユーザーに重要な注意情報を伝えることを目的としたアイテムに関するメモまたは警告(例えば「このルールに従うと、システムは全てのIPパケットを拒否します」)
quesion(element) 文字列 0〜n ユーザーに提示する疑問文
reference(element) 特殊 0〜n ユーザーがそのitemについてより理解するための参照文
metadata(element) 特殊 0〜n itemのXMLメタデータ(source、特殊な情報など)
hidden(attribute) ブール値 0〜1 Draftのベンチマークなどで、作成途中で隠したい(実行しない)もの
prohibitChanges(attribute) ブール値 0〜1 エンドユーザーが変更できないようにするitemに対して使用する
xml:lang(attribute) 特殊 0〜1 itemの言語
(注)itemはGroup、Rule、Value

 GroupとRule共通で使用できる子要素のうち、代表的なものを表3にまとめています。

表3
Property Type 詳細
rational(element) HTML 0〜n このGroupやRuleの理由(ターゲットプラットフォームのセキュリティにとって重要である理由)を説明するテキスト
platform(element) 特殊 0〜n GroupやRuleを適用するプラットフォーム
requires(element) 特殊 0〜n このGroupやRuleを評価する際に選択されていなければならない別のGroup/RuleのID
conflicts(element) id 0〜n このGroupやRuleを評価する際に選択されていてはいけない別のGroup/RuleのID
selected(attribute) ブール値 0〜1 1(=True)になっていた場合、GroupやRuleはベンチマーク上で選択されていることになる
weight(attribute) 10進数 0〜1 スコアを計算するためのこのGroupやRuleの相対的なスコアリングの重み。正の実数(0.0以上、最大3桁、デフォルトは1.0)で表される
(注)itemはGroup、Rule、Value

 その他にGroupで使用できる子要素としては、Group(子Group)、Rule、Valueなどがあります。

Rule

 Ruleで使用できる子要素(Group、Valueと共通)で代表的なものは表2/表3を参照してください。

 さらにRuleを構成する代表的なものとして、表4のような複数の子要素があります。

表4
Property Type 詳細
ident(element) 文字列 0〜n このRuleのグローバルに意味のある識別子
impact-metric(element) 文字列 0〜1 CVSS 2.0で記述される、セキュリティ上のインパクトのポテンシャル
profile-note(element) HTML 0〜n 1つ以上のプロファイルに関連するRuleの特別な説明
fixtext(element) 特殊 0〜n このRuleにターゲットシステムを準拠させる方法の説明
fix(element) 特殊 0〜n コマンド文字列、スクリプト、または他のシステム変更ステートメント
check(element) 特殊 (1〜n check インスタンス) XOR (1 complex-check インスタンス) このRuleへの準拠をテストするためのシステムチェックの定義または参照
complex-check(element) 特殊 (1〜n check インスタンス) XOR (1 complex-check インスタンス) 演算子(and、or、not)および個々のチェックで構成されるブール式
signature(element) 特殊 0〜1 Ruleの整合性を検証するための作成者の電子署名
role(attribute) 文字列 0〜1 スコアリング/レポーティングする際のRuleのRole。「full」「unscored」「unchecked」がある
id(attribute) 特殊 1 ユニークなID。他の要素がこの要素を参照する際に用いられる
severity(attribute) 文字列 0〜1 Severity(重要性)レベル。「unknown」「info」「low」「medium」「high」がある

 幾つかの代表的なものを以下で説明します。

・ident

 <xccfg:ident> 要素でident(識別子)を定義します。定義できるIDは表5にまとめています。

表5
URI 説明
http://cce.mitre.org CCE(Common Configuration Enumeration)中の番号(例:CCE-80151-4はtmpをマウントする際にnosuidオプションが付加されている)
http://cpe.mitre.org CPE 2.0/2.3
http://cve.mitre.org CVE-ID
http://www.cert.org Cert Advisory ID(例:CA-2004-02は大量に電子メールを配信するワーム)
http://www.kb.cert.org Cert KB データベースID
http://www.us-cert.gov/cas/techalerts US-Cert Tech-Alert ID

 例えば「U.S. Government Commercial Cloud Services(C2S)」準拠の設定ということで参照されている「/tmpをマウントする際にはnosuidオプションを使用していること」というチェック項目に関しては、図8のように検索の際に「CCE-80151-4」(CCEで「/tmpをマウントする際にはnosuidオプションを使用する」の番号として定義されている)をidentとして使用しています(図8)。

図8

・check/complex-check

 <xccdf:check>や<xccdf:complex-check>で定義されます。check内で使用できる要素の代表的なものを表6に示します。

表6
Property Type 詳細
check-import(element) 特殊 0〜n ターゲットシステムのテスト中にチェックシステムから取得する値を識別する
check-export(element) 特殊 0〜n <xccdf:Value>要素から、チェックシステムで使用する外部名またはIDへのマッピングになる
check-content-ref(element) 特殊 0〜n <xccdf:check>要素の@system属性で指定された分離チェックのコードを指す。「@href」属性はコードの場所を識別し、「OPTIONAL @name」属性はコードの特定の部分、要素、またはコンポーネントを参照する
check-content(element) 特殊 0〜1 <xccdf:check>要素の「@system」属性で指定された言語またはシステムで、チェックのコードを保持する
system(attribute) URI 1 チェックするシステムのURI
negate(attribute) ブール値 0〜1 これがTrueにセットされている場合には、チェックの最終的な結果は否定される(デフォルトではFalse)
id(attribute) 識別子 0〜1 この要素でのユニークなID
selector(attribute) 文字列 0〜1 プロファイルから参照される文字列
xml:base(attribute) 特殊 0〜1 チェックに関連する全てのURI

 complex-checkはcheckの評価をANDやORで組み合わせて評価できるものです。一般的な「Scap-Security-Guide」に含まれているXCCDFファイルでは使用されていないため、ここでは<xccdf:check>だけを見てみましょう。

 ここで、example-xccdf.xml(図1)でのcheckを見てみます。<ns0:check>〜</ns0:check>で囲まれている箇所を図9として抜き出してあります。

図9

 最初の「system=」の箇所に、チェックするシステムのURIが記載されています。通常OVAL(Open Vulnerability and Assessment Language:セキュリティ検査言語)を使用する際には、こちらの「http://oval.mitre.org/XMLSchema/oval-definitions-5」を選択します。

 次に「check-export」を用いて、Value(「sshd_required」変数)を指定します。sshd_required変数には設定した値で、ssg-rhel7-oval.xmlでSSHの設定を参照する際に確認されます(設定していないとエラーとなり評価ができない)。値は、それぞれ下記を意味します。

  • 0(特にOpenSSHパッケージインストールの有無を評価しない)
  • 1(OpenSSHパッケージが必要とされていない)
  • 2(OpenSSHパッケージが必要とされている)

 ここでは0を設定し、特にOpenSSHパッケージの有無に関しては気にしないことにしています。

 次に、「check-content-ref」を用いて外部のXMLファイル(OVALファイル)を参照します。ここでは、ssg-rhel7-oval.xmlを指定して、そのファイル内の「ssg-sshd_disable_empty_passwords:def:1」を評価することになります。

 ssg-rhel7-oval.xml内でのssg-sshd_disable_empty_passwords:def:1の定義を見てみると、「oval:ssg-test_sshd_permitemptypasswords_no:tst:1」テストを参照しており、「oval:ssg-test_sshd_permitemptypasswords_no:tst:1」テストを見てみると「oval:ssg-obj_sshd_permitemptypasswords_no:obj:1」オブジェクトを見て、/etc/ssh/sshd_configの「PermitEmptyPasswords」設定を正規表現で評価していることが分かります(図10)。

図10

 この戻り値(TrueまたはFalse)がoscapコマンド実行中に表示されます。

実行結果

 oscapコマンドを用いてexample-xccdf.xml(図1)の「Profile:Test_Profile」をスキャンした結果を図11に示します。

図11

 /etc/ssh/sshd_configファイルで「PermitEmptyPasswords yes」を指定してからパスワードを許可していると、下記コマンドで「fail」が表示されます。

"oscap xccdf eval --profile test_profile --report test-1.html example-xccdf.xml"

 結果は図12のようになります。

図12

次回は、RHEL 8の新バージョンOpenSCAPについて

 今回の記事までで、SCAPで必要なコンポーネントの説明は終わりました。次回は、RHEL 8の登場で、さらに新しくなったバージョンのOpenSCAPを説明します。

筆者紹介

面和毅

略歴:OSSのセキュリティ専門家として20年近くの経験があり、主にOS系のセキュリティに関しての執筆や講演を行う。大手ベンダーや外資系、ユーザー企業などでさまざまな立場を経験。2015年からサイオステクノロジーのOSS/セキュリティエバンジェリストとして活躍し、同社でSIOSセキュリティブログRed Hatブログを連載中。

CISSP:#366942

近著:『Linuxセキュリティ標準教科書』(LPI-Japan)」


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。