File Content Check コントロールの設定(Windows)

Windows ファイルのコンテンツをチェックするには、「File Content Check」コントロールを設定します。評価するファイルと探しているコンテンツを指定すると、そのファイルで一致するすべての行が返されます。出力ファイル内に返されるのは最初の 40kb のみです。

次のいずれかのパスタイプを使用してファイルの場所を指定できます。「Registry Key」、「File Search」、「File Path」

ヒント

「File Content Check」ユーザ定義コントロール(UDC)では、以下の点に注意してください。

- このコントロールは Cloud Agent のみでサポートされるため、エージェントスキャンデータのみを使用して評価されます。

- 「Windows File Content Check」UDC でサポートされるのは、テキストファイルのみです。バイナリファイルやその他のファイルはサポートされません。

- ファイルパスは絶対パスである必要があります。

- このコントロールでは複数行の正規表現がサポートされています。

- ポリシーレポートには、実際の値の一部として証拠のファイル名が含まれています。  スキャン結果が空である場合、レポートにはファイル名が表示されません。

- 「Windows File Content Check」UDC は、Windows Agent 4.0 以降でサポートされます。

General Information

コントロール文は、このコントロールがどのようなものであり、環境にどのように実装するのかを説明する、コントロールの名前のようなものです。またコントロールが属するカテゴリも指定する必要があります。コントロールはカテゴリによってフィルタが設定されたり検索されたりする可能性があるため、カテゴリの指定は重要です。コントロールは、コントロール文に含まれるキーワードでも検索できます。

スキャンパラメータ

スキャンパラメータは、スキャン時にコンプライアンス評価に必要なデータを収集するために使用されます。次のいずれかのパスタイプを使用してファイルの場所を指定できます。「Registry Key」、「File Search」、「File Path」ファイルの場所のオプションを選択し、設定を行います。

次のオプションの詳細については、各項を参照してください。

Use Registry Key

Use File Search

Use File Path

「Data Type」: このコントロールで返される実際値は「String List」で、これは、スキャン結果で一致した項目のリストが返されることを示しています。

「Description」: コントロールの説明は、コンプライアンスポリシーとレポートに表示されます。説明を後から変更した場合、同じパラメータのセットを使用するすべてのコントロールで説明が更新されます。

Control Technologies

コントロールは、さまざまなテクノロジに適用することが可能です。適用する各テクノロジを選択し、論理的根拠文と期待値を入力します。

時間短縮のためのヒント: 各テクノロジに対して同じ設定を入力する場合は、1 回の入力で設定することが可能です。最初に「Default Values for Control Technologies」項で選択を行い、適用する各テクノロジのチェックボックスをオンにします。選択した各テクノロジに設定が自動的にコピーされます。

次の設定を行います。

「Rationale」 - テクノロジごとに、コントロールをどのように実装すべきかを説明する文を入力します。

「Cardinality」 - コントロールのカージナリティを選択します。カージナリティオプションについてカージナリティオプションについて

以下に、使用可能なカージナリティオプションを示します。X はスキャンエンジンによって返される値を、Y はコントロールに定義されている期待値を表します。

カージナリティ

準拠する条件

contains

X は、すべての Y を含む

does not contain

X は、Y を一切含まない

intersect

X のいずれかの整数が、Y のいずれかの整数と一致する

matches

X のすべての整数が、Y のすべての整数と一致する(順不同)

is contained in

X のすべての整数が、Y に含まれる

「Operator」 - (表示のみ)演算子“ regular expression ”は、結果を正規表現で指定されたデフォルト値と比較するために使用します。

「Default Value」 - 各テクノロジの期待値を、以下の PCRE 標準を従った正規表現として入力します。この正規表現は、返された結果の合格/不合格の評価を実行するために使用されます。選択したカージナリティを使用して、スキャン結果で返された文字列リストが正規表現と比較されます。カージナリティとして“ empty ”または“ not empty ”を選択すると、「Default Value」フィールドが無効になり、値は入力されません。

注記: 実際の値には、値がどのファイルに由来するのかを識別するために、ファイル名が値の一部として含まれています。このファイル名は評価には使用されません。 

参照

コントロールに最大で 10 件の参照を追加します。参照先は内部ポリシーでも、文書でも、Web サイトでもかまいません。参照ごとに、説明や URL を入力します。URL を入力する際は、http://、https://、ftp:// のいずれかから始めます。  例えば、Qualys の Web サイトにリンクするには、「http://www.qualys.com」と入力します。追加すると、ユーザはポリシーレポートに参照を含めることができます。

Use Registry Key

「Use Registry Key」オプション

このオプションはレジストリキーの値をチェックします。

「Registry Hive」: 評価されるレジストリキーが含まれているレジストリハイブです。リストから、「HKLM」、「HKCU」、「HKCR」、「HKU」などの値を選択します。

「Registry Key」: 評価対象になるレジストリキーです(例: SOFTWARE\MICROSOFT\.NETFRAMEWORK)。

「Registry Name」: これは評価される値の名前(例: INSTALLROOT)を設定するための必須フィールドです。

「File Path」: 「File Path」はオプションであり、空の文字列にすることもできます。設定されている場合は、キーの値(例: qualys\a.txt)に対する相対パスであることが必要です。

例: 下に示す例のように、「Registry Key」の値が C:\Program Files\Qualys で、ファイル名が test\a.txt である場合、取得されるファイルにあるレジストリコンテキストに一致する絶対パス全体は C:\Program Files\Qualys\test\a.txt になります。  

「Registry Hive」: HKLM
「Registry Key」: Qualys
「Registry Name」: PreExistingPath
「File Path」: test\a.txt

レジストリエディター

「Regular Expression」: ファイル内で検索するコンテンツを指定します。正規表現により、アセットからデータが取得され、レポートの実際値の中に一致データが返されます(例: .*,  ^.OriginalRegex.*?*$)。

Use File Search

「Use File Search」オプション

File Search

検索の開始場所(ベースディレクトリ)と検索対象を指定します。ファイルやディレクトリを検索できます。

「Base Directory」: 検索はこのベースディレクトリから開始されます。検索時間(時間制限があります)を短縮するために、C:\Windows, %windir%\qualys のようにできるだけ詳細に指定します。

「Depth Levels」: ベースディレクトリより下にあるディレクトリ階層で、検索の対象とする深さのレベルの制限を指定します。指定された深さの値よりも下にあるファイルおよびディレクトリは、アクセスされません。デフォルトのディレクトリの深さは 3 です。深さが 1 の場合、ベースディレクトリにあるコンテンツのみが評価されることになります。ディレクトリの最大の深さは 10 です。

ファイル/ディレクトリの名前

「File Name Include」/「Directory Name Include」: これらのフィールドを使用して、名前を基にファイルやディレクトリを検索します。デフォルトでは、「File Name Include」と「Directory Name Include」に * が使用されていますが、これは、すべてのファイルが一致することを示しています。注記 - ファイル名を入力する際は、必ずファイル名だけを入力し、ファイルのパスは入力しないでください。ディレクトリ名を入力する際は、ディレクトリ名だけを入力し、ファイル名は入力しないでください。

「Include Name filter」: ここには、検索結果の分析に含まれるファイル名またはディレクトリ名に一致する表現を設定します。この包含フィルタが定義されていない場合、デフォルトのフィルタは“ * ”になり、これはすべてのファイル名およびサブディレクトリ名に一致することを意味します。例: フィルタ“ *.txt ”は、拡張子が“ .txt ”の名前のみを返します。

「Exclude Name filter」: ここには、検索結果の分析に含まれるファイル名またはディレクトリ名に一致しない表現を設定します。この除外フィルタが定義されていない場合、デフォルトのフィルタは空の値(“”)に設定する必要があります。空の除外フィルタは、検索結果に適用されません。包含フィルタが“ .log ”、除外フィルタが“ *system* ”である例について考えてみます。この 2 つのフィルタの組み合わせは、拡張子が“ .log ”である任意のファイルまたはサブディレクトリの中で、名前の一部に“ system ”が含まれないものの検索に使用できます。

包含フィルタおよび除外フィルタには複数の表現を使用することができます。それぞれの表現は互いに区切り文字で分離されている必要があります。区切り文字は、カンマ(,)です。例えば、包含フィルタが“ *.exe,*.dll,*.zip ”である場合、拡張子が“ .exe ”、“ .dll ”、または“ .zip ”であるすべての名前が一致します。

Search Limits

最大検索時間および返される結果の最大数を設定します。これらの制限のいずれかに達すると、検索が停止します。

「Time Limit」: 検索が停止するまでの時間を秒数で定義します。検索制限のデフォルト値は 300 秒(5 分)です。検索制限時間の最小値は 30 秒です。検索制限時間の最大値は 900 秒(15 分)です。制限のない検索時間は許可されません。

「Match Limit」: 検索が停止するまでの一致件数の最大値を定義します。検索件数のデフォルト値は、50 ファイルシステムオブジェクトです。検索件数の最小値は、1 ファイルシステムオブジェクトです。検索件数の最大値は、256 ファイルシステムオブジェクトです。

Regular Expression

「Regular Expression」: ファイル内で検索するコンテンツを指定します。正規表現の値には最大で 4,000 文字まで使用することができます。

すべての Windows プラットフォームで、CRLF(行末の \r\n)を使用して改行文字が処理されます。この正規表現は、「Perl Compatible Regular Expressions(PCRE)」形式に従う必要があります。詳細

注記: Windows ファイルのコンテンツをチェックするために正規表現を構築するとき、正確な結果を取得するために次を使用します。

- # から始まる一致テキストを返すには、^# を使用する  

- # から始まる行全体を返すには、^#.* を使用する

Use File Path

「Use File Path」オプション

File Path

「File Path」: 「File path」はホストで評価されるファイルへのパスです。ファイルに対する絶対パス(例: C:\Windows\qualys.txt , %windir%\test.txt)のみが許可されます。

「Regular Expression」: Windows ファイル内で検索するコンテンツを指定します(例: .*)。

正規表現 - 使用例

すべての Windows プラットフォームでは、行末文字の処理に CRLF(行末の \r\n)が使用されます。この正規表現は、「Perl Compatible Regular Expressions(PCRE)」形式に従う必要があります。詳細

例 1: パターンで開始される強調表示されている複数の行に一致

コンテンツの例:

<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
</security>
<security mode="Transport">
<transport clientCredentialType="None" />
<tagToIgnore/>

正規表現:

<transport clientCredentialType="None".*?>

例 2: 強調表示されている複数の行に一致

コンテンツの例:

<optionItem>
<description>Passive mode base port <port>, 0 means let system choose port.</description>
<name>Ftp.PassiveBase</name>
<clusterNode>UNSPECIFIED</clusterNode>
<value>20444</value>

<readOnly>true</readOnly>
<isDisabled>false</isDisabled>
<isSpecified>true</isSpecified>
<encrypted>false</encrypted>
<exportRules>
<exportRule>
<configuration>filedrive.conf</configuration>
<exportKey>passive-base</exportKey>
<exportPath></exportPath>
</exportRule>
</exportRules>
<isComposite>false</isComposite>
</optionItem>

正規表現:

次の正規表現は、上のコンテンツ例で強調表示されている数の行と一致するために CRLF に適合しています。

\s?\n\<name\>Ftp\.PassiveBase\</name\>\s?\n\<clusterNode\>UNSPECIFIED\</clusterNode\>\s*?\n\<value\>20444\</value>

例 3: パターンで開始または終了する行全体と一致

正規表現はパターンと一致するように、慎重に作成する必要があります。次の正規表現は、行が“ The ”で開始されている場合にのみ一致します。

正規表現: “ ^The ”

“ The ”で開始される行全体と一致するには、この正規表現を次のように変更する必要があります。

正規表現: “ ^The.* ”

例 4: 次のパターンで開始または終了するすべての行を返す

コンテンツの例:

This is an example!

間違った正規表現: “ ^This.\!$ ”

この正規表現からは一致する結果が返されません。この例の場合、正規表現では、“ This ”で開始され“ ! ”で終了する行が検索されます。ファイルは Windows で作成されているため、行末は CRLF になります。この場合、正規表現は“ \r ”で処理する場合に限って動作します。正規表現を下に示すように修正すると、期待されていた結果が返されます。

正しい正規表現: “ ^This.\!\r$ ”

例 5: 行の末尾と一致

正規表現の末尾が \s*$(EOL の前に改行文字も含めて任意の数の空白があることを示します)になっていると、期待されている結果が返ります。

コンテンツの例:

This is a file

正規表現: “ ^This.*\file\s*$ ”

例 6: XML ファイルで下に示すパターンで開始されるすべての行を返す

コンテンツの例:

<IIsConfigObject Location="/LM/SmtpSvc/1/EventManager" />
<IIsConfigObject Location="/LM/SmtpSvc/1/EventManager/EventTypes" />
<IIsConfigObject Location="/LM/SmtpSvc/1/EventManager/EventTypes/{59175850-E533-11D1-AA67-00C04FA345F6}" />
<IIsConfigObject Location="/LM/SmtpSvc/1/EventManager/EventTypes/{59175850-E533-11D1-AA67-00C04FA345F6}/Bindings" />
<IIsConfigObject Location="/LM/SmtpSvc/1/EventManager/EventTypes/{59175850-E533-11D1-AA67-00C04FA345F6}/Bindings/{609B7E3A-C918-11D1-AA5E-00C04FA35B82}" />
- <IIsConfigObject Location="/LM/SmtpSvc/1/EventManager/EventTypes/{59175850-E533-11D1-AA67-00C04FA345F6}/Bindings/{609B7E3A-C918-11D1-AA5E-00C04FA35B82}/DisplayName">

正規表現:

Windows で“ <IisConfigObject Location= ”で開始されるすべての行に一致する正規表現を作成する場合は、行末の空白、改行(New Line)文字、タブ、復帰(Carrige Return)を適切に処理する必要があります。コンテンツにある僅かな相違(余分な空白など)でも、適切に処理されないと正規表現と一致しなくなります。

正規表現: “ <IIsConfigObject\sLocation =.*?\n\s*> ”

正規表現:  “ <IIsConfigObject?\sLocation?\s=.*?\s*> ”

クイックリンク

ユーザ定義コントロール

FAQ