この章では、自動セキュリティー拡張ツール (ASET) を使用して、システムファイルおよびディレクトリへのアクセスを監視または制限する方法について説明します。
この章で説明する手順は次のとおりです。
ASET よりも広汎なツールとしては、Sun Security Toolkit を使用してください。Sun Security Toolkit は、Solaris システムの強化と最小化のためのフレームワークを提供します。このキットには、プロファイリングツール、レポートツール、取り消し機能などが含まれます。このツールキットは無料であり、Sun の Web サイト http://www.sun.com/software/security/jass からダウンロードできます。この Web サイトでは、関連するオンラインドキュメントもリンクされています。
このツールキットの詳細は、『Securing Systems with the Solaris Security Toolkit』(Alex Noordergraaf、Glenn Brunette 共著、ISBN 0-13-141071-7、2003 年 6 月発行) を参照してください。このドキュメントは、Sun Microsystems Press によって発行されている Sun BluePrints Series の 1 つです。
Solaris オペレーティングシステム には、ASET が組み込まれています。ASET を使用すると、ほかの場合には手動で実行する作業が自動的に実行され、システムのセキュリティーを監視して制御できます。
ASET セキュリティーパッケージには、システムのセキュリティーを制御して監視できるように、自動管理ツールが組み込まれています。ASET を実行するセキュリティーレベルには、低レベル、中レベル、または高レベルを指定できます。上のレベルほど、ASET のファイル制御機能が増え、ファイルアクセスは減少し、システムセキュリティーが厳しくなります。
ASET には 7 つのタスクがあり、各タスクがシステムファイルに対して特定の検査と調整を行います。ASET のタスクはファイルのアクセス権を厳しくし、重要なシステムファイルの内容にセキュリティー上の弱点がないかどうかを確認して、重要な領域を監視します。ASET では、ゲートウェイシステムとして機能するシステムにファイアウォールシステムの基本要件を適用し、ネットワークも保護できます。詳細は、「ファイアウォールの設定」を参照してください。
ASET は、構成用のマスターファイルを使用します。マスターファイルやレポートなどの ASET ファイルは、/usr/aset ディレクトリにあります。これらのファイルは、サイトの特定の要件に合わせて変更できます。
各タスクは、検出されたセキュリティー上の弱点と、タスクがシステムファイルに対し て行った変更を示すレポートを生成します。最上位のセキュリティーレベルで実行すると、ASET はシステムセキュリティー上のすべての弱点を変更しようとします。潜在的なセキュリティー問題を解決できない場合、ASET は問題の存在を報告します。
ASET セッションを起動するには、/usr/aset/aset コマンドを対話的に使用します。ASET を定期的に実行する場合は、crontab ファイルにエントリを指定します。
ASET のタスクはディスクをかなり使用するため、通常の動作の妨げになることがあります。システム性能への影響を最小限度に抑えるために、24 時間ごとまたは 48 時間ごとに深夜など、システムの稼働レベルがもっとも低いときに ASET を実行するようにスケジュールしてください。
ASET は、 低、中、高の 3 つのセキュリティーレベルのいずれかで動作するように設定できます。上のレベルほど、ASET のファイル制御機能が増え、ファイルアクセスが減少し、システムのセキュリティーが厳しくなります。これらの機能には、ユーザーによるファイルアクセスを制限せずにシステムセキュリティーを監視する最低レベルから、システムが完全にセキュリティー保護される最高レベルまで、アクセス権が段階的に厳しくなります。
次の表で、この 3 つのセキュリティーレベルの概要について説明します。
管理者がセキュリティーレベルを下げない限り、ASET によってファイルのアクセス権が変更されてファイルの安全性が低くなるということはありません。管理者が意図的にシステムを ASET 実行前の設定に戻すという場合もあります。
この節では、ASET のタスクについて説明します。管理者は、ASET の各タスクを理解しておく必要があります。ASET の目的と処理、ASET が影響を与えるシステムコンポーネントなどを理解することで、レポート内容を判断し、効果的に活用できます。
ASET のレポートファイルには、各 ASET タスクで検出された問題をできるだけ詳細に記述するメッセージが含まれています。これらのメッセージによって、問題を診断して解決できます。ただし、ASET を活用するには、システム管理とシステム構成要素を全般的に理解していることが前提となります。システム管理者になったばかりのユーザーは、ほかの Solaris システム管理マニュアルを参照することをお勧めします。また、関連するマニュアルページを参照して、ASET 管理の概要を把握するとよいでしょう。
taskstat ユーティリティーは、完了したタスクとまだ実行中のタスクを識別します。完了したタスクごとにレポートファイルが生成されます。taskstat ユーティリティーの詳細は、taskstat(1M) を参照してください。
このタスクでは、システムファイルのアクセス権を指定したセキュリティーレベルに設定します。このタスクは、システムのインストール時に実行されます。以前に設定したレベルをあとから変更する場合は、このタスクを再度実行してください。低セキュリティーレベルでは、アクセス権は開放型の情報共有環境に適した値に設定されています。中セキュリティーレベルでは、アクセス権はほとんどの環境に十分なセキュリティーが適用される程度に厳しくなります。高セキュリティーレベルでは、アクセス権がもっとも厳しく制限されます。
このタスクによってシステムファイルのアクセス権やパラメータの設定に加えられた変更は、tune.rpt ファイル内にレポートされます。ASET がアクセス権を設定するときに調整するファイルの例は、「調整ファイルの例」を参照してください。
このタスクでは、システムファイルが検査され、各ファイルと、マスターファイル内のそれらの記述とが比較されます。マスターファイルは、ASET がこのタスクを実行するときに初めて作成されます。マスターファイルには、指定したセキュリティーレベルの checklist によって適用されるシステムファイル設定が含まれています。
ファイルが確認されるディレクトリのリストは、セキュリティーレベルごとに定義されます。デフォルトのリストを使用するか、レベルごとに異なるディレクトリを指定してリストを変更できます。
ファイルごとに次の条件が確認されます。
所有者とグループ
アクセス権ビット
サイズとチェックサム
リンク数
最終変更時刻
ASET によって矛盾が見つかると、cklist.rpt ファイルに記録されます。このファイルには、システムファイルのサイズ、アクセス権、およびチェックサムの値について、マスターファイルと比較した結果が入っています。
このタスクでは、ユーザーアカウントとグループの整合性と完全性が確認されます。このタスクは、passwd ファイルと group ファイル内の定義を使用します。ローカルパスワードファイルと、NIS または NIS+ パスワードファイルが検査されます。NIS+ のパスワードファイルの問題はレポートされますが、解決はされません。
このタスクでは、次の違反が検査されます。
重複名または重複 ID
正確でない形式のエントリ
パスワードが付いていないアカウント
無効なログインディレクトリ
アカウント nobody
空のグループパスワード
NIS サーバーまたは NIS+ サーバー上の /etc/passwd ファイル内のプラス記号 (+)
矛盾は、usrgrp.rpt ファイル内にレポートされます。
このタスクでは、ASET はあらゆるシステムテーブルを検査します。テーブルのほとんどは /etc ディレクトリに入っています。
次のシステム構成ファイルが検査されます。
/etc/default/login
/etc/hosts.equiv
/etc/inetd.conf
/etc/aliases
/var/adm/utmpx
/.rhosts
/etc/vfstab
/etc/dfs/dfstab
/etc/ftpd/ftpusers
ASET は、これらのファイルに関して各種の検査と変更を実行し、問題を sysconf.rpt ファイル内にレポートします。
このタスクでは、スーパーユーザー用とその他のユーザー用の PATH 環境変数と UMASK 環境変数がどのように設定されているかを検査します。この検査のために、/.profile、/.login、および /.cshrc ファイルがチェックされます。
環境のセキュリティー状況を検査した結果は、env.rpt ファイル内にレポートされます。
このタスクでは、eeprom セキュリティーパラメータの値が検査され、適切なセキュリティーレベルに設定されていることを確認します。eeprom セキュリティーパラメータは、none、command、または full に設定できます。
ASET はこの設定を変更しませんが、推奨値を eeprom.rpt ファイル内にレポートします。
このタスクでは、システムをネットワークリレーとして安全に使用できることが保証されます。「ファイアウォールシステム」で説明しているように、このタスクでは、ファイアウォール専用システムが設定され、内部ネットワークが外部の公共ネットワークから保護されます。このファイアウォールシステムでは、ネットワークが 2 つに分割されます。このとき、分割された各ネットワークは、互いに信頼されないネットワークとして通信します。ファイアウォールの設定タスクによって、インターネットプロトコル (IP) パケットを転送できなくなります。ファイアウォールによって、ルーティング情報も外部ネットワークから見えないように隠されます。
ファイアウォールのタスクはすべてのセキュリティーレベルで実行されますが、ファイアウォールとしての本来の機能は最上位レベルでのみ動作します。ASET を高セキュリティーレベルで実行するときでも、システムにはファイアウォール保護が不要であることがわかった場合は、asetenv ファイルを編集してファイアウォールタスクをはずすことができます。
行われた変更はすべて firewall.rpt ファイル内にレポートされます。
ASET を対話形式またはバックグラウンドで実行すると、実行ログが生成されます。デフォルトでは、ASET はログファイルを標準出力に生成します。実行ログは、ASET が指定された時刻に実行されたことを確認するもので、実行エラーメッセージも含まれています。aset -n コマンドを使用すると、ログを指定したユーザーに電子メールで配信できます。ASET オプションの一覧は、aset(1M) のマニュアルページを参照してください。
ASET running at security level low Machine=example; Current time = 0325_08:00 aset: Using /usr/aset as working directory Executing task list... firewall env sysconfig usrgrp tune cklist eeprom All tasks executed. Some background tasks may still be running. Run /usr/aset/util/taskstat to check their status: $/usr/aset/util/taskstat aset_dir Where aset_dir is ASET's operating directory, currently=/usr/aset When the tasks complete, the reports can be found in: /usr/aset/reports/latest/*.rpt You can view them by: more /usr/aset/reports/latest/*.rpt |
実行ログはまず、ASET が実行されたシステムと時刻を示します。次に、開始したタスクの一覧を表示します。
「ASET のタスク一覧」で説明しているように、ASET はこれらのタスクごとにバックグラウンド処理を呼び出します。タスクは開始されると実行ログに一覧表示されます。この一覧は、タスクの完了を示しているわけではありません。バックグラウンドタスクの状態を確認するには、taskstat コマンドを使用します。
ASET タスクから生成されたすべてのレポートファイルは、ディレクトリ /usr/aset/reports の下のサブディレクトリに入っています。この節では、/usr/aset/reports ディレクトリの構造と、レポートファイルを管理するためのガイドラインについて説明します。
ASET は、指定されたサブディレクトリにレポートファイルを格納し、レポートの生成日時を反映させます。この規則によって、ASET を実行するたびに変わるシステムの状態が記録されたレコードを順番に追跡できます。これらのレポートを監視し、比較して、システムセキュリティーの状況を判断できます。
次の図に reports ディレクトリ構造の例を示します。
この例では、2 つのレポートサブディレクトリを示しています。
0124_01:00
0125_01:00
サブディレクトリ名は、レポートの生成日時を示します。各レポートサブディレクトリ名の形式は次のとおりです。
monthdate_hour:minute |
この場合、month、date、hour、minute は、いずれも 2 桁の数値です。たとえば、0125_01:00 は 1 月 25 日の午前 1 時を表します。
2 つのレポートサブディレクトリには、それぞれ ASET を 1 度実行して、生成されたレポートの集合が含まれています。
latest ディレクトリは、常に最新レポートが入っているサブディレクトリを指すシンボリックリンクです。したがって、/usr/aset/reports/latest ディレクトリに移動すると、ASET で生成された最新レポートを見ることができます。このディレクトリには、最後に ASET を実行した各タスクのレポートファイルが入っています。
各レポートファイルには、レポートを生成したタスクに基づいて名前が付けられます。次の表にタスクとそのレポートのリストを示します。
表 7–1 ASET のタスクと生成されるレポート
タスク |
レポート |
---|---|
システムファイルのアクセス権の調整 (tune) |
tune.rpt |
システムファイルの確認 (cklist) |
cklist.rpt |
ユーザーとグループの確認 (usrgrp) |
usrgrp.rpt |
システム構成ファイルの確認 (sysconf) |
sysconf.rpt |
環境変数の確認 (env) |
env.rpt |
eeprom の確認 (eeprom) |
eeprom.rpt |
ファイアウォールの設定 (firewall) |
firewall.rpt |
各レポートファイル内で、メッセージの前後はバナー行で囲まれています。ASET の構成要素を誤って削除したり損傷したりすると、タスクが途中で終了することがあります。このような場合、通常はレポートファイルの末尾の方に、途中で終了した理由を示すメッセージが記録されています。
次にレポートファイル usrgrp.rpt の例を示します。
*** Begin User and Group Checking *** Checking /etc/passwd ... Warning! Password file, line 10, no passwd :sync::1:1::/:/bin/sync ..end user check; starting group check ... Checking /etc/group... *** End User And group Checking *** |
ASET を最初に実行したときまたは再構成したときは、レポートファイルを詳細に検査する必要があります。再構成には、asetenv ファイル、masters サブディレクトリのマスターファイルを変更したり、ASET が動作するセキュリティーレベルを変更したりすることが含まれます。
このレポートには、ASET の再構成によって発生したエラーがすべて記録されます。レポートを詳しく確認すると、問題が発生した時点で対処して解決できます。
構成上の変更やシステム更新がない期間中にレポートファイルを監視すると、レポートの内容が安定することがわかります。予期しなかった情報がレポートに含まれる場合は、diff ユーティリティーを使用してレポートを比較できます。
ASET のマスターファイル tune.high、tune.low、tune.med、およびuid_aliases は、ディレクトリ /usr/aset/masters に入っています。ASET は、マスターファイルを使用してセキュリティーレベルを定義します。詳細は、asetmasters(4) のマニュアルページを参照してください。
tune.low、tune.med、tune.high マスターファイルでは、利用できる ASET セキュリティーレベルが定義されます。各ファイルでは、各レベルのシステムファイルの属性が指定され、比較と参照に使用されます。
uid_aliases ファイルには、同じユーザー ID (UID) を共有する複数のユーザーアカウントの一覧が入っています。このような複数のユーザーアカウントがあると責任の所在があいまいになるため、通常は ASET が警告を出します。uid_aliases ファイル内で例外を一覧すると、この規則に例外を設けることができます。重複する UID を持つ passwd ファイル内のエントリを uid_aliases ファイル内で指定しておくと、これらのエントリは ASET でレポートされません。
複数のユーザーアカウントで同じ UID を共有しないでください。他の方法で目的を達成することを検討する必要があります。たとえば、複数のユーザーにアクセス権一式を共有させたい場合は、グループアカウントを作成できます。役割を作成することも可能です。UID の共有は、最後の手段としてほかの方法では目的を達成できない場合にだけ使用すべきです。
UID_ALIASES 環境変数を使用すると、別の別名ファイルを指定できます。デフォルトファイルは /usr/aset/masters/uid_aliases です。
システムファイルの確認に使用されるマスターファイルは、初めて ASET を実行するときか、セキュリティーレベルの変更後に ASET を実行するときに生成されます。
次の環境変数には、このタスクで確認するファイルを定義します。
CKLISTPATH_LOW
CKLISTPATH_MED
CKLISTPATH_HIGH
環境ファイル asetenv には、ASET タスクに影響する環境変数の一覧が入っています。一部の環境変数を変更すると、ASET の動作を修正することができます。asetenv ファイルの詳細は、asetenv(4) のマニュアルページを参照してください。
この節では、ASET を構成する方法と、ASET が稼働する環境について説明します。
ASET の管理と構成は最小限ですみ、ほとんどの場合はデフォルト値で実行できます。ただし、ASET の処理や動作に影響する一部のパラメータを調整して、その特長を最大限に発揮させることができます。デフォルト値を変更する前に、ASET の機能と、ASET がシステムの構成要素に及ぼす影響を理解しておく必要があります。
ASET は、次の 4 つの構成ファイルに依存してタスクの動作を制御します。
/usr/aset/asetenv
/usr/aset/masters/tune.low
/usr/aset/masters/tune.med
/usr/aset/masters/tune.high
/usr/aset/asetenv ファイルには、2 つのメインセクションがあります。
ユーザーが構成可能な環境変数セクション
内部環境変数セクション
ユーザーが構成可能なパラメータセクションは変更できます。ただし、内部環境変数セクションの設定は内部使用だけに限られ、変更できません。
ユーザーが構成可能なセクションのエントリを編集して、次の操作を行うことができます。
実行するタスクを選択する
システムファイルの確認タスク用のディレクトリを指定する
ASET の実行スケジュールを指定する
UID 別名ファイルを指定する
確認対象を NIS+ テーブルまで拡張する
ASET が実行する各タスクでは、システムセキュリティーの特定の領域が監視されます。ほとんどのシステム環境では、すべてのタスクでバランスがとれたセキュリティー範囲を提供する必要があります。ただし、1 つまたは複数のタスクを除外しても構いません。
たとえば、ファイアウォールタスクはすべてのセキュリティーレベルで実行されますが、本来の機能は最上位レベルでのみ動作します。ASET を高セキュリティーレベルで実行する場合でも、ファイアウォール保護は不要なときがあります。
管理者は、ファイアウォール機能を使用しないで高セキュリティーレベルで実行するように ASET を設定できます。このためには、asetenv ファイル内で環境変数の TASKS の一覧を編集します。デフォルトでは、TASKS の一覧にはすべての ASET タスクが含まれています。特定のタスクを削除するには、このファイルからそのタスクに関連する変数を削除します。この場合は、一覧から firewall 環境変数を削除することになります。次の一覧に ASET を実行すると、除外したタスクは実行されません。
次の例では、すべての ASET タスクが含まれる TASKS 一覧が表示されます。
TASKS=”env sysconfig usrgrp tune cklist eeprom firewall” |
システムファイル確認では、選択したシステムディレクトリ内のファイルの属性が確認されます。次の環境変数を使用して、どのディレクトリを確認するかを定義できます。
CKLISTPATH_LOW 変数は、低セキュリティーレベルで確認されるディレクトリを定義します。CKLISTPATH_MED と CKLISTPATH_HIGH 環境変数は、それぞれ中セキュリティーレベルと高セキュリティーレベルで同じように機能します。
セキュリティーレベルの低い環境変数を定義したディレクトリの一覧は、次にセキュリティーレベルの高い環境変数を定義したディレクトリの一覧のサブセットである必要があります。たとえば、CKLISTPATH_LOW に指定したディレクトリはすべて CKLISTPATH_MED に含めます。同様に、CKLISTPATH_MED に指定したディレクトリはすべて CKLISTPATH_HIGH に含めます。
これらのディレクトリに対して実行される確認は再帰的ではありません。ASET では、環境変数に明示的に指定されているディレクトリだけが確認されます。ASET では、そのサブディレクトリは確認されません。
これらの環境変数の定義を編集して、ASET に確認させたいディレクトリを追加または削除できます。これらの確認リストは、通常は毎日変更がないシステムファイルにのみ便利なことに注意してください。たとえば、一般にユーザーのホームディレクトリは動的な変化が大きすぎるので、確認リストの候補にはなりません。
ASET は対話形式で実行できます。また、-p オプションを使用して、ASET タスクの実行を指定した時刻に要求することもできます。ASET は、システム需要が少ないときに定期的に実行できます。たとえば、ASET は PERIODIC_SCHEDULE を照会して、ASET タスクの実行頻度と実行時刻を判断します。ASET を定期的に実行するように設定する方法については、「ASET を定期的に実行する方法」を参照してください。
PERIODIC_SCHEDULE の形式は、crontab エントリの形式と同じです。詳細は、crontab(1) のマニュアルページを参照してください。
UID_ALIASES 変数は、共有 UID がリストされる別名ファイルを指定します。デフォルトファイルは /usr/aset/masters/uid_aliases です。
YPCHECK 環境変数は、ASET でシステム構成ファイルテーブルも確認するかどうかを指定します。YPCHECK はブール型変数です。YPCHECK には true または false しか指定できません。デフォルト値は false で、NIS+ テーブルの確認は無効になっています。
この環境変数の機能を理解するために、passwd ファイルに与える影響を考えてみてください。false に設定すると、ASET はローカルの passwd ファイルを確認します。true に設定すると、NIS+ の passwd テーブル内でシステムのドメインも確認されます。
ASET ではローカルファイルが自動的に修復されますが、NIS+ テーブル内の潜在的な問題はレポートされるだけです。NIS+ テーブルの変更は行いません。
ASET は、3 つのマスター調整ファイル tune.low、tune.med、tune.high を使用して、重要なシステムファイルへのアクセス制限を緩めたり厳しくしたりします。この 3 つのマスターファイルは /usr/aset/masters ディレクトリにあり、環境に合わせて調整できます。詳細は、「調整ファイルの例」を参照してください。
tune.low ファイルは、アクセス権をデフォルトのシステム設定に適した値に設定します。tune.med ファイルは、これらのアクセス権をさらに制限し、tune.low に含まれていないエントリを追加します。tune.high ファイルは、アクセス権をさらに厳しく制限します。
調整ファイル内の設定を変更するには、ファイルのエントリを追加または削除します。アクセス権を現在の設定よりも制限が緩やかになるような値に設定しても意味がありません。システムセキュリティーを下位レベルに下げない限り、ASET がアクセス権の制限を緩和したことになりません。
ASET を初めて実行すると、元のシステムファイルが保存され保管されます。aset.restore ユーティリティーは、これらのファイルを復元します。また、ASET を定期的に実行するようにスケジュール指定している場合は、そのスケジュールを解除します。aset.restore コマンドは、ASET の操作ディレクトリ /usr/aset に入っています。
システムファイルに適用した変更は、aset.restore コマンドを実行すると失われます。
aset.restore コマンドは、次のような場合に使用します。
ASET の変更を削除して元のシステムを復元する場合。
ASET を永久に無効にする場合は、以前にスーパーユーザーの crontab に aset コマンドが追加されていれば、cron スケジュールから ASET を削除できます。cron を使用して自動実行を削除する方法については、「ASET の定期的な実行を停止する方法」を参照してください。
ASET を短期間実行したあとに、元のシステム状態を復元する場合。
一部の主要なシステム機能が正常に動作せず、ASET が原因だと思われる場合。
通常、ネットワークの一部となっているシステム上でも、ASET はスタンドアロンモードで使用されます。スタンドアロンシステムのシステム管理者は、システムのセキュリティーを守る必要があるため、ASET の稼働と管理を通してシステム保護に当たります。
また、ASET は NFS 分散環境でも使用できます。ネットワーク管理者は、すべてのクライアントの各種管理タスクのインストール、実行、管理を担当します。複数のクライアントシステムにわたって ASET を管理しやすくするため、すべてのクライアントに一括して適用されるような構成変更を行えます。変更を一括して適用すると、各システムにログインして構成変更を繰り返す必要がなくなります。
ネットワークシステム上で ASET の設定方法を決めるときには、セキュリティー制御を誰に行わせるかを考える必要があります。たとえば、ユーザーに各自のシステムにおけるセキュリティーの一部を制御させることができます。また、セキュリティー制御の責任を 1 つにまとめることもできます。
複数のネットワーク構成を設定する場合があります。たとえば、低セキュリティーレベルに設定したクライアント用に 1 つ、中レベルのクライアント用に 1 つ、さらに高レベルのクライアント用に 1 つのネットワーク構成を設定できます。
セキュリティーレベルごとに個別の ASET ネットワーク構成を作成する場合は、サーバー上に 3 つの ASET 構成を作成できます。この場合、レベルごとに 1 つずつ構成を作成することになります。各構成を該当するセキュリティーレベルのクライアントにエクスポートします。3 つの構成すべてに共通の ASET 構成要素は、リンクを使用して共有できます。
管理者は、サーバー上に ASET 構成要素を集中できるだけでなく、サーバー上に集中ディレクトリを設定してすべてのレポートを収集できます。クライアントは、スーパーユーザー特権のあるなしにかかわらずサーバーにアクセスできます。収集メカニズムを設定する方法については、「サーバー上で ASET レポートを収集する方法」を参照してください。
サーバー上でレポートを収集するように設定すると、すべてのクライアントに関するレポートを 1 箇所で検討できます。この方法は、クライアントがスーパーユーザー特権を持っているかどうかに関係なく使用できます。また、ユーザーに各自の ASET レポートを監視させたい場合は、ローカルシステム上にレポートディレクトリを残しておくこともできます。
ASET の作業ディレクトリを指定します
セキュリティーレベルを指定します
定期的なスケジュールを指定します
実行する ASET タスクを指定します
別名ファイルを指定します
NIS マップと NIS+ テーブルを確認するかどうかを指定します
低セキュリティー用のディレクトリリストです
中セキュリティー用のディレクトリリストです
高セキュリティー用のディレクトリリストです
次の節で示す環境変数は、/usr/aset/asetenv ファイルにあります。ASETDIR と ASETSECLEVEL 変数はオプションです。これらの変数は、シェルから /usr/aset/aset コマンドを使用しなければ設定できません。他の環境変数は、ファイルを編集して設定できます。
ASETDIR は、ASET の作業ディレクトリを指定します。
C シェルからは、次のように入力します。
% setenv ASETDIR pathname |
Bourne シェルまたは Korn シェルからは、次のように入力します。
$ ASETDIR=pathname $ export ASETDIR |
pathname には ASET 作業ディレクトリの完全パス名を設定します。
ASETSECLEVEL 変数は、ASET タスクが実行されるセキュリティーレベルを指定します。
C シェルからは、次のように入力します。
% setenv ASETSECLEVEL level |
Bourne シェルまたは Korn シェルからは、次のように入力します。
$ ASETSECLEVEL=level $ export ASETSECLEVEL |
上記のコマンドで、level を次のいずれかに設定できます。
低セキュリティーレベル
中セキュリティーレベル
高セキュリティーレベル
PERIODIC_SCHEDULE の値の形式は、crontab ファイルと同じです。変数の値は二重引用符で囲んだ 5 つのフィールドからなる文字列として指定します。各フィールドは次のように 1 つの空白文字で区切ります。
"minutes hours day-of-month month day-of-week" |
開始時刻を (0 から 59) と時間 (0 から 23) で指定します。
ASET を実行する日付を 1 から 31 の値で指定します。
ASET を実行する月を 1 から 12 の値で指定します。
ASET を実行する曜日を 0 から 6 の値で指定します。日曜日が 0 になります。
ASET の定期的なスケジュールを作成するときは、次の規則が適用されます。
どのフィールドも、値のリストをコンマで区切って指定できます。
値を数値または範囲として指定できます。範囲は、一対の数値をハイフンで結合して指定します。範囲に含まれるすべての時刻に ASET タスクを実行することを示します。
どのフィールドも、値としてアスタリスク(*) を指定できます。アスタリスクを指定すると、そのフィールドで使用できるすべての値を指定したことになります。
PERIODIC_SCHEDULE 変数のデフォルトエントリでは、ASET が毎日深夜 12:00 に実行されます。
PERIODIC_SCHEDULE=”0 0 * * *” |
TASKS 変数は、ASET で実行されるタスクを一覧表示します。デフォルトでは、7 つのタスクが次のようにすべて一覧されます。
TASKS=”env sysconfig usrgrp tune cklist eeprom firewall” |
UID_ALIASES 変数は、別名ファイルを指定します。別名ファイルがあると、ASET は使用可能な複数の別名の一覧をこのファイル内で照会します。書式は UID_ALIASES=pathname です。pathname は、別名ファイルのフルパス名です。
デフォルトは次のとおりです。
UID_ALIASES=${ASETDIR}/masters/uid_aliases |
YPCHECK 変数は、システムテーブルを確認するタスクを拡張して NIS または NIS+ テーブルを含めます。YPCHECK 変数はブール変数なので、true または false に設定されます。
デフォルトは false で、ローカルシステムテーブルが確認されます。
YPCHECK=false |
3 つの確認リストパス変数は、システムファイルの確認タスクで確認されるディレクトリを一覧表示します。次の変数の定義は、デフォルトで設定されます。これらの定義は、さまざまなレベルの変数の関係を示しています。
CKLISTPATH_LOW=${ASETDIR}/tasks:${ASETDIR}/util:${ASETDIR}/masters:/etc CKLISTPATH_MED=${CKLISTPATH_LOW}:/usr/bin:/usr/ucb CKLISTPATH_HIGH=${CKLISTPATH_MED}:/usr/lib:/sbin:/usr/sbin:/usr/ucblib |
確認リストパス環境変数の値は、シェルパス変数の値と似ています。シェルパス変数と同様に、確認リストパス環境変数はディレクトリ名のリストです。ディレクトリ名はコロンで区切ります。等号 (=) を使用すると、変数名にその値を設定できます。
この節では、調整ファイルや別名ファイルなどの ASET ファイルの例を示します。
ASET は 3 つの調整ファイルを管理します。調整ファイル内の各エントリは 1 行に入っています。エントリ内のフィールドの順序は次のとおりです。
pathname mode owner group type |
ファイルのフルパス名
アクセス権の設定を表す 5 桁の数値
ファイルの所有者
ファイルのグループ
ファイルの形式
アスタリスク (*) や疑問符 (?) などの標準シェルワイルドカード文字をパス名に使用することにより、複数のファイルを参照できます。詳細は、sh(1) のマニュアルページを参照してください。
mode は、もっとも制限が緩やかな値を表します。現在の設定が指定した値よりもすでに厳しく制限されている場合、ASET はアクセス権の設定を緩和しません。たとえば、指定した値が 00777 の場合、00777 は常に現在の設定よりも緩やかな制限を表すため、アクセス権は変更されません。
このプロセスは、ASET がモード設定をどのように処理するかというものです。セキュリティーレベルのレベルが低いものに変更されるか、あるいは管理者が ASET を削除する場合は、別のプロセスとなります。セキュリティーレベルを前回の実行時よりも下げるときや、ASET が最初に実行される前の状態のシステムファイルを復元するときには、ASET は操作の内容を認識して保護レベルを下げます。
owner と group には、数値 ID ではなく名前を使用する必要があります。
owner、group、type の代わりに疑問符 (?) を使用すると、ASET がこれらのパラメータの既存の値を変更しないようにします。
type には、symlink (シンボリックリンク)、ディレクトリ、またはファイルを指定できます。
セキュリティーレベルが高くなるほど、調整ファイルは下位レベルよりも緩やかなファイルアクセス権にリセットされます。また、上位セキュリティーレベルになるほど、一覧に多数のファイルが追加されます。
1 つのファイルで複数の調整ファイルエントリを照合できます。たとえば、etc/passwd は etc/pass* エントリと /etc/* エントリに一致します。
2 つのエントリのアクセス権が異なる場合は、ファイルアクセス権はもっとも厳しいアクセス権を表す値に設定されます。次の例では、/etc/passwd ファイルのアクセス権は 00755 に設定されますが、これは 00755 は 00770 よりも厳密な制限であることを表します。
/etc/pass* 00755 ? ? file /etc/* 00770 ? ? file |
2 つのエントリの owner 指定または group 指定が異なる場合は、最後のエントリが優先されます。次の例では、/usr/sbin/chroot の所有者が root に設定されます。
/usr/sbin/chroot 00555 bin bin file /usr/sbin/chroot 00555 root bin file |
別名ファイルには、同じユーザー ID を共有する別名の一覧が含まれています。
各エントリの書式は次のとおりです。
uid=alias1 =alias2=alias3 =...
共有 UID。
UID を共有するユーザーアカウント。
たとえば、次のエントリでは UID 0を一覧表示しています。この UID は、sysadm および root アカウントによって共有されています。
0=root=sysadm
作業 |
説明 |
参照先 |
---|---|---|
ASET をコマンド行から実行します |
指定する ASET レベルにあるシステムを保護します。実行ログを表示して変化を確認します | |
定期的に ASET をバッチモードで実行します |
cron ジョブを設定し、ASET がシステムを保護するようにします。 | |
バッチモードによる ASET の実行を停止します |
ASET cron ジョブを削除します。 | |
ASET レポートをサーバーに保存します |
監視のためにクライアントから ASET レポートを収集し、中心的な場所に保存します。 |
ASET で変数を設定する方法は、「ASET 環境変数」を参照してください。ASET を構成する方法は、「ASET の構成」を参照してください。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、「RBAC の構成 (作業マップ)」を参照してください。
aset コマンドを使用して ASET を対話的に実行します。
# /usr/aset/aset -l level -d pathname |
セキュリティーレベルを指定します。有効な値は low、medium、または high です。デフォルト設定は low です。セキュリティーレベルの詳細は、「ASET のセキュリティーレベル」を参照してください。
ASET の作業ディレクトリを指定します。デフォルトは /usr/aset です。
画面に表示される ASET 実行ログを見て、ASET が動作していることを確認します。
実行ログメッセージは、動作しているタスクを示します。
次の例では、デフォルトの作業ディレクトリを使用して低セキュリティーレベルで ASET を実行します。
# /usr/aset/aset -l low ======= ASET Execution Log ======= ASET running at security level low Machine = jupiter; Current time = 0111_09:26 aset: Using /usr/aset as working directory Executing task list ... firewall env sysconf usrgrp tune cklist eeprom All tasks executed. Some background tasks may still be running. Run /usr/aset/util/taskstat to check their status: /usr/aset/util/taskstat [aset_dir] where aset_dir is ASET's operating directory,currently=/usr/aset. When the tasks complete, the reports can be found in: /usr/aset/reports/latest/*.rpt You can view them by: more /usr/aset/reports/latest/*.rpt |
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、「RBAC の構成 (作業マップ)」を参照してください。
必要であれば、ASET を定期的に実行する時刻を設定します。
システム需要が少ないときに ASET を実行します。/usr/aset/asetenv ファイル内の PERIODIC_SCHEDULE 環境変数を使用して、ASET を定期的に実行する時刻を設定します。デフォルトでは、時刻は深夜に設定されます。
別の時刻を設定する場合は、/usr/aset/asetenv ファイル内の PERIODIC_SCHEDULE 変数を編集します。PERIODIC_SCHEDULE 変数の設定の詳細は、「PERIODIC_SCHEDULE 環境変数」を参照してください。
aset コマンドを使用してエントリを crontab ファイルに追加します。
# /usr/aset/aset -p |
-p オプションは、決めた時刻に ASET の実行を開始するように /usr/aset/asetenv ファイル内の PERIODIC_SCHEDULE 環境変数に設定した行を crontab ファイルに挿入します。
次のコマンドを実行すると crontab エントリが表示され、ASET の実行スケジュールを確認できます。
# crontab -l root |
Primary Administrator 役割を引き受けるか、スーパーユーザーになります。
Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。
crontab ファイルを編集します。
# crontab -e root |
ASET エントリを削除します。
変更を保存して終了します。
crontab エントリを表示して、ASET エントリが削除されていることを確認します。
# crontab -l root |
Primary Administrator 役割を引き受けるか、スーパーユーザーになります。
Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。
サーバー上でディレクトリを設定します。
/usr/aset ディレクトリに移動します。
mars# cd /usr/aset |
rptdir ディレクトリを作成します。
mars# mkdir rptdir |
rptdir ディレクトリに移動して、client_rpt ディレクトリを作成します。
これにより、クライアント用のサブディレクトリ client_rpt が作成されます。レポートを収集するクライアントごとに、この手順を繰り返します。
mars# cd rptdir mars# mkdir client_rpt |
次の例では、ディレクトリ all_reports とサブディレクトリ pluto_rpt および neptune_rpt が作成されます。
mars# cd /usr/aset mars# mkdir all_reports mars# cd all_reports mars# mkdir pluto_rpt mars# mkdir neptune_rpt |
client_rpt ディレクトリを /etc/dfs/dfstab ファイルに追加します。
このディレクトリには、読み取り権と書き込み権があります。
たとえば、dfstab ファイル内の次のエントリは、読み取り権と書き込み権によって共有されます。
share -F nfs -o rw=pluto /usr/aset/all_reports/pluto_rpt share -F nfs -o rw=neptune /usr/aset/all_reports/neptune_rpt |
dfstab ファイル内のリソースをクライアントが利用できるようにします。
# shareall |
各クライアント上でクライアントのサブディレクトリを、マウントポイント /usr/aset/masters/reports にサーバーからマウントします。
# mount server:/usr/aset/client_rpt /usr/aset/masters/reports |
/etc/vfstab ファイルを編集して、ブート時にディレクトリを自動的にマウントするようにします。
neptune 上の /etc/vfstab 内の次のエントリ例には、mars からマウントされるディレクトリ /usr/aset/all_reports/neptune_rpt と、neptune 上のマウントポイント /usr/aset/reports が一覧されています。ブート時には、vfstab 内に一覧されたディレクトリが自動的にマウントされます。
mars:/usr/aset/all_reports/neptune.rpt /usr/aset/reports nfs - yes hard |
この節では、ASET によって生成されるエラーメッセージについて説明します。
ASET failed: no mail program found.
原因:ASET は実行ログをユーザーに送るように指示されましたが、メールプログラムが見つかりません。
対処方法:メールプログラムをインストールしてください。
Usage: aset [-n user[@host]] in /bin/mail or /usr/ucb/mail.
Cannot decide current and previous security levels.
原因:ASET は、今回と前回の呼び出しのセキュリティーレベルを判別できません。
対処方法:現在のセキュリティーレベルがコマンド行オプションまたは ASETSECLEVEL 環境変数によって設定されているかどうかを確認してください。また、ASETDIR/archives/asetseclevel.arch の最終行に、以前のセキュリティーレベルが正しく反映されているかどうかを確認してください。これらの値が設定されていないか正しくない場合は、正しい値を入力してください。
ASET working directory undefined.
To specify, set ASETDIR environment variable or use command line option -d.
ASET startup unsuccessful.
原因:ASET の作業ディレクトリが定義されていないか、正しく定義されていません。
対処方法:ASETDIR 環境変数または -d コマンド行オプションを使用してエラーを訂正してから、ASET を再起動してください。
ASET working directory $ASETDIR missing.
ASET startup unsuccessful.
原因:ASET の作業ディレクトリが定義されていないか、正しく定義されていません。ASETDIR 変数または -d コマンド行オプションによって、存在しないディレクトリが参照されている可能性があります。
対処方法:正しいディレクトリ、つまり ASET ディレクトリ階層が入っているディレクトリが正しく参照されているかどうかを確認してください。
Cannot expand $ASETDIR to full pathname.
原因:ASET が ASETDIR 変数または -d コマンド行オプションで指定されたディレクトリ名を完全パス名に展開できません。
対処方法:ディレクトリ名が正しいか確認します。ユーザーがアクセス権を持つ既存のディレクトリをそのディレクトリが参照しているか確認してください。
aset: invalid/undefined security level.
To specify, set ASETSECLEVEL environment variable or use command line option -l, with argument= low/med/high.
原因:セキュリティーレベルが定義されていないか、正しく定義されていません。low、med、または high の値以外は定義できません。
対処方法:ASETSECLEVEL 変数または -l コマンド行オプションを使用して、low、med、または high のいずれかの値を指定してください。
ASET environment file asetenv not found in $ASETDIR.
ASET startup unsuccessful.
原因:ASET は asetenv ファイルを作業ディレクトリ内で見つけることができません。
対処方法:ASET の作業ディレクトリ内に asetenv ファイルが入っているかどうかを確認してください。このファイルの詳細は、asetenv(4) のマニュアルページを参照してください。
filename doesn't exist or is not readable.
原因:filename で指定されたファイルが存在しないか、読み取れません。この問題は、-u オプションを使用している場合に発生します。このオプションは確認するユーザーの一覧が入ったファイルを指定するために使用します。
対処方法:-u オプションの引数が存在することと、その引数が読み取り可能であるかを確認してください。
ASET task list TASKLIST undefined.
原因:asetenv ファイル内で定義されているはずの ASET タスクリストが定義されていません。asetenv ファイルが無効である可能性があります。
対処方法:asetenv ファイルを検査してください。タスクリストが User Configurable セクションで定義されているかどうかを確認します。また、ファイルの他の部分をチェックして、ファイルが変更されていないことを確認します。有効な asetenv ファイルの内容については、asetenv(4) のマニュアルページを参照してください。
ASET task list $TASKLIST missing.
ASET startup unsuccessful.
原因:asetenv ファイル内で定義されているはずの ASET タスクリストが定義されていません。asetenv ファイルが無効である可能性があります。
対処方法:asetenv ファイルを検査してください。タスクリストが User Configurable セクションで定義されているかどうかを確認します。また、ファイルの他の部分をチェックして、ファイルが変更されていないことを確認します。有効な asetenv ファイルの内容については、asetenv(4) のマニュアルページを参照してください。
Schedule undefined for periodic invocation.
No tasks executed or scheduled. Check asetenv file.
原因:-p オプションを使用して ASET のスケジュール指定が要求されましたが、環境変数 PERIODIC_SCHEDULE が asetenv ファイル内で定義されていません。
対処方法:asetenv ファイルの User Configurable セクションをチェックして、変数が定義されていることを確認してください。また、変数の書式が正しいかも確認してください。
Warning! Duplicate ASET execution scheduled.
Check crontab file.
原因:ASET のスケジュールが複数回指定されています。つまり、ASET スケジュールがまだ有効な間に別のスケジュールを指定するように要求されています。複数のスケジュールが必要な場合は、このメッセージはエラーを示すものではなく、警告メッセージとなります。複数のスケジュールが必要な場合は、crontab コマンドを使用して、正しいスケジュール書式を使用する必要があります。詳細は、crontab(1) のマニュアルページを参照してください。
対処方法:crontab コマンドを使用して、正しいスケジュールが有効になっていることを検証してください。ASET に関して不要な crontab エントリがないかどうかを確認してください。