6


システムのセキュリティーの監査

この章では、Solaris Security Toolkit ソフトウェアを使用してシステムのセキュリティーを監査 (検証) する方法について説明します。セキュリティー強化後、確立されたセキュリティープロファイルを管理するには、この章で説明する情報と手順を使用します。すでに配備済みのシステムの場合、この章で説明する情報を参考にセキュリティーを評価してから、強化することもできます。



注 - この章とマニュアルで使用する監査という用語は、システムのセキュリティー状態を定義済みのセキュリティープロファイルと比較して検証する、Solaris Security Toolkit ソフトウェアの自動プロセスを指します。このマニュアルでこの用語を使用する場合、監査を実行した後でシステムのセキュリティーが完全に確保されていることを保証するものではありません。



この章では、以下の項目を説明します。


セキュリティーの管理

セキュリティーの管理は、定期的な確認と再検討が求められる処理です。システムのデフォルトのセキュリティー構成は、時間が経つにつれて低下する傾向にあるため、システムを安全な状態に保つには注意が必要です (セキュリティーの管理についての詳細は、システムのセキュリティーの維持を参照してください)。

ユーザーからの意見や要望に基づき、指定のセキュリティープロファイルにどの程度準拠しているかを調べることで、システムのセキュリティー状態を Solaris Security Toolkit ソフトウェアが自動的に監査できる手段を開発しました。



注 - この手段は、jass-execute -a コマンドを使用するスタンドアロンモードでのみ使用でき、JumpStart インストールの実行中は使用できません。



システムのセキュリティー状態の定期的な監査を手動または自動的に行います (cron ジョブや rc スクリプトなどを使用)。たとえば、新規インストールのセキュリティーを強化した 5 日後に、Solaris Security Toolkit ソフトウェアの監査コマンド (jass-execute -a driver-name) を実行して、システムのセキュリティーがセキュリティープロファイルで定義された状態から変更されていないかどうかを調べます。

セキュリティーを監査する頻度は、環境の重要度とセキュリティーポリシーによって異なります。ユーザーによっては 1 時間ごとに監査を行う場合や、毎日行う場合、月に 1 回だけ行う場合があります。また、1 時間ごとに mini-scan (チェック数に制限がある) を行い、1 日に 1 回フルスキャン (可能なチェックをすべて行う) を行う場合もあります。

配備済みシステムのセキュリティー状態を管理するには、重要なコンポーネントを監査します。セキュリティー状態を定期的に監査していないと、エントロピや、適正なセキュリティー状態を無意識または意図的に変更する修正により、構成が時間とともに変動することがよくあります。定期的に確認していないと、このような変更が検出されず、適切な対策を講じることができません。その結果、システムのセキュリティーが低下し、脆弱性が高まります。

定期的な監査に加え、アップグレードやパッチの適用後、あるいはその他重要なシステム構成の変更後も監査を行います。


強化前のセキュリティーの確認

配備済みシステムのセキュリティーを強化するに、そのシステムのセキュリティー状態を確認しておくと役立つことがあります。たとえば、配備済みシステムの管理を他の担当者から引き継いだ場合、システムの状態を調べれば、セキュリティー状態を把握できます。また、必要に応じて、他のシステムと同じセキュリティープロファイルに準拠させることもできます。


セキュリティー監査のカスタマイズ

監査オプションを使用すると、システムの状態を柔軟かつ広範に評価できます。強化スクリプトと同様、監査スクリプトの処理内容もカスタマイズできます。たとえば、環境変数のカスタマイズや、フレームワーク関数とヘルパー関数のカスタマイズが行えます。また、新しいチェックの追加、監査フレームワークへの機能の追加なども行えます。

ほとんどの場合、環境に応じて監査処理をカスタマイズする際のテンプレートとして、標準および製品固有の監査スクリプトが最適です。この場合、ドライバ、終了スクリプト、環境変数、およびファイルテンプレートを使用して監査スクリプトの動作をカスタマイズします。これら変更にはほとんど手間がかからず、コードを変更する必要もありません。セキュリティー強化に関する変更はすべて、監査の実行時に Solaris Security Toolkit ソフトウェアに自動的に認識されます。

場合によっては、Solaris Security Toolkit ソフトウェアに備わっていないチェックや機能の追加が必要です。このような場合、チェックや新機能を監査スクリプトに追加します (該当する終了スクリプトに変更を加えることもできます)。また、コードの変更が必要な場合もあります。コードに対する追加や変更は、バグや障害の原因にならないように特に慎重に行ってください。

ユーザーによっては、まったく新しい独自の、またはサイト固有のドライバやスクリプトの作成が必要な場合もあります。新しいドライバやスクリプトをコーディングするときは、テンプレートとサンプルを手本にします。サイト固有のドライバ、終了スクリプト、変数、および関数は、監査オプションの使用時に自動的に Solaris Security Toolkit ソフトウェアに認識されません。たとえば、サイト固有の終了スクリプト abcc-nj-install-foo.fin を含むサイト固有のドライバ abcc-nj-secure.driver を追加する場合は、サイト固有の監査スクリプト abcc-nj-install-foo.aud を作成する必要があります。同様に、監査スクリプトのみで開始する場合は、対応する終了スクリプトを作成する必要があります。

新しいドライバ、スクリプト、変数、および関数をカスタマイズまたは作成する場合は、『Solaris Security Toolkit 4.1 リファレンスマニュアル』を参照してください。

たとえば、Solaris Security Toolkit ソフトウェアによってインストールされないパッチを追加する必要があるとします。この場合、標準または製品固有のテンプレートのいずれかを拡張することも、独自に作成することもできます。独自のテンプレートを作成する場合は、パッチの追加を実行する終了スクリプトを作成してから、パッチのインストールを確認する監査スクリプトを作成します。


セキュリティー監査の準備

この章で説明する手順とガイドラインを使用するには、セキュリティープロファイルが必要です。セキュリティープロファイルの開発および実装については、第 2 章を参照してください。

Solaris Security Toolkit には、各種のセキュリティープロファイルテンプレートがドライバとして含まれています。前述のとおり、デフォルトのセキュリティープロファイルとこれらドライバによって行われた変更が、システムに適さない場合もあります。一般に、これらのドライバによって実装されるセキュリティープロファイルは、「最高水準」のセキュリティーを設定します。つまり、不要なサービスを無効にするだけでなく、デフォルトでは無効になっているオプションのセキュリティー機能を有効にします。

Solaris Security Toolkit ソフトウェアの多くのユーザーは、標準および製品固有のセキュリティープロファイルテンプレートを各自の環境に適用できます。具体的には、必要なセキュリティー状態に最も近いセキュリティープロファイルを見つけ、それをシステムの評価と強化の両方に使用します。

セキュリティープロファイルテンプレートを確認し、環境に合わせてカスタマイズするか、新しいテンプレートを作成します。セキュリティープロファイルをカスタマイズするテクニックとガイドラインについては、『Solaris Security Toolkit 4.1 リファレンスマニュアル』を参照してください。こうすることで、組織の必要性に合わせて調整したセキュリティー状態を実現できるとともに、セキュリティー評価中に返される不正エラーを最小限に抑えることもできます。たとえば、Telnet を有効にする必要があれば、セキュリティー評価時に Telnet が脆弱性として見なされないようにセキュリティープロファイルをカスタマイズできます。認証と暗号化に Telnet と Kerberos を使用するサイトでは、Telnet を使用しても脆弱性とは見なされません。


オプションの使用と監査出力の制御

この節では、監査の実行時に使用できるオプションと出力制御用のオプションについて説明します。この節では、以下の項目を説明します。

コマンド行オプション

セキュリティープロファイルと比較してシステムを監査する場合の使用例

# jass-execute -a driver [ -V [0-4]] [ -q | -o output-file ] [ -m email-address ]

Solaris Security Toolkit ソフトウェアの監査コマンドを実行するときは、表 6-1 に示す以下のオプションを使用できます。

表 6-1 監査コマンドで使用するコマンド行オプション

オプション

説明

-a

システムがセキュリティープロファイルに適合しているかどうかを判断します。

-h

使用可能なオプションの概要を説明する jass-execute ヘルプメッセージを表示します。

-m

出力を電子メールアドレスに送信します。

-o

出力をファイルに送信します。

-q

コンソールに出力を表示しません。非出力オプションとも呼ばれます。

-V

監査の詳細レベルを指定します。


jass-execute -a コマンドで使用できるオプションについての詳細は、以下の節を参照してください。

ヘルプの表示オプション

-h オプションを使用すると、使用可能なオプションの概要を説明する jass-execute ヘルプメッセージが表示されます。

-h オプションを使用すると、以下のような出力が生成されます。

コード例 6-1 -h オプションの出力例

# ./jass-execute -h
 
To apply this Toolkit to a system, using the syntax:
  jass-execute [-r root_directory -p os_version ]
  [ -q | -o output_file ] [ -m e-mail_address ]
  [ -V [3|4] ] [ -d ] driver
 
To undo a previous application of the Toolkit from a system:
  jass-execute -u [ -b | -f | -k ] [ -q | -o output_file ]
     [ -m e-mail_address ] [ -V [3|4] ]
 
To audit a system against a pre-defined profile:
  jass-execute -a driver [ -V [0-4] ] [ -q | -o output_file ]
     [ -m e-mail_address ]
 
To display the history of Toolkit applications on a system:
  jass-execute -H
 
To display the last application of the Toolkit on a system:
  jass-execute -l
 
To display this help message:
  jass-execute -h
  jass-execute -?
 
To display version information for this program:
  jass-execute -v

電子メール通知オプション

-m email-address オプションを使用すると、実行の完了時に Solaris Security Toolkit ソフトウェアによって出力が電子メールで自動的に送信されます。他のオプションを使用すると、ログに加えて電子メールレポートも生成されます。

Solaris Security Toolkit で電子メールオプションを使用して sunfire_15k_sc-config.driver を呼び出す場合は、以下のようになります。

# ./jass-execute -m root -a sunfire_15k_sc-config.driver 
[...]

出力ファイルオプション

-o output-file オプションを使用すると、jass-execute のコンソール出力が別ファイル (output-file) に転送されます。

このオプションは、JASS_REPOSITORY ディレクトリ内に保持されるログには影響しません。Solaris Security Toolkit は大量の出力を生成するので、このオプションは、低速の端末接続環境で実行する場合に特に便利です。

このオプションは、-d-u、または -a オプションとともに使用できます。

-o オプションを使用すると、以下のような出力が生成されます。

コード例 6-2 -o オプションの出力例

# ./jass-execute -o jass-output.txt -a secure.driver 
[NOTE] Executing driver, secure.driver
[NOTE] Recording output to jass-output.txt
#

非出力オプション

-q オプションを使用すると、セキュリティー強化の実行時に Solaris Security Toolkit から標準入出力 (stdio) ストリームへの出力が行われなくなります。

このオプションは、JASS_REPOSITORY ディレクトリ内に保持されるログには影響しません。-o オプションと同様、このオプションは、Solaris Security Toolkit ソフトウェアを cron ジョブを利用して実行する場合や、低速のネットワーク接続環境で実行する場合に特に有効です。

このオプションは、-d-u、または -a オプションとともに使用できます。

-q オプションを使用すると、以下のような出力が生成されます。

コード例 6-3 -q オプションの出力例

# ./jass-execute -q -a secure.driver
[NOTE] Executing driver, secure.driver

詳細オプション

-V オプションは、監査の詳細レベルを指定します。このオプションは監査でのみ使用できます。詳細レベルを使用すると、監査結果の表示方法を柔軟に制御できます。たとえば、監査対象のマシンが 100 台ある場合、出力をマシンごとに 1 行ずつ表示するように制限すれば、合格したマシンと不合格のマシンを簡単に判別できます。その後、不合格のマシンに対して、拡張出力を生成する監査を実行すれば、問題箇所を絞り込めます。

-V オプションによって 5 つの詳細レベル (0 〜 4) を制御します。レベルを上げるごとに情報が詳細になり、これらの情報を基に合格したチェックと不合格のチェックをより詳しく理解できます。表 6-2 に詳細レベルを示します。

表 6-2 監査の詳細レベル

レベル

出力

0

合格または不合格を示す単一行が表示されます。

1

スクリプトごとに、合格または不合格を示す単一行が表示されます。スクリプト行の最後に、合計スコアを示す単一行が表示されます。

2

スクリプトごとに、すべてのチェック結果が表示されます。

3

バナーとヘッダーメッセージを示す全出力が複数行で表示されます。

4

複数行 (レベル 3 で表示される全データ) に加え、logDebug ログ関数によって生成された項目がすべて表示されます。これはデバッグ用のレベルです。




注 - jass-execute -V コマンドのデフォルトの詳細レベルは 3 です。



詳細レベルについての詳細は、『Solaris Security Toolkit 4.1 リファレンスマニュアル』を参照してください。

バナーおよびメッセージ出力

Solaris Security Toolkit の監査オプションは、バナーとメッセージをレポートまたは無視するように構成できます。JASS_LOG_BANNER 変数は、詳細レベル 0 〜 2 では使用できません。これらの出力オプションは、詳細レベル 3 および 4 に適用されます。たとえば、出力から合格メッセージ (JASS_LOG_SUCCESS 変数) を削除すれば、不合格メッセージ (JASS_LOG_FAILURE 変数) のみをレポートして、それだけを処理できます。

表 6-3 にログ変数によって制御できるバナーとメッセージを示します (ログ変数についての詳細は、『Solaris Security Toolkit 4.1 リファレンスマニュアル』を参照してください)。ログ変数に 0 が設定されていると、そのメッセージの種類では出力が生成されません。逆に、ログ変数が 1 に設定されている場合は、メッセージが表示されます。これらの各変数は、デフォルトでは出力を表示します。表 6-3 にログ変数を示します。

表 6-3 監査出力へのバナーとメッセージの表示

ログ変数

ログ接頭辞

説明

JASS_LOG_BANNER

すべてのバナー出力

このパラメタは、バナーメッセージの表示を制御します。これらのメッセージは、通常は等号 ("=") またはダッシュ ("-") 文字のいずれかで構成される区切り文字で囲まれています。

JASS_LOG_ERROR

[ERR]

このパラメタは、エラーメッセージの表示を制御します。0 に設定されている場合、エラーメッセージは生成されません。

JASS_LOG_FAILURE

[FAIL]

このパラメタは、失敗メッセージの表示を制御します。0 に設定されている場合、失敗メッセージは生成されません。

JASS_LOG_NOTICE

[NOTE]

このパラメタは、通知メッセージの表示を制御します。0 に設定されている場合、通知メッセージは生成されません。

JASS_LOG_SUCCESS

[PASS]

このパラメタは、成功または合格状態メッセージの表示を制御します。0 に設定されている場合、成功メッセージは生成されません。

JASS_LOG_WARNING

[WARN]

このパラメタは、警告メッセージの表示を制御します。0 に設定されている場合、警告メッセージは生成されません。


これらのオプションは、特定のメッセージのみ表示する必要がある場合に便利です。これらのオプションを設定すれば、出力を最小限に抑えながら、重要な箇所に焦点を絞ることができます。たとえば、JASS_LOG_FAILURE (デフォルト設定の 1 のまま) を除くすべてのログ変数に 0 を設定すると、監査結果として logFailure 関数によって生成された失敗のみレポートされます。

コード例 6-4 監査の失敗のみをレポートする場合の出力例

# JASS_LOG_FAILURE=1
# export JASS_LOG_FAILURE
[setting of other parameters to 0 omitted]
# ./jass-execute -a secure.driver -V 2
update-at-deny        [FAIL] User test is not listed in 
   /etc/cron.d/at.deny.
update-at-deny        [FAIL] Audit Check Total : 1 Error(s)
update-inetd-conf     [FAIL] Service ftp is enabled in 
   /etc/inet/inetd.conf.
update-inetd-conf     [FAIL] Service telnet is enabled in 
   /etc/inet/inetd.conf.
update-inetd-conf     [FAIL] Service rstatd is enabled in 
   /etc/inet/inetd.conf.
update-inetd-conf     [FAIL] Audit Check Total : 3 Error(s)

ホスト名、スクリプト名、タイムスタンプの出力

Solaris Security Toolkit の監査オプションは、詳細レベル 0 〜 2 でホスト名、スクリプト名、およびタイムスタンプ情報も出力するように構成できます。たとえば、監査対象のマシンが多数ある場合、ホスト名、スクリプト名、またはタイムスタンプで出力をソートできます。表 6-4 に変数を示します。

表 6-4 ホスト名、スクリプト名、およびタイムスタンプ監査出力の表示

変数名

変数の説明

JASS_DISPLAY_HOSTNAME

このパラメタを 1 に設定すると、各ログ項目の先頭にシステムのホスト名が付加されます。ホスト名は JASS_HOSTNAME パラメタに従います。このパラメタにはデフォルトでは値が設定されていないため、ホスト名は表示されません。

JASS_DISPLAY_SCRIPTNAME

このパラメタはデフォルトでは 1 に設定されているため、各ログ項目の先頭に現在実行されている監査スクリプトの名前が付加されます。このパラメタに 1 以外の値を設定すると、監査スクリプトの名前が表示されなくなります。

JASS_DISPLAY_TIMESTAMP

このパラメタを 1 に設定すると、各ログ項目の先頭に監査実行時のタイムスタンプが付加されます。タイムスタンプは JASS_TIMESTAMP パラメタに従います。このパラメタにはデフォルトでは値が設定されていないため、タイムスタンプは表示されません。


ホスト、スクリプト、およびタイムスタンプ情報を付加するように Solaris Security Toolkit ソフトウェアを構成することで、単一のシステムまたは複数のシステムからの多くの実行結果を連結し、キーとなるデータを基にそれらをソートできます。これらの情報から、複数のシステムにかかわる問題や、配備プロセスの問題を探すことができます。たとえば、情報をこのように利用すれば、管理者は、特定のプロセスによって構築されたシステムで常に同じチェックが失敗するかどうかを調べることができます。

たとえば、JASS_DISPLAY_TIMESTAMP パラメタを 1 に設定し、JASS_DISPLAY_SCRIPTNAME の値を 0 に設定すると、以下のような出力が生成されます。

コード例 6-5 ログ項目の監査の出力例

# JASS_DISPLAY_SCRIPTNAME=0
# JASS_DISPLAY_TIMESTAMP=1
# export JASS_DISPLAY_SCRIPTNAME JASS_DISPLAY_TIMESTAMP
# ./jass-execute -a secure.driver -V 2
20030101233525 [FAIL] User test is not listed in 
   /etc/cron.d/at.deny.
20030101233525 [FAIL] Audit Check Total : 1 Error(s)
20030101233525 [FAIL] Service ftp is enabled in 
   /etc/inet/inetd.conf.
20030101233525 [FAIL] Service telnet is enabled in 
   /etc/inet/inetd.conf.
20030101233525 [FAIL] Service rstatd is enabled in 
   /etc/inet/inetd.conf.
20030101233525 [FAIL] Audit Check Total : 3 Error(s)


セキュリティー監査の実行

システムの定期的なセキュリティー評価は、実装されたセキュリティープロファイルにセキュリティーがどの程度準拠しているかを示すベンチマークになります。セキュリティー評価を実行する最も一般的な例として、新規インストールのセキュリティー強化後に行うセキュリティー保守があります。セキュリティー評価オプションは、システムのセキュリティー強化に使用したものと同じ強化ドライバを実行すれば済むように設計されていましたが、現在では、セキュリティー強化中に実装されたセキュリティープロファイルと比較することで現在の状態をチェックする -a オプションを使用します。これによって複雑さが軽減するとともに、柔軟性が得られます。たとえば、セキュリティープロファイルをアップデートすると、以降のセキュリティー評価は、アップデート後のセキュリティープロファイルを使用して行われます。

次に、すでに配備みのシステムのセキュリティー管理を担当する場合を考えてみます。システムのセキュリティーを強化する前に、セキュリティー評価を実行するとします。このような場合、独自のセキュリティープロファイルを定義した上で、Solaris Security Toolkit のセキュリティープロファイルテンプレートをカスタマイズするか、セキュリティープロファイルテンプレートをそのまま使用します。


procedure icon  セキュリティー監査を実行する

監査を実行する前に、セキュリティープロファイルを定義または選択する必要があります。詳細については、セキュリティー監査の準備を参照してください。



caution icon

注意 - まだセキュリティーが強化されていない配備済みシステムにセキュリティー評価を実行する場合は、最初にマシンをバックアップして再起動し、マシンの構成が既知の作業状態にあり、整合性が保たれていることを確認してください。この再起動時に検出されたエラーや警告を修正またはメモしてから、セキュリティー評価を実行します。



1. 使用するセキュリティープロファイル (強化ドライバ) を選択します。

たとえば、secure.driver を使用します。

たとえば、secure.driver または abccorp-secure.driver を使用します。

使用可能なドライバの最新の詳細リストを入手するには、以下の Web サイトから Solaris Security Toolkit ソフトウェアの最新バージョンをダウンロードしてください。

http://www.sun.com/security/jass

標準および製品固有のドライバについては、『Solaris Security Toolkit 4.1 リファレンスマニュアル』を参照してください。ドライバの最新のリストについては、Drivers ディレクトリを参照してください。

2. 使用するコマンド行オプションと出力の制御方法を決定します。

オプションの使用と監査出力の制御を参照してください。

3. jass-execute -a コマンド、セキュリティープロファイル名、および使用するオプションを入力します。

以下は、sunfire_15k_sc-secure.driver を使用した監査の実行例です。

コード例 6-6 監査の出力例

# ./jass-execute -a sunfire_15k_sc-secure.driver
[NOTE] Executing driver, sunfire_15k_sc-secure.driver
 
[...]
 
================================================================
sunfire_15k_sc-secure.driver: Audit script: enable-rfc1948.aud
================================================================
 
#---------------------------------------------------------------
# RFC 1948 Sequence Number Generation
# 
# Rationale for Audit:
# 
# The purpose of this script is to audit that the system is
# configured and is in fact using RFC 1948 for its TCP sequence
# number generation algorithm (unique-per-connection ID). This is
# configured by setting the 'TCP_STRONG_ISS' parameter to '2' in
# the /etc/default/inetinit file.
#
# Determination of Compliance:
#
[...]
#---------------------------------------------------------------
 
[PASS] TCP_STRONG_ISS is set to '2' in /etc/default/inetinit.
[PASS] System is running with tcp_strong_iss=2.
 
# The following is the vulnerability total for this audit script.
 
[PASS] Audit Check Total : 0 Error(s)
 
================================================================
 
# The following is the vulnerability total for this driver profile.
 
[PASS] Driver Total : 0 Error(s)
 
================================================================
sunfire_15k_sc-secure.driver: Driver finished.
================================================================
 
[PASS] Grand Total : 0 Error(s)

監査が開始されると、Solaris Security Toolkit ソフトウェアは JASS_HOME_DIR/Audit ディレクトリからファイルにアクセスします。JASS_HOME_DIR/AuditJASS_HOME_DIR/Finish の両ディレクトリ内のファイルは、同じベースファイル名を共有していますが、ファイル名の接尾辞が異なります。driver.run スクリプトは、終了スクリプトの接尾辞を .fin から .aud に変更することで、JASS_SCRIPTS 変数によって定義された終了スクリプトを監査スクリプトに自動的に変換します。

監査が開始され、Solaris Security Toolkit ソフトウェアの状態が初期化されます。実行中にアクセスされる各ドライバによって、そのファイルテンプレートと監査スクリプトの状態がすべて評価されます。各チェックの結果、脆弱性を示すゼロまたはゼロ以外の値によって成功または失敗が示されます。通常、失敗は 1 で表されます。実行された各スクリプトは、スクリプトに含まれる各チェックの脆弱性値の合計に基づいて、セキュリティースコアの合計を算出します。また、ドライバによる評価が完了すると、各ドライバの脆弱性値の合計が表示されます。全スコアの総合計が実行終了時に表示されます。

セキュリティー評価オプションは、評価開始時にシステムの状態を全体的に確認する手段です。Solaris Security Toolkit ソフトウェアは、構成ファイルを調べることにより、保存されているシステム状態をチェックするとともに、プロセステーブル情報やデバイスドライバ情報などを調べることにより、システムの実行状態をチェックします。Solaris Security Toolkit ソフトウェアは、各ファイルまたはサービスの有無をチェックし、サービスに関連付けられたソフトウェアがインストールされているか、構成されているか、有効になっているか、および実行されているかどうかをチェックします。このようにして、現在のシステム状態に関する正確なスナップショットが得られます。