この章では,ユーザのアカウントとパスワードを割り当てることで,ユーザにシステムへのアクセス権を指定する方法を説明します。アカウントを保護する必要があり,平均的なセキュリティが必要とされる商用システムのセキュリティの要件に基づいて説明します。また,平均よりも高度なセキュリティの要件についても説明します。システム・データおよびリソースへのアクセスの制御の詳細については,第 8 章を参照してください。ユーザ・アクションの監査の詳細については,第 6 章および第 9 章を参照してください。
登録ユーティリティ (AUTHORIZE) が,アカウントとパスワードを確立するための主要なツールです。このユーティリティの説明については,『OpenVMS システム管理ユーティリティ・リファレンス・マニュアル』の A-L を参照してください。
7.1 システムにアクセス可能な時間と条件の定義
ユーザに与えられるシステム・アクセスのレベルは,サイトの要件,組織内におけるユーザの役割,およびユーザのアカウントの管理に依存します。セキュリティの要件が低く,システム・リソースが多いサイトでは,1 日のどの時間帯にアクセスしてもよいようにする一方で,セキュリティ要件が中程度のサイトでは,ログインを日中の時間帯のみに限定したり,ダイアルアップまたはネットワーク接続を一部のユーザのみに許可するということが考えられます。
登録ユーティリティを使用して,ユーザがシステムにアクセスできる日時と方法を制御できます。表 7-1
に,適用可能な修飾子を示します。
表 7-1: ログインの時間と条件を制御する AUTHORIZE 修飾子
| カテゴリ | 修飾子 | 説明 |
時間帯 |
/ACCESS |
デフォルトでは,ユーザは毎日いつでもアクセス権できます。アクセスの時間を指定することで,その他の時間におけるアクセスを禁止できます。キーワード PRIMARY を使用して主曜日の時間帯を指定し,キーワード SECONDARY を使用して副曜日の時間帯を指定します。 |
/DIALUP |
ダイアルアップ・ログインに対して許可するアクセスの時間帯を指定します。 |
|
/LOCAL |
ローカル・ターミナルからの会話型ログインのアクセスの時間帯を指定します。 |
|
曜日 |
/PRIMEDAYS |
1 週間のうちログインが可能な主曜日と副曜日を定義します。 |
操作モード |
/BATCH |
バッチ・ジョブに対して許可するアクセスの時間帯を指定します。 |
/INTERACTIVE |
会話型ログインのアクセスの時間帯を指定します。 |
|
/NETWORK |
ネットワーク・バッチ・ジョブに対して許可するアクセスの時間帯を指定します。 |
|
/REMOTE |
(DCL の SET HOST コマンドを使用して) ネットワーク遠隔ターミナルからの会話型ログインに対して許可するアクセスの時間帯を指定します。 |
|
リソースの割り当て |
/DEVICE |
ログイン時のユーザのデフォルト・デバイスの名前を指定します。 |
/DIRECTORY |
ログイン時のユーザのデフォルト・ディレクトリの名前を指定します。 |
|
アカウントの有効性 |
/EXPIRATION |
アカウントが期限切れになる日付と時刻を指定します。 |
/FLAGS=DISUSER |
ユーザがログインできないように,アカウントを無効にします。 |
|
外部認証 |
/FLAGS=EXTAUTH |
ユーザが外部認証されるように指定します。 |
AUTHORIZE 修飾子を使用して,システムの使用を,1 週間の特定の曜日や 1 日の特定の時間帯に制限できます。作業時間の制限は,システムの負荷バランスの改善に便利です。アカウントへのアクセスの制限は,通常の業務時間以外におけるシステムの不正使用を防ぐ効果的な手段でもあります。
/PRIMEDAYS 修飾子を使用して 1 週間の主曜日と副曜日を定義するか,主曜日が月曜日から金曜日で副曜日が土曜日と日曜日であるデフォルトに従います。たとえば,火曜日から土曜日まで勤務するユーザのデフォルトを変更するには,/PRIMEDAYS 修飾子を次のように指定します。
/PRIMEDAYS=(NOMONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,NOSUNDAY)
ただし,主曜日に祝日がある場合など,サイトの通常の曜日割り当てに当てはまらない変更が運用上必要になることがあります。通常の曜日割り当てをオーバーライドするには,DCL の SET DAY コマンドを使用し,該当日に対して適用する曜日タイプの解釈を指定します。これには,OPER 特権が必要です。この変更は,すでにログインしているすべてのユーザのほか,以降その日にログインするすべてのユーザに適用されることに注意してください。曜日タイプを変更すると,現在ログインしているユーザのうち,その曜日タイプに関しては権限のないユーザは,次の 1 時間でシステムからログアウトされます。ジョブ・コントローラは,1 時間ごとに時間の制限を適用します。
時間帯ごとに制限する必要があるログイン・アクセスのタイプを決定します。ログイン・アクセスの修飾子には,/LOCAL,/REMOTE,/DIALUP,/INTERACTIVE,/BATCH,および /NETWORK があります。ただし,サイトで全タイプのログインに対して主時間と副時間のセットを 1 つだけ適用する場合,すべてのアクセスのモードに適用される /ACCESS 修飾子を指定できます。
次の例では,ユーザのアカウントに /BATCH 修飾子を適用して,通常の業務時間中にそのユーザがバッチ・ジョブを実行できないようにする方法を示します。
/NOBATCH=(PRIMARY, 9-17)
このように指定すると,該当するユーザは主曜日は午後 6:00 から午前 8:59 までの時間帯にのみバッチ・ジョブを実行できますが,副曜日は一日中実行できます。
7.1.2 操作モードの制限
次の理由で,一部のユーザのネットワーク・アクセスを禁止することが考えられます。
ユーザは,アクセスをローカル・ノード経由に限定しなければならないデータを持っている。
接続の匿名性が高いため,侵入の試みがネットワーク経由で発生する可能性が高くなります。この問題は,ダイアルアップ接続にも該当します。
特定のユーザのネットワーク・アクセスを禁止するには,次の例のように,AUTHORIZE 修飾子の /NONETWORK を使用します。
UAF> ADD JSMITH /NONETWORK, ...
すべての AUTHORIZE アクセス・モードの修飾子 (/LOCAL,/REMOTE,/DIALUP,/INTERACTIVE,/BATCH,または /NETWORK) をこの方法で無効にして,システムへのアクセスを制限することができます。
7.1.3 アカウントの有効期間の制限
ユーザがアクセスを必要とすると想定される時間の最大の長さに合うように,アカウントの有効期限を設定することをお勧めします。有効期限が切れると,システムにより,そのアカウントへのアクセスが自動的に禁止されます。ただし,UAF レコードとユーザのファイルは,セキュリティ管理者が手作業で削除する必要があります。
また /EXPIRATION 修飾子を使用すると,定期的にアカウントを確認して必要なアカウントのみを再認証することを求められるようになります。
アカウントの有効期限を設定するには,ユーザの UAF レコードで AUTHORIZE 修飾子の /EXPIRATION を使用します。たとえば次の修飾子は,ユーザのアカウントが 2001 年 12 月 30 日に満了することを指定します。
/EXPIRATION=30-DEC-2001
特定のアカウントの使用を厳しく制限したい場合があります。たとえば,SYSTEST アカウントや FIELD アカウントなど,定期的にのみ使用される特定のアカウントを無効にして,アカウントの悪用を防止できます。アカウントを無効にするには,/FLAGS=DISUSER 修飾子を使用します。必要に応じて一時的にアカウントを有効にするには,/FLAGS=NODISUSER 修飾子を使用します。
7.1.5 ディスク・ボリュームの制限
UAF レコードでユーザのデフォルトのデバイスとディレクトリを指定するには,AUTHORIZE 修飾子の /DEVICE と /DIRECTORY を使用します。『OpenVMS システム管理ユーティリティ・リファレンス・マニュアル』の A-L で説明されているように,システム管理ユーティリティ (SYSMAN) のディスク制限機能により,そのディスク (および他すべてのディスク) 上でユーザが使用できるブロックの数を制限できます。
他のディスクに設定されているボリューム保護により,ユーザがアクセス可能なディスク量が制御されます。AUTHORIZE 修飾子の /PRIVILEGES を使用して拡張または制限できるユーザの特権も,アクセス可能な量に影響を与えます (8.7 節を参照)。
7.1.6 外部認証用アカウントのマーク付け
UAF レコードでユーザのアカウントに対して,AUTHORIZE 修飾子の /FLAGS=EXTAUTH を使用してマークを付けることで,そのユーザの外部認証を許可することができます。
詳細については
7.4 節を参照してください。
7.2 ユーザへの適切なアカウントの割り当て
ユーザが有するシステム・アクセスのタイプは,大部分が,システム・リソースに対するユーザの必要性と,サイトのセキュリティ要件に依存します。この節では,OpenVMS システムで使用可能なユーザ・アカウントのタイプと,あるタイプのアカウントが別のアカウントよりも適当である理由について説明します。ユーザ・アカウントの追加手順の順を追った説明については,『OpenVMS システム管理者マニュアル』を参照してください。
7.2.1 システム・アカウントのタイプ
会話型アカウントは,システム・ソフトウェアにアクセスできます。通常,このようなアカウントは独立したアカウントと見なされます。
限定アクセス・アカウントでは,システムへのログインが制限され,場合によっては,ユーザ・ソフトウェアへのアクセスが制限されます。限定アクセス・アカウントにより,システムおよびプロセスのログイン・コマンド・プロシージャだけでなく,これらのプロシージャから呼び出されるすべてのプロシージャも実行できるようになります。
限定アクセス・アカウントには,キャプティブ・アクティブと制限付きアカウントの 2 つのタイプがあります。ゲスト,代理,および自動ログインのアカウントは,キャプティブおよび制限付きアカウントの例です。
現在,DECwindows ソフトウェアは,従来の意味でのキャプティブまたは制限付きログインをサポートしていません。ただし,ユーザがログインし,DECterm ウィンドウを作成すると,キャプティブまたは制限付きアカウントの従来の環境が適用されます。
7.2.2 項で説明されているように,会話型アカウントおよび限定アクセス・アカウントは,どちらも特権アカウントにすることが可能で,また外部で認証することもできます。
次の表に,ユーザが実行するタスクに基づいて作成すべきアカウントの種類を示します。
| ユーザのタスク | 作成するアカウントのタイプ |
プログラム開発やテキスト編集などの一般的な作業 |
会話型 |
限定的な操作のみを必要とする日常的なコンピュータ作業 |
キャプティブ |
無人の時間帯におけるバッチ処理 |
キャプティブ |
機密情報を扱うアプリケーション・プログラムの実行 |
キャプティブ |
MAIL などのネットワーク・アプリケーションの使用 |
制限付き |
キャプティブまたは制限付き |
|
ネットワーク代理アカウントの使用 |
制限付き |
スマート・カードなどの認証システムの使用 |
制限付き |
レイヤード・プロダクトのインストールの一部として作成されたアカウントの使用 |
制限付き |
特権操作の実行 |
会話型,制限付き,またはキャプティブ |
パスワードなしでの遠隔システムからのリソースへのアクセス |
キャプティブ |
アプリケーション・ターミナルへの自動ログイン |
キャプティブまたは制限付き |
外部ユーザの ID とパスワードを使用した OpenVMS ログイン・プロンプトでのログイン |
外部認証 |
多数のユーザに適用できる 1 つまたは複数のテンプレートを作成できます。ただし,単にテンプレートを適用するというレベルまで,アカウント作成のプロセスを過度に単純化しないでください。テンプレートだけに頼ると,個別のユーザに適用すべき特別な考慮事項を見逃し,セキュリティ管理者のみが行使できる重要な制御ができなくなる恐れがあります。
テンプレートを定期的に調べて,テンプレートが有効であり,必要な運用手順を反映していることを確認します。テンプレートは,すぐに古くなってしまいます。
7.2.1.1 会話型アカウントの例
例 7-1
は,セキュリティの考慮が必要で,平均的なユーザのアクセスが制限されている商用サイトのアカウントに一般的に見られる,中程度に制限された会話型ユーザ・アカウントの作成方法を示します。
例 7-1: 一般的な会話型ユーザ・アカウントの作成
$ SET DEFAULT SYS$SYSTEM
$ RUN AUTHORIZE
UAF>
ADD RDOWGOOD /PASSWORD=TRALAYAM/UIC=[231,010] - [1]
_UAF> /DEVICE-BOTANYDEV/DIRECTORY=[RDOGWOOD] -
_UAF> /OWNER="Robert Dogwood"/ACCOUNT=BOTNYDPT -
_UAF> /FLAGS=(GENPWD) /PWDMINIMUM=6 - [2]
_UAF> /EXPIRATION=15-JUNE-2003/PWDLIFETIME=90 - [3]
_UAF> /PRIMEDAYS=(MON,TUES,WED,THURS,FRI,SAT,NOSUN) - [4]
_UAF> /NOACCESS=(PRIMARY,23-6,SECONDARY)/NODIALUP [5]
identifier for value:[000231,000010] added to RIGHTSLIST.DAT
UAF>
次の点に注意してください。
必要なパスワードは 1 つのみです。
パスワードは 6 文字以上にする必要があります。
ユーザのパスワードは 90 日間有効で,これは例 6-1 にある管理者のパスワードの有効期間よりもはるかに長くなっています。
ユーザには,平日と土曜日のアクセスが許可されています。
この 6 日の間に,ユーザは 1 日 15 時間のアクセス権を有します。
例 7-2 に,ユーザが高度な制限が適用されるアプリケーション運用アカウントの作成方法を示します。このアカウントは,州立大学の成績の一覧を作成し,各学生の家庭への郵便物を作成するという 2 つの機能を実行する目的があります。
例では,指定のない値のデフォルト値はすべて,SYSUAF.DAT のデフォルト・レコードに基づく値になります。
例 7-2: 限定アクセス・アカウントの作成
$ SET DEFAULT SYS$SYSTEM
$ RUN AUTHORIZE
UAF> ADD REPGRADES /DEVICE=ADMINDEV/DIRECTORY=[REPGRADES] -
_UAF> /FLAGS=(CAPTIVE,DISWELCOME,DISNEWMAIL,DISMAIL,DEFCLI) - [1]
_UAF> /PASSWORD=GROBWACH/UIC=[777,031] - [2]
_UAF> /OWNER="Campus Admin"/ACCOUNT=ADMIN -
_UAF> /LOCAL=(PRIMARY,8-17)/PRIMEDAYS=(MON,TUES,WED,THU, - [3]
_UAF> FRI,NOSAT,NOSUN) -
_UAF> /NONETWORK/NOREMOTE/NODIALUP - [4]
_UAF> /LGICMD=GRADES /CLITABLES=GRADES_TABLES - [5]
UAF>
.
.
.
user record successfully added
identifier for value:[000777,000031] added to RIGHTSLIST.DAT
次の点に注意してください。
アカウント・ユーザには,システムによって通常表示されるウェルカム・メッセージ が表示されません。このアカウントは,メールを受信できません。また, ログイン・コマンド・プロシージャとデフォルト・コマンド・インタプリタ (DCL) の制御下での 実行に制限されます。
ログインを開始するユーザは,パスワード GROBWACH を指定する 必要があります。通常は,セキュリティ管理者のみがパスワードを 変更します。
ローカル・ログインからのジョブの実行は, 月曜日から金曜日の午前 8 時から午後 5:59 までの時間帯に 制限されます。バッチ・ログインとローカル・ログインのみが許可され, バッチ・モードには時間の制限がないことに注意してください。
ジョブは,ダイアルアップ回線経由での実行,および遠隔ジョブとしての 実行ができません。また,このアカウントはネットワーク・アクセスも拒否します。
プロセスは,特別なログイン・コマンド・プロシージャ (GRADES.COM) の 制御下で実行されます。このログイン・コマンド・プロシージャは, おそらくオペレータに機能のメニューを提示します。
プロセスが実行できるコマンドは,CLI テーブルである GRADES_TABLES に 定義されているコマンドに制限されます。
特権により,ユーザがシステム上で実行を許可される機能が決まります。TMPMBX および NETMBX 以上の特権があるアカウントは,特権アカウントと見なされます。特権アカウントには,会話型,制限付き,またはキャプティブのアカウントが可能です。
特権アカウントの不正使用は深刻な損失を招く可能性があるため,次のように,最も強力な権限を持つアカウントには,特別な制御を適用することを検討します。
アカウントへのアクセスを限定します。たとえば,遠隔地からの部外者の侵入行為を防ぐために,/NODIALUP または /NONETWORK 修飾子を使用して,ダイアルアップまたはネットワーク・アクセスを禁止します。
セキュリティ・アラームを適用して,BYPASS,SYSPRV,READALL,および GRPPRV の,ファイル保護に関連する特権の使用を検出します。セキュリティ・アラームの決定と監視の詳細については,第 9 章を参照してください。
SYSTEM アカウント以外のすべてのアカウントに対しては,次の制限も追加します。
/PRIMEDAYS および /NOACCESS 修飾子を使用して,ログインが可能な時間帯や曜日を制限します。使用方法が適切かどうかを監視できる日時を選択します。
使用されていない時は,AUTHORIZE 修飾子の /FLAGS=DISUSER を使用してアカウントを無効にします。
追加の検証を行うには,キャプティブ・ログイン・コマンド・プロシージャを使用します。キャプティブ・ログイン・コマンド・プロシージャは,7.2.4 項で説明されています。
当然ですが,SYSTEM アカウントに制限を加える必要があります。最も安全な手法は,バッチ・アクセスを除くすべてに関して SYSTEM アカウントを無効にして,実行者をたどれるように個別の特権ユーザ・アカウントを使用してシステム管理作業を行うようにする方法です。
特殊用途の特権キャプティブ・アカウント
キャプティブ・アカウントの安全性はそのコマンド・プロシージャの完全性に依存しているため,信頼のないユーザに対して特権キャプティブ・アカウントを設定することはお勧めできません。ただし特権が必要な状況では,汎用の特権アカウントではなく,キャプティブ特権アカウントを介して特定の機密性の高い機能を実行する方が安全です。たとえば,バックアップ操作を実行するユーザには READALL 特権が必要です。バックアップを実行するアカウントをキャプティブ・アカウントにすることで,手順が確実にシステムのバックアップ・ポリシーに従って実行されることを保証できます。
キャプティブ・アカウントの設定のガイドラインについては,7.2.4 項を参照してください。
7.2.3 会話型アカウント
会話型アカウントは,セキュリティ要件が低から中である環境でよく使用します。会話型アカウントは,プログラム開発やテキスト編集などの一般的な作業に適しています。『OpenVMS システム管理者マニュアル』では,このタイプのアカウントの設定手順が説明されています。7.2.1.1 項に例があります。
7.2.4 キャプティブ・アカウント
キャプティブ・アカウントは,ユーザの操作を制限します。また,適切に管理すれば,DCL コマンド・レベルへのユーザ・アクセスを拒否します。アカウントを設定して,完全に特定のプログラムまたはキャプティブ・ログイン・コマンド・プロシージャの制御下にユーザの実行を制限することができます。
キャプティブ・アカウントの主要な機能は,そのログイン・コマンド・プロシージャです。このタイプのアカウントにより,システム・ログイン・コマンド・プロシージャ (SYLOGIN.COM) およびプロセス・ログイン・コマンド・プロシージャ (SYSUAF.DAT の/LGICMD 修飾子で指定) のほか,これらのコマンド・プロシージャから呼び出されるコマンド・プロシージャの実行も保証されます。ログイン時にユーザは,表 7-2 に示した修飾子を指定してキャプティブ・コマンド・プロシージャを変更することはできません。
キャプティブ・アカウントにログインすると,ユーザは Ctrl/Y シーケンス,SPAWN コマンド,または INQUIRE コマンドを使用して DCL コマンド・レベルに抜け出ることはできません。UAF レコードの DISCTLY フラグが有効になっているため,Ctrl/Y は使用できません。未処理のエラーまたは割り込みの試みがあると,システム・エラー・メッセージが生成され,セッションがログアウトします。SPAWN コマンドに /TRUSTED 修飾子が指定されている場合を除き,SPAWN コマンドはキャプティブ・アカウント内では無効です。SPAWN は,MAIL および DEC Text Processing Utility (DECTPU) でも (組み込みプロシージャとして) 無効です。ユーザ指定のレキシカル関数の実行を防止するために,INQUIRE コマンドも無効になります。
表 7-2: キャプティブ・アカウントにより許可されないログイン修飾子
| 修飾子 | 説明 |
/CLI |
代替のコマンド言語インタプリタの名前を指定します。 |
/COMMAND |
デフォルトのログイン・コマンド・プロシージャをオーバーライドします。 |
/NOCOMMAND |
デフォルトのログイン・コマンド・プロシージャの実行を無効にします。 |
/DISK |
代替のデフォルト・ディスクを要求します。 |
/TABLES |
代替の CLI テーブルの名前を指定します。 |
アカウントの作成時に次の修飾子を含めることで,AUTHORIZE を使用してキャプティブ・アカウントを定義します。
/FLAGS=(CAPTIVE)
キャプティブ・アカウントには,表 7-3
に説明する修飾子も必要です。
表 7-3: キャプティブ・アカウントの定義に必要な修飾子
必須設定以外に,アカウントには次の追加の特性を指定できます。
キャプティブ・アカウントに対して,ウェルカム・メッセージと電子メールを無効にできます。これには,DISWELCOME,DISMAIL,および DISNEWMAIL ログイン・フラグを設定します。
会話型アカウントの使用を,ローカル・ターミナルからのみに限定することができます。アカウントを作成する際に,修飾子 /NODIALUP,/NOREMOTE,/NOBATCH,および /NONETWORK を追加します。
アプリケーションには,特別な要件が存在する場合があります。操作モードを制限するため,/NODIALUP などの追加の AUTHORIZE 修飾子をアカウントに適用しなければならない場合があります。プロセスを実行できる時間帯と曜日を制限することも検討します。
/CLITABLES 修飾子を使用して DCL テーブルの特別なセットを定義したり,DCL コマンド・プロシージャを使用することで DCL をエミュレートすることができます。DCL コマンド・プロシージャを用いて DCL をエミュレートするよりも,DCL テーブルを定義する方が効率的です。DCL テーブルの定義の詳細については,『OpenVMS システム管理ユーティリティ・リファレンス・マニュアル』の A-L にあるコマンド定義ユーティリティ (CDU) の説明を参照してください。/CLITABLES 修飾子により定義される DCL テーブルは,ネットワーク・ジョブ (TASK オブジェクトを使用するネットワーク・ジョブなど) で使用されない点に注意してください。
複数の特権を指定できますが,キャプティブ・アカウントに TMPMBX 以外の特権を指定しなければならない場合はまれです。
キャプティブ・アカウントのディスク使用量は,必要な量に制限できます。
7.2.4.2 キャプティブ・コマンド・プロシージャのガイドライン
サイトのキャプティブ・コマンド・プロシージャを記述する際には,必ず次のガイドラインに従ってください。
コマンド・プロシージャで,DCL の READ/PROMPT コマンドを使用します。たとえば,日付を入力するようユーザに求めるには,コマンド・プロシージャに次のコマンドを入力します。
READ/PROMPT="Enter date: " SYS$COMMAND DATE
キャプティブ・コマンド・プロシージャでは,INQUIRE コマンドの使用は避けます。このコマンドは,あらかじめ行っておく必要のある ON 宣言により処理されないと,プロセスが削除されるエラーを引き起こします。
ユーザの入力を求めた場合,入力された内容を絶対にそのまま実行しないでください。まず,想定している内容とユーザの入力を比較し,アポストロフィ ('),アットマーク記号 (@),ドル記号 ($),引用符 ("),アンパサンド(&) ,ハイフン (-) などの不正な文字がないか調べます。
「"x」(x にはユーザが入力した文字が含まれる) という形式のコンストラクションの使用は避けます。ユーザが入力した記号を,制限付きコマンド・プロシージャを使用して評価することを許可しないでください。レキシカル関数を使用すると,コマンド・プロシージャが損なわれる可能性があります。
キャプティブ・コマンド・プロシージャでは,@TT: という文字を含む行を実行することは避けます。
ファイルの変更を検出するために,キャプティブ・コマンド・プロシージャとそのホーム・ディレクトリに,Audit ACE を適用します。Audit ACE の詳細については,9.2.1.2 項を参照してください。
キャプティブ・アカウント・ユーザに,ファイルの作成およびファイルに対するその他の操作を実行する許可を与えた場合は,ログイン・コマンド・プロシージャとそのディレクトリに対する書き込みアクセス権が与えられないことを確認します。実行アクセス権は必要です。
コマンド・プロシージャの機能にテキストの準備が必要である場合は,ユーザにテキスト・エディタへのアクセス権を与えなければならない場合があります。ただし,注意が必要です。TECO や DECTPU などのエディタでは,ユーザがファイルを操作したり,エディタから出て DCL インタフェースに移れるため,危険性があります。このような環境を設計する際には,大部分のテキスト・エディタは (アカウントのアクセス権の範囲内で) ファイルを読み書きできることに留意してください。ユーザに必要なツールを提供しても,ユーザがキャプティブ環境から抜け出ることは許可しないエディタを提供するようにします。
例 7-3
と
例 7-4
に,特権アカウントと非特権アカウント用のコマンド・プロシージャの例を示します。
例 7-3: 特権アカウント用のキャプティブ・プロシージャの例
$ if f$mode() .nes."INTERACTIVE" then $logout
$ term = f$logical("SYS$COMMAND")
$ if f$locate("_T", term) .eq.0 then $goto allow
$ if f$locate("_OP",term) .ne.0 then $logout
$allow:
$ set control=(y,t)
例 7-4: 非特権アカウント用のキャプティブ・コマンド・プロシージャ の例
$ deassign sys$input
$ previous_sysinput == f$logical("SYS$INPUT")
$ on error then goto next_command
$ on control_y then goto next_command
$ set control=(y,t)
$
$next_command:
$ on error then goto next_command
$ on control_y then goto next_command
$
$ if previous_sysinput .nes. f$logical("SYS$INPUT") then deassign sys$input
$ read/end=next_command/prompt="$ " sys$command command
$ command == f$edit(command,"UPCASE,TRIM,COMPRESS")
$ if f$length(command) .eq.0 then goto next_command
$
$ delete = "delete"$ delete/symbol/local/all
$ if f$locate("@",command) .ne. f$length(command) then goto illegal_command
$ if f$locate("=",command) .ne. f$length(command) then goto illegal_command
$ if f$locate("F$",command) .ne. f$length(command) then goto illegal_command
$ verb = f$element(0," ",command)
$
$ if verb .eqs."LOGOUT" then goto do_logout
$ if verb .eqs."HELP" then goto do_help
$
$ write sys$output "%CAPTIVE-W-IVVERB, unrecognized command \",verb,"\"
$ goto next_command
$
$illegal_command:
$ write sys$output "%CAPTIVE-W-ILLEGAL, bad characters in command line"
$ goto next_command
$
$do_logout:
$ logout
$ goto next_command
$
$do_help:
$ define sys$input sys$command
$ help
$ goto next_command
限定アクセス・アカウントの中には,キャプティブ・アカウントよりも制限の緩い環境を必要とするものがあります。たとえばネットワーク・オブジェクトを実行するアカウントは,DCL に一時的にアクセスできる必要があります。そのようなアカウントは,キャプティブ・アカウントではなく,制限付きアカウントとして設定する必要があります。制限付きアカウントは,ログイン・シーケンスが完了すると,通常のアカウントと区別できなくなります。制限付きアカウントの目的は,SYLOGIN,LOGIN,およびそれらの子プロセスが完全に実行できる,信頼できるログインを確保することです。
制限付きアカウントを作成する際に,登録ユーティリティを使用し,次の修飾子を追加することで制限付きアカウントを定義します。
/FLAGS=(RESTRICTED)
このフラグにより,アカウントが制限付きアカウントとして設定されます。制限付きアカウントは,7.2.4 項に示したキャプティブ・アカウントと機能と同じ機能を提供します。ただし制限付きアカウントでは,システムとプロセスのログイン・コマンド・プロシージャを実行することで,DCL コマンド・レベルへのユーザ・アクセスを許可する点が異なります。
コマンド・プロシージャの開始後,ユーザに Ctrl/Y キー・シーケンスの入力を許可することが適切である場合があります。次に例を示します。
制限付きログイン・コマンド・プロシージャの実行時に,特定の時点でユーザに Ctrl/Y 機能を提供したい場合があります。例 7-4 に示すように,プロシージャの中で Ctrl/Y 機能を評価したい場所に,ON CONTROL_Y コマンドを追加します。
最終的に制御をユーザに渡す制限付きコマンド・プロシージャを使用したい場合があります。たとえば,追加のセキュリティ検証を実行する SYLOGIN.COM コマンド・プロシージャが考えられます。その有効性を保証するには,プロシージャの実行が可能である必要があります。ただし,SYLOGIN.COM が必要な処理を終えたら,制御をユーザに渡すようにできます。このためには,そのアカウントを制限付きアカウントとしてマーク付けし,制御をユーザに解放する準備ができた時点で,DCL の SET CONTROL=Y コマンドを入力します。
特定のターミナルを使用する個人を,特定のアプリケーション・プログラムに強制的にログインさせるには,そのアプリケーション用の独立したキャプティブ・アカウントを作成します。続いて,システム管理ユーティリティ (SYSMAN) を使用して,対象となるユーザに対して新しいアカウントへの自動ログインを設定します。
自動ログイン用に設定したターミナルは,指定のアカウント用にのみ使用できます。これは,コンピュータを使い慣れていない人々に使用されるアプリケーション・ターミナルに最適です。
自動ログイン機能では,ユーザ名の入力を求めるプロンプトが表示されません。その他すべてのログイン機能 (システム・パスワード,第 1 および第 2 パスワード,およびメッセージ) は,有効にしてあれば通常どおり機能します。
パスワードの利用は任意です。ターミナルの設置場所にいるすべてのユーザにアカウントを開放する場合は,パスワードを無効にします。パスワードが不要である場合,ユーザがログイン時に入力するデータはありません。オペレーティング・システムは Break キーまたは Return キーが押されると自動的にターミナルのログインを行い,そのアカウントがキャプティブ・ログイン・コマンド・プロシージャの制御のもとにある場合,直ちにアプリケーションに入ります。
自動ログイン・ファイル (ALF) には,ターミナルと,アプリケーション・アカウントへのアクセス権限が付えられたユーザのリストがあります。しかし自動ログイン・アカウントは,ALF ファイルにリストアップされているターミナル以外のターミナルや他の場所からアクセスできる可能性があるため,特にパスワードが設定されていない場合,保護が必要になります。次の対策を講じます。
必要に応じて,AUTHORIZE 修飾子の /NODIALUP,/NONETWORK,および /NOREMOTE を使用して,ネットワーク・アクセスおよびダイアルアップ・アクセスを制限します。
アカウントの UAF レコードの AUTOLOGIN フラグを設定します。このフラグにより, アカウントは,自動ログイン,バッチ,およびネットワーク代理にのみ使用可能になります。
ゲスト・アカウントとは,共通のアカウントを通じて,システム上のリソースへの複数の遠隔ユーザ・アクセスを許可する,キャプティブ・アカウントまたは制限付きアカウントの形式です。たとえば,ネットワーク経由でユーザがシステムにアクセスして,問題を報告したり,会社の連絡事項を読む場合に使用します。
ゲスト・アカウントを設定することはお勧めできません。ゲスト・アカウントは,権限がいくら制限されていても,悪意のあるユーザに,システムのセキュリティを危うくする機会を与えてしまいます。ゲスト・アカウントが必要な場合でも,ほとんどは (限定アクセス・アカウントでもある) 特別な代理ログイン・アカウントで処理できます。
ゲスト・アカウントがどうしても必要な場合は,アカウントの安全を確保するために,次の手順に従います。
ゲスト・アカウントには,わかりにくいパスワードを使用し,パスワードを頻繁に変更します。GUEST/GUEST や USER/USER などの,簡単に推測できるようなアカウント名とパスワードの組み合わせは絶対に使用しないでください。
アカウントの使用を許可する対象となるユーザのリストを維持します。パスワードを定期的に変更すると,このリストを最新の状態に保つ手助けになります。
独立した UIC グループにゲスト・アカウントを設定します。ゲスト・アカウントがシステム・グループに属していないことを確認します。
AUTHORIZE の MODIFY コマンドを次のように使用して,デフォルトのログイン・コマンド・プロシージャを SYS$MANAGER ディレクトリに配置します。
MODIFY guest-account/LGICMD=SYS$MANAGER:filename.COM
ゲスト・アカウントを制限付きアカウントまたはキャプティブ・アカウントにします。これには,それぞれ AUTHORIZE 修飾子の /FLAGS=RESTRICTED または /FLAGS=CAPTIVE を設定します。
ゲスト・アカウントが制限付きアカウントとして設定する場合,AUTHORIZE 修飾子の /PRCLM=0 を使用して,そのアカウントが作成できるサブプロセスの数を 0 に制限します。システム・パラメータ PQL_MPRCLM も 0 に設定されていることを確認します。
ゲスト・アカウントには TMPMBX 特権のみを割り当てます。
エラー状態を処理するため,デフォルトのログイン・コマンド・プロシージャには次のコマンドを追加します。
SET ON
SET NOCONTROLY
ON ERROR THEN LOGOUT/BRIEF
システムで LOGOUT がグローバル・シンボルとして定義されていて,それがコマンド・プロシージャを指している場合 (これを確認するには,DCL の SHOW SYMBOL LOGOUT コマンドを入力します),アカウントのデフォルトのログイン・コマンド・プロシージャに次の DCL コマンドを追加します。
DELETE/SYMBOL LOGOUT/GLOBAL
このコマンドは,ユーザがログアウト時に Ctrl/Y を押すことで制限付きアカウントを破る操作を不可能にします。
部外者がゲスト・アカウントからバッチ・ジョブを実行してシステム・リソースを不正に使用するのを防ぐには,アカウントを作成する際に AUTHORIZE 修飾子の /NOBATCH を追加します。
ゲスト・アカウント UIC のディスク使用量を,必要な量に制限します。
DCL の INQUIRE コマンドが,どのコマンド・プロシージャにも現れないようにします。
一般的に代理ログイン・アカウントは,制限付きアカウントとして設定する必要があります。代理ログイン・アカウントは,遠隔ユーザがパスワードを指定しなくてもローカル・アカウントにアクセスできるようにします。代理ログイン・アカウントについては,12.3.3 項に説明があります。推奨事項の多くは,制限付きアカウントの場合と同じです。
7.2.9 外部認証アカウント
外部認証アカウントは,ユーザの SYSUAF レコードに EXTAUTH フラグでマーク付けされているアカウントです。これにより,該当するユーザは外部ユーザ ID とパスワードを使用して,OpenVMS ログイン・プロンプトからログインできます。外部認証の詳細については,7.4 節を参照してください。
7.3 パスワードを使用したシステム・アクセスの制御
平均的なセキュリティ保護を必要とするサイトでは,必ずパスワードを使用する必要があります。より高度なセキュリティを必要とするサイトでは,多くの場合,生成パスワード方式 (7.3.2.4 項を参照) だけでなく,システム・パスワードも利用します。
この節では,パスワード管理について説明します。
7.3.1 パスワードのタイプ
自動ログイン・アカウントを除き,すべてのユーザにはログイン用に少なくとも 1 つのパスワードが必要です。セキュリティ要件が中または高であるサイトでは,複数のパスワードを利用する場合があります (表 3-2表 3-2 を参照)。
外部認証ユーザは,OpenVMS パスワード・プロンプトで外部パスワードを入力します。詳細については 7.4 節を参照してください。
この節では,DCL および AUTHORIZE コマンドを使用してパスワードを割り当てる方法を説明します。
7.3.1.1 第 1 パスワード
AUTHORIZE を使用して新規ユーザのアカウントを開設する際には,そのユーザにユーザ名と初期パスワードを与える必要があります。一時初期パスワードを割り当てる際には,3.8 節「パスワードの保護に関するガイドライン」で推奨している,すべてのガイドラインに従ってください。パスワードを割り当てる際には,わかりやすいパターンを避けます。自動パスワード・ジェネレータを使用することも可能です。
AUTHORIZE を使用したアカウントの開設時に自動パスワード・ジェネレータを使用するには,ADD または COPY コマンドのいずれかに /GENERATE_PASSWORD 修飾子を追加します。システムによって,自動的に生成されたパスワードの選択肢のリストが提示されます。これらのパスワードから 1 つを選択し,アカウントの設定作業を続けます。
注意
/GENERATE_PASSWORD 修飾子と /PWDMINIMUM 修飾子の併用には,いくつかの制限事項があります。生成パスワードの長さは,必ず 12 文字です (7.3.2.3 項を参照)。/PWDMINIMUM の値と,生成パスワードの間に矛盾がある場合,オペレーティング・システムによって短い方の値が使用されます。
AUTHORIZE を使用して指定するパスワードは,デフォルトでは期限切れとして定義されます。これにより,ユーザは最初にログインした時に,初期パスワードを強制的に変更しなければなりません。詳細については,7.3.2 項を参照してください。ユーザが正しく対処できるように,ユーザ教育に必ず最初のログインに関する情報を含めるようにします。AUTHORIZE を使用して定義するパスワードを事前に期限切れにしたくない場合は,パスワードを入力する際に修飾子 /NOPWDEXPIRED を追加します。これは,ユーザが自分でパスワードを設定することが許可されないアカウントの場合に必要です。
事前に有効期限が切れているパスワードは,UAF レコードのリスト内では一目でわかります。パスワードの最終変更日のエントリに,次の注釈が付いています。
(pre-expired)
3.2.1 項「システム・パスワードの入力」では,特定のターミナルへのアクセスを制御するシステム・パスワードを説明しています。システム・パスワードは,次のような,不正使用のターゲットになる可能性があるターミナルへのアクセスを制御するために使用します。
アクセスのためにダイアルアップ回線または公衆データ・ネットワークを使用するすべてのターミナル
大学のコンピュータ室にあるターミナルなど,誰でもアクセスが可能で,セキュリティ保護が厳しくない回線に接続されたターミナル
あまり頻繁に検査されないターミナル
予備デバイスとしてのみの使用が想定されているターミナル
セキュリティ操作用に確保しておきたいターミナル
登録ユーティリティを起動し,次のコマンドを入力して,システム・パスワード用に SYSUAF データベースにレコードを作成します。
UAF> MODIFY/SYSTEM_PASSWORD=password
注意
SYSUAF データベースにレコードを作成する必要があるのは,システムにシステム・パスワードを初めて設定する時のみです。ただし,レコードが存在しない場合,SET PASSWORD/SYSTEM コマンドを実行すると次のエラーが返されます。
%SET-F-UAFERR, error accessing authorization file -RMS-E-RNF, record not found
どのターミナルにシステム・パスワードが必要かを判断します。続いて,各ターミナルに対して,DCL の SET TERMINAL/SYSPWD/PERMANENT コマンドを入力します。適切なターミナルを選択したことを確認したら,ターミナルの設定作業がシステム・スタートアップ時に自動的に行われるように,上記のコマンドを SYS$MANAGER:SYSTARTUP_VMS.COM に組み込みます。ターミナルに対して,DCL の SET TERMINAL/NOSYSPWD/PERMANENT コマンドを呼び出すことで,そのターミナルに対する制限をいつでも取り除くことができます。
システム・パスワードを決めて,DCL の SET PASSWORD/SYSTEM コマンドを使用してそのパスワードを実装します。これには SECURITY 特権が必要です。コマンドを実行すると,ユーザ・パスワードと同じように,パスワードの入力を求められ,確認のために再度入力を求められます。自動パスワード生成を要求するには,/GENERATE 修飾子を追加します。
(DCL の SET HOST コマンドにより実現される) ログインの遠隔クラス用のシステム・パスワードの使用を有効にするには,AUTOGEN を使用して,デフォルトのターミナル属性パラメータの適切なビットを設定します。これは,パラメータ TTY_DEFCHAR2 の第 19 ビット (16 進値で 80000) です。この値を設定した場合には,この機能を使用したくないターミナルごとに,DCL の SET TERMINAL/NOSYSPWD/PERMANENT コマンドを実行してシステム・パスワードを無効にする必要があります。先述のように,テストが済んだ SET TERMINAL コマンドを,SYS$MANAGER:SYSTARTUP_VMS.COM に組み込むことを検討してください。続いて,先に示した手順に従って,システム・パスワードを設定します。
システム・パスワードを選択する際には,3.8 節「パスワードの保護に関するガイドライン」の推奨事項に従ってください。長さは 6 文字以上で,意味のある単語ではない,アルファベットと数字で構成される文字列を選択します。システム・パスワードには有効期限はありませんが,頻繁にパスワードを変更するようにします。パスワードを知っている人物がグループを離れたら,必ずシステム・パスワードを直ちに変更します。システム・パスワードは,パスワードを知っておかなければならないユーザとのみ共有します。
システム・パスワードは,独立した UAF レコードに格納され,表示できません。DCL の SET PASSWORD/SYSTEM コマンド (システム・パスワードを設定および変更する通常の手段) では,パスワードを変更する前に,それまでのシステム・パスワードを入力する必要があります。古いパスワードを指定せずにシステム・パスワードを変更するには,次のコマンドのように,AUTHORIZE の MODIFY/SYSTEM_PASSWORD コマンドを使用します。
UAF> MODIFY/SYSTEM_PASSWORD=ABRACADABRA
システム・パスワードの主な機能は,万人がアクセできるポートに最前線となる防御を施し,侵入を試みる者がシステムの身元を知ってしまうことを防ぐことです。ただし,権限を持つユーザが,一部のターミナルでシステム・パスワードが要求されることを知らない場合,システム・パスワードを要求すると混乱が生じる場合があります。ターミナルやシステムの障害の誤報告を防ぐために,ユーザに割り当てられているターミナルの中で,どのターミナルがシステム・パスワードを要求するかをユーザに知らせます。
ダイアルアップ回線または公衆アクセス回線経由のアクセス制御にシステム・パスワードを適用していない場合は,システム・パスワードを知っているユーザがごくわずかである場合があります。パスワードを知っている担当者に連絡が取れない場合や,担当者がパスワードを忘れてしまった場合は,運用に支障をきたします。この問題を解決するには,AUTHORIZE を起動し,MODIFY/SYSTEM_PASSWORD コマンドを入力します。これには,SYSPRV 特権が必要です。
7.3.1.3 第 2 パスワード
セキュリティの保護レベルが高いサイトでは,ユーザ・アカウントに第 2 パスワードを要求できます。一般的にユーザは第 2 パスワードを知らず,第 2 パスワードを入力する監督者などの重要人物が同席する必要があります。業務によっては,アカウントが使用されている間,監督者が同席し続ける場合もあります。監督者は第 2 パスワードを空文字列に変更することで削除できるため,第 2 パスワードの有効性は,それを提供する監督者の信頼性に完全に依存しています。
パスワードを二重に使用すると手間がかかりますが,次のようなメリットがあります。
二重パスワードを広範に使用すると,監督者などの重要人物が各ユーザをチェックできるため,二重パスワードは,ログイン時の各ユーザの身元確認に役立ちます。
限定的に使用すると,二重パスワードにより,2 人が同席している場合にのみログイン可能なアカウントとなります。
また二重パスワードは,ユーザが DECnet ソフトウェア経由でアカウントにアクセスする場合の,アクセス制御文字列の使用を防止できます。
セキュリティ要件が中程度であるサイトでは,パスワードが変更され,パスワード・ジェネレータの使用が強制された後に説明のつかない侵入が発生した場合に,二重パスワードを道具として使用できます。問題のアカウントを選択し,それらをこの制限の一時的な対象にします。第 2 パスワードによる個人確認を実施すると問題が生じないようであれば,人選に問題があることが判明します。権限を持つユーザが,そのアカウントを不正使用している 1 人または複数のユーザに,そのアカウントのパスワードを漏洩している可能性が高いと考えられます。
二重パスワードを実装するには,AUTHORIZE 修飾子の /PASSWORD を使用します。たとえば,新規アカウントに二重パスワードを適用するには,AUTHORIZE を起動し,次の形式の ADD コマンドを使用します。
ADD newusername /PASSWORD=(primarypwd, secondarypwd)
既存のアカウントに第 2 パスワードを適用するには,次の形式の MODIFY コマンドを使用します。
MODIFY username /PASSWORD=("", secondarypwd)
このコマンドは,アカウントに対してすでに設定されている第 1 パスワードには影響しませんが,以降のすべてのログインにおいて,必ず第 2 パスワードを入力するよう求めるようになります。第 2 パスワードのパスワード有効期間と長さの下限値には,第 1 パスワードと同じ値が適用されます。このアカウントに対して /FLAGS=GENPWD 修飾子が指定されている場合,第 2 パスワードの変更は,自動パスワード・ジェネレータの制御下でのみ可能です。 ユーザ名パラメータにワイルドカードを使用して,1 つのコマンドで複数のユーザに第 2 パスワードを適用することはできません。
注意
DCL の SET HOST コマンドを使用して,遠隔アクセスを必要とするアカウントに第 2 パスワードを指定できますが,ネットワーク・ファイル・アクセスを必要とするアカウントには,アクセス制御文字列を使用して第 2 パスワードを指定することはできません。第 2 パスワードを持つアカウントをネットワーク・アクセス (遠隔ファイル・アクセスなど) に使用する場合,アカウントのアクセス元となるすべての遠隔ノードに対する代理アクセスを設定する必要があります。
コンソール・ターミナルは,CPU の処理を制御するため,結果的にシステムの処理を制御します。セキュリティ要件が高いサイトでは,パスワード・セキュリティ機能が使用できる場合,その使用を検討するべきです。一部の VAXstation 3100 以降のモデルは,この機能を提供します。
コンソール・パスワードを有効にすると,オペレータはコンソール・モードで特権コマンドを使用する前に,コンソール・パスワードを入力する必要があります。特権コマンドには,次の 2 つのタイプが含まれます。
SET,EXAMINE,DEPOSIT,FIND,SHOW など,メモリとレジスタを調査または変更するコマンド。
BOOT や START など,コンソール・モニタから別のプログラムに CPU の制御を移すコマンド。パラメータなしで BOOT コマンドを実行する必要があるデフォルト・ブートの呼び出しは,特権コマンドではないため,パスワードなしで実行できます。
コンソール・パスワードの機能を有効にするには,次の手順を実行します。
次のように特権コマンドを入力します。
>
>> SET PSWD
コマンドを入力すると,コンソールはパスワードの入力を求めます。
1 >
>>
新しいパスワードを入力し,Return キーを押します。パスワードの入力時に,コンソールはパスワードを表示しないことに注意してください。
パスワードは,長さ 16 文字,(0 〜 9 と A 〜 F の) 16 進数文字から成る文字列である必要があります。
パスワード文字列の長さが正しければ,コンソールは確認のため新しいパスワードを再入力するよう求めます。
2 >
>>
新しいパスワードを再入力し,Return キーを押します。ここでもパスワードは表示されない点に注意してください。
次のコマンドを使用して,パスワード・セキュリティ機能を有効にします。
>
>> SET PSE 1
ワークステーションを特権モードにして,すべてのコンソール・コマンドをアクセス可能にするには,LOGIN コマンドを使用します。SHOW PSE コマンドを使用して,パスワード機能の現在のステータスを表示できます。1 が表示された場合,パスワード機能は有効で,0 が表示された場合は無効です。この機能を無効にするには,引数に 0 を指定して SET PSE コマンドを使用します。
パスワードは不揮発性のメモリに保存されるため,パスワードを忘れてしまった場合は,カスタマ・サポート・センターに連絡する必要があります。
7.3.1.5 認証カード
パスワードとアカウント情報を配布する方法の代わりに,認証カードやスマート・トークンと呼ばれる携帯型のデバイスをシステム・ユーザに持たせるサイトもあります。
認証デバイスには,ユーザのパスワードがプログラムで組み込まれています。ハードウェア設計の複雑さに応じて,これらのデバイスは追加のログイン情報 (アカウント名や会計参照番号など) をサポートすることもできます。サード・パーティ・ベンダからは,さまざまな認証デバイスが発売されています。こうしたデバイスは,ログイン・プログラム (LOGINOUT.EXE) と通信するソフトウェア・モジュールによりサポートされています。認証カードをサポートする LOGINOUT ルーチンの詳細については,『HP OpenVMS Utility Routines Manual』を参照してください。
7.3.2 最低限のパスワード基準の適用
セキュリティ管理者は,AUTHORIZE を使用して,個々のユーザに最低限のパスワード基準を課すことができます。具体的には,AUTHORIZE によって指定される修飾子とログイン・フラグにより,パスワードの有効期限,期限切れになった時にユーザにパスワード変更を強制するかどうか,およびパスワードの最低の長さを制御します。
7.3.2.1 パスワードの有効期限
AUTHORIZE 修飾子の /PWDLIFETIME を使用すると,パスワードの最大有効期間を設定できます。ユーザは有効期間が切れる前にパスワードを変更する必要があり,変更しないとアカウントへのアクセス権を失います。デフォルトでは,/PWDLIFETIME の値は 90 日です。この修飾子に対して別のデルタ時間値を指定することで,ユーザ・パスワードの変更頻度の要件を変更できます。たとえば,30 日ごとにパスワードを変更するようユーザに要求するには,この修飾子を /PWDLIFETIME=30-0 と指定します。
/PWDLIFETIME 修飾子は,第 1 と第 2 の両方のユーザ・パスワードに適用されますが,システム・パスワードには適用されません。ユーザのそれぞれの第 1 と第 2 のパスワードの最大有効期間は同じです。ただし,それぞれのパスワードは異なる時期に変更することができます。ユーザがパスワードの変更を完了すると,そのパスワードの時計が直ちにリセットされます。新しいパスワードの値は,/PWDLIFETIME により指定される期間だけ変更せずにおけます。
/NOPWDLIFETIME 修飾子は,第 1 と第 2 のパスワードが期限切れにならないことを指定します。
注意
/NOPWDLIFETIME を指定すると,初期パスワードの再設定を強制するデフォルトの動作が無効になります。ただし,初期パスワードを再設定させたいけれども,パスワードが期限切れにならないようにしたい場合は,/PWDLIFETIME="9999-" と指定します。
AUTHORIZE には,第 1 と第 2 のパスワードの有効期限に関する 2 つのログイン・フラグもあります。2 つのフラグ PWD_EXPIRED と PWD2_EXPIRED は,/FLAGS 修飾子を使用して指定します。第 1 のフラグ PWD_EXPIRED は,第 1 パスワードの有効期限が切れてから,ユーザにそのパスワードを変更する最後のチャンスが 1 回与えられ,なおかつユーザがパスワードを変更しなかった場合に設定されます。第 2 のフラグ PWD2_EXPIRED は,第 2 パスワードの有効期限が切れてから,ユーザに第 2 パスワードを変更する最後のチャンスが 1 回与えられ,なおかつユーザがパスワードを変更しなかった場合に設定されます。PWD_EXPIRED と PWD2_EXPIRED のいずれかが設定されていると,ユーザは最後のログイン時にパスワードを変更する最後のチャンスを行使しなかったため,アカウントへのログインはできません。
ユーザがパスワードの変更に成功すると,システムは直ちにフラグを適切にリセットします。第 1 パスワードが変更されると,PWD_EXPIRED フラグは直ちに NOPWD_EXPIRED になります。同様に,第 2 パスワードが変更されると,PWD2_EXPIRED フラグは直ちに NOPWD2_EXPIRED になります。セキュリティ管理者は,AUTHORIZE を起動してフラグをリセットし,パスワードを再設定するチャンスをユーザに再度与えることができます。
パスワードの有効期間を設定すると,ユーザは定期的にパスワードを変更しなければなりません。ユーザに応じて,異なる有効期間を設定できます。一般的に,重要なファイルにアクセスできるユーザには,パスワードの有効期間を最も短くする必要があります。
システム・パスワードの有効期間に制限はありません。システム・パスワードを定期的に変更するのは,セキュリティ管理者の責任です。
注意
SYS$PASSWORD_HISTORY_LIFETIME は,UAF パラメータの PWDLIFETIME よりも大きくする必要があります。SYS$PASSWORD_HISTORY_LIFETIME の値を PWDLIFETIME よりも小さい値に設定すると,SYSUAF でのパスワードの有効期限が切れる前に,履歴ファイルが原因で期限切れになります。これでは,パスワード履歴ファイルの目的が達成できません。PWDLIFETIME パラメータの詳細については,7.3.2.2 項を参照してください。
デフォルトでは,ユーザはログイン時に,期限切れのパスワードを変更するように求められます。パスワードの有効期限が切れているユーザには,ログイン時に新しいパスワードの入力を求められます。このパスワード機能は,パスワードの有効期限が /PWDLIFETIME 修飾子で指定されている場合に限り有効です。
パスワードの強制変更を無効にするには,ADD または MODIFY コマンドに対して,次の修飾子を指定します。
/FLAGS=DISFORCE_PWD_CHANGE
パスワード強制変更機能を無効している場合,次のようにログイン・フラグをクリアすることで,その機能を再度有効にすることができます。
/FLAGS=NODISFORCE_PWD_CHANGE
ログイン時に,期限切れのパスワードを変更するように求められたユーザは,Ctrl/Y を押すことでログインをキャンセルできます。
注意
第 2 パスワードが有効で,第 1 と第 2 の両方のパスワードが期限切れになっている場合は,ユーザは両方のパスワードの変更を求められます。ユーザが第 1 パスワードを変更してから,第 2 パスワードを変更する前に Ctrl/Y を押した場合,ユーザはログアウトされ,パスワード変更は記録されません。
AUTHORIZE の修飾子 /PWDMINIMUM を使用して,第 1 と第 2 の両方の,すべてのパスワード選択における文字数の下限を指定できます。下限値の指定にかかわらず,ユーザは最大 32 文字までのパスワードを指定できます。
ユーザのパスワードの最低の長さは,デフォルトの 6 文字か,/PWDMINIMUM 修飾子により指定する (10 以下の) 別の値になります。
Alpha システムでは,パスワード・ジェネレータは指定の長さのパスワードを作成しますが,上限は 10 文字です。
VAX システムでは,パスワード・ジェネレータは n 〜 n+2 の長さの範囲でパスワードを作成します (最低の長さ n は 1 〜 10 の範囲の値です)。そのため,生成されるパスワード (/GENERATE_PASSWORD または SET PASSWORD/GENERATE) の長さが,/PWDMINIMUM 修飾子により設定される値と矛盾する可能性があります。
n と,/PWDMINIMUM により設定される値との間に矛盾がある場合,オペレーティング・システムは小さい方の値を使用しますが,10 を超える値は使用しません。たとえば,/PWDMINIMUM 修飾子を使用して長さを 25 に設定した場合,オペレーティング・システムは 10 〜 12 文字のパスワードを生成します。システムは,値の違いを通知しません。
AUTHORIZE 修飾子の /GENERATE_PASSWORD により生成されるパスワードの長さは,ソース UAF レコード (DEFAULT レコードまたはコピーされた UAF レコード) の Pwdminimum フィールドに由来します。Pwdminimum フィールドは,/PWDMINIMUM により設定される値を使用して更新されるため,SET PASSWORD/GENERATE を使用して作成されるパスワードは,新しい値を使用します。
システム・パスワードには,最低限の長さはありません。ユーザ・パスワードに適用されるガイドラインは,同じようにシステム・パスワードにも適用されます。1 〜 32 文字の長さのシステム・パスワードを選択します。
7.3.2.4 生成パスワード
AUTHORIZE で /FLAGS=GENPWD 修飾子を使用すると,ユーザがパスワードを変更する際には,自動パスワード・ジェネレータの使用が強制されます。すべてのアカウントがこの修飾子を使用して作成されるサイトもあれば,セキュリティ管理者が選択できるサイトもあります。
侵入により危険にさらされることがあってはならない重要なデータにユーザがアクセスする予定がある場合,該当するユーザにはパスワード・ジェネレータを使用するよう要求します。
ポリシーとしてパスワード・ジェネレータを自発的に使用するよう要求していても,ユーザが協力しない場合は,該当するユーザ・アカウントに /FLAGS=GENPWD 修飾子を追加して,ユーザにパスワード・ジェネレータの使用を強制することができます。また,AUTHORIZE 修飾子の /FLAGS=LOCKPWD をユーザ・アカウントに追加して,ユーザがパスワードを変更できないようにすることも可能です。パスワードを変更する権限が与えられるのは,セキュリティ管理者のみになります。
7.3.2.5 サイト・パスワードのアルゴリズム
オペレーティング・システムは,暗号化によりパスワードを漏洩から保護します。OpenVMS のアルゴリズムでは,パスワードを平文文字列から暗号化テキストに変換し,システム・ユーザ登録ファイル (SYSUAF.DAT) に保存します。パスワード確認の際には,平文のパスワードではなく,必ず暗号化されたパスワードに基づいて確認が行われます。システム・パスワードの暗号化には,常にオペレーティング・システムにとって既知のアルゴリズムが使用されます。
AUTHORIZE で /ALGORITHM 修飾子を使用して,ユーザのパスワードの暗号化にオペレーティング・システムが使用するアルゴリズムを定義できます。選択肢としては,現在の OpenVMS のアルゴリズムと,サイト固有のアルゴリズムがあります。各アカウントの第 1 パスワードと第 2 パスワードには,別々に暗号化アルゴリズムを指定できます。構文は次のとおりです。
/ALGORITHM=keyword=type [=value]
あるユーザに OpenVMS のパスワード暗号化アルゴリズムを割り当てるには,次のようなコマンドを入力します。
UAF> MODIFY HOBBIT/ALGORITHM=PRIMARY=VMS
サイト固有のアルゴリズムを選択する場合は,次のように,アルゴリズムを識別する値を指定する必要があります。
UAF> MODIFY HOBBIT/ALGORITHM=CURRENT=CUSTOMER=128
『HP OpenVMS Programming Concepts Manual』には,カスタマ・アルゴリズムの使用に関する指示があります。セキュリティ管理者は,指定したアルゴリズム番号を認識してパスワードを適切に暗号化するコードを含んだ,サイト固有のシステム・サービスを作成する必要があります。この番号は,AUTHORIZE の MODIFY/ALGORITHM コマンドで使用する番号に対応する必要があります。
ユーザにサイト固有のアルゴリズムが割り当てられている場合,AUTHORIZE では SHOW コマンドにより表示される画面にこの情報が表示されます。
7.3.3 新しいパスワードの検査
通常,システムは新しいパスワードを,SYS$LIBRARY に保存されているシステム辞書と照合し,パスワードが母国語の単語ではないことを確認します。またシステムは,ユーザのパスワードの履歴リストを維持し,新しいパスワードをこのリストと照合して,古いパスワードが再利用されていないことを確認します。サイトにとって特に重要な単語が使用されていないかパスワードをチェックするイメージを開発してインストールすることで,パスワードをさらに詳しく検査できます。
7.3.3.1 システム辞書
DCL の SET PASSWORD コマンドは,ユーザが候補として入力したパスワードを (必要に応じて) 小文字に変換し,システム辞書内のエントリと照合して,パスワードが母国語の単語でないことを確認します。パスワード候補が辞書内に見つかった場合,有効なユーザ・パスワードとしては拒否されるため,ユーザは別のパスワードを入力する必要があります。
システム・パスワード辞書を変更して,サイトに関係のある単語を追加できます。システム辞書に単語を追加するには,次の手順を行います。次の手順では,許容できないと考えられるパスワードのファイルを保持することもできます。
辞書に追加するパスワードを含むファイルを作成します。各パスワードは,次のように独立した 1 行に配置し,小文字にする必要があります。
$ CREATE LOCAL_PASSWORD_DICTIONARY.DATA
somefamous
localheroes
Ctrl/Z
SYSPRV を有効にして,ローカルで作成した追加を結合します。
$ SET PROCESS/PRIVILEGE=SYSPRV
$ CONVERT/MERGE/PAD LOCAL_PASSWORD_DICTIONARY.DATA -
_$ SYS$LIBRARY:VMS$PASSWORD_DICTIONARY.DATA
辞書検索を無効にするには,AUTHORIZE で,/FLAGS 修飾子に対して DISPWDDIC オプションを指定します。
7.3.3.2 履歴リスト
オペレーティング・システムは,ユーザが過去 365 日間に使用したパスワードのリストを維持し,パスワード候補をこのリストと照合して,パスワードが再利用されていないことを確認します。
ユーザが新しいパスワードの作成に成功すると,システムは古いパスワードを履歴リストに入力して,ファイルを更新します。パスワード履歴リストは多数の単語を保持できますが,デフォルトでは上限が 60 になっています。この数を上回ると,ユーザは生成パスワードを使用する必要があります。 パスワードは,パスワード履歴リストに 365 日間 (または SYS$PASSWORD_HISTORY_LIFETIME により設定されるデフォルトの期間) 保持されます。ユーザ・アカウントを削除すると,システムによって,そのアカウントに属するすべてのパスワード記録が削除されます。
DCL の DEFINE コマンドを使用して,パスワード履歴リストの容量と有効期間のデフォルト設定を,表 7-4
に示す任意の値に変更できます。
表 7-4: パスワード履歴リストのデフォルト
| システム論理名 | デフォルト | 最小 | 最大 | 単位 |
SYS$PASSWORD_HISTORY_LIFETIME |
365 |
1 |
28000 |
日数 |
SYS$PASSWORD_HISTORY_LIMIT |
60 |
1 |
2000 |
絶対数量 |
たとえば,履歴リストの容量を最大 60 個のパスワードから最大 100 個に変更するには,SYS$MANAGER にあるコマンド・プロシージャ SYLOGICALS.COM に,次の行を追加します。
$ DEFINE/SYSTEM/EXEC SYS$PASSWORD_HISTORY_LIMIT 100
パスワード履歴リストの有効期間と,リストに記録できるパスワードの数には,相関関係があります。たとえば,パスワード履歴の有効期間を 4 年に延ばし,パスワードが 2 週間ごとに期限切れになっている場合,パスワード履歴の上限数量を少なくとも 104 (1 年間に 26 パスワードで,4 年間であるため) に増やす必要があります。パスワード履歴の有効期間と上限は動的に変更できますが,これらはクラスタを構成するすべてのノードで同じである必要があります。
第 2 パスワードを使用するサイトでは,第 2 パスワードの保存用に,アカウントに対するパスワードの上限を 2 倍にしなければならない場合があります。
パスワード履歴リストは SYS$SYSTEM にあります。論理名 VMS$PASSWORD_HISTORY を使用することで,そのリストをシステム・ディスクから移動できます。この論理名を /SYSTEM/EXEC として定義し,SYS$MANAGER:SYLOGICALS.COM に入れます。
履歴検索を無効にするには,AUTHORIZE で /FLAGS 修飾子に対して DISPWDHIS オプションを指定します。
7.3.3.3 サイト固有のフィルタ
システム辞書と履歴リストと照合してパスワードを検査する以外にも,サイト固有のパスワード・フィルタを作成して,パスワードが適切で,サイトから簡単に連想される単語ではないことを確認できます。フィルタを使用して,パスワードの長さ,特殊文字または文字の組み合わせの使用,製品名や個人名の名前の使用をチェックできます。
サイト固有の単語のリストを作成するには,ソース・コードを記述し,共有イメージを作成し,そのイメージをインストールし,最後にシステム・パラメータを設定してポリシーを有効にします。手順については,『HP OpenVMS Programming Concepts Manual』を参照してください。
サイト固有のパスワード・フィルタをインストールし,有効にするには,SYSPRV 特権と CMKRNL 特権の両方が必要です。INSTALL および SYSPRV ファイル・アクセス監査が有効になっていて,システム・パラメータに対する必要な変更がオペレータ・コンソールに記録される場合,パスワード・フィルタ・イメージをインストールすると,複数のセキュリティ・アラームが生成されます。
共有イメージには,ユーザがパスワードを変更するとパスワード設定ユーティリティ (SET PASSWORD) によって呼びだされる,2 つのグローバル・ルーチンが含まれています。
注意
この 2 つのグローバル・ルーチンの使用によって,平文のパスワード候補とそれに対応するクォドワードのハッシュ値の両方が得られます。悪意ある特権ユーザがこの機能を悪用すると,システムのセキュリティが危険にさらされるため,セキュリティ管理者は全員この機能を認識している必要があります。
パスワード・フィルタ・イメージとその親ディレクトリに,セキュリティ・アラーム用 ACE を適用することをお勧めします。手順については,『OpenVMS Programming Concepts Manual』を参照してください。
3.8 節「パスワードの保護に関するガイドライン」のすべての推奨事項に加えて,パスワードを保護するために次のガイドラインに従ってください。
SYSTEM などの標準アカウントのパスワードが安全であり,定期的に変更されていることを確認します。アカウント (FIELD や SYSTEST など) が使用されていない場合は,AUTHORIZE 修飾子の /FLAGS=DISUSER を使用してアカウントを無効にできます。
外部または社内のサービス組織には,システムへのサービス提供に使用するアカウントのパスワードを決定させないでください。このようなサービス・グループは,すべてのシステムで同じパスワードを使用する傾向があり,また通常そのアカウントは特権アカウントになっています。
ほとんど使用されないアカウントに対しては,AUTHORIZE 修飾子の /FLAGS=DISUSER を設定し,必要な時にのみアカウントを有効にします。使用後直ちにパスワードを変更し,次にサービス・グループがパスワードを必要とする際に,サービス・グループに新しいパスワードを知らせます。
使用されなくなったアカウントは削除します。
システムに対する攻撃の手掛かりとして使用される可能性があるため,ユーザ名のリストは,人目につく場所や盗難の可能性がある場所に放置しないでください。リスト・ファイルが必要な場合は,ACL を使用して,アクセスを特定の個人に限定します。
登録ファイルを適切に保護します。システム・ユーザ登録ファイル (SYSUAF.DAT),ネットワーク代理登録ファイル (NETPROXY.DAT),およびライト・リスト (RIGHTSLIST.DAT) は,システム・アカウント ([SYSTEM]) によって所有されていることに注意します。このグループには,他のユーザ・アカウントを作成しないでください。通常,これらの登録ファイルについては,デフォルトの UIC ベースのファイル保護で十分です。システム・アカウントは NET$PROXY.DAT ファイルも所有しています。
すべてのユーザが固有の UIC を持っていることを確認します。
次の対策を行うと,パスワードを知られる可能性が低くなり,パスワードが破られた場合や迂回された場合の損害をある程度まで抑えられます。
同じアカウントに複数のユーザがアクセスできるようにすることは避けます。
システムに接続されているダイアルアップ回線の電話番号を保護し,ダイアルアップ回線に対するシステム・パスワードの設定 (SET TERMINAL/SYSPASSWORD) を検討します。
ゲスト・アカウントや,顧客からの直接の問い合わせのためのアカウントなど,外部ユーザが使用できるアカウントがシステムにある場合は,これらのアカウントを,キャプティブ・コマンド・プロシージャに限定されるキャプティブ (限定アクセス) アカウントにします。キャプティブ・アカウントの設定の詳細については,7.2.4 項を参照してください。
パスワードを必要としないアカウントは,すべてキャプティブ・アカウントにします。
ユーザに対する特権の拡大は注意深く行います。
5.4.8 項「ファイル・セキュリティの最適化に関する推奨事項」で推奨しているすべてのテクニックを使用して,ファイルを保護します。
オペレーティング・システムのコンポーネントが含まれるファイルが,適切に保護されていることを確認します (8.9.2 項を参照)。
代理ログイン・アカウントを設定してほかのノードからのファイル・アクセスのみを許可する場合は,AUTHORIZE 修飾子の /NOINTERACTIVE と /NOBATCH を使用します。そのアカウントに対しては,会話型ログインとバッチ・ログインが無効になります。
外部認証により,ユーザは外部ユーザ ID およびパスワードを使用して,OpenVMS ログイン・プロンプトでログイン (サイン・オン) できます。外部認証機能としては,PATHWORKS と Advanced Server for OpenVMS の認証モジュールがサポートされており,OpenVMS ユーザに対して NT 互換の認証を行うことができます。
認証に成功すると,外部ユーザ ID は適切な OpenVMS ユーザ名にマッピングされ,適切なユーザ・プロファイルが取得されます。
デフォルトでは,外部認証はシステム・レベルとユーザ・レベルの両方で無効になっています。しかし,次の段落で説明するように,システム管理者が SYSTARTUP_VMS.COM で論理名を定義し,SYSUAF でユーザ・アカウントをマーク付けしている場合,PATHWORKS または Advanced Server for OpenVMS を起動すると,外部認証が自動的に有効になります。Advanced Server を有効にして外部認証プロセスに参加するために,Advanced Server が動作するクラスタ・メンバでは追加設定は必要ありません。
ユーザがログインする前に,システム管理者は次の作業を実行して,外部認証を有効にする必要があります。
SYSTARTUP_VMS.COM での論理名の定義
システム・ユーザ登録ファイル (SYSUAF) のユーザ・アカウントのマーク付け
これらの作業について,次の節で説明します。
外部認証論理名の定義
システム・レベルでは,SYS$SINGLE_SIGNON システム単位エグゼクティブ・モード論理名を定義することにより,外部認証を有効にします。
注意
SYS$SINGLE_SIGNON 論理名は,SYSTARTUP_VMS.COM で定義されていない場合は,PWRK$ACME_STARTUP.COM (PATHWORKS および Advanced Server for OpenVMS のスタートアップ・プロシージャ) により,自動的に 1 (有効) に定義されます。外部認証を無効にする場合や,SYS$SINGLE_SIGNON 論理名を別の値に設定する場合は,PATHWORKS または Advanced Server for OpenVMS を起動する前に,SYSTARTUP_VMS.COM で SYS$SINGLE_SIGNON を定義します。
スタンドアロンの Advanced Server 外部認証イメージのみをインストールし,Advanced Server 全体をインストールしていない場合は,論理名 PWRK$ACME_SERVER を定義する必要があります。Advanced Server をインストールする時,Advanced Server のファイルとプリント・サーバ・ソフトウェア全体をインストールするのではなく,外部認証イメージのみをインストールすることを選べます。詳細については,PATHWORKS (Advanced Server) または Advanced Server for OpenVMS の『インストレーションおよび構成ガイド』を参照してください。SYS$SINGLE_SIGNON 論理名ビットの詳細については,表 7-5を参照してください。
次に例を示します。
$ DEFINE/SYSTEM/EXECUTIVE SYS$SINGLE_SIGNON 3
ユーザ・レベルでは,SYSUAF レコードの EXTAUTH フラグにより,外部認証が有効になります。EXTAUTH フラグが設定されていると,当該ユーザが外部認証されることを示します。たとえば登録ユーティリティでは,次のようなコマンドを入力します。
$ SET DEFAULT SYS$SYSTEM
$ RUN AUTHORIZE
UAF> ADD username /FLAGS=([NO]EXTAUTH)
UAF> MODIFY username /FLAGS=([NO]EXTAUTH)
登録ユーティリティの EXTAUTH フラグの詳細については,『OpenVMS システム管理ユーティリティ・リファレンス・マニュアル』の A-L にある SSL for OpenVMS を参照してください。SYS$GETUAI および SYS$SETUAI システム・サービスの UAI$_FLAGS アイテム・コードにおける UAI$V_EXTAUTH ビットの詳細については,『HP OpenVMS System Services Reference Manual』の GETUTC-Z を参照してください。
7.4.1 外部認証のオーバーライド
ユーザは,ログイン・プロンプトで OpenVMS ユーザ名の後に /LOCAL_PASSWORD 修飾子を入力することで,外部認証の代わりにローカル認証を実行することを OpenVMS に通知できます。/LOCAL_PASSWORD 修飾子を使用する場合,ユーザは OpenVMS のユーザ名とパスワードを指定する必要があります。
/LOCAL_PASSWORD 修飾子を使用すると,システム管理者により確立されたセキュリティ・ポリシーを実質的にオーバーライドすることになるため,次の条件下でのみ使用が許可されます。
ログイン先のアカウントが,認証された特権として SYSPRV を持っている場合。
SYS$SINGLE_SIGNON 論理名で第 1 ビットが設定されている場合,(通常は外部認証される) 非特権ユーザはローカル認証を要求できます。
LOGINOUT に対する /LOCAL_PASSWORD 修飾子の詳細については,『HP OpenVMS Utility Routines Manual』を参照してください。
7.4.2 レイヤード・プロダクトおよびアプリケーションに対する影響
従来の SYSUAF ベースのユーザ名とパスワードに基づく認証メカニズムを使用する一部のレイヤード・プロダクトおよびアプリケーション ($HASH_PASSWORD または $GETUAI/$SETUAI を呼び出して OpenVMS パスワードを変更,フェッチまたは検証するソフトウェアなど) には,次のいずれかのケースで問題が発生する場合があります。
ユーザの外部ユーザ ID と OpenVMS ユーザ名が異なる環境で外部認証が使用された場合
ユーザの SYSUAF パスワードが外部ユーザ・パスワードと異なる場合
このようなケースでは,レイヤード・プロダクトまたはアプリケーションにおいてユーザ認証が失敗するという結果になります。
外部認証を受けるユーザに関しては,通常のシステム登録データベース (SYSUAF.DAT) を使用して,OpenVMS プロセス・プロファイル (UIC,特権,クォータなど) を構築し,個々のログイン制限を適用します。ただし,外部認証されるユーザと通常の OpenVMS ユーザとの間には,重要な相違点が 2 つあります。外部認証されるユーザには,次の点が該当します。
SYSUAF に保存されているパスワードは,ユーザ認証に使用されるパスワードではありません。
SYSUAF に格納されていて,OpenVMS プロセスの識別に使用されるユーザ名は,ログイン時のユーザ認証に使用される外部ユーザ ID とは,必ずしも同じではありません。
OpenVMS は,このような問題を最小限に抑えるために,ユーザの SYSUAF と外部ユーザ・パスワードを同期させようとします。ユーザの外部パスワードの最新コピーは SYSUAF に保持されますが,外部パスワードに OpenVMS で無効な文字が含まれている場合や,SYSUAF のパスワード同期がシステム管理者によって無効にされているような場合は,SYSUAF に保持されません。パスワード同期は,デフォルトでは有効になっています。
外部同期を有効にする場合は,次の操作を実行して,従来の SYSUAF ベースの認証を使用するレイヤード・プロダクトまたはアプリケーションとの非互換性を最小限にすることをお勧めします。
パスワード同期は無効にしないでください。
外部ユーザ・パスワードは,OpenVMS の有効なパスワード文字セット (A 〜 Z,0 〜 9,アンダースコア (_),およびドル記号 ($)) の文字に限定します。
外部認証サービスと OpenVMS の両方で,ユーザに同じユーザ名を割り当てます。
複数のユーザに,同じユーザ名またはユーザ ID を割り当てないでください。
$GETUAI および $SETUAI システム・サービスは,外部パスワードをサポートしていません。これらのサービスは,SYSUAF に格納されているパスワードのみを対象に動作し,更新は外部認証サービスに送信されません。これらのサービスを呼び出してパスワードや更新をチェックするソフトウェアを使用するサイトでは,外部認証を有効にしないでください。HP は,将来のリリースで,外部パスワードをサポートする新しいプログラミング・インタフェースを提供する予定です。
7.4.3 新しいパスワードの設定
外部認証を受けるユーザの場合,DCL の SET PASSWORD コマンドは,外部認証機能にパスワード変更要求を送信し,そのユーザの OpenVMS システム上でパスワードを変更します。
システム管理者は,外部認証機能により提供されるユーティリティを使用することで,外部認証を受けるユーザのパスワードを設定できます。NT 互換の認証の場合,PATHWORKS および Advanced Server for OpenVMS の ADMINISTRATOR SET PASSWORD コマンドを使用できます。この方法を使用すると,新しいパスワードは直ちに外部認証機能に通知されます。
7.4.4 パスワードとユーザ名における大文字小文字の区別
OpenVMS のユーザ名プロンプトに対して,ユーザ名を引用符で囲んで指定することで,大文字小文字の区別があるユーザ名を入力できます。ユーザ名を引用符で囲まない場合,LOGINOUT はユーザ名を大文字に変換します。
OpenVMS システムの本来の動作に戻すには,SYS$SINGLE_SIGNON 論理名の強制大文字変換構成ビット (第 3 ビット) を設定します。詳細については,表 7-5 を参照してください。
OpenVMS と LAN Manager のユーザ名は,大文字小文字が区別されません。そのため,OpenVMS のユーザ名または LAN Manager のユーザ ID を入力する場合,引用符は必要ありません。
LAN Manager のユーザ ID とパスワードに有効な文字は,標準の IBM 拡張 (8 ビット) ASCII 文字セットに属します。LOGINOUT と SET PASSWORD は,これらの文字列の大文字と小文字を維持したまま LAN Manager に渡しますが,外部認証サービスはこの文字セットに従って両方の文字列を大文字に変換します。
LAN Manager のパスワードには,OpenVMS のパスワードでは無効な文字を使用できます。LAN Manager のパスワードに,OpenVMS のパスワードでは無効な文字が含まれている場合,パスワード同期は行われず,メッセージが発行されます。
OpenVMS のパスワードは,7 ビット ASCII 文字の A 〜 Z,0 〜 9,_,および $ に限られます。
7.4.5 ユーザ名マッピングおよびパスワード検証
外部認証を受けるには,ユーザはOpenVMS ログイン・プロンプトに対して自分の外部ユーザ ID とパスワードを入力します。OpenVMS はユーザ名マッピングの実行時に,まず SYSUAF の中で一致する名前を探し,見つかった場合はその名前を使用します。見つからなかった場合は,外部認証データベースに一致するユーザ ID を照会します。認証に成功すると,適切なユーザ・プロファイルを取得するために,LAN Manager のユーザ ID は適切な OpenVMS ユーザ名にマッピングされ,ログイン・シーケンスが完了します。
外部認証は,(DECwindows を含む) 会話型ログインと,(代理ログインが使用されるか,ユーザ ID/パスワードが渡される) ネットワーク・ログインにおいてサポートされます。
システムの外部認証が有効になっている場合,DECnet プロキシまたは自動ログイン (ALF) データベースに指定されている対象ユーザ名が,SYSUAF に存在する必要があります。DECnet プロキシを使用したい外部認証ユーザは,SYSUAF ファイルと LAN Manager データベースにおけるユーザ名が同じである必要があります。
DECnet プロキシを使用する場合は,OpenVMS および LAN Manager のドメイン全体で一意のユーザ名を維持することが重要です。SYSUAF ファイルと LAN Manager データベースの同じユーザ名が,それぞれ異なるユーザを示す場合,代理としてのこのユーザ名の使用は,あいまいになります。LOGINOUT がログインのためにその名前を OpenVMS ユーザ名として扱う一方で,LAN Manager にある同じ名前が別の OpenVMS ユーザ名にマッピングされる可能性があります。このようになるのは,名前マッピング規則により,OpenVMS は LAN Manager の前に SYSUAF で一致する名前を検索するためです。
外部認証を受けるユーザは単独のパスワードを持つと見なされ,通常の OpenVMS パスワード・ポリシー (パスワードの有効期限,パスワード履歴,パスワード長の下限と上限) には従いませんが,その代わりに,外部認証機能の任意の定義済みポリシーに従います。無効なアカウント,モード時刻の制限,クォータなど,その他すべての OpenVMS アカウントの制限は有効なままになります。
外部認証を受けるユーザは,その SYSUAF レコードで EXTAUTH フラグが設定されていることにより識別されます。アカウントの EXTAUTH フラグが設定されていない OpenVMS ユーザは,外部認証の影響を受けません。
7.4.6 パスワード同期
パスワードは外部認証機能データベースを使用して検証されますが,OpenVMS は,外部パスワード・フィールドと SYSUAF パスワード・フィールドの同期を維持しようとします。
パスワード同期は,デフォルトでは有効になっています。
同期が行われるのは,外部認証ログインが正常に完了した時点です。外部パスワードが,SYSUAF ファイルに保存されているパスワードと異なる場合,LOGINOUT は外部パスワードを使用して SYSUAF パスワード・フィールドを更新します。OpenVMS と外部認証機能で使用できる有効な文字セットの違いにより,同期が不可能になる場合があります。
必要に応じて,パスワード同期を選択的に無効にできます。パスワード同期の有効/無効を制御する SYS$SINGLE_SIGNON 論理名ビットの詳細については,表 7-5を参照してください。
7.4.7 SYS$SINGLE_SIGNON 論理名ビットの指定
SYS$SINGLE_SIGNON システム単位エグゼクティブ・モード論理名は,外部認証の操作全般を制御します。この論理名は 16 進文字列に変換され,ビット・ベクタとして扱われ,各ビットが個別のコンポーネントを制御します。
表 7-5
に,右から左に向かって順に番号が付けられた SYS$SINGLE_SIGNON 論理名の各ビットの定義を(最下位ビットから順に)示します。
表 7-5: SYS$SINGLE_SIGNON 論理名ビット
| ビット番号 | ステータス | 説明 |
0 |
ON |
外部認証を有効にします。SYSUAF ファイルで,外部認証を受けるよう指定されているユーザは,ログインに外部認証機能を使用します。 |
OFF |
外部認証を無効にします。ローカル認証が有効である (つまり第 1 ビットが ON である) 場合,システムはユーザの通常の SYSUAF ユーザ名およびパスワードを使用してローカル認証を試みます。ローカル認証が無効になっている場合,外部認証を受けるユーザには,ログインが許可されません。 |
|
1 |
ON |
ローカル認証を有効にします。第 0 ビットが OFF である場合,システムは,ローカル認証を使用してユーザを自動的にログインさせます。システムは,ユーザの SYSUAF レコードの EXTAUTH フラグを無視します。第 0 ビットが ON であるにもかかわらず外部認証サーバが動作していない場合,ユーザは /LOCAL_PASSWORD 修飾子を使用してローカル認証を要求できます。 |
OFF |
ローカル認証を無効にします。ユーザは /LOCAL_PASSWORD 修飾子を使用して,ローカル認証を強制することができます。第 1 ビットが OFF である場合,この修飾子を使用するには SYSPRV 特権が必要です。 |
|
2 |
ON |
HP により予約されています。 |
OFF |
HP により予約されています。 |
|
3 |
ON |
ログイン時にターミナル入力を強制的に大文字にします。これは,ログイン・デバイスに対する RMS ROP$V_CVT オプションと同等です。このビットを設定すると本来の OpenVMS の動作に戻りますが,ユーザ名とパスワードの大文字と小文字を区別して入力することはできなくなります。 |
OFF |
ログイン時のターミナル入力の大文字への強制変換を無効にします。 |
|
4 |
ON |
ローカル・パスワード同期を無効にします。システムは,外部認証機能から SYSUAF へのパスワード同期を行いません。 |
OFF |
ローカル・パスワード同期を有効にします。ログインの成功時に,ログインに使用された外部パスワードの OpenVMS ハッシュ値を計算し,SYSUAF ファイルにそのハッシュ値を格納することにより,システムは SYSUAF パスワードと外部パスワード (それらが異なる場合) の同期を試みます。 |
|
31 |
ON |
ユーザがログインする際または SET PASSWORD コマンドを使用する際に表示される,OPCOM デバッグ・メッセージを有効にします。これらのメッセージは,外部認証の設定に関して問題が生じたときの診断に役立ちます。 |
OFF |
OPCOM デバッグ・メッセージを無効にします。 |
SYS$SINGLE_SIGNON が定義されていないか,無効な 16 進文字列になる場合,すべてのビットは OFF であると見なされます。
次の定義例は,外部認証 (第 0 ビット) を有効にします。他のコンポーネントはすべてデフォルト値を取ります。
$ DEFINE/SYSTEM/EXECUTIVE SYS$SINGLE_SIGNON 1
次の定義例は,外部認証を有効にして (第 0 ビット),ユーザ名プロンプトでのターミナル入力を強制的に大文字にし (第 3 ビット),パスワード同期を無効にします (第 4 ビット)。
$ DEFINE/SYSTEM/EXECUTIVE SYS$SINGLE_SIGNON 19 !19 HEX
SYSUAF アカウント・レコードで EXTAUTH ビットが設定されているユーザは,外部認証パスワードがすべて大文字である場合を除き,DECnet-Plus が稼働するシステムでは明示的なアクセス制御文字列を使用できません。
たとえば,次のコマンドを入力したとします。
$ DIRECTORY nodename "username password"::
ここで nodename は DECnet-Plus が稼働するシステムで,username は EXTAUTH アカウントです。DECnet-Plus は,password の文字列を,外部認証エージェント (PATHWORKS または NT ドメイン・コントローラ) に渡す前に,大文字に変換します。
解決方法は,次の 2 つがあります。
DECnet-Plus を使用しており,明示的なアクセス制御文字列を使用する必要がある場合,NT のパスワードを大文字で定義します。
機能を実行するために明示的なアクセス制御文字列を使用しなくてもよいように,DECnet-Plus ノードに代理アカウントを設定します。
DECnet-Plus および NET_CALLOUTS パラメータ
外部認証を有効にして DECnet-Plus for OpenVMS を実行するには,システム・パラメータ NET_CALLOUTS を 255 に設定します。これにより,ユーザ確認と代理検索が,DECnet ではなく LOGINOUT で行われます。
POP サーバでの接続の失敗
POP (Post Office Protocol) サーバは,OpenVMS システムでの接続の認証に外部認証を使用しません。このことが原因で,次のいずれかの条件が存在する場合に,接続の試みが失敗することがあります。
外部ユーザ ID が OpenVMS ユーザ名と異なる。
OpenVMS パスワードが,外部ユーザ・パスワードと同期していない。
7.4.8 ACME (Authentication and Credentials Management Extensions) サブシステム
この節では,OpenVMS システムでユーザを認証する必要があるアプリケーション対して外部認証機能を提供する,SYS$ACM システム・サービスを有効にする方法を説明します。
ACME (Authentication and Credentials Management Extensions) サブシステムは,認証および persona ベースの資格情報サービスを提供します。アプリケーションは,これらのサービスを使用してユーザと対話し,次の 1 つ以上の機能を実行できます。
ユーザ認証
パスワードの変更
ペルソナの作成および変更
ACME は,標準的な OpenVMS 認証および外部認証ポリシーをサポートします。したがって,アプリケーションでは,システムの LOGINOUT および SET PASSWORD コンポーネントと同じ仕組みを利用します。
7.4.8.1 ACME サブシステムの概要
ACME サブシステムは,次のコンポーネントで構成されています。
SYS$ACM は,コンテキスト駆動型のシステム・サービスです。このサービスは,アプリケーションに変更を加えることなく,アプリケーションがさまざまな認証ダイアログに透過的に対応できるように設計されています。アプリケーションは SYS$ACM を呼び出して,authenticate-principal や change-password などの機能を実行します。認証に成功すると,サービスは persona の形式で,ユーザの完全なセキュリティ・プロファイルを返すことができます。SYS$ACM の詳細については,『HP OpenVMS System Services Reference Manual』および『HP OpenVMS Programming Concepts Manual』を参照してください。
ACME_SERVER プロセスは,1 つまたは複数の認証ポリシーをサポートするマルチスレッド・サーバです。各認証ポリシーは,標準インタフェースを介して ACME_SERVER プロセスに「プラグ・イン」される,ACME エージェントの共有イメージを設定することによってインストールします。サーバは,定義済みのシーケンスに従って,各 ACME エージェントを順に呼び出すことによって,認証シーケンスを処理します。また ACME エージェントには,認証シーケンスにおけるエージェントの対話方法に関して特定の規則を課す役目もあります。
各 ACME エージェントは,標準の OpenVMS 認証ポリシーの一部を補足または置き換える,単独の認証ポリシーを定義します。OpenVMS は,現在次の 2 つの ACME エージェントをサポートしています。
MSV1_0 - Microsoft® NT LAN 分散認証プロトコルを使用して外部認証を提供する,Advanced Server for OpenVMS ACME エージェントです。このエージェントは,Advanced Server for OpenVMS レイヤード・プロダクトのインストールに付属します。
DCL の SET および SHOW SERVER ACME コマンド
SET および SHOW SERVER ACME コマンドを使用して,ACME サブシステムの設定と管理を行うことができます。
ACME サブシステムは,相互に対話をして認証要求を処理できる,複数の ACME エージェントをサポートしています。このような対話は,制御された方法で行われる必要があります。
ユーザ認証ダイアログの処理が進行中の時,1 つの ACME エージェントが制御側エージェントになり,その他のエージェントはセカンダリ・エージェントとしてバックグラウンドで動作します。
制御側エージェントがユーザ名とパスワードのプロンプトを指示し,最終的にユーザを確認する役割があります。セカンダリ・エージェントは,それぞれが他のエージェントとどのように対話するように設定されているかに応じて,メッセージの表示,追加パスワードの要求,資格情報の発行,認証要求の拒否を行うことができます。
7.4.8.1.2 ACME エージェントの順序
特定の認証要求の制御側エージェントになる ACME エージェントは,次の 2 つのいずれかの方法で決定されます。
SYS$ACM の呼び出しが,特定の ACME エージェント・ドメインの呼び出しをターゲットとしている。ドメインとは,主名/ユーザ名のマッピングと,(ACME エージェントにより定義された) 対応するユーザ資格情報のセットです。
エージェントが,ユーザの主名を,ドメイン内の有効なユーザ名に正しくマッピングする最初のエージェントである。
このため,ACME エージェントの設定順序は重要です。2 つ以上の ACME エージェント・ドメインに同じ主名が存在し,SYS$ACM 呼び出しで ACME エージェント・ドメインが指定されていない場合,マッピングに最初に成功したエージェントが,認証要求を制御します。これは,主名により,実際に 2 人の異なるユーザが識別された場合には望ましくないことがあります。デフォルトでは,VMS ACME エージェントが先に設定されます。
7.4.8.2 認証ポリシー
認証ポリシーは,ユーザ識別属性,認証属性,および登録属性の特定の組み合わせにより定義されます。ポリシー属性には,次の要素が含まれます。
識別構文
単純ユーザ名と,ドメイン/領域/主名の組み合わせが含まれます。
認証トークン・メカニズム
トークン再利用フィルタ
パスワード辞書,パスワード履歴,パスワードで使用できる文字セット,パスワード長の上限と下限,強制変更スケジュール,および有効期限が含まれます。
侵入検出
大文字小文字の区別
アクセス制限
時間帯,曜日,およびアクセスのタイプが含まれます。
ユーザ・アカウント制御
アカウント・ロック (無効化) およびアカウントの有効期限が含まれます。
資格情報
ユーザとグループの識別子と特権が含まれます。
現在,次の 2 つの認証ポリシーがサポートされています。
標準 OpenVMS ポリシー
Advanced Server for OpenVMS 分散認証ポリシーを使った外部認証
OpenVMS ポリシーは,機能が豊富で,大文字小文字が区別されない,パスワード・ベースの認証ポリシーです。シングル・パスワードまたは二重パスワードのアカウント,パスワードの有効期限,パスワードのロック,パスワード長の下限,システム生成パスワード,侵入検出および侵入回避,パスワード辞書フィルタおよび履歴フィルタ,モード・アクセス制限,アカウントの有効期限,およびアカウントのロックが含まれます。
ユーザの資格情報は,ユーザのグループとメンバの識別コード (UIC),特権,およびライト識別子で構成されます。この情報は,システム登録 (SYSUAF.DAT) データベースとライト識別子 (RIGHTSLIST.DAT) データベースに保存されます。
システム登録データベースには,ユーザがいつどのようにシステムにアクセスできるかに関する情報も含まれます。これらのモード制限により,時間帯,曜日,アクセスのタイプ (ダイアルアップ,遠隔,バッチなど) に基づいてアクセスが制限されます。
OpenVMS の資格情報は persona に保存されます。persona は,保護された,カーネル・ベースのデータ構造です。
7.4.8.2.2 Advanced Server for OpenVMS のポリシー
Advanced Server for OpenVMS MSV1_0 の認証ポリシーは,Microsoft LAN Manager ドメイン・プロトコルに基づく分散認証ポリシーです。この認証ポリシーは,パスワードとチャレンジ・レスポンス (NTLM) のメカニズムをサポートします。このポリシーは,大文字小文字の区別があるパスワード,パスワードの有効期限,パスワード変更までの時間の下限,およびアカウントのロックをサポートしています。
ユーザの資格情報は,ユーザのシステム識別子 (第 1 と第 2 の SID),および特権で構成されます。
Advanced Server for OpenVMS の資格情報は NT persona 拡張に保存されます。この拡張は,Advanced Server データベースにより Microsoft ユーザ名にマッピングされている OpenVMS ユーザ名の OpenVMS 視覚情報を含んでいる標準の persona に添付されています。
7.4.8.3 ACME サブシステムの制御
ACME サブシステムの操作の制御は,次の要素により管理されます。
DCL の SET および SHOW SERVER ACME コマンド
ACME_SERVER プロセスおよびエージェントを起動,停止,および設定します。
SYSUAF ユーザ・フラグ
標準認証と外部認証,およびパスワード同期が可能なアカウントを選択します。SYSUAF ユーザ・フラグには,EXTAUTH,VMSAUTH,および DISPWDSYNCH があります。
SECURITY_POLICY ビット・システム・パラメータ
システム全体を対象として,特定の ACME サブシステム機能を制御します。
7.4.8.3.1 SET および SHOW SERVER ACME コマンド
これらのコマンドは,ACME サブシステムを起動,停止,および設定します。
ACME_SERVER プロセスは,システムのブート時に,VMS ACME エージェントが設定された状態で自動的に起動します。
サーバを手動で起動または停止するには,次のコマンドを使用します。
$ SET SERVER ACME/START
$ SET SERVER ACME/EXIT [/ABORT]
VMS ACME エージェントを設定するには,次のコマンドを使用します。
$ SET SERVER ACME/CONFIGURE=(NAME=VMS)
MSV1_0 ACME エージェントを設定するには,SYS$STARTUP:NTA$STARTUP_NT_ACME コマンド・プロシージャを実行するか,次のコマンドを使用します。
$ SET SERVER ACME/CONFIGURE=(NAME=MSV1_0,CRED=NT, FAC=PWRK)
注意
MSV1_0 ACME エージェントを使用するには,Advanced Server 製品がインストール済みで,実行中である必要があります。
ACME エージェントの設定が完了した後,次のコマンドを使用して ACME エージェントを有効にします。
$ SET SERVER ACME/ENABLE[=NAME=agent]
エラー情報は,ACME サブシステムのログ・ファイルである SYS$MANAGER:ACME$SERVER.LOG に書き込まれます。
ACME サブシステムの状態を表示するには,次のコマンドを使用します。
$ SHOW SERVER ACME [/FULL] [/AGENT=agent]
問題を診断するには,次のようにトレースを有効にします。
$ SET SERVER ACME/TRACE=n
これらのコマンドの詳細については,『OpenVMS DCL ディクショナリ』を参照してください。
7.4.8.3.2 新しい SYSUAF フラグ
次の新しいフラグは,VAX および Alpha システムの SYS$SETUAI,SYS$GETUAI,および登録ユーティリティにより操作できます。これらのフラグを認識するのは,Alpha 上の ACME サブシステムのみです。
| フラグ | 説明 |
| VMSAUTH | EXTAUTH フラグによって外部認証が要求される場合に,アカウントが標準 (SYSUAF) 認証を使用できます。アプリケーションは,外部認証を通常なら使用するユーザ・アカウントに対して標準 VMS 認証を要求するために SYS$ACM を呼び出す時に,解釈の VMS ドメインを指定します。 |
| DISPWDSYNCH | このアカウントの外部パスワードを同期しません。システム単位のパスワード同期制御に関しては,SECURITY_POLICY システム・パラメータの GUARD PASSWORD 制御ビットを参照してください。 |
7.4.8.3.3 新しいシステム・パラメータ SECURITY_POLICY のビット・マスク値
次の新しいセキュリティ・ポリシー・ビットは,Alpha 上のシステム単位の ACME サブシステム操作を制御します。
Guard Passwords
システム全体で ACME エージェント間のパスワード同期を無効にするには,このビットを設定します。これは,LOGINOUT に対する SYS$SINGLE_SIGNON 論理名ビット・マスク値 4 と,機能の上では同等です。
16 進値は 200 です。
Allow NoAuthorization
期限が切れているか,またはモードの制限でアカウントの使用が禁止されている SYSUAF レコードに主名がマッピングされているユーザに対して,特権アプリケーションの認証が正常に行われるようにするには,このビットを設定します。無効であるかパスワードの有効期限が切れている SYSUAF レコード (従来の OpenVMS 認証の場合) は,この方法では認証を回避できません。SECURITY 特権のあるアプリケーションが登録チェックに優先するには,SYS$ACM の ACME$M_NOAUTHORIZE 機能修飾子を指定します。
16 進値は 400 です。
Ignore ExtAuth and VMSAuth SYSUAF flags
外部認証を使用して SYSUAF ファイルのすべてのレコードのマッピングを許可するには,このビットを設定します。
16 進値は 800 です。
この節では,権限のないユーザからシステムを保護するために設計された,オペレーティング・システムの多くの機能を説明します。
7.5.1 ログイン時の情報表示
この節では,通知,ウェルカム・メッセージ,最終ログイン情報,および新着メール・メッセージなど,ログイン時にデフォルトで表示されるさまざまな情報の表示を制御する方法を説明します。ログイン制限の影響を理解できるように,オペレーティング・システムがシステム・ユーザ登録ファイル (SYSUAF.DAT) のログインのフィールドをどのように処理するかも説明します。さらに,この節では安全ターミナル・サーバの使用法と,侵入検出の設定方法も説明します。
7.5.1.1 通知メッセージ
システムで通知メッセージを表示するには,サイト固有のスタートアップ・コマンド・プロシージャ SYS$MANAGER:SYSTARTUP_VMS.COM の中で,システム論理名 SYS$ANNOUNCE を定義します。この方法は『OpenVMS システム管理者マニュアル』で説明しています。通知メッセージはログイン時に表示されます。
ここ定義した内容は,システムの全ユーザに影響します。このメッセージはオペレーティング・システムの身元に対する手掛かりになる可能性があるため,このメッセージを表示しないことも選択できます。
7.5.1.2 ウェルカム・メッセージ
通知メッセージと同様に,ウェルカム・メッセージはシステム論理名 SYS$WELCOME によって制御されます。SYS$WELCOME を定義しない場合は,全ユーザに対して標準のウェルカム・メッセージが表示されます。このウェルカム・メッセージは,オペレーティング・システムとバージョン番号を表示し,SYS$NODE が定義されている場合はノードも公にします。
SYS$WELCOME に別のメッセージを定義するには,メッセージを含むテキスト・ファイルを作成します。このファイルの内容を表示するには,SYSTARTUP_VMS.COM の中で次の行を使用します。
$ DEFINE/SYSTEM SYS$WELCOME "@SYS$MANAGER:WELCOME.TXT"
ウェルカム・メッセージを無効にするには,SYS$MANAGER:SYSTARTUP_VMS.COM に次の DCL コマンドを入れます。このコマンドは,標準のウェルカム・メッセージの代わりに空行を出力します。
$ DEFINE/SYSTEM SYS$WELCOME " "
各ユーザへのメッセージを個別に無効にするには,各 UAF レコードで AUTHORIZE 修飾子の /FLAGS=DISWELCOME を使用します。
7.5.1.3 最終ログイン・メッセージ
デフォルトでは,最終ログインと,失敗したログイン試行の回数に関する 3 つのメッセージがシステムにより表示されます (3.4.3 項「情報メッセージの解釈」を参照)。これら 3 つのメッセージの表示は,個別に無効にすることができます。
ユーザごとに AUTHORIZE 修飾子の /FLAGS=DISREPORT を入力します。
7.5.1.4 新着メールの通知
デフォルトでは,ログイン時に新着メール・メッセージの数がシステムによってユーザに通知されます。AUTHORIZE 修飾子の /FLAGS=DISNEWMAIL を指定することで,ユーザがこの通知を受け取らないようにできます。
新着メールの通知は,セキュリティ上の問題ではなく,主にユーザの便宜を考慮したものです。制限付きアカウントのユーザがメール・ユーティリティ (MAIL) を起動できない場合は,メール・アクセスを禁止すると同時に新着メールのメッセージを無効にしたい場合があるためです。次の AUTHORIZE 修飾子は,両方を実現します。
/FLAGS=(DISMAIL,DISNEWMAIL)
仮想ターミナルを使用すると,ユーザは一度に複数の切断されたプロセスを維持することができます。仮想ターミナルは,安全ターミナル・サーバの機能でも必要です (7.5.4 項を参照)。仮想ターミナルの使用を制限したい場合があります。たとえば,非ページング・プールの量が問題である場合,この機能をシステム全体では有効にしたくない場合があります。
仮想ターミナルは,次のようにターミナル,ユーザ,またはシステムのレベルで無効にできます。
特定のターミナルを仮想ターミナルとしては使用できないようにするには,DCL の SET TERMINAL/PERMANENT/NODISCONNECT コマンドを使用します。
特定のユーザが切断されたプロセスにアタッチできないようにするには,該当するユーザに対して AUTHORIZE 修飾子の /FLAGS=DISRECONNECT を設定します。複数のユーザにより使用されるアプリケーション・アカウントは,ユーザがお互いのプロセスに接続するのを防止するために,DISRECONNECT フラグの対象候補として妥当です。
システム単位で仮想ターミナルを無効にするには,システム・パラメータ TTY_DEFCHAR2 から DISCONNECT 属性を削除します。
また,システム・パラメータ TTY_TIMEOUT を使用すると,再接続に許可される時間を,デフォルトの 15 分よりも短く設定することもできます。このタイムアウト値よりも長く切断されたままの状態であるプロセスは,自動的にシステムによってログアウトされます。接続時間を制限すると,メッセージを受け取るユーザの数が最小になる傾向がありますが,接続機能の利便性にも影響を与えます。
仮想ターミナルの設定と,仮想ターミナルへの再接続の詳細については,『OpenVMS システム管理者マニュアル』を参照してください。
7.5.3 自動ログインの実現
特定のターミナルにアカウントを割り当てて,自動ログイン機能を有効にすることができます (7.2.6 項 を参照)。この機能により,ユーザはユーザ名を指定せずにログインができるようになります。オペレーティング・システムは,ユーザ名をターミナル (またはターミナル・サーバのポート) に対応させ,その割り当て情報を SYS$SYSTEM:SYSALF.DAT ファイル (自動ログイン・ファイル,別名ALF ファイル) に保存します。このファイルを維持管理するには,次のシステム管理ユーティリティ (SYSMAN) コマンドを使用します。
| 作業 | コマンド | 例 |
ターミナル/ユーザ名の対応付けの追加 |
ALF ADD |
ALF ADD TTA5 RENOLDS |
ターミナル・サーバ/ユーザ名の対応付けの追加 |
ALF ADD/PORT |
"M34C3/LC-1-2" RENOLDS |
ALF ファイルのレコードの表示 |
ALF SHOW |
ALF SHOW TTA5 ALF SHOW /USERNAME=PONTRE |
ターミナル/ユーザ名の対応付けの削除 |
ALF REMOVE |
ALF REMOVE TTA3 ALF REMOVE /USERNAME=DOUGLAS |
ALF ファイルは,自動ログインが有効になっているターミナルごとに 1 つのレコードで構成されています。各レコードは,ターミナルのデバイス名またはターミナル・サーバ・ポート名と,それ続くアカウントのユーザ名の,2 つのフィールドで構成されています。デバイス名はファイル内で一意である必要があります。ただし,同じユーザ名が任意の数のレコード中に存在することができます。つまり,1 つのアカウントが自動的にログインできるターミナルの数に制限はありません。
ALF ファイルは,パージが不要な索引編成ファイルですが,変更があった場合にはバックアップが必要です。
7.5.4 安全ターミナル・サーバの使用
3.8 節「パスワードの保護に関するガイドライン」では,電源が入ったままのターミナルにログインした無警戒のユーザからパスワードを盗むことを目的としたプログラムの種類として,パスワード・グラバを説明しています。オペレーティング・システムは,ターミナルでのログイン開始前に現在実行中のプロセスをすべて停止する,安全ターミナル・サーバを提供しています。
ターミナルごとに安全ターミナル・サーバを個別に起動するには,次の DCL コマンドを使用します。
SET TERMINAL/PERMANENT/SECURE/DISCONNECT term-id
続いて,ユーザがログインを開始するには,Break キーの後に Return キーを押す必要があります。ログインは通常どおり進行します。
安全ターミナル・サーバをすべてのターミナルに適用する場合は,サイト固有のスタートアップ・コマンド・プロシージャに SET TERMINAL コマンドを入れることで,サイト全体でログイン・プロシージャに一貫性を持たせることができます。 ただし,通信回線としてターミナルを使用する場合がある一部のアプリケーションは,独自の目的のために Break キーを使用する必要があるため,安全ターミナル・サーバと組み合わせて使用できなくなります。
安全ターミナル・サーバ機能は,通信速度の自動判別処理とも組み合わせることができません。ただし,通信速度の自動判別が必要なのはモデム・ターミナル (交換ターミナルおよびダイアルアップ回線使用ターミナル) のみであるため,このようなターミナルでのモデム処理は,安全ターミナル・サーバと同等の機能を果たします。安全な運用のためには,次のようにターミナル属性を設定します。
(直結の) ローカル・ターミナルには,次の SET TERMINAL 修飾子を使用します。
/NOMODEM/SECURE/DISCONNECT/NOAUTOBAUD/PERMANENT
交換ターミナル (データ交換およびダイアルアップ) には,次の SET TERMINAL 修飾子を使用します。
/MODEM/AUTOBAUD/NOSECURE/DISCONNECT/PERMANENT
電話回線またはこれと同等の回線を経由してターミナル・ポートにアクセスできる場合,経路 (直結モデム,データ交換,ターミナル・サーバ,または公衆データ・ネットワーク) に関係なく,/DIALUP 修飾子を指定します。
パスワード・グラバから保護するには,常に /DISCONNECT 修飾子を指定します。切断されたジョブでシステムが飽和するのを防ぐには,切断されたプロセスが削除されるまでの期間を指定するシステム・パラメータ TTY_TIMEOUT を,低いタイムアウト値に設定します。
安全ターミナル・サーバを個別のターミナルに適用することにした場合は,公共の場所および遠隔の安全でない場所にある直結たターミナルを含めます。ローカル・ログインやダイアルアップ・ログインに使用されることのないターミナルは,このセキュリティ問題の影響を受けません。ログイン時に厳しく監視されるターミナルも,この対策が必要でない場合があります。
7.5.5 侵入者の検出
場合によっては,期限切れのパスワードの入力や,入力ミスのために,正しくログインできないことがあります。しかし,ログインの失敗がすべて無害であるとは限りません。権限のない人物が期限切れのアカウントや未知のユーザ名でログインしようとしたり,有効なアカウントのパスワードを推測しようとしているために,ログイン失敗が起きる場合があります。
オペレーティング・システムは,ログインの失敗に対して敏感に反応します。1 回の失敗の後,オペレーティング・システムは,ログインが行われているターミナル,ターミナル・サーバ接続,またはネットワーク接続の監視を開始します。まずオペレーティング・システムは,失敗したログインを侵入データベースに記録します。失敗が継続すると,オペレーティング・システムは失敗を記録するだけでなく,抑制対策を講じます。ログインを試みる人物はより詳細に監視され,一定期間内でのログイン再試行が一定の回数に制限されます。ログインを試みている人物が再試行や時間の制限を超えると,その人物は,たとえ有効なユーザ名とパスワードを使用しても,ある期間ログインできなくなります。しばらくすると制限が緩和され,ログインが再び許可されます。
7.5.6 侵入データベースについて
DCL の SHOW INTRUSION コマンドを使用すると,侵入データベースの内容が表示されます。例 7-5 に表示例を示します。データベースは,ログインの失敗に関する,次のタイプの情報を取得します。
| フィールド | 説明 |
Intrusion class |
失敗の大まかな発生源
|
Type |
ログイン失敗の重大度
回数の限度 (LGI_BRK_LIM) と監視期間 (LGI_BRK_TMO) のシステム・パラメータによって,疑いのある行動が侵入行為と見なされる基準が定義されます。 |
Count |
特定の発生源に関連するログイン失敗の回数 |
Expiration |
疑いのある者のレコードが削除される日時,または侵入者に再度ログインのチャンスが認められた日時。侵入者のレコードが期限切れになると,侵入者は容疑者になり,失敗回数は LGI_BRK_LIM にリセットされます。有効期限は,古い有効期限に LGI_BRK_TMO を加えた値にリセットされます。 |
Source |
ログイン失敗の発生源
|
システムは侵入者を検出すると,必ずセキュリティ・オペレータ・ターミナルまたはログ・ファイルに監査メッセージを送信して,セキュリティ管理者に警告します。DCL の SHOW INTRUSION コマンドを使用して,侵入の発生源とタイプを表示できます。例として例 7-5 に,ネットワーク経由でログインする,MAPLE という名前のユーザに関する問題を示します。このユーザはログインを 8 回試行しています。ユーザは監視期間内でのログインに失敗したため,オペレーティング・システムは OMNI:.BOSTON.BIRCH::MAPLE からのすべてのログインを一時停止しました。表 7-6 では,システムがログインの一時停止をどのように決定するかをより詳細に説明しています。
多くの容疑者が表示されている点に注意してください。ユーザは,パスワードを忘れたり,パスワードを誤って入力することがあるためです。データベースからエントリを削除するには,DCL の DELETE/INTRUSION_RECORD コマンドを使用します。
例 7-5: 侵入データベースの表示
$
SHOW INTRUSION
Intrusion Type Count Expiration Source
NETWORK SUSPECT 1 2-Jan-2002 13:20:30.89 PCD025::
Intrusion Type Count Expiration Source
NETWORK SUSPECT 5 2-Jan-2002 13:36:39.42 DENIM::SYSTEM
NETWORK SUSPECT 2 2-Jan-2002 13:25:17.30 N1KDO::SYSTEM
Intrusion Type Count Expiration Source
NETWORK SUSPECT 2 2-Jan-2002 13:07:57.95 OMNI:.LOWELL.ASH::TESTER
NETWORK INTRUDER 8 2-Jan-2002 11:06:50.51 OMNI:.BOSTON.BIRCH::MAPLE
Intrusion Type Count Expiration Source
NETWORK SUSPECT 2 2-Jan-2002 13:20:10.09 JETTE::TIPH
NETWORK SUSPECT 1 2-Jan-2002 13:21:40.75 FTSR::TFREDERICK
ログイン失敗が 1 回発生すると,ユーザは容疑者になり,ある一定期間それ以降の失敗が監視されます。オペレーティング・システムは,容疑者によるログイン失敗を一定期間に渡って一定回数だけ許容し,それを超えるとログイン失敗の発生源を侵入者であると宣言します。つまり,容疑者は監視期間中に許されるログイン試行回数を超えると侵入者になります。
システム・パラメータ LGI_BRK_LIM によって設定される試行回数は,人がログインを試行できる回数を定義します。標準の制限では 5 回です。この試行回数パラメータは,システム・パラメータ LGI_BRK_TMO によって制御される時間の係数と連携します。ログインに失敗するたびに,容疑者の監視期間は LGI_BRK_TMO の値だけ増加します。そのため,失敗のたびに,容疑者が監視される期間が長くなります。
表 7-6
に,ユーザ George が 5 回ログインに失敗し,回避措置が取られる状況を示します。失敗するたびに,監視期間は 5 分延長されます。5 回目の失敗で,オペレーティング・システムは George を侵入者と見なし,このユーザのログインを拒否します。この例では,パラメータ LGI_BRK_LIM と LGI_BRK_TMO が両方とも 5 に設定されているものと想定しています。
表 7-6: 侵入の例
| ログイン失敗の時刻 | 失敗の回数 | 監視期間の延長 |
6:00 |
0 |
George がログインに失敗し,システムは George のターミナルからのログインの監視を開始します。システムはこれから 5 分間監視します。 |
6:00:30 |
1 |
30 秒後,監視期間が 4.5 分残っている時点で,George が再び失敗します。監視期間は 5 分延長されます。したがって,システムはこれから 9.5 分間 George のログイン失敗を監視します。 |
6:01 |
2 |
30 秒後,監視期間が 9 分残っている時点で,システムは監視期間を 5 分延長します。 |
6:02 |
3 |
1 分後,George の監視期間は 13 分で,システムは監視期間を 5 分延長します。 |
6:02:30 |
4 |
30 秒後,George の監視期間は 17.5 分で,システムは監視期間を 5 分延長します。したがって,システムはこれから 22.5 分間 George のログイン失敗を監視します。 |
6:04:30 |
5 |
2 分後,George は 6 回目の試行を行います。監視期間で許可される時間であっても,George はチャンスを使い果たします。George は侵入者と見なされ,システムにアクセスできなくなります。 |
システム設定に応じて,侵入者を,一時的または永久に除外することができます。
一時的な除外の制御は,LGI_HID_TIM と,1 〜 1.5 の範囲の乱数の積によって行います。一時的な除外期間が終わると,サブジェクトは容疑者に再度分類されます。容疑者の監視期間は,LGI_BRK_TMO の値により設定されます。新しい監視期間中は,LGI_BRK_LIM の値が許容失敗回数として設定され,サブジェクトが侵入者に再度分類される前に,もう一度ログインのチャンスが認められます。
LGI_BRK_DISUSER が設定されている場合は,永久除外になります。これは,この設定により,オペレーティング・システムが侵入を検出すると,ユーザ登録レコードの DISUSER フラグが有効になるためです。
LGI_BRK_DISUSER パラメータを有効にすると,セキュリティ管理者が手動で操作するまでそのユーザ名は無効になるため,重大な結果を招くことがあります。LGI_BRK_DISUSER を有効にすると,悪意のあるユーザが,セキュリティ管理者のアカウントを含むすべての既知のアカウントを,短時間ですべて使用不能にすることができます。復旧するには,SYSTEM アカウントが常にログインを許可されているシステム・コンソールにログインする必要があります。
7.5.6.3 ログイン試行を制御するシステム・パラメータ
ログインと侵入検出を制御するシステム・パラメータを表 7-7
に示します。
表 7-7: ログイン試行を制御するためのパラメータ
| 制御対象 | 設定するパラメータ | 説明 |
LGI_PWD_TMO |
時間内に次の操作が可能です。
|
|
LGI_RETRY_LIM |
再試行時間 (LGI_RETRY_TMO) の範囲内で,電話接続またはネットワーク・リンクを失わずに,ログイン・シーケンスを再試行することを許可します。監視期間中,侵入の上限 (LGI_BRK_LIM) を超えない限り,ユーザは再接続とログインの再試行を行うことができます。 |
|
LGI_RETRY_TMO |
ログイン失敗後,次のログイン試行が許可される間隔の秒数を指定します。ログイン失敗後,LGI_RETRY_TMO の秒数の間ユーザの応答がない場合,LOGINOUT がセッションを切断します。 |
|
LGI_BRK_LIM |
回避措置を呼び出す結果となる,監視期間中のログイン失敗の回数を指定します。失敗回数は,各ユーザ名,ターミナル,およびノードの個別のログイン試行ごとに適用されます。 |
|
LGI_BRK_TMO |
ログイン失敗のたびに容疑者の有効期限に加算される時間を示します。有効期限が切れた後,以前の失敗は破棄され,サブジェクトはクリーンな状態になります。 |
|
LGI_BRK_TERM |
ターミナル・クラス・ログインの失敗を,ターミナル,ユーザ (デフォルト),または全ターミナルのユーザのいずれによりカウントするかを制御します。TT_ACCPORNAM フィールドの内容に基づいて,LAT が発信元ポートまで遡って追跡されます。 |
|
LGI_HID_TIM |
ログイン拒否の期間を指定します。このパラメータの値に (1 〜 1.5 の) 乱数を乗じた数によって,失敗回数が LGI_BRK_LIM を超えた場合の回避措置の実際の長さが決まります。 |
|
侵入者のアカウント |
LGI_BRK_DISUSER |
ユーザの登録レコードにある DISUSER フラグを有効にして,そのアカウントを永久にロック・アウトします。 |
通常のオペレーティング・システムの起動処理の一部として作成されるセキュリティ・サーバ・プロセスは,次のタスクを実行します。
システムの侵入データベースの作成と管理
ネットワーク代理データベース・ファイル (NET$PROXY.DAT) の維持管理
システムは侵入データベースを使用して,ログイン試行の失敗を追跡します。この情報はプロセス・ログイン中に走査され,システムが抑制対策を講じて,侵入者の疑いがあるユーザによるシステムへのアクセスを禁止すべきかどうかを判定されます。例 7-5 に示すように,DCL の SHOW INTRUSION コマンドを発行することで,このデータベースの内容を表示できます。DCL の DELETE/INTRUSION コマンドを発行すると,データベースから情報を削除できます。
特定の遠隔ユーザがパスワードを使用せずにローカル・アカウントにアクセスできるかどうかを判定するため,ネットワーク接続処理中に,ネットワーク代理データベース・ファイル (NET$PROXY.DAT) が使用されます。このデータベースの情報の管理には,登録ユーティリティを使用します。