HP-UX システム管理者ガイド : セキュリティの管理 HP 部品番号: 5992-2914 2007 年 10 月 第3版 ご注意 1. 本書に記載した内容は、予告なしに変更することがあります。 2. 本書は内容について細心の注意をもって作成いたしましたが、万一ご不審な点や誤り、記載もれなど、お気付きの点が ございましたら当社までお知らせください。 3. 当社は、お客様の誤った操作に起因する損害については、責任を負いかねますのでご了承ください。 4. 当社では、本書に関して特殊目的に対する適合性、市場性などについては、一切の保証をいたしかねます。また、備品、 性能などに関連した損傷についても保証いたしかねます。 5. 当社提供外のソフトウェアの使用や信頼性についての責任は負いかねます。 6. 本書の内容の一部または全部を、無断でコピーしたり、他のプログラム言語に翻訳することは法律で禁止されています。 7. 本製品パッケージとして提供した本書や媒体は本製品用だけにお使いください。プログラムをコピーする場合はバック アップ用だけにしてください。プログラムをそのままの形で、あるいは変更を加えて第三者に販売することは固く禁じ られています。 U.S. Government License Proprietary computer software. Valid license from HP required for possession, use or copying. Consistent with FAR 12.211 and 12.212, Commercial Computer Software, Computer Software Documentation, and Technical Data for Commercial Items are licensed to the U.S. Government under vendor's standard commercial license. 著作権 © Copyright 2007 Hewlett-Packard Development Company, L.P. 本書には著作権によって保護されている内容が含まれています。本書の内容の一部または全部を著作者の許諾なしに複製、改 変、および翻訳することは、著作権法下での許可事項を除き、禁止されています。 商標 UNIX® は、米国ならびに他の国における The Open Group の登録商標であり、The Open Group から独占的にライセンスされ ています。 VERITAS® は Symantec Corporation の登録商標です。 関連ソフトウェア製品 本製品には、Apache Software Foundation により開発されたソフトウェアが含まれます。本書の内容は、Apache Software Foundation (http://www.apache.org ) から提供された情報に基づいています。 本製品には、OpenSSL Toolkit の使用のため、OpenSSL Project (http://www.openssl.org ) により開発されたソフトウェア が含まれます。 納入後の保証について • 保証の期間は、ご購入時に当社よりお出しした見積書に記載された期間とします。保証サービスは、当社の定める休日 を除く月曜日から金曜日までの、午前 8 時 45 分から午後 5 時 30 分の範囲で無料で行います。当社で定めたシステム 製品については出張修理を行い、その他の製品については当社にご返却いただいた上での引取り修理となります。当社 が定める地域以外における出張修理対象製品の修理は、保証期間中においても技術者派遣費が有料となります。 • ソフトウェア製品の保証は上記にかかわらず、下記に定める範囲とさせていただきます。 • • ソフトウェア製品およびマニュアルは当社が供給した媒体物の破損、資料の落丁およびプログラムインストラクショ ンが実行できない場合のみ保証いたします。 • バグおよび前記以外の問題の解決は、別に締結するソフトウェアサポート契約に基づいて実施されます。 次のような場合には、保証期間内でも修理が有料となります。 • 取扱説明書等に記載されている保証対象外部品の故障の場合。 • 当社が供給していないソフトウェア、ハードウェア、または補用品の使用による故障の場合。 • お客様の不適当または不十分な保守による故障の場合。 • 当社が認めていない改造、酷使、誤使用または誤操作による故障の場合。 • 納入後の移設が不適切であったための故障または損傷の場合。 • 指定外の電源 (電圧、周波数) 使用または電源の異常による故障の場合。 • 当社が定めた設置場所基準に適合しない場所での使用、および設置場所の不適当な保守による故障の場合。 • 火災、地震、風水害、落雷、騒動、暴動、戦争行為、放射能汚染、およびその他天災地変等の不可抗力的事故によ る故障の場合。 • 当社で取り扱う製品は、ご需要先の特定目的に関する整合性の保証はいたしかねます。また、そこから生じる直接的、 間接的損害に対しても責任を負いかねます。 • 当社で取り扱う製品を組み込みあるいは転売される場合は、最終需要先における直接的、間接的損害に対しては責任を 負いかねます。 • 製品の保守、修理用部品の供給期間は、その製品の製造中止後 5 年間とさせていただきます。 本製品の修理については取扱説明書に記載されている最寄の事業所へお問い合わせください。 目次 まえがき.................................................................................................................................15 1 はじめに..............................................................................................................................21 1.1 セキュリティの概念......................................................................................................21 1.2 機能と利点...................................................................................................................22 2 HP-UX オペレーティング環境の安全なインストール................................................................25 2.1 インストールのセキュリティの留意事項.........................................................................25 2.2 ブートプロセス中のセキュリティ侵害の防止..................................................................25 2.3 ルートのログインセキュリティを有効にする..................................................................26 2.4 未許可アクセスを防止するためのブート認証の使用........................................................27 2.5 インストール時セキュリティオプションの設定...............................................................27 2.6 セキュリティパッチのインストール...............................................................................27 2.6.1 Security Patch Check のマニュアル..........................................................................28 2.6.2 HP-UX のセキュリティ報告書の申し込み................................................................28 2.6.3 security_patch_check コマンドの使用例..................................................................28 2.7 バックアップと回復のためのインストール後のセキュリティのヒント..............................29 3 ユーザーおよびシステムのセキュリティ管理..........................................................................31 3.1 ユーザーアクセスの管理...............................................................................................31 3.1.1 ユーザーアカウントのモニター...............................................................................31 3.1.2 ゲストアカウントのモニター.................................................................................32 3.1.3 アプリケーション ユーザーアカウントの作成..........................................................32 3.1.4 グループアカウントの管理....................................................................................33 3.2 ログイン中のユーザーの認証........................................................................................33 3.2.1 ログインプロセスの説明.......................................................................................34 3.2.2 ログイン トラッキングファイル (btmp および wtmp) のチェック..............................35 3.2.3 ログインしたユーザーの確認................................................................................36 3.3 PAM を使用したユーザーの認証....................................................................................36 3.3.1 概要.....................................................................................................................36 3.3.2 PAM ライブラリ...................................................................................................38 3.3.3 /etc/pam.conf を使用したシステム共通の構成.......................................................39 3.3.4 サンプルの/etc/pam.conf ファイル........................................................................39 3.3.5 /etc/pam_user.conf ユーザー構成ファイル.............................................................40 3.3.6 例: ログインでの PAM の実行方法.........................................................................41 3.4 パスワードの管理.........................................................................................................42 3.4.1 システム管理者の責任..........................................................................................42 3.4.2 ユーザーの責任....................................................................................................43 3.4.3 適切なパスワードの基準.......................................................................................43 目次 5 3.4.4 /etc/passwd パスワードファイルの変更................................................................43 3.4.5 /etc/shadow シャドウパスワードファイル.............................................................45 3.4.6 /etc/passwd 内での擬似アカウントの削除とキーサブシステムの保護......................46 3.4.7 HP-UX Secure Shell を使用した安全なログイン........................................................47 3.4.8 NIS に保存されたパスワードの保護.......................................................................47 3.4.9 LDAP ディレクトリサーバーに保存されたパスワードの保護....................................47 3.5 システムのセキュリティ属性の定義...............................................................................48 3.5.1 システム共通属性の構成.......................................................................................49 3.5.2 ユーザーごとの属性の構成....................................................................................49 3.5.3 ユーザーデータベースのトラブルシューティング...................................................51 3.6 setuid および setgid プログラムの扱い...........................................................................51 3.6.1 setuid プログラムと setgid プログラムが危険である理由..........................................52 3.6.2 ID の設定方法......................................................................................................52 3.6.3 setuid 能力の制限のためのガイドライン.................................................................53 3.7 スタックバッファーオーバーフロー攻撃の回避..............................................................54 3.8 無人端末およびワークステーションの保護.....................................................................54 3.8.1 /etc/inittab と実行レベルを使用したアクセス制御..................................................55 3.8.2 端末デバイスファイルの保護................................................................................55 3.8.3 画面ロックの構成................................................................................................56 3.9 リモートデバイスによるシステムアクセスからの保護.....................................................56 3.9.1 /etc/dialups と/etc/d_passwd を使用したアクセス制御...........................................57 3.10 ログインバナーの保護.................................................................................................58 3.11 ルートアカウントの保護..............................................................................................59 3.11.1 ルートアカウントへのアクセスのモニター.............................................................59 3.11.2 制限付きスーパーユーザーアクセスのための限定 SMH ビルダの使用......................60 3.11.3 スーパーユーザーアクセスの再検討......................................................................60 4 HP-UX Bastille.......................................................................................................................61 4.1 機能と利点...................................................................................................................61 4.2 HP-UX Bastille のインストール.......................................................................................62 4.3 HP-UX Bastille の使用....................................................................................................62 4.3.1 対話形式での HP-UX Bastille の使用.........................................................................62 4.3.2 非対話形式での HP-UX Bastille の使用.....................................................................63 4.3.3 システムの構成....................................................................................................63 4.4 HP-UX Bastille による変更の回復....................................................................................66 4.5 ファイルの場所............................................................................................................66 4.6 ヒントとトラブルシューティング..................................................................................67 4.7 HP-UX Bastille の削除....................................................................................................68 5 HP-UX Role-Based Access Control............................................................................................69 5.1 概要.............................................................................................................................69 5.2 アクセス制御の基礎.....................................................................................................70 5.2.1 ロールによるアクセス制御の簡素化.......................................................................71 6 目次 5.3 HP-UX RBAC の構成要素................................................................................................72 5.3.1 HP-UX RBAC アクセス制御ポリシースイッチ...........................................................72 5.3.2 HP-UX RBAC 構成ファイル.....................................................................................73 5.3.3 HP-UX RBAC のコマンド........................................................................................73 5.3.4 HP-UX RBAC のマンページ.....................................................................................73 5.3.5 HP-UX RBAC のアーキテクチャ..............................................................................74 5.3.6 HP-UX RBAC の使用と操作の例..............................................................................75 5.4 HP-UX RBAC の導入計画................................................................................................76 5.4.1 ロールの設計.......................................................................................................76 5.4.2 ロールに対する権限の設計...................................................................................77 5.4.3 コマンドマッピングの計画...................................................................................78 5.4.4 HP-UX RBAC の制限事項および制限条項.................................................................78 5.5 HP-UX RBAC の構成......................................................................................................79 5.5.1 ロールの構成........................................................................................................79 5.5.2 権限の構成..........................................................................................................81 5.5.3 追加のコマンドの権限と特権の構成.......................................................................82 5.5.4 きめの細かい特権を使用した HP-UX RBAC の構成...................................................84 5.5.5 コンパートメントを使用した HP-UX RBAC の構成...................................................85 5.6 HP-UX RBAC の使用......................................................................................................86 5.6.1 privrun コマンドを使用した、特権付きでのアプリケーション実行............................86 5.6.2 privedit コマンドを使用した、アクセス制御下にあるファイルの編集.......................88 5.6.3 ACPS を使用した privrun および privedit のカスタマイズ.........................................90 5.7 HP-UX RBAC のトラブルシューティング.........................................................................90 5.7.1 rbacdbchk データベース構文ツール........................................................................90 5.7.2 privrun -v Information..............................................................................................90 6 コンパートメント.................................................................................................................93 6.1 概要.............................................................................................................................93 6.1.1 コンパートメントのアーキテクチャ........................................................................94 6.1.2 デフォルトのコンパートメント構成.......................................................................95 6.2 コンパートメント構造の計画........................................................................................95 6.3 コンパートメントのアクティブ化..................................................................................96 6.4 コンパートメント構成の変更........................................................................................97 6.4.1 コンパートメント規則の変更.................................................................................97 6.4.2 コンパートメント名の変更...................................................................................98 6.5 コンパートメントの構成要素........................................................................................98 6.5.1 コンパートメント構成ファイル..............................................................................98 6.5.2 コンパートメントコマンド....................................................................................98 6.5.3 コンパートメントのマンページ.............................................................................99 6.6 コンパートメントの規則と構文.....................................................................................99 6.6.1 コンパートメントの定義.....................................................................................100 6.6.2 ファイルシステムの規則.....................................................................................100 6.6.3 IPC の規則.........................................................................................................102 目次 7 6.6.4 ネットワークの規則...........................................................................................103 6.6.5 その他の規則.....................................................................................................105 6.6.6 ルールファイルの例...........................................................................................106 6.7 コンパートメント内でのアプリケーションの構成.........................................................106 6.8 コンパートメントのトラブルシューティング................................................................107 6.9 Discover モードを使用したコンパートメントの初期構成の生成......................................107 6.10 HP Serviceguard クラスタにおけるコンパートメント...................................................108 7 細分化された特権...............................................................................................................111 7.1 概要...........................................................................................................................111 7.2 細分化された特権の構成要素.......................................................................................111 7.2.1 コマンド.............................................................................................................111 7.2.2 マンページ.........................................................................................................112 7.3 使用可能な特権..........................................................................................................112 7.4 細分化された特権を使用したアプリケーションの構成...................................................114 7.4.1 特権モデル.........................................................................................................115 7.4.2 複合特権............................................................................................................116 7.5 細分化された特権のセキュリティ上の影響...................................................................116 7.5.1 特権のエスカレーション......................................................................................116 7.6 HP Serviceguard クラスタにおける細分化された特権.....................................................117 7.7 細分化された特権のトラブルシューティング................................................................117 8 ファイルシステムのセキュリティ........................................................................................119 8.1 ファイルアクセスの制御.............................................................................................119 8.1.1 ファイルアクセスパーミッションの設定...............................................................120 8.1.2 ファイル所有権の設定.........................................................................................121 8.1.3 ディレクトリの保護............................................................................................121 8.1.4 ユーザーアカウントに関連したファイルの保護.....................................................122 8.1.5 fsck を使用したファイル破損の検索と訂正............................................................122 8.2 アクセス制御リストの設定.........................................................................................123 8.3 HFS ACL の使用..........................................................................................................123 8.3.1 HFS ACL と HP-UX コマンドと呼び出し.................................................................125 8.4 JFS ACL の使用...........................................................................................................127 8.4.1 JFS ACL の定義...................................................................................................127 8.4.2 システムが JFS ACL を生成する方法....................................................................127 8.4.3 最小の JFS ACL...................................................................................................128 8.4.4 JFS ACL の追加 user および group エントリー.......................................................128 8.4.5 JFS ACL の group および class エントリー............................................................128 8.4.6 setacl コマンドと getacl コマンドの使用..............................................................129 8.4.7 class エントリーでの chmod の影響.....................................................................129 8.4.8 最小の JFS ACL の変更例.....................................................................................130 8.4.9 デフォルトの JFS ACL.........................................................................................131 8.4.10 setacl コマンドを使用した JFS ACL の変更...........................................................132 8 目次 8.5 JFS ACL と HFS ACL の比較.........................................................................................134 8.5.1 JFS と HFS のコマンドおよび関数の対応付け........................................................134 8.6 ACL と NFS................................................................................................................135 8.7 /dev デバイス特殊ファイルに関するセキュリティの留意事項.......................................135 8.8 ディスクパーティションと論理ボリュームの保護.........................................................136 8.9 ファイルシステムのマウントとマウント解除のためのセキュリティガイドライン............137 8.10 ネットワークでのファイルのセキュリティの制御........................................................138 8.10.1 ネットワーク制御ファイルでのパーミッション設定の確認...................................138 8.10.2 NFS 環境内にマウントされたファイル................................................................139 9 システムへのリモートアクセスの保護.................................................................................141 9.1 インターネットサービスおよびリモートアクセスサービスの概要...................................141 9.1.1 ftp の保護............................................................................................................142 9.1.2 匿名 ftp の保護....................................................................................................142 9.1.3 /etc/ftpd/ftpusers を使用したアクセスの拒否........................................................143 9.1.4 スプーフィングに対するその他のセキュリティ対策...............................................143 9.2 inetd デーモン............................................................................................................144 9.2.1 inetd の保護........................................................................................................145 9.3 TCP ラッパーによるスプーフィングからの保護.............................................................146 9.3.1 TCP ラッパーの追加機能......................................................................................147 9.3.2 TCP ラッパーは RPC サービスと連動しない..........................................................147 9.4 安全化インターネットサービス (SIS)............................................................................147 9.5 運用領域の制御..........................................................................................................148 9.5.1 ネットワーク制御ファイルのパーミッション設定の確認........................................148 9.6 HP-UX Secure Shell (SSH) を使用したリモートセッションの保護.....................................149 9.6.1 HP-UX Secure Shell の重要なセキュリティ機能.......................................................150 9.6.2 HP-UX Secure Shell のソフトウェア構成要素.........................................................150 9.6.3 HP-UX Secure Shell の実行....................................................................................151 9.6.4 HP-UX Secure Shell 特権分離................................................................................152 9.6.5 HP-UX Secure Shell 認証.......................................................................................153 9.6.6 通信プロトコル..................................................................................................155 9.6.7 HP-UX Secure Shell と HP-UX システム..................................................................155 9.6.8 関連するテクノロジ...........................................................................................156 9.6.9 強力な乱数ジェネレータの要件...........................................................................156 9.6.10 TCP ラッパーのサポート....................................................................................156 9.6.11 chroot の牢獄ディレクトリ.................................................................................157 10 監査管理..........................................................................................................................159 10.1 監査構成要素............................................................................................................159 10.1.1 コマンド...........................................................................................................160 10.1.2 監査構成ファイル..............................................................................................160 10.1.3 監査マンページ.................................................................................................160 10.2 システムの監査........................................................................................................161 目次 9 10.2.1 監査実装の計画.................................................................................................161 10.2.2 監査の有効化...................................................................................................161 10.2.3 監査の無効化...................................................................................................162 10.2.4 監査ファイルのモニター...................................................................................162 10.2.5 性能の留意事項................................................................................................163 10.2.6 監査システムの運用のためのガイドライン.........................................................163 10.3 ユーザーの監査........................................................................................................163 10.4 イベントの監査........................................................................................................164 10.5 監査ログ..................................................................................................................166 10.5.1 監査ログの構成.................................................................................................167 10.5.2 監査ログのモニターと管理................................................................................167 10.6 監査ログの表示........................................................................................................168 10.6.1 audisp コマンドの使用例...................................................................................169 10.7 自己監査..................................................................................................................169 10.8 HP-UX RBAC 監査......................................................................................................170 10.8.1 HP-UX RBAC 基準および/etc/rbac/aud_filter ファイルに基づく監査......................170 10.8.2 HP-UX RBAC 基準を監査する手順.......................................................................171 A 高信頼性システム..............................................................................................................173 A.1 高信頼性システムのセットアップ................................................................................173 A.2 高信頼性システムの監査............................................................................................174 A.3 高信頼性パスワードとシステムアクセスの管理............................................................174 A.3.1 パスワードファイル............................................................................................175 A.3.2 パスワードの選択と生成....................................................................................177 A.3.3 パスワードエージング........................................................................................178 A.3.4 パスワード履歴とパスワード再使用....................................................................178 A.3.5 時間に基づくアクセス制御.................................................................................178 A.3.6 装置に基づくアクセス制御.................................................................................178 A.3.7 高信頼性システムデータベースの操作.................................................................179 A.4 高信頼性バックアップと回復のためのガイドライン.....................................................179 B その他のセキュリティ製品..................................................................................................181 B.1 HP HIDS.....................................................................................................................181 B.2 セキュリティパッチ...................................................................................................181 B.3 HP-UX IPFilter..............................................................................................................182 B.4 HP-UX Secure Shell .....................................................................................................182 用語集..................................................................................................................................183 索引.....................................................................................................................................191 10 目次 図目次 3-1 5-1 5-2 6-1 8-1 PAM における HP-UX 認証モジュール............................................................................37 HP-UX RBAC のアーキテクチャ......................................................................................75 privrun の呼び出し後の操作例.......................................................................................76 コンパートメントのアーキテクチャ..............................................................................94 ファイルおよびディレクトリのパーミッションフィールド............................................120 11 表目次 4-1 5-1 5-2 5-3 5-4 5-5 5-6 6-1 6-2 6-3 7-1 7-2 7-3 8-1 8-2 8-3 8-4 8-5 9-1 9-2 10-1 10-2 10-3 10-4 12 HP-UX Bastille 質問モジュール.......................................................................................63 ユーザーごとの権限の例...............................................................................................70 ロールごとの権限の例..................................................................................................71 HP-UX RBAC 構成ファイル............................................................................................73 HP-UX RBAC のコマンド................................................................................................73 HP-UX RBAC のマンページ............................................................................................73 計画結果の例...............................................................................................................79 コンパートメント構成ファイル.....................................................................................98 コンパートメントコマンド...........................................................................................98 コンパートメントのマンページ.....................................................................................99 細分化された特権コマンド.........................................................................................112 細分化された特権のマンページ...................................................................................112 使用可能な特権..........................................................................................................112 ファイルとディレクトリの特権の違い.........................................................................120 HFS ACL コマンド......................................................................................................126 HFS ACL システムコール............................................................................................126 ACL エントリーに影響するコマンドと呼び出し............................................................126 HFS ACL と JFS ACL の対応付け...................................................................................134 インターネットサービスの構成要素とアクセス検証、認可、および認証........................141 HP-UX Secure Shell のソフトウェア構成要素.................................................................150 監査コマンド.............................................................................................................160 監査構成ファイル......................................................................................................160 監査マンページ..........................................................................................................160 audevent コマンドオプション.....................................................................................165 表目次 例目次 3-1 8-1 8-2 擬似アカウントと特別なシステムアカウント.................................................................47 HFS ACL の作成.........................................................................................................125 複数の HFS ACL の一致...............................................................................................125 13 14 まえがき 対象読者 『HP-UX システム管理者ガイド』は、リリース HP-UX 11i v3 以降の HP-UX システムを管理す る必要がある HP-UX システムの管理者を対象としています。管理者の技術レベルは問いませ ん。 このガイドに含まれるトピックの多くは以前のリリースにも適用されますが、HP-UX 11i v3 では多数の変更が行われています。したがって、以前のリリースに関する情報については、 『システム/ワークグループの管理』を参照してください。 このガイドについて 『HP-UX システム管理者ガイド』では、HP-UX 11i v3 以降の HP-UX 11i システムの管理に必 要な一連の重要なタスク (および関連する概念) について説明します。本ガイドは次のボリュー ムで構成されています。 『概要』 『論理ボリュームの管理』 『セキュリティの管理』 『構成の管理』 『定型の管理作業』 HP-UX 11i、そのコンポーネント、およびコンポーネント間の関 係に関する概要について説明します。 HP 論理ボリュームマネージャ (LVM) を使用して、物理ボリュー ム、ボリュームグループ、および論理ボリュームを構成する方 法について説明します。 HP-UX 11i のデータ/システムのセキュリティ機能について説明 します。 HP-UX には、HP-UX の動作を要件に合わせてカスタマイズする ための構成可能なサブシステム/システム設定が数多く用意され ています。 『構成の管理』では、管理者が実行する必要がある さまざまなカスタマイズタスクについて説明します。 たとえば 次のようなタスクが挙げられます。 • 周辺機器の追加 • システムクロックとタイムゾーンの設定および調整 • カーネルの構成 • ユーザーおよびグループの構成 • ネットワーク (初期構成) システムの円滑な運用を維持するために実行する必要があるさ まざまな継続的タスクについて説明します。 たとえば次のよう なタスクが挙げられます。 • プリンターおよびプリントスプーラの管理 • ソフトウェアの管理 (HP の Software Distributor を使用した アプリケーションのインストールおよび削除) • システムの起動およびシャットダウン • ソフトウェアパッチのインストール 対象読者 15 • システムパフォーマンスの監視 本書『セキュリティの管理』について 本書『セキュリティの管理』では、HP-UX、その構成要素、構成要素相互間の関係といったハ イレベルの考え方を説明します。 本書では主として次のトピックについて説明します。 第1章 第2章 第3章 第5章 第6章 第7章 第8章 第9章 第10章 付録 A 付録 B HP-UX セキュリティの概要を説明します。 ブートおよびインストールプロセスに関連したセキュリティ上の留意事項を説明 します。 オペレーティングシステムインストール後の、ユーザーおよびシステムのセキュ リティの管理方法を説明します。 HP-UX Role-Based Access Control の機能および構成要素について説明します。 コンパートメント機能と、システムの構成要素を互いに隔離する方法について説 明します。 細分化された特権機能、およびスーパーユーザーの権限を特権のセットに分割す る方法について説明します。 ファイルシステムの制御と保護の方法について説明します。 システムへのリモートアクセスの保護方法について説明します。 監査システムの管理について説明します。 高信頼性システムについて説明します。 その他のセキュリティ製品について説明します。 HP-UX 11i のリリース名とリリース ID HP-UX 11i は、高可用性と安全性を備えた管理性の高いオペレーティングシステムです。 HP-UX 11i は、エンタープライズ環境、ミッションクリティカル環境、およびテクニカルコン ピューティング環境をサポートし、HP 9000 システムと HP Integrity サーバーの両方に対応し ています。 HP-UX 11i の各リリースには、リリース名とリリース ID が付いています。 uname -r コマン ドを実行するとリリース ID が返されます。 次の表に、使用可能な HP-UX 11i の各リリース を示します。 リリース ID リリース名 サポートされているプロセッサのアーキテク チャ B.11.11 HP-UX 11i v1 HP 9000 B.11.23 HP-UX 11i v2 HP Integrity B.11.23 HP-UX 11i v2 September 2004 以降 HP 9000 HP Integrity B.11.31 HP-UX 11i Version 3 HP 9000 HP Integrity 16 まえがき HP-UX 11i の異なるリリースでサポートされているシステムおよびプロセッサアーキテクチャ の詳細については、ご使用の HP-UX システムのリリースノート (『HP-UX 11i v3 リリースノー ト』など) を参照してください。 HP-UX 関連情報の参照先 次の表に、HP-UX に関する基本的なシステム管理情報の参照先を示します。 ただし特定の製 品に関する情報は含まれていません。 目的 . . 参照するドキュメント . . 次の情報を必要とする場合: ご使用の HP-UX のバージョンに関す • る HP-UX 11i リリースノート たとえ ば『 HP-UX 11i v3 リリースノート』 • など。 • • HP-UX リリースの変更点 • オペレーティング環境の内容 • ファームウェアの要件および特定 のリリースでサポートされるシス テム HP-UX をインストールまたはアップ デートする場合 ドキュメントの場所 . . HP Instant Information メディア http://docs.hp.com/ja /usr/share/doc/ディレクトリ /usr/share/doc ディレクトリに は、お使いの HP-UX のバージョンの オリジナルリリースノートのみが含ま れています。 リリースノートの改訂 版については、最新の HP Instant Information メディアまたは http://docs.hp.com/ja を参照し てください。 • • 『HP-UX インストール/アップ デートの前に 』 • メディアキット (OE に付属) 『HP-UX 11i インストール/アッ プデートガイド』 • HP Instant Information メディア • http://docs.hp.com/ja • HP Instant Information CD-ROM • http://docs.hp.com/ja • 『Planning Superdome Configurations』 は http://docs.hp.com/hpux/ onlinedocs/os/11i/ superdome.pdf (注記: ご使用の HP-UX のバージョン のマニュアルを参照してください) HP-UXシステムを管理する場合 HP-UX 11i v3 より前のリリースの場 合: • 『システム/ワークグループの管 理』 HP-UX 11i v3 以降のリリースの場合: • 『HP-UX システム管理者ガイド』 (複数のボリュームで構成される マニュアルセット) システム管理に関するその他の情報 ソース: • 『nPartitions 管理者ガイド』 • 『Planning Superdome Configurations』(ホワイトペー パー) 関連情報 セキュリティおよび HP-UX に関する追加情報については、http://docs.hp.com を参照してく ださい。 特に次のドキュメントが役立ちます。 • 『HP-UX AAA Server Administrator's Guide』 HP-UX 関連情報の参照先 17 • 『HP-UX Host Intrusion Detection System Administrator's Guide』 • 『HP-UX IPFilter Administrator's Guide』 • 『HP-UX IPSec Administrator's Guide』 • 『HP-UX Secure Shell Release Notes』 出版履歴 マニュアルの出版日付と部品番号は現在の版を示します。出版日付は新しい版のリリース時 に変更されます。 最新版を確実に入手するには、該当の製品サポートサービスに登録していただく必要があり ます。詳細については、当社の営業担当者にお問い合わせください。 他のバージョンのマニュアルについては下記のサイトを参照してください。 http://docs.hp.com/ja 第3版 2007年10月、部品番号 5992-2914 (英語版: 5992-2395) • 第2版 第1版 HP-UX Bastille に関する章を追加。 2007年8月、日本語版なし (英語版: 5992-1933) • Process Resource Manager (PRM) をシャドウパスワードをサポートしない 製品のリストから削除 (3.4.5 項を参照)。 • permission_list 内のsearch をnsearch に修正 (6.6.2 項を参照)。 2007年2月、部品番号 5991-6486 (英語版: 5991-6482) 注記: 『HP-UX システム管理者ガイド』の各ボリュームは個別に更新される場合がありま す。 したがって、時間の経過とともに、本ガイドに含まれる各ボリュームの最新版が変更さ れる可能性があります。 各ボリュームの最新版は、以下のサイトから入手できます。 http://docs.hp.com/ja 原典 本書は、『HP-UX System Administrator's Guide: Security Management』(HP Part No. 5992-2395) を翻訳したものです。 表記規約 本書では、次の表記規約を使用します。 reboot(1M) 『マニュアル名』 18 まえがき HP-UX マンページ。reboot はマンページ名で、1M は『 HP-UX リ ファレンス』のセクション番号です。 Web や Instant Information メ ディアでは、そのマンページへのリンクになっていることがありま す。 HP-UX コマンド行からマンページを表示するには、「man reboot」 か、「man 1M reboot」 と入力します。 詳細について は、man(1) を参照してください。 マニュアルのタイトルです。 Web や Instant Information メディアで は、そのマニュアルへのリンクになっていることがあります。 キーキャップ 強調 強調 用語 ComputerOut UserInput Command Variable [] {} ... | キーボード上のキーの名前です。 Return と Enter は同じキーを指 しています。 強調対象のテキスト文字列を示します。 特に強く強調したいテキスト文字列です。 重要な語句を示します。 コンピュータで表示されるテキスト文字列です。 ユーザーが入力するコマンドなどのテキスト文字列です コマンド名または修飾子付きコマンド名です。 コマンドや関数、情報内で、とりうる値の 1 つに置き換えられるこ とを示す変数の名前です。 形式やコマンドの説明で任意の内容を示します。 形式やコマンドの説明で必須の内容を示します。 内容が"|"で区切ら れているときには、その項目の 1 つを選ぶ必要があります。 前にある要素を任意の回数だけ繰り返すことを示します。 選択リスト内の項目の区切りを示します。 マニュアルに対するご意見・ご質問 本書に関するフィードバックは、HP テクニカルドキュメント Web サイトにある「カスタマ フィードバック」ページ http://docs.hp.com/ja/feedback.html からお寄せください。 マニュアルに対するご意見・ご質問 19 20 第1章 はじめに HP-UX 11i v3 は、コンパートメント、細分化された特権、RBAC (Role-Based Access Control) という 3 つのコアテクノロジを使用しています。 これら 3 つの構成要素を組み合わせること で、安全性が高く、維持が簡単で、以前のバージョンとの互換性がある環境をビジネスアプ リケーション向けに提供しています。 HP-UX 11i v3 では、セキュリティに関する次の重要な概念を実現しています。 • 権限 • アカウントポリシーの管理 • 特権 • コンパートメント • 監査 1.1 セキュリティの概念 HP-UX 11i v3 では、次の概念を使用してシステムを保護しています。 これらの概念について は、後続の章で詳しく説明します。 権限 権限とは、ユーザーがシステムで実行可能な行為を制限する概念で、通常はユーザーのビジ ネスニーズに基づいています。 従来の UNIX システムでは、次の 2 つのレベルの権限しか提 供されていません。 通常のユーザー システムリソースへのアクセスが制限される スーパーユーザー システムリソースへのアクセスが制限されない HP-UX RBAC (HP-UX Role-Based Access Control) では、ロールに基づいて、多くの異なるレベ ルの権限を設定します。 ユーザーまたはユーザーのグループがシステムで特定の操作を実行 できるロールを、ビジネスニーズに基づいて構成できます。 その後、構成したロールをユー ザーに割り当てることができます。 RBAC についての詳細は、第5章を参照してください。 アカウントポリシーの管理 アカウントポリシーの管理とは、権限に使用されるユーザーおよびシステムのセキュリティ 属性を維持する概念です。 ユーザーおよびシステム属性の例として、ユーザーがログオン可 能な時間帯、ユーザーが自動ログアウトされるまでの休止時間、ユーザーのパスワードの有 効期限などがあります。 セキュリティ属性についての詳細は、第3章を参照してください。 特権 特権は権限と似ていますが、特権が権限と異なる点は、ユーザーがシステムで実行できる操 作を制限するのではなく、プログラムがシステムに対して実行できる操作を制限することで す。 従来の UNIX システムでは、プログラムは起動したユーザーまたはファイルの所有者に 1.1 セキュリティの概念 21 よって所有されたかのように実行できます (たとえば setuid プログラム)。 ある特定のシス テムリソースにアクセスするには、setuid コマンドを使用して、プログラムをスーパーユー ザーに設定する必要があります。 これによって、プログラムがシステムリソースの読み込み と変更を自由に実行できる範囲が広くなります。 特権によって、スーパーユーザーの持つ自 由裁量の範囲は多数の異なるレベルに分割されます。 細分化された特権の機能が、特権の概 念を実現したものです。 特権についての詳細は、第7章を参照してください。 隔離 コンパートメントは、システムの構成要素を互いに隔離する手段です。 概念的には、プロセ スはコンパートメントに所属し、リソースは、他のコンパートメントのプロセスがリソース にアクセスする方法を指定したアクセスリストに関連付けられます。 つまり、プロセスがリ ソースにアクセスしたり、または他のコンパートメントに属するプロセスと通信できるのは、 これらのコンパートメントの間に規則が存在するときに限られます。 同じコンパートメント に属するプロセスは相互に通信でき、規則がなくてもそのコンパートメント内にあるリソー スにアクセスできます。 適切に構成すれば、コンパートメントは HP-UX システムとそのデータを守る効果的な手段に なります。 構成要素を隔離する手段としてのコンパートメントについての詳細は、第6章を参照してくだ さい。 監査 監査とは、システム上の重要なイベントを追跡する概念です。 セキュリティ上のイベントを 記録および分析して、セキュリティを侵害しようとする行為の検出に役立てたり、実際に侵 害された行為を知ることで、将来の侵害行為を未然に防ぐことができます。 監査システムへのアクセス制御要求を監査するように HP-UX RBAC を構成することができま す。 監査についての詳細は、第10章を参照してください。 1.2 機能と利点 HP-UX 11i v3 では、HP-UX の標準モードのシステムを保護するために、次の機能と利点が提 供されています。 コンパートメント コンパートメントはシステム上で関連しないリソースを隔離することで、1 つのコンパート メントに侵入された場合に起こるシステムの破局的な損害を防ぎます。 アプリケーションをコンパートメント内に構成すると、アプリケーションはそのコンパート メント外部のリソース (プロセス、バイナリファイル、データファイル、使用する通信チャネ ル) へのアクセスが制限されます。 この制限は HP-UX カーネルによって強制されるため、特 に無効にするよう構成しない限り、無効にできません。 仮にアプリケーションが侵害された 場合、アプリケーションはコンパートメント構成によって隔離されているため、システムの 他の部分に損害が及ぶことはありません。 22 はじめに 細分化された特権 従来の UNIX オペレーティングシステムでは、実行中のプロセスの実効 UID に基づいて、「全 部かゼロか」の管理特権を許可しています。 仮にプロセスが実効 UID=0 で実行中の場合、 すべての特権が許可されます。 細分化された特権を使用すれば、タスクに必要な特権のみが プロセスに許可されたり、またオプションとして、タスクを完了するために必要な時間だけ 特権が許可されます。 特権を認識するアプリケーションでは、操作に必要なレベルまで特権 を引き上げ、操作が完了した後は特権を引き下げることができます。 HP-UX Role-Based Access Control (HP-UX RBAC) HP-UX Role-based Access Control (RBAC) は、従来の root ユーザーモデルに代わるものです。 従来のモデルでは、すべての操作のパーミッションを root ユーザーに許可し、特定の操作の パーミッションは非 root ユーザーに対して拒否します。 HP-UX RBAC では適切な権限を持つ ロールを作成し、ロールを非 root ユーザーに割り当てることで、管理責任を分散することが できます。 HP-UX RBAC を使えば、システムの特定の管理者レベルの特権を、完全なスーパーユーザーア クセスを与えずに複数のユーザーに付与することができます。 これらのユーザーは、ロール に定義されたシステムの管理タスクだけを実行できます。 これによって、内部システムのセ キュリティが強固なものとなります。 監査 監査システムの目的は、主体による対象物へのアクセスのインスタンスを記録することと、 保護機構をすり抜けようとするあらゆる (繰り返される) 試みと特権のあらゆる悪用を検出す ることです。したがって、システム乱用の抑止装置として機能し、システム内のセキュリティ の潜在的な弱点を明らかにするのにも役立ちます。 ユーザーデータベース これまでは、標準モードの HP-UX セキュリティ属性およびパスワードポリシーの制限は、す べてシステム全体を基本として設定されていました。 しかしユーザーデータベースを導入す ることで、ユーザー単位を基本としたセキュリティ属性が設定でき、システム全体のデフォ ルト設定の上書きもできます。 ユーザーデータベースを使用すれば、次のセキュリティ手段を強制することができます。 • 指定した回数だけ認証を失敗すると、ユーザーアカウントをロックする。 • 最近の正常なログインおよび失敗したログインを表示する • パスワードヒストリを維持する • 使用停止したユーザーアカウントを期限切れにする • ユーザーに空のパスワードでログインさせないようにする • 指定した時間帯だけしかログインできないようユーザーを制限する 細分化された特権 23 24 第2章 HP-UX オペレーティング環境の安全なインストー ル 本章では、以下の項目を含めたブートおよびインストールプロセスに関連したセキュリティ の留意事項について説明します。 • 「インストールのセキュリティの留意事項」 • 「ブートプロセス中のセキュリティ侵害の防止」 • 「ルートのログインセキュリティを有効にする」 • 「未許可アクセスを防止するためのブート認証の使用」 • 「インストール時セキュリティオプションの設定」 • 「セキュリティパッチのインストール」 • 「バックアップと回復のためのインストール後のセキュリティのヒント」 2.1 インストールのセキュリティの留意事項 新しいオペレーティングシステムまたは新しいソフトウェアをインストールまたは更新する 前に、セキュリティの留意事項に注意することを習慣づけてください。 以下のセキュリティ 手段をインストールの準備の一部として組み入れてください。 • メディアキットの内容を確認する。 http://docs.hp.com/ja にあるリリースノートおよび その他の関連情報をお読みください。 • ソフトウェアで必要なものと不要なものを識別する。 不要なソフトウェアはインストー ルしないでください。 セキュリティソフトウェア製品に関しては、本書の他の章の説明 を参考にして決定してください。 • セキュリティの変更が完了するまで、システムをネットワーク (特に公共ネットワーク) から切断するか、または取り外す。 • システムコンソールが物理的に保護されていて、使用する LAN コンソールが切断されて いるか、または telnet のようなクリアテキストのプロトコルが許可/保護されている ネットワークを経由してのみ使用されているか確認する。 これは重要なセキュリティ上 の留意事項です。 システムコンソールへのアクセスを制限すれば、許可を得ていない人 物によるシステムのセキュリティ設定の変更を防止するのに役立ちます。 • 最新のパッチ (特にセキュリティパッチ) をインストールする。 詳細については、「セ キュリティパッチのインストール」を参照してください。 • バックアップおよび回復システムを保持する。 詳細については、「バックアップと回復 のためのインストール後のセキュリティのヒント」を参照してください。 2.2 ブートプロセス中のセキュリティ侵害の防止 セキュリティ侵害は、ブートシーケンス中に起こることがあります。 ブートプロセスは割り 込み可能であるため、許可を得ていない人物がシステムにアクセス可能になります。 リブー ト前に、特定のシステムファイルが過失または悪意を持って変更された場合、システムはリ 2.1 インストールのセキュリティの留意事項 25 ブート中およびリブート後に問題を抱えることがあります。 したがって、以下の予防作業を 実行してください。 • システムおよびシステムコンソールは物理的に安全が確保されており、認可されたユー ザーだけがアクセスできることを確認する。 • ブート認証機能を有効にして、指定されたユーザーのみがシステムをシングルユーザー モードにブートできるようにする。 詳細は、「未許可アクセスを防止するためのブート 認証の使用」を参照してください。 • システムファイルが書き込み保護されているか確認する。一部、読み取り保護が必要な ファイルもあります。 コンピュータの電源を投入するかリセットしたとき、開始されるブートシーケンスの要約を 以下に示します。 ブートシーケンスの詳細については、『HP-UX システム管理者ガイド: 定 型の管理作業』を参照してください。 1. ブート中に 10 秒程度の待機時間があり、このときに自動ブートシーケンスを無効にで きます。 このタイミングで、侵入者はブートシーケンスに割り込みを行って、システム に入ることができます。 ブートシーケンスに割り込むときにいずれかのキーを押すと、ルートアクセスが取得で きます。 ISL はコマンドの入力を求めます。 以下のコマンドを入力すると、システムが シングルユーザーモードになります。 ISL> hpux -is ブート認証を使用していない場合、ユーザーはパスワードなしでルートとしてログイン できます。 ブート認証は、指定されたユーザーだけにルートとしてのログインを許可します。 2. 3. ブートシーケンスが割り込みされない場合、初期化プロセスが続行されます。 HP-UX は初期化プロセスをすべて行って通常の動作を開始し、ログインの準備をします。 この時点で侵入者がルートアクセスを取得していれば、別のセキュリティ侵害が発生す る可能性があります。 侵入者がブートプロセスに割り込めば、システムのルートアクセスを取得して、理論的には システムを所有することになります。 所有権を握ることによって、ありとあらゆる機構を使 用してシステムに変更を加えることができます。 2.3 ルートのログインセキュリティを有効にする rlogind および telnetd などの多くのネットワークプロトコルはネットワーク通信を暗号 化しないため、侵入者はネットワークから管理パスワードを簡単に盗聴できます。 これらの 安全でないプロトコルの使用は、できる限り控えてください。 このようなプロトコル経由での管理ログインを防止するために、/etc/securetty ファイル を使用して、ルートアカウントへのログインをシステムコンソール経由のみに限定すること ができます。 たとえば、ルートへのログインをコンソールだけに制限するには、コンソール を示す 1 行だけが入っている /etc/security ファイルを作成します。 詳細は、login(1) を 参照してください。 26 HP-UX オペレーティング環境の安全なインストール 2.4 未許可アクセスを防止するためのブート認証の使用 ブート認証機能は、パスワード認証を使用してシングルユーザーモードのブートを保護する ものです。 これにより、認可されたユーザーだけがシングルユーザーモードでマシンをブー トできるようなシステム構成が可能になります。 ブート認証機能はシステムのリブート前に 使用可能にしておく必要があります。 ブート認証の構成は、/etc/default/security ファイルの次の 2 つの属性で実施します。 • BOOT_AUTH はブート認証を使用可能または使用不能にします。 ブート認証を使用可能 にするには BOOT_AUTH=1 と指定します。 デフォルトでは、認証は使用不能 (BOOT_AUTH=0) になっています。 • BOOT_USERS は、ブート認証機能が使用可能になっているときにルートとしてログイン できるユーザーを定義します。 BOOT_USERS には、名前がコンマ区切りでリストされま す。 例: BOOT_USERS=root,mary,jack,amy,jane BOOT_USERS=root がデフォルト値です。 /etc/default/security 構成ファイルについては、第3章およびsecurity(4) に説明があり ます。 2.5 インストール時セキュリティオプションの設定 インストール時セキュリティオプションにより、HP-UX IPFilter ファイアウォールなどの Bastille セキュリティ ロックダウンエンジンを構成できます。 システムインストールが完了した後、 いずれか 1 つの事前設定されたセキュリティレベルを保持します。 インストール時に、以下の 4 つの事前設定されたセキュリティレベルから選択できます。 Sec00Tools セキュリティインフラストラクチャをインストールしますが、オ プションのセキュリティ機能は使用可能にしません。 これがデフォ ルトの設定です。 Sec10Host ホストベースのロックダウンシステムをインストールしますが、 HP-UX IPFilter ファイアウォール構成は行いません。 このレベルの セキュリティでは、ほぼすべてのネットワークサービスが使用不 能になります。 これらのサービスはbastille(1M) コマンドを実行す れば回復できます。 Sec20MngDMZ ほぼすべての着信トラフィックを HP-UX IPFilter ファイアウォール でブロックする管理ロックダウンシステムをインストールします。 Sec30DMZ ホストベースの IPFilter ネットワークロックダウンである、DMZ フ ルロックダウンシステムをインストールします。 HP-UX IPFilter は ほとんどすべての着信接続をブロックします。 HP-UX Bastille については第4章を参照してください。 HP-UX IPFilter については、以下のサイ トの『 HP-UX IPFilter Administrator's Guide』 を参照してください。 http://docs.hp.com/en/internet.html#HP-UX%20IPFilter 2.6 セキュリティパッチのインストール インストールした直後に、推奨される必要なパッチを適用してください。 2.4 未許可アクセスを防止するためのブート認証の使用 27 パッチ、保守、およびサポートについての詳細は、http://itrc.hp.com を参照してください。 Security Patch Check ツールはセキュリティパッチに関連するシステム状態を分析します。 こ のツールではシステムのセキュリティ上の弱点に備えたパッチを推奨します。 注記: Security Patch Check ソフトウェアツールを使用するとシステムのセキュリティの向 上に役立ちますが、システムのセキュリティを保証するものではありません。 Security Patch Check によって、妥当なセキュリティパッチが HP-UX 11i システムにすべて存 在するかを判断するプロセスが簡素化されます。 Security Patch Check には、以下の機能があ ります。 • インストールまたは適用がなされていない、推奨されるセキュリティ作業についてのレ ポートを生成します。 • システムに欠落しているセキュリティパッチ、アップデート、または手動によるアクショ ンのチェックプロセスを自動化します。 • システムに存在するパッチに関連する警告をリストします。 • HP Systems Insight Manager および Servicecontrol Manager 製品との統合を行います。 また、Security Patch Check は HP-UX Bastille と統合すれば設定が簡単になります。 2.6.1 Security Patch Check のマニュアル Security Patch Check のマニュアルは以下から入手できます。 • security_patch_check(1M) およびbastille(1M) マンページ。 マンページディレクトリ /opt/ sec_mgmt/share/man を環境変数MANPATH に追加してください。 • Security Patch Check の README ファイルは、/opt/sec_mgmt/spc/doc/README およ び以下のサイトにあります。 http://docs.hp.com/hpux/onlinedocs/1352/README.html • Security Patch Check Frequently Asked Questions (FAQ) は、http://docs.hp.com/hpux/ onlinedocs/1353/faq.html にあります。 2.6.2 HP-UX のセキュリティ報告書の申し込み セキュリティ報告書は、HP IT リソースセンターから電子メールで自動配布できます。当社の セキュリティ報告書の自動配布を予約する場合は、ブラウザを使用して HP IT リソースセン ターのページ http://itrc.hp.com にアクセスしてください。 ユーザーとして登録し、「メンテナンス/サポート」および「セキュリティ報告 & パッチダイ ジェストの定期受信」を選択すれば、セキュリティ報告書を自動受信できます。 2.6.3 security_patch_check コマンドの使用例 security_patch_check コマンドを使用した例を以下に 2 つ示します。 最初の例では、最新のセキュリティ報告書のカタログを取得して、./security_catalog ファイルに保存します。 $ security_patch_check -r HP SECURITY PATCH CHECK (SPC) SOFTWARE TOOL DISCLAIMER.Use of the SPC software tool can help efficiently optimize system security, but does not guarantee system security. Information about 28 HP-UX オペレーティング環境の安全なインストール security actions obtained through use of the SPC software tool is provided on an "AS-IS" basis only and is subject to change without notice. HP DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Customer acknowledges that the customer is responsible for their system's security. You must accept the terms of this disclaimer to use security_patch_check. Type "accept" (without quotes) within 2 minutes to accept the terms of the above disclaimer> accept 2 番目の例では、Security Patch Check はmachineA を分析して、見つかった欠落パッチの表 を出力します。 $ security_patch_check -h machineA -q -m 2.7 バックアップと回復のためのインストール後のセキュリティのヒン ト システム稼動後も、セキュリティを維持する必要があります。 システムのバックアップおよ び回復ファイルの維持をまめに行ってください。 以下にガイドラインの一部を示します。 • fbackup と frecover コマンドだけを使用して、選択的なファイルのバックアップや 回復を行ってください。 fbackup と frecover だけで、アクセス制御リスト (ACL) を 保持します。 ACL を実装していないシステムで使用しているファイルのバックアップや 回復を行うときは、これらのコマンドの-A オプションを使用してください。 fbackup(1M) およびfrecover(1M) を参照してください。 • 別のシステムへファイルを回復する場合は、両方のシステム上のユーザーのユーザー名 とグループ名が一致していることを確かめてください。 • バックアップメディアは、機密資料であることを忘れないでください。 メディアへのア クセスは、必要性が明らかな場合にのみ許可してください。 • バックアップテープにラベルを付けて、それらを安全に保管してください。 オフサイト の保管場所では、最大のセキュリティができます。 アーカイブは最低 6 カ月取ってお き、その後、再利用してください。 • 毎日の増分バックアップと毎週のフルバックアップを実行してください。 バックアップスケジュールは、組織における情報の動きに合わせてください。 たとえ ば、主要なデータベースが毎週金曜日にアップデートされる場合、毎週のバックアップ を金曜日の夕方に予定した方が良いでしょう。 • すべてのファイルを予定どおりにバックアップしなければならない場合、バックアップ を実行する前に、すべてのユーザーに対し、端末作業を終了するように要求してくださ い。 バックアップ実行中にファイルが変更された場合、fbackup コマンドが警告を出 します。 • 最終バックアップのログファイルを調べて、バックアップの間に発生した問題がないか 確認してください。 バックアップログファイルに対して限定的なパーミッションを設定 してください。 • frecover コマンドではファイルの上書きができることに注意してください。 しかし、 ファイルは、バックアップされたときに設定されていたパーミッションと ACL を保持し ます。 • 回復処理は前もって試験し、緊急事態が発生した場合に、データを十分に回復できるこ とを確かめておかなければなりません。 • 別のマシンからのファイル回復時に、ユーザーやグループが新しいシステム上に存在し ていない場合は、chown コマンドを実行して、システム既存のユーザー ID とグループ 2.7 バックアップと回復のためのインストール後のセキュリティのヒント 29 ID を設定しなければなりません。 指定されたグループがない新しいシステムにファイル を回復する場合、ファイルは frecover コマンドを実行したユーザーのグループ所有権 を引き継ぎます。 所有者やグループ名がシステムごとに異なる意味を持つ場合、回復結 果が予期しないものになったり、意図しないものになることがあります。 30 • 電源異常でファイルが損失することはありませんが、電源異常の後にファイルの紛失が 報告された場合、バックアップテープから復元する前に /lost+found ディレクトリ内 を探してください。 • 回復するテープの内容の確認のために、frecover コマンドの-I オプションを使用し て、テープ上のファイル索引をプレビューしてください。 ファイルシステムの現在の パーミッションは、バックアップを行っても元のままに維持されます。 ファイルのパー ミッションが読み込み禁止の場合、frecover コマンドでファイルの読み込みはできま せん。 • /etc/passwd や /tcb/files 内のファイルのように重要なファイルは、決して同じ場 所に回復しないでください。 その代わり、ファイルをテンポラリディレクトリに復元し て (/tmp は使用禁止)、このディレクトリにパーミッションdrwx------を与え、他の ユーザーがそれを使用するのを防止してください。 復元されたファイルを元のファイル と比較してください。 必要な変更を行ってください。 • 必ず監査を有効にしてください。 監査は、システムを回復するときには自動的に使用可 能にはなりません。 HP-UX オペレーティング環境の安全なインストール 第3章 ユーザーおよびシステムのセキュリティ管理 本章では、オペレーティングシステムをインストールした後のユーザーのセキュリティの基 本について説明します。 ここでは、ログイン、パスワード、システムとユーザーとのその他 の相互作用に焦点を絞ります。 以下の項目について説明します。 • 「ユーザーアクセスの管理」 • 「ログイン中のユーザーの認証」 • 「PAM を使用したユーザーの認証」 • 「パスワードの管理」 • 「システムのセキュリティ属性の定義」 • 「setuid および setgid プログラムの扱い」 • 「スタックバッファーオーバーフロー攻撃の回避」 • 「無人端末およびワークステーションの保護」 • 「リモートデバイスによるシステムアクセスからの保護」 • 「ログインバナーの保護」 • 「ルートアカウントの保護」 3.1 ユーザーアクセスの管理 認可されたユーザーは、有効なユーザー名 (ログイン名) およびパスワードを入力することで、 システムへのアクセスを取得します。 各ユーザーは /etc/passwd ファイル内のエントリー によって定義されます。 ユーザーアカウントを追加、削除、非アクティブ化、再アクティブ 化、または変更するには、HP System Management Homepage (HP SMH) を使います。 パスワードについての詳細は、passwd(4)、passwd(1)、また本書の「パスワードの管理」 (42 ページ) を参照してください。 3.1.1 ユーザーアカウントのモニター ユーザーアカウントのモニターに関するガイドラインを以下に示します。 • 異常なログインがないか、last、lastb、who コマンドからの出力を定期的に調べま す。 • アカウントを持つすべてのユーザーについて、システムにアクセスする正当なビジネス ニーズがあるかを確認します。 • 複数のユーザーが同じユーザーアカウントを共用していないか注意します。 2 人のユー ザーに同じユーザーアカウントを共用させてはいけません。 • 同じユーザー ID (UID) を共用するユーザーアカウントがないことを確認します。 • すべてのアカウントに安全なパスワードがあり、定期的に変更されていることを確認し ます。 • すべてのユーザーのホームディレクトリに適切なパーミッションがあることを確認しま す。 ほぼすべてのホームディレクトリには、他のユーザーに対する読み取りアクセスは 3.1 ユーザーアクセスの管理 31 ありますが、書き込みアクセスはありません。 保護をより効果的に行うためには、読み 取り、書き込み、実行パーミッションをディレクトリ所有者だけに設定してください。 • すべてのユーザーがセキュリティ方針を理解していることを確認します。 企業のセキュ リティ方針ファイルを各ホームディレクトリに配置します。 • 使用されていないアカウント (特に退職したユーザーのアカウント) がないか /etc/ passwd ファイルを調べます。 • ルートアカウントを調べて、誰がルートアクセスを持つか確認します。 • HP-UX Role-based Access Control を実行して、複数のユーザーがルートアカウントへの アクセスを持つことに関連するリスクを最低限に抑えることを検討してください。 詳細 については、第5章 (69 ページ) を参照してください。 • ゲストアカウントの使用頻度を調べます。 3.1.2 ゲストアカウントのモニター 最も高いセキュリティレベルを実現するには、ゲストアカウントまたはオープンアカウント を許可しないでください。 ゲストアカウントがある場合、以下を実行してください。 • ゲストパスワードを頻繁に変更します。 パスワードは指定可能です。 • 制限付きシェル (rsh) を使って、システムアクセスを制限してください。 rsh コマンド についての詳細は、sh(1) およびsh-posix(1) を参照してください。 • ゲストアカウントは忘れ去られることがよくあります。 ゲストアカウントを使用しない ときは、以下のいずれかの方法を使ってゲストアカウントを使用不能にしてください。 • ユーザーごとのセキュリティ属性を使って、ある一定の使用停止日数が経過した後に アカウントを自動的に使用不能にします。 詳細は、security(4) および 「INACTIVITY_MAXDAYS およびシャドウパスワードファイル」 (50 ページ) を参照 してください。 • 以下のコマンドを使って、ゲストアカウントをロックします。 # passwd -l guest • 以下のコマンドを使って、ゲストアカウントを削除します。 # userdel guest • at ジョブをスケジュールして、一時アカウントを自動的にロックします。 # at now +14 days passwd -l tempacct • /var/adm/wtmp ファイルと /var/adm/sulog ファイルを定期的にスキャンして、使っ ていないアカウントがないかチェックします。 詳細は、sh(1) およびsu(1) を参照してください。 3.1.3 アプリケーション ユーザーアカウントの作成 ユーザーが HP-UX をアプリケーションの起動だけに使用する場合、ユーザーはシェルにアク セスする必要はありません。 これらのユーザーはデータベース管理システムなどのアプリケー ションを使うだけで、HP-UX のいずれかの機能へのアクセスは不要です。 32 ユーザーおよびシステムのセキュリティ管理 HP-UX へのアクセスを制限するには、/etc/passwd ファイルを変更して、ユーザーがログイ ンした後に特定のコマンドだけが実行されるようにします。/etc/passwd ファイルには、 ログイン中に必要となる以下の重要な情報があります。 • ユーザー名 • 暗号化されたパスワード • ユーザー ID • グループ ID • 注釈フィールド • ホームディレクトリ • ログインプログラム ログインプログラムは通常は /bin/sh などのシェルですが、必ずしもシェルである必要はあ りません。 アプリケーションをログインシェルとして識別することで、係留アカウント (captive account: ユーザーをアプリケーションに直接ログインさせるアカウント) を作成できます。 ユーザーが date コマンドだけを実行できるように制限した例を、以下に示します。 /etc/ passwd 項目は以下のようになります。 username:rc70x.4,sx2:20:1:run only date command:/home/date:/usr/bin/date ログインプロンプトで、ユーザーは username と適切なパスワードを入力します。 date コ マンドが実行された直後に、ユーザーはログアウトされます。 login: username Password:xxxxxx Tue Nov 14 18:38:38 PDT 2006 3.1.4 グループアカウントの管理 グループがプロジェクト関連ファイルを共有する必要があるか、ファイルへのアクセス権を 持つ場合、以下のステップを実行してセキュリティを確保します。 1. 2. 3. 各メンバーのエントリーが /etc/passwd 内にあることを確認します。 グループのエントリーを /etc/group ファイルに作成します。 グループの共有ディレクトリを作成します。 drwxrwx-- root project /home/projects 4. 各グループメンバーの ~/.profile に、umask を設定します。 以下の例では、グルー プ内のユーザーはファイルの読み取り、書き込み、実行が可能ですが、その他のユーザー はできません。 umask u=rwx,g=rwx, o= 3.2 ログイン中のユーザーの認証 システムおよびそのリソースにアクセスするには、ユーザーはログインする必要があります。 システムへのアクセスを制御することによって、認可されていないユーザーによるアクセス を防止できます。 ただし、認可されていないユーザーがアクセスを取得したとしても、リソー スを消費するプログラムの実行や、システムデータへのアクセスを防止することができます。 3.2 ログイン中のユーザーの認証 33 本項では、ユーザー名を入力したときからシェルプロンプトが表示されるまでの login プロ セス中に、何が起こるかについて説明します。 3.2.1 ログインプロセスの説明 以下の手順で、ログインプロセスについて説明します。 ここでは、固有のユーザー名を作成 することと、パスワードのセキュリティ方針を保持することの重要性について示します。 詳 細は、login(1) を参照してください。 1. 2. 3. 4. 5. 6. システムをインストールした後、デスクトップ ログインマネージャによってログイン画 面が表示されます。 Common Desktop Environment (CDE) がインストールされている場 合、これによって CDE ログイン画面が表示されます。 init プログラムによって getty プロセスが生成され、ユーザー名の入力が求められた ら、ユーザー名を入力します。 getty プログラムはユーザー名を login プログラムに 引き渡します。 login プログラムは /etc/passwd 内のユーザー名を検索します。 • ユーザー名がある場合、login は手順 4 に進みます。 • ユーザー名がない場合、login は以下のチェックを実行します。 • パスワードの入力を求めます (Password: )。 • 無効なパスワードが入力された場合、システムから Invalid login エラー メッセージが表示されます。 • /var/adm/btmp ファイルがあれば、これをアップデートします。 /var/adm/btmp ファイルは無効なログインの試行についてトラッキングを行 います。 詳細については、「ログイン トラッキングファイル (btmp および wtmp) のチェック」を参照してください。 • 無効なログインの試行が 3 回連続すると、終了します。 login プロセスでは /etc/passwd ファイルを確認します。 • パスワードフィールドが設定されていれば、login はパスワードの入力を求めて手 順 5 に進みます。 • パスワードフィールドが設定されていなければ、ユーザーのパスワードは不要で、 login は手順 6 に進みます。 login プロセスはパスワードを /etc/passwd 内の暗号化パスワードと比較します。 • パスワードが一致した場合、login は手順 6 に進みます。 • パスワードが一致しなかった場合、login は Invalid login を表示します。 login プロセスでは、ログインの試行が 3 回まで連続して許可されます。 ユーザー のログインの試行が 3 回とも無効であれば、login は終了します。 login プロセスでは、有効なログインをトラッキングする /var/adm/wtmp ファイル をアップデートします。 詳細については、「ログイン トラッキングファイル (btmp およ び wtmp) のチェック」を参照してください。 ログインに成功すると、ユーザーおよびグループ ID、グループアクセスリスト、作業 ディレクトリが初期化されます。 34 ユーザーおよびシステムのセキュリティ管理 7. 次に login プロセスは、/etc/passwd ファイルのコマンドフィールドにあるコマンド を実行します。 通常では、コマンドフィールドは /bin/ksh、/bin/csh、または /bin/sh などのシェルのパス名です。 コマンドフィールドが空白の場合、デフォルト は /bin/sh になります。 コマンドフィールドはシェルである必要はありません。 別のコマンドを実行する例につ いては、「アプリケーション ユーザーアカウントの作成」を参照してください。 8. シェルの初期化が完了した後、システムはプロンプトを表示してユーザーの入力を待ち ます。 組込み可能認証モジュール (PAM) を使うことで、login プロセスに詳細なユーザー認証を実 行させることも可能です。 詳細は、pam.conf(4) および「PAM を使用したユーザーの認証」 (36 ページ) を参照してください。 3.2.2 ログイン トラッキングファイル (btmp および wtmp) のチェック 以下のファイルにログインのログを記録します。 • /var/adm/btmp ファイルは失敗したログインについてトラッキングを行います。 • /var/adm/wtmp ファイルは成功したログインについてトラッキングを行います。 lastb コマンドを使って /var/adm/btmp ファイルを読み取り、未許可ユーザーがログイン を試行したかどうかを確認します。 last コマンドを使って、/var/adm/wtmp ファイルを読み取ります。 last と lastb コマンドは最新のユーザー情報を降順で表示します。 wtmp ファイルと btmp ファイルは際限なく増大するため、定期的にチェックしてください。 不要な情報を定期的に削除して、ファイルが大きくなり過ぎないようにしてください。 wtmp ファイルと btmp ファイルは、これらを保持するプログラムによっては作成されません。 こ れらのファイルを削除した場合、ログインの記録保持はオフになります。 ユーザーがログイン中によく起こす間違いとして、ログインプロンプトにパスワードまたは その一部を入力することがあります。 このログインの失敗は btmps ファイルに記録され、 パスワードまたはその一部が明示されてしまいます。 この理由から、btmps は、管理者だけ が読み取りできるようにファイル保護を設定する必要があります。 # chmod 400 /var/adm/btmps セキュリティの方針により、あるユーザーの過去のセッションを他のユーザーが表示できな いようにすることが求められる場合、/var/adm/wtmp ファイルのファイル保護も変更する 必要があります。 詳細は、last(1)、utmp(4)、wtmp(4) を参照してください。 utmp データベースは、utmpd コマンドにより /var/adm/utmp に従って管理および同期さ れるユーザーアカウント データベースです。 アプリケーションプログラムは utmps データ ベースにアクセスできます。 utmpd(1M) およびutmps(4) を参照してください。 3.2.2.1 Last コマンドの例 本項では、last コマンドの使用例を示します。 以下のコマンドは、すべてのルートセッショ ンと、コンソール端末のすべてのセッションをリストします。 3.2 ログイン中のユーザーの認証 35 # last root console | more root pts/1 Mon Mar 12 16:22 - 18:04 (01:41) abcdeux console Mon Mar 12 10:13 - 10:19 (00:06) root pts/2 Fri Mar 9 13:51 - 15:12 (01:21) abcdeux console Thu Mar 8 12:21 - 12:22 (00:00) root pts/ta Wed Mar 7 15:38 - 18:13 (02:34) 以下のコマンドは、リブートが発生した時刻をリストします。 # last reboot reboot reboot reboot reboot reboot system system system system system boot boot boot boot boot Sun Sun Sun Thu Mon Mar Mar Mar Feb Feb 28 28 28 19 16 18:06 17:48 17:40 18:25 13:56 still logged in - 18:06 (00:17) - 17:48 (00:08) - 17:40 (37+23:15) - 18:25 (3+04:28) 3.2.3 ログインしたユーザーの確認 who コマンドは、/etc/utmp ファイルを検査して、現在のユーザーログイン情報を取得しま す。 また、who コマンドは、ログイン、ログオフ、リブート、システムクロックの変更、 init プロセスによって生成されたプロセスをリストすることもできます。 who -u コマンドを使うと、現在ログインしたユーザーをモニターできます。以下に例を示 します。 # who -u aperson console Aug 5 11:28 old 5796 system.home.company.com aperson pts/0 Aug 17 18:11 0:03 24944 system aperson pts/1 Aug 5 11:28 1:14 5840 system 詳細は、who(1) を参照してください。 3.3 PAM を使用したユーザーの認証 組込み可能認証モジュール (PAM) は、認証、アカウント管理、セッション管理、パスワード サービスを提供する業界標準のフレームワークです。 本項では PAM の概要を示し、PAM 構 成ファイル (/etc/pam.conf および /etc/pam_user.conf) について説明します。 詳細は、pam(3)、pam_*(5)、pam.conf(4)、pam_user.conf(4)、security(4) を参照してくださ い。 3.3.1 概要 PAM によって、システム上で利用可能な認証サービスをどれでも選択できるという柔軟性が 提供されます。 また、PAM フレームワークを使うと、アプリケーションを変更せずに、新し い認証サービスモジュールを組み込み、使うことができます。 ユーザーはローカルまたはリモートのいずれかでログイン (たとえば、login または rlogin を使用) するたびに、そのユーザーがシステムの有効なユーザーとして確認または認証される 必要があります。 認証方式の改善に伴う変更を重ねるにつれて、ログインサービスも変更す る必要が生じてきました。 認証コードの変更のためだけにログインサービスが絶えず変更さ れるのを避けるために、ログインコードを修正することなく異なる認証方式が使用できるよ うに PAM が開発されました。 36 ユーザーおよびシステムのセキュリティ管理 その結果、ログインの認証、アカウントの確認、パスワードの変更には、PAM インタフェー スを使います。 ユーザー認証を必要とするプログラムは、その要求を PAM に渡します。PAM は正当な検証 方法を判断し、適切な応答を返します。 プログラムは使用されている認証方法を知る必要は ありません。 概要については、図 3-1 「PAM における HP-UX 認証モジュール」を参照して ください。 図 3-1 PAM における HP-UX 認証モジュール 認証方式は、以下の PAM システムファイルを使って、システム共通および個別ユーザーベー スの両方で指定されます。 /etc/pam.conf /etc/pam_user.conf システム共通の制御ファイル。 サービスと組み合 わされるサービスモジュールを定義します。 これ らのモジュールが、システムのデフォルトとみな されます。 個々のユーザーの制御ファイル。 特定ユーザーに ついて、サービスモジュールで使用されるオプショ ンを定義します。 これはオプションファイルです。 詳細は、pam(3)、pam.conf(4)、pam_updbe(5)、pam_user.conf(4) を参照してください。 3.3 PAM を使用したユーザーの認証 37 3.3.2 PAM ライブラリ PAM サービスモジュールは共有ライブラリによって実現されます。 PAM により、複数の認 証テクノロジが HP-UX で共存可能になります。 /etc/pam.conf 構成ファイルは、使用する 認証モジュールを識別します。 PAM ライブラリを以下に示します。 • PAM_DCE PAM_DCE モジュールによって、DCE をシステムエントリーサービス (login、telnet、 rlogin、ftp など) に統合できます。 PAM_DCE モジュールは、認証、アカウント管 理、パスワード管理モジュール用の機能を提供します。 これらのモジュールは PAM_DCE ライブラリ (/usr/lib/security/pam_dce.sl) によってサポートされます。 詳細 は、pam_dce(5) を参照してください。 • PAM_HPSEC PAM_HPSEC モジュールは、認証、アカウント管理、パスワード管理、セッション管理 のための HP-UX 固有の拡張機能を管理します。 /usr/lib/security/$ISA/ libpam_hpsec.so.1 の使用は、login、dtlogin、ftp、su、remsh、rexec、ssh などのサービスでは必須となります。 これらのサービスでは、libpam_hpsec.so.1 をスタックの上部に配置して、1 つ以上のオプションでないモジュールの上になるよう にする必要があります。 また、pam_hpsec モジュールは /etc/default/security に定義されているいくつかの属性を強制設定します。 詳細は、pam_hpsec(5) および security(4) を参照してください。 • PAM_KRB5 Kerberos はネットワーク認証プロトコルで、パスワードをクリアテキストで転送するこ となく、ネットワーク上の安全な通信が可能になります。 パスワードは鍵配布センター (KDC) によって認証され、そこから TGT (Ticket Granting Ticket) が発行されます。 PAM Kerberos 共有ライブラリは /usr/lib/security/libpam_krb5.1 です。 詳細は、 pam_krb5(5) を参照してください。 • PAM_LDAP LDAP (Lightweight Directory Access Protocol) は、ディレクトリサービスを使ってユーザー、 グループ、ネットワーク管理情報を一元化する標準規格です。 認証は LDAP ディレクト リサーバー上で行われます。 詳細は、http://docs.hp.com/en/internet にある LDAP-UX のマニュアルを参照してください。 • PAM_NTLM PAM NT LAN Manager によって、HP-UX ユーザーはシステムログイン中に Windows サーバーに認証を受けることが可能になります。 PAM NTLM は NT サーバーを使って、 HP-UX システムにログインするユーザーを認証します。 詳細は、http://docs.hp.com/ja/ hpuxnetcom にある『 HP CIFS Client インストールと管理』を参照してください。 • PAM_UNIX PAM_UNIX モジュールは、認証、アカウント管理、セッション管理、パスワード管理と いう 4 つのすべての PAM モジュールのための機能を提供します。 このモジュールは、 PAM UNIX ライブラリ (/usr/lib/security/libpam_unix.1) によってサポートさ れています。 詳細は、pam_unix(5) を参照してください。 38 ユーザーおよびシステムのセキュリティ管理 • PAM_UPDBE PAM のユーザー方針定義サービスモジュール (/usr/lib/security/libpam_updbe.1) は、ユーザー構成ファイル (/etc/pam_user.conf) で定義されたオプションを読み取 り、その情報を PAM ハンドルに保存して、後続のサービスモジュールが使用できるよ うにします。 詳細は、pam_updbe(5) を参照してください。 3.3.3 /etc/pam.conf を使用したシステム共通の構成 PAM 構成ファイル (/etc/pam.conf) では、ユーザーの認証に使用されるセキュリティの機 構を定義します。 デフォルト値では、標準の HP-UX と高信頼性システムの両方でシステムの 通常の操作ができます。 また、個々のユーザーの管理や DCE 統合ログイン機能もサポートさ れています。 注記: DCE の場合、auth.adm ユーティリティを使用して必要な構成ファイルを作成しま す。 このファイルは、以前の HP 統合ログインの auth.conf ファイルと同じ機能を持ちま す。 詳細は、auth.adm(1m) を参照してください。 ユーザーがログインし、パスワードを変更できるようにするには、システム内に libpam お よび libpam_unix の PAM ライブラリと、/etc/pam.conf 構成ファイルが必要です。 HP-UX の認証は、/etc/pam.conf ファイルによって決まります。 このファイルはルートに 属し、ファイルのパーミッションが以下のとおりであることが必要です。 -r--r--r-- 1 root sys 1050 Nov 8 10:16 /etc/pam.conf このファイルが壊れていたり、システムにない場合、ルートがシングルユーザーモードのコ ンソールへログインし、問題を修復することができます。 保護されたサービス名は、システム制御ファイル (/etc/pam.conf) 内に、認証、アカウン ト、セッション、パスワードの 4 つのテストカテゴリ (module-type) に分類された状態で 一覧表示されます。 詳細は、pam(3)、pam.conf(4)、pam_user.conf(4) を参照してください。 3.3.4 サンプルの/etc/pam.conf ファイル サンプルの /etc/pam.conf ファイルの一部を、以下にリストします。 シャープ記号 (#) で 始まる行は、コメントです。 /etc/pam.conf には、認証管理、アカウント管理、セッショ ン管理、パスワード管理のセクションがあります。 # # # # # # # # # # # # # # PAM configuration Notes: If the path to a library is not absolute, it is assumed to be relative to the directory /usr/lib/security/$ISA/ For PA applications, /usr/lib/security/$ISA/libpam_unix.so.1 is a symbolic link that points to the corresponding PA (32 or 64-bit) PAM backend library. The $ISA (i.e. Instruction Set Architecture) token will be replaced by the PAM engine with an appropriate directory string. 3.3 PAM を使用したユーザーの認証 39 # See pam.conf(4). # # Also note that the use of pam_hpsec(5) is mandatory for some of # the services. See pam_hpsec(5). # # Authentication management # login auth required libpam_hpsec.so.1 login auth required libpam_hpsec.so.1 su auth required libpam.hpsec.so.1 bypass_setaud su auth required libpam_unix.so.1 dtlogin auth required libpam_hpsec.so.1 dtlogin auth required libpam_unix.so.1 dtaction auth required libpam_hpsec.so.1 dtaction auth required libpam_unix.so.1 ftp auth required libpam_hpsec.so.1 ftp auth required libpam_unix.so.1 rcomds auth required libpam_hpsec.so.1 rcomds auth required libpam_unix.so.1 sshd auth required libpam_hpsec.so.1 sshd auth required libpam_unix.so.1 OTHER auth required libpam_unix.so.1 # # Account management # login account required libpam_hpsec.so.1 login account required libpam_unix.so.1 su account required libpam_hpsec.so.1 su account required libpam_unix.so.1 3.3.5 /etc/pam_user.conf ユーザー構成ファイル PAM 構成ファイル (/etc/pam_user.conf) は、ユーザーごとに PAM を構成します。 この ファイルはオプションです。 このファイルは、異なるユーザーに対して PAM アプリケーショ ンに異なる動作をさせる場合にのみ必要となります。 /etc/pam_user.conf にユーザーをリストすることで、個々のユーザーに異なるオプショ ンを割り当てます。 ここにリストされた login-name について、/etc/pam.conf 内の module-type および module-path について指定された options が、ここにリストされ た options に変更されます。 /etc/pam_user.conf のエントリーでは以下の構文を使用します。 login-name module-type module-path options 各エントリーの内容は以下のとおりです。 login-name module-type module-path options ユーザーのログイン名です。 /etc/pam.conf で指定された module-type です。 /etc/pam.conf 内の module-type に関連した module-path です。 モジュールが認識するゼロまたは複数のオプションです。 /etc/pam_user.conf のデフォルトの内容は、次のようなコメントです。 # # This file defines PAM configuration for a user. The configuration # here overrides pam.conf. 40 ユーザーおよびシステムのセキュリティ管理 # # # # # # # # # # # # # # # The format for each entry is: user_name module_type module_path options For example: user_a user_a user_a auth auth password /usr/lib/security/libpam_unix.1 /usr/lib/security/libpam_dce.1 /usr/lib/security/libpam_unix.1 debug try_first_pass debug user_b user_b auth password /usr/lib/security/libpam_unix.1 /usr/lib/security/libpam_unix.1 debug use_psd debug use_psd See the pam_user.conf(4) manual page for more information 3.3.6 例: ログインでの PAM の実行方法 以下の例は、/etc/pam.conf ファイルの構成方法に応じたlogin 用のauth プロセスを示 したものです。 • /etc/pam.conf が以下のように、単一の標準のlogin auth を含んでいる場合、login は正常に進行します。 login • auth required /usr/lib/security/libpam_unix.1 以下のように、システム全体のlogin auth エントリーが複数ある場合、順番に処理さ れます。 login login auth required /usr/lib/security/libpam_unix.1 auth required /usr/lib/security/libpam_dce.1 この場合、まず標準の HP-UX login プロセスが実行されます。 次に DCE の認証プロセ スが実行されます。 両方に問題がない場合、ログインが成功します。 ユーザーがどちら かのプロセスで失敗した場合でも、両方のプロセスが実行されます。 • ユーザー別に異なる認証方法をとる場合は、/etc/pam.conf 内の認証モジュールの前 に特殊なエントリー libpam_udpbe を追加します (参照しやすいように行に番号をつけ てあります)。 #/etc/pam.conf #1 login auth #2 login auth #3 login auth required /usr/lib/security/libpam_udpbe.1 required /usr/lib/security/libpam_unix.1 required /usr/lib/security/libpam_dce.1 さらに、個別に認証方法を指定する各ユーザーのエントリーを /etc/pam_user.conf に追加します。 #/etc/pam_user.conf #4 allan auth /usr/lib/security/libpam_unix.1 #5 allan auth /usr/lib/security/libpam_dce.1 debug try_first_pass 3.3 PAM を使用したユーザーの認証 41 #6 isabel auth /usr/lib/security/libpam_unix.1 debug use_psd アラン (allan) がログインすると、/etc/pam.conf の 1 番の行により、PAM が /etc/ pam_user.conf を読み込みます。 /etc/pam_user.conf の 4、5 番の行のモジュー ルパスは /etc/pam.conf の 2、3 番の行のモジュールパスと一致するので、PAM は一 時的に /etc/pam.conf の 2、3 番の行のヌルの options フィールドをそれぞ れ"debug"と"try_first_pass"に置き換えます。 その後、2、3 番の行で指定された モジュールが、変更されたオプションとともに実行されます。 イザベル (isabel) がログインすると、/etc/pam.conf の 1 番の行により、PAM が /etc/pam_user.conf を読み込み、一時的に /etc/pam.conf の 2 番の行の options を"debug use_psd"に置き換えます。 3 番の行は変更されません。 その後、2、3 番 の行で指定されたモジュールが、変更されたオプションとともに実行されます。 ジョージ (george) がログインすると、/etc/pam.conf の 1 番の行により、PAM が /etc/pam_user.conf を読み込みます。 ジョージ (george) のエントリーがないの で、/etc/pam_user.conf の 2、3 番の行は変更されません。 2、3 番の行により指 定されたモジュールは変更されないまま実行されます。 3.4 パスワードの管理 パスワードは、最も重要な各ユーザーの識別シンボルです。 システムは、それを使用して、 システムへのアクセスを許可するユーザーを認証します。 パスワードは、使用時や保存時、 または通知時に危険にさらされやすいので、いかなるときにもパスワードの秘密保持が必要 です。 以下の項では、パスワードについてさらに詳しく説明します。 3.4.1 システム管理者の責任 システム管理者とシステム上のすべてのユーザーは、パスワードセキュリティに関して責任 を分担する必要があります。 システム管理者は、次のセキュリティ作業を実行します。 42 • すべてのユーザーにパスワードがあることを確認します。 • 標準のパスワードファイルおよびグループファイル (/etc/passwd、/etc/group) な ど、すべてのシステムファイルに関して適正なパーミッションを維持します。 • もはやシステムにアクセスする権限のないユーザーのユーザー ID とパスワードを削除ま たは無効にします。 • アプリケーションのパスワードがすべて暗号化されているか確認します。 • /var/adm/btmp と /var/adm/wtmp のパーミッションが適切に設定されているか確認 します。 • 単一ゲストアクセス用のワンタイムパスワードを提供します。 • パスワードのセキュリティに関するユーザーの責任をユーザーに通知します。 • パスワードエージングを使って、パスワードの定期的な変更をユーザーに強く要求しま す。 • 最近使用したパスワードを再使用させないようにします。 ユーザーおよびシステムのセキュリティ管理 • システム全体のセキュリティ属性を /etc/default/security ファイルに構成しま す。 詳細については、「システムのセキュリティ属性の定義」およびsecurity(4) を参照 してください。 • シャドウパスワードを使うようシステムを変換します。 詳細については、「/etc/shadow シャドウパスワードファイル」、shadow(4) およびpwconv(1M) を参照してください。 3.4.2 ユーザーの責任 すべてのユーザーは、次の規則を守る必要があります。 • パスワードを記憶していて、いかなる場合にもその秘密を保持する。 • 初期パスワードはすぐに変更し、パスワードの変更はその後も継続して行う。 • ステータスの変更やセキュリティ違反の疑いがあれば、すべて報告する。 • パスワードを入力するとき誰も見ていないことを確かめる。 3.4.3 適切なパスワードの基準 パスワードを選択するとき、次のガイドラインを守ってください。また、このガイドライン をユーザーに周知させてください。 • パスワードは最低 6 文字以上で、80 文字を超えないものを選択します。 特殊文字には、 制御文字と、アスタリスクおよびスラッシュなどのシンボルが含まれます。 標準モード では、最初の 8 文字だけが使用されます。 • 各国語の辞書の中にあるような単語を選択しないでください。逆につづったものも不可 です。 それを探索して一致させてしまうようなソフトウェアプログラムが存在します。 • 姓や愛称、または趣味など、自分に容易に結び付くようなパスワードを選択しないでく ださい。 • asdfghjkl のような簡単なキーボードシーケンス、または自分のログイン名の繰り返 しを使用しないでください (たとえば、ログイン名が ann の場合、annann は不適切な パスワード)。 • スペルミスのある単語または関連のない 2 語を結び付けたつづりを使って、適切なパス ワードとすることを検討してください。 別の一般的な方法は、お気に入りのタイトルま たはフレーズの最初の文字をパスワードに使うことです。 • つづりを結び付けて、発音できる無意味な言葉を作るパスワードジェネレータの使用を 考慮してください。 • パスワードは他のユーザーと共有しないでください。 管理者は、パスワードの共有を禁 止しなければなりません。 • パスワードが常に存在するようにしてください。 /etc/passwd ファイル上のパスワー ドフィールドを消去しないでください。 3.4.4 /etc/passwd パスワードファイルの変更 標準システムは、1 つのパスワードファイル /etc/passwd を維持します。 すべてのパスワードは、入力後すぐに暗号化されて、パスワードファイル /etc/passwd に 保存されます。 暗号化されたパスワードだけが、比較に使用されます。 3.4 パスワードの管理 43 パスワードファイルを変更する必要がある場合、以下のガイドラインに従ってください。 • パスワードフィールドを空のままにしないでください。これはセキュリティ侵害となり ます。 パスワードフィールドを空にすると、どのユーザーでもそのアカウントのパス ワードを設定できます。 • 直接パスワードファイルを編集してはいけません。 パスワードファイルエントリーの修 正には、HP SMH、useradd、userdel、または usermod コマンドを使ってください。 パスワードファイルを直接編集する必要がある場合、vipw コマンドを使って pwck コ マンドでチェックしてください。 詳細は、vipw(1M) およびpwck(1M) を参照してくださ い。 3.4.4.1 passwd コマンドの例 役に立つ passwd コマンドの一例を以下に示します。 • ユーザーのパスワードをリセットする場合 # passwd user1 • 次回ログインでパスワードの変更を強制する場合 # passwd -f user1 • アカウントをロックまたは使用不能にする場合 # passwd -l user2 • パスワードエージングを使用可能にする場合 # passwd -n 7 -x 28 user1 • 特定ユーザーのパスワードエージングの状態を表示する場合 # passwd -s user • すべてのユーザーのパスワードエージングの状態を表示する場合 # passwd -sa 3.4.4.2 /etc/passwd ファイル形式 /etc/passwd ファイルは、ログイン時にユーザーの認証に使用されます。 このファイルは、 HP-UX システムのすべてのアカウントのエントリーを含んでいます。 各々のエントリーは、 コロンによって分離されていて、7 つのフィールドから成ります。 典型的な /etc/passwd のエントリーは、次のようになります。 robin:Z.yxGaSvxAXGg:102:99:Robin Hood,Rm 3,x9876,408-555-1234:/home/robin:/usr/bin/sh フィールドは、コロンで区切られた次の情報を含んでいます (順番に列記します)。 1. 2. 3. 4. 44 robin — 最大 8 文字から成るユーザー名 (ログイン名)。 Z.yxGaSvxAXGg — 暗号化パスワードフィールド。 102 — ユーザー ID、0 から MAXINT-1 (2,147,483,646 または 231 -2 と等しい) まで の整数。 99 — グループ ID、/etc/group に定義されている 0 から MAXINT-1 までの整数。 ユーザーおよびシステムのセキュリティ管理 5. 6. 7. Robin Hood,Rm 3,x9876,408-555-1234 — ユーザーのフルネーム、住所、電話番 号などの情報を確認するために使用される注釈フィールド。 歴史的理由から、このフィー ルドは gecos フィールドとも呼ばれています。 /home/robin — ホームディレクトリ、ユーザーの初期ログインディレクトリ。 /usr/bin/sh — ユーザーがログインしたときに実行される、ログインシェルのパス 名。 ユーザーは passwd を実行してパスワードを変更したり、chfn を実行して注釈フィールド (5 番目のフィールド) を変更することができ、また chsh を実行してログインプログラムのパ ス名 (7 番目のフィールド) を変更することもできます。 システム管理者は、残りのフィール ドを設定します。 ユーザー ID は一意でなければなりません。 詳細は、chfn(1)、chsh(1)、 passwd(1)、およびpasswd(4) を参照してください。 3.4.5 /etc/shadow シャドウパスワードファイル 悪意を持ったパスワードの解読者が高度な計算能力を利用するようになり、/etc/passwd ファイルに保存された隠されていないパスワードが解読される危険があります。 シャドウパスワードは、暗号化パスワードをシャドウパスワードファイルに隠蔽することに より、システムのセキュリティを強化します。 暗号化パスワードは、従来は誰でも読み取る ことができる /etc/passwd ファイルに保存されていましたが、これを適切な権限を持つユー ザーのみがアクセス可能な /etc/shadow ファイルに移動することができます。 シャドウパスワードの使用可能化、確認、使用不能化するには、以下のコマンドを使います。 • pwconv コマンドはシャドウパスワードファイルを作成し、暗号化パスワードを /etc/ passwd ファイルから /etc/shadow ファイルにコピーします。 • pwck コマンドにより、/etc/passwd と /etc/shadow のファイルに不整合があるか チェックされます。 • pwunconv コマンドは、暗号化パスワードとエージング情報を /etc/shadow ファイル から /etc/passwd ファイルにコピーし、/etc/shadow ファイルを削除します。 詳細は、pwconv(1M)、pwck(1M)、pwunconv(1M) およびshadow(4) を参照してください。 シャドウパスワード機能について、以下のポイントに注意してください。 • シャドウパスワードの機能が有効な場合、パスワードとエージング情報を取得するため に /etc/passwd ファイルのパスワードフィールドに直接アクセスすると、アプリケー ションは影響を受ける可能性があります。 このフィールドには情報が /etc/shadow に あることを示すx が含まれています。 PAM インタフェースを使って認証するアプリケーションは影響を受けません。 /etc/shadow ファイルにプログラムでアクセスするには、getspent() 呼び出しを使 います。 この呼び出しは /etc/passwd のための getpwent() 呼び出しに類似してい ます。 詳細は、getspent(3C) およびgetpwent(3C) を参照してください。 • /etc/nsswitch.conf ファイルでは、シャドウパスワードは files、NIS、LDAP ネームサービスでサポートされていますが、他のネームサービススイッチ バックエンド ではサポートされません。 files、NIS または LDAP あるいはこれらのすべてを使う ようシステムを構成するには、/etc/nsswitch.conf の passwd の行が、files、 NIS、LDAP またはこれらすべてを含むようにします。 /etc/nsswitch.conf が存在 3.4 パスワードの管理 45 しないか、passwd の行が存在しない場合、デフォルトは files のみです。 詳細は、 nsswitch.conf(4) を参照してください。 • シャドウパスワードは他の UNIX システムで採用されている業界標準をベースとしてい ます。 /etc/default/security で定義されている以下の属性を、シャドウパスワードに適用し ます。 詳細については、「システムのセキュリティ属性の定義」およびsecurity(4) マンペー ジを参照してください。 • INACTIVITY_MAXDAYS — 使用されないアカウントを期限切れとするまでの日数。 • PASSWORD_MINDAYS — パスワードを変更できるまでの最低日数。 • PASSWORD_MAXDAYS — パスワードが有効な最大日数。 • PASSWORD_WARNDAYS — パスワードが期限切れとなることをユーザーに警告するまで の日数。 シャドウパスワードは以下の製品でサポートされています。 • LDAP (Lightweight Directory Access Protocol) • Ignite-UX Directory Access Control (LDAP) • Serviceguard シャドウパスワードは、パスワードを /etc/passwd に保存する必要があるアプリケーショ ンではサポートされていません。 詳細は、以下のマンページを参照してください。 passwd(1)、pwck(1M)、pwconv(1M)、pwunconv(1M)、getspent(3C)、putspent(3C)、 nsswitch.conf(4)、passwd(4)、security(4)、shadow(4) 3.4.6 /etc/passwd 内での擬似アカウントの削除とキーサブシステムの保護 慣例的に、/etc/passwd ファイルは多数の「擬似アカウント」を含んでいます。これは、 個々のユーザーには対応していないエントリーで、本当の対話型ログインシェルを持ってい ません。 date、who、sync、tty などこれらのエントリーの一部は、ユーザーの便宜にためにのみ発 展し、ログインせずに実行できるコマンドを提供してきました。セキュリティを厳重にする ため、ログインしているユーザーのみこれらのプログラムを実行できるようにするため、こ れらのエントリーは配布する /etc/passwd 内から取り除かれました。 このような他のエントリーは、ファイルの所有者なので、/etc/passwd 内に残ります。 adm、bin、daemon、hpdb、lp、uucp などの所有者を持つプログラムは各サブシステムに 対応していて、特別な場合を表します。 それらは保護しているファイルへのアクセスまたは 使用を保証するので、これらのプログラムは /etc/passwd 内に列記されたエントリーを持 ち、擬似アカウントとして機能できなければなりません。 通例の擬似アカウントと特別なア カウントを例 3-1 「擬似アカウントと特別なシステムアカウント」で示しています。 46 ユーザーおよびシステムのセキュリティ管理 例 3-1 擬似アカウントと特別なシステムアカウント root::0:3::/:/sbin/sh daemon:*:1:5::/:/sbin/sh bin:*:2:2::/usr/bin:/sbin/sh sys:*:3:3::/: adm:*:4:4::/var/adm:/sbin/sh uucp:*:5:3::/var/spool/uucppublic:/usr/lbin/uucp/uucico lp:*:9:7::/var/spool/lp:/sbin/sh nuucp:*:11:11::/var/spool/uucppublic:/usr/lbin/uucp/uucico hpdb:*:27:1:ALLBASE:/:/sbin/sh nobody:*:-2:-2::/: これらのサブシステムの特権ステータスのキーは、ルートアクセス (uid 0) を使用せずに、 自身の権限のもとで、プログラムにアクセス権を付与することができるということです。 つ まり、実行可能ファイルの setuid ビットが設定され、プロセスの実効ユーザーは実行可能 ファイルの所有者になります。 たとえば、cancel コマンドは lp サブシステムの一部なの で、実効ユーザー lp として実行されます。 setuid をいったん設定すると、そのサブシステムのセキュリティの影響範囲は、システム 全体ではなく、そのサブシステムに含まれるすべてのプログラムのセキュリティを実施しま す。 したがって、セキュリティ違反に対するサブシステムの弱点も、そのサブシステムファ イルだけに限られます。 違反は、別のサブシステムの下のプログラムに影響することはあり ません。 たとえば、lp の下のプログラムは、daemon の下のプログラムに影響しません。 3.4.7 HP-UX Secure Shell を使用した安全なログイン HP-UX Secure Shell により、安全なリモートログイン、ファイル転送、リモートコマンドの実 行ができます。 クライアントとサーバーの通信はすべて暗号化されます。 ネットワーク経由 で送信されるパスワードは、クリアテキストではありません。 詳細は、ssh(1) および「HP-UX Secure Shell (SSH) を使用したリモートセッションの保護」を参照してください。 3.4.8 NIS に保存されたパスワードの保護 ネットワーク情報サービス (NIS) は、ネットワークファイルシステム (NFS) の一部です。 NIS によって、中央に位置するマスターサーバーから複数のホストの構成を管理できます。 ホス ト構成をそれぞれのホストに別々に保存する代わりに、情報は中央の場所に集約されていま す。 /etc/password ファイルも、NIS サーバーに保管される構成ファイルのうちの 1 つで す。 /etc/shadow シャドウパスワードファイルは NIS ではサポートされていません。 NIS についての詳細は、『NFS Services Administrator's Guide』 を参照してください。 3.4.9 LDAP ディレクトリサーバーに保存されたパスワードの保護 LDAP-UX Client Services は PAM と相互運用して、LDAP ディレクトリサーバーに保存された パスワードを認証します。 PAM_LDAP ライブラリによって、認証サービスが提供されます。 3.4 パスワードの管理 47 3.5 システムのセキュリティ属性の定義 セキュリティ属性はパスワード、ログイン、監査のセキュリティを強化して、システム構成 に追加の制御を提供します。 属性は 20 以上あります。 これらの属性については、security(4) に説明があります。 属性の カテゴリは以下のように要約されます。 ログイン属性 パスワード属性 ブート属性 スイッチユーザー (su) 属性 監査属性 umask 属性 これらの属性は、ログイン時間、許容ログイン回数、 アカウントをロックするまでに許容されるログインの 失敗回数などのログインアクティビティを制御します。 これらの属性は、パスワードの長さ、文字数および文 字の種類、パスワード履歴の個数、パスワードを変更 するまでの日数、パスワードの期限切れなどのパスワー ドアクティビティを制御します。 これらの属性は、システムをシングルユーザーモード にブートするための認証ユーザーを定義して、ブート 認証機能を制御します。 第2章 「HP-UX オペレーティ ング環境の安全なインストール」のブート認証情報を 参照してください。 これらの属性は PATH 環境変数値、su コマンドのルー トグループ名、su が特定の環境変数を伝播するかどう かを定義します。 詳細については、su(1) を参照してく ださい。 この属性は、ユーザーが監査対象かどうかを制御しま す。 監査属性はログインプロセス中にチェックされま す。 HP-UX 監査についての詳細は、audit(5) を参照し てください。 この属性は、pam_unix または pam_hpsec によって 開始されるすべてのセッションの umask() を制御しま す。 詳細は、pam_unix(5) およびpam_hpsec(5) を参照 してください。 umask 属性はログインプロセス中に チェックされます。 システムでは、以下のファイルを使って属性を処理します。 • /etc/default/security • /var/adm/userdb • /etc/security.dsc • /etc/passwd • /etc/shadow それぞれの属性には、/etc/password、/etc/shadow、または /var/adm/userdb のユー ザーデータベースのうちいずれか 1 つだけの場所に、ユーザーごとの値があります。 それぞ れの属性と、属性のユーザーごとの場所については、security(4) マンページに説明がありま す。 システムでは、適用対象となる属性を以下の方法でチェックします。 48 ユーザーおよびシステムのセキュリティ管理 • システムは、/var/adm/userdb ユーザーデータベース、/etc/passwd ファイル、ま たは /etc/shadow ファイルの中のユーザーごとの属性値を検査します。 • ユーザーごとの値がない場合、システムは /etc/default/security にある構成可能 なシステム全体のデフォルト属性を検査します。 • 構成可能なシステム全体のデフォルト属性がない場合、システムは /etc/security.dsc にあるデフォルト属性を使います。 セキュリティ属性説明ファイル /etc/security.dsc では、/etc/default/security を 定義可能な属性を、および /var/adm/userdb 内のユーザーデータベースに定義可能な属性 をリストします。 属性には構成可能な属性や、内部の属性などがあります。 /etc/ security.dsc ファイルは決して変更しないでください。 3.5.1 システム共通属性の構成 以下の手順では、セキュリティ属性をシステム共通ベースで定義する方法について説明しま す。 1. 構成可能なシステム共通のデフォルト属性値について説明したsecurity(4) マンページを確 認してください。 これらの属性は /etc/default/security ファイルに構成されてい ますが、このファイルについてはsecurity(4) マンページにも説明があります。 属性が /etc/default/security ファイルで定義されない場合、/etc/security.dsc ファイルで定義されたデフォルト値がシステムによって使用されます。 /etc/ security.dsc ファイルの説明については、userdb(4) マンページを参照してください。 2. 構成可能なシステム共通のデフォルト値を変更するには、セキュリティデフォルトファ イル /etc/default/security を vi などのテキストエディターで編集してください。 ファイルは誰でも読み取り可能で、ルートによる書き込みが可能です。 /etc/default/security ファイルの各行は、コメントか属性構成情報のいずれかで す。 コメント行の先頭は、シャープ (#) 符号です。 非コメント行は attribute=value の組み合わせの形式で、たとえば PASSWORD_MAXDAYS=30 となります。 3.5.2 ユーザーごとの属性の構成 特定の属性を個々のユーザー向けに構成するには、以下のコマンドを使います。 ユーザーご との属性を構成すると、システム共通のデフォルト値が無効になります。 userdbset 指定したユーザーについての属性を変更して、/etc/default/ security ファイルで定義されたシステム共通のデフォルト値を上書 きします。 詳細については、「ユーザー固有の属性を userdbset で定 義する例」およびuserdbset(1M) の例を参照してください。 userdbget 特定のユーザーまたはすべてのユーザーについて、ユーザー定義の値 を表示します。 詳細は、userdbget(1M) を参照してください。 userdbck ユーザー定義の値の確認または修正を行います。 詳細は、userdbck(1M) を参照してください。 たとえば、エイミー (amy) というユーザーについてのみ、PASSWORD_MAXDAYS を 60 日から 30 日に変更することができます。 エイミー (amy) のパスワードの有効日数は、60 日でなく 30 日となります。 その他すべてのユーザーについては、システム共通の値である 60 日が適 用されます。 3.5 システムのセキュリティ属性の定義 49 ユーザーの属性値を変更するには、以下の手順を使います。 1. 2. 3. 4. システム共通の属性および属性値と、ユーザーごとの値を設定する方法についての説明 があるsecurity(4) マンページを確認してください。 すべての属性がユーザーごとの値を 持つというわけではありません。 userdbset、userdbget、userdbck コマンドのマンページを確認してください。 変更するユーザーと、ユーザーに適用される属性を決定します。 たとえば、会計学科の ユーザーは 30 日ごと、またクラスの学生は各学期ごとにパスワードを変更させる必要が あるとします。 userdbset コマンドを使って、ユーザーの属性を変更します。 ユーザーごとの情報は、/var/adm/userdb ディレクトリのユーザーデータベースに保 存されます。 ユーザーデータベースについての説明は、userdb(4) マンページにありま す。 userdbset コマンドを使ってすべての属性を構成することはできません。 一部のユー ザーごとの値は /etc/passwd および /etc/shadow ファイルに定義されています。 詳 細は、security(4) を参照してください。 5. userdbget コマンドを使って、ユーザー情報を取得します。 3.5.2.1 ユーザー固有の属性を userdbset で定義する例 以下の例では、userdbset コマンドによって、ジョー (joe) というユーザーのユーザ定義属 性がすべて削除されます。 joe がログインすると、/etc/default/security にあるシス テム共通のデフォルト値が joe に適用されます。 # /usr/sbin/userdbset -d -u joe 次に、userdbset によって最低限のパスワードの長さが 7 に、UMASK が 0022 (8 進数の 022) に設定されます。 これらの変更は joe だけに適用されます。 # /usr/sbin/userdbset -u joe MIN_PASSWORD_LENGTH=7 UMASK=0022 次の例では、userdbset によってエイミー (amy) というユーザーのすべての属性が表示され ます。 # /usr/sbin/userdbget -u amy amy AUDIT_FLAG=1 amy DISPLAY_LAST_LOGIN=0 表示内容では、amy について監査フラグが有効になり、最新のログイン機能が無効になって います 3.5.2.2 INACTIVITY_MAXDAYS およびシャドウパスワードファイル /etc/default/security ファイルで定義されている INACTIVITY_MAXDAYS 属性は、使 用中でないアカウントを期限切れとするかどうかについて、システム共通ベースで制御しま す。 システム共通のデフォルト値を上書きして、ユーザーごとのベースになるよう INACTIVITY_MAXDAYS を構成するには、useradd -f コマンドまたは usermod -f コマ ンドを使います。 userdel コマンドを使って、ユーザーごとの構成を削除します。 詳細は、 useradd(1M)、usermod(1M)、userdel(1M) マンページを参照してください。 userdbset コマンドを使って、INACTIVITY_MAXDAYS をユーザーごとのベースで構成する ことはできません。 INACTIVITY_MAXDAYS 属性はシャドウパスワードファイルの使用停止 50 ユーザーおよびシステムのセキュリティ管理 フィールドに関連しています。 useradd コマンドと usermod コマンドでは、特定のユー ザーについてのシャドウパスワードファイルの使用停止フィールドを変更します。 詳細につ いては、security(4) マンページの INACTIVITY_MAXDAYS の説明を参照してください。 3.5.3 ユーザーデータベースのトラブルシューティング ユーザーデータベースのトラブルシューティングを行うには、以下の手順を使います。 問題 1: ユーザーのセキュリティ属性の構成が誤っている。 ユーザーデータベースのユー ザー情報の構成に誤りがあると思われる場合、以下のコマンドを実行します。 # userdbget -u username ユーザー username について構成した属性が表示されます。 属性の構成に誤りがある場合、 属性を再構成します。 問題 2: ユーザーデータベースが正しく機能しない。 がある場合、以下のコマンドを入力します。 ユーザーデータベースを検査する必要 # userdbck userdbck コマンドはユーザーデータベース内の問題を識別し、修復します。 3.6 setuid および setgid プログラムの扱い システムにセキュリティリスクを潜在的に与えるという理由から、どのプログラムが setuid (ユーザー ID 設定) および setgid (グループ ID 設定) を行うプログラムであるかに注意しま す。 システムへの侵入者は、setuid と setgid を行うプログラムを利用しますが、ほとん どの場合、次の 2 通りのどちらかの方法で行います。 • 侵入者が定義したコマンドを、対話式に、もしくはスクリプトによって、setuid また は setgid を行うプログラムに実行 (exec) させる。 • プログラムが作成したデータを、にせデータに置き換える。 setuid および setgid を行うプログラムを保護するには、以下のガイドラインに従います。 • setuid および setgid を行うプログラムが変更されていないか注意します。 • 不必要に setuid を行っていると思われるプログラムがあれば、詳しく調査してくださ い。 • setuid を行うプログラムである必要がなければ、プログラムのパーミッションを setgid を行うプログラムに変更します。 詳細については、chmod(1) およびchmod(2) を参照し てください。 ls コマンドの長い形式 (ll または ls -l) では、所有者実行パーミッション欄に、-や x でなく S または s を表示して、setuid を行うプログラムであることを示します。 同様に、グループ実行パーミッション欄に、-や x でなく、S または s を表示して、 setgid を行うプログラムであることを示します。 setuid や setgid を行うシステムファイルは、カスタマイズしていない限りは、出荷 用メディアで提供されたときと同じパーミッションになっている必要があります。 • setuid を行うプログラムをユーザーが持つこと (特に、自分以外へのユーザーに setuid を使うこと) は、通常は許可してはいけません。 3.6 setuid および setgid プログラムの扱い 51 • 外部ソースから取り込んだすべてのプログラムのコードを調べ、「トロイの木馬」と呼 ばれる有害なプログラムがないか見てください。 setuid を行うプログラムについて、 調べるためのソースがない場合、決して復元またはインストールしないでください。 • 特定のスーパーユーザープログラムへのアクセスをユーザーに許可する場合は、制限付 き SMH を使うことを推奨します。 制限付き SMH は、非スーパーユーザーに、SMH の 特定の領域へのアクセスを許可します。 詳細については、smh(1M) を参照してくださ い。 3.6.1 setuid プログラムと setgid プログラムが危険である理由 どんなプログラムを実行するときでも、常に、プロセスに付属して 4 種類の ID 番号、実ユー ザー ID と実効ユーザー ID (ruid と euid) および実グループ ID と実効グループ ID (rgid と egid) が生成されます。 通常、これらの ID の対は、同一の値です。 しかし、setuid または setgid を行うプログラムを実行すると、プロセスの euid または egid が、プロセスの所有者のものから対象物のものへと変わります。 生成されたプロセス は、対象物からそれらの属性を獲得し、プログラムの所有者やグループのアクセス権と同じ アクセス権をユーザーに与えます。 • setuid ビットがオンの場合、プロセスの特権にはファイルの所有者の特権が設定され ます。 • the setgid ビットがオンの場合、プロセスの特権にはファイルのグループの特権が設定 されます。 • setuid と setgid ビットがどちらもオンでない場合、プロセスの特権は変わりません。 • 特に危険なのは、プログラムが setuid を root にすると、ユーザーは、root が使用 可能なすべての特権を取得することです。 プログラムがシステムのセキュリティを妨害 する可能性があるため、これは危険です。 危険度は下がりますが、他の setuid と setgid の場合にも、この問題が起こります。 セキュリティ上の理由から、スクリプトの setuid と setgid のビットは、HP-UX カーネル からは通常無視されます。 この規則は調整パラメータ secure_sid_scripts を変更するこ とで緩和できますが、この調整パラメータはデフォルトから変更しないことを強くお勧めし ます。 この調整パラメータについては、secure_sid_scripts(5) を参照してください。 3.6.2 ID の設定方法 ID を設定するには、以下のいろいろな方法があります。 52 • ruid と rgid は、uid と gid を設定する login プロセスから受け継がれたものです。 uid と gid の値は、/etc/passwd 内に指定されます。 • login コマンドは、ruid、euid、rgid、egid も変更します。 • su コマンドは、euid と ruid を変更します。 • newgrp コマンドは gid を変更できます。 • setuid と setgid ビットは、chmod() システムコールまたは chmod コマンドを使っ て設定できます。 詳細については、chmod(1) およびchmod(2) を参照してください。 ユーザーおよびシステムのセキュリティ管理 3.6.3 setuid 能力の制限のためのガイドライン setuid を root にするプログラムを既存のシステムに追加する場合は、十分注意してくだ さい。 setuid を root にするプログラムを追加するとシステム構成が変わり、セキュリティ が危うくなる可能性があります。 次に示す管理上およびプログラミング上の提案に従って、特権プログラムの限定的な使用を 実施してください。 • setuid と setgid は、絶対に必要なときだけ使ってください。 • setuid を行うプログラムは、他のユーザーによる書き込みを不可にしてください。 • 可能ならば、setuid の代わりに setgid を行うようにして、コーディングの欠陥、ま たはセキュリティ違反に起因する損傷の範囲を減少させてください。 • setuid や setgid を行うプログラムが新たに存在していたり修正されていないか、ファ イルシステムを定期的に調査してください。 ncheck -s コマンドが使用できます。 • setuid や setgid を行うプログラムの動作を正確に理解し、それらが意図したとおり のことしか行っていないことを確かめてください。 これが実行できなければ、プログラ ムまたはその setuid 属性を削除してください。 • setuid プログラムをコピーしなければならない場合、コピー先のファイルのモードが 正しいことを確かめてください。 • setuid を行うプログラムは、setuid または setgid 属性を付与することなく、危険 でないデータで試験できるように作成します。 コードを再検討し、新しいプログラム が、影響を与えるすべての部分でセキュリティを維持することを確認した後でのみ、こ の属性を付与します。 • setuid を行うプログラムが、意図したユーザー以外による書き込みが可能なファイル を作成しないことを確かめてください。 • exec*() システムコールを呼び出す前に、euid をリセットします。 exec*() は、他 のライブラリルーチン内からも呼び出されることがあるので注意してください。また、 プログラムを実行するためにシェルプロセスを生成 (fork) するルーチン (popen()、 system()、execlp()、execvp() を含む) の使用にも注意してください。 詳細につい ては、exec(2)、popen(3S)、system(3S) を参照してください。 • setuid を行うプログラムを書くときは、特権を必要とするコードの回りに setresuid() を使って、弱点となる範囲を減少させます。 詳細については、setresuid(2) を参照してく ださい。 • exec*() を呼び出す前に、すべての不必要なファイル記述子をクローズします。 • プログラム環境内のすべての変数 (PATH、IFS) と umask の値が、十分に限定されてい ることを確かめます。 • creat() システムコールを使ってロックファイルを作成しないでください。 その代わ りに、lockf() または fcntl() を使います。 詳細については、lockf(2) およびfcntl(2) を参照してください。 • 適切なパラメータ長を確認せずに sprintf()、strcpy()、strcat() を使うなどし て、バッファーがオーバーランすることのないよう特に注意してください。 詳細につい ては、printf(3S) およびstring(3C) を参照してください。 3.6 setuid および setgid プログラムの扱い 53 3.7 スタックバッファーオーバーフロー攻撃の回避 大量のデータをプログラムに渡すことを、スタックバッファー オーバーフロー攻撃といいま す。 通常、このデータにはプログラムをだまして実行させるコマンドが含まれています。 こ れらの攻撃は、システムへの未許可アクセスの取得、データの破壊または改変、あるいは正 当なユーザーへの DoS(denial of service) 攻撃を行うために使用されます。 スタックバッファー オーバーフロー攻撃をモニターするには、以下が変更されていないか注 意します。 • 他のプログラムを実行する setuid プログラム。 • 予期していないゼロ (0) のユーザー ID を取得したプログラム。 ゼロのユーザー ID は、 スーパーユーザーまたはルート専用です。 スタックバッファーオーバーフロー攻撃を回避するには、以下を行います。 • executable_stack カーネル調整パラメータを使用可能にします。 • chatr +es コマンドを使います。 executable_stack カーネル調整パラメータによって、スタックからのコードの実行をプ ログラムにさせないようにすることができます。 これにより、侵入者がプログラムに不正な データを引渡し、プログラムスタックから勝手なコードを実行することを防止します。 executable_stack カーネル調整パラメータは、スタックバッファーオーバーフロー保護 をグローバルに使用可能または使用不能にします。 0 (ゼロ) を設定すると、スタックは非実 行文となるため、セキュリティ上の理由で推奨されます。 デフォルトでは、 executable_stack には旧版との互換性のためにスタック実行を許可する1 が設定されてお り、保護はありません。 HP SMH または kmtune コマンドを使って executable_stack の値を変更します。 スタックバッファーオーバーフローの保護を管理する別の方法に、chatr コマンドの +es オ プションを使う方法があります。 たとえば、executable_stack がゼロに設定されていて も、プログラムはスタックをどうしても実行する必要があるとき、以下の chatr コマンドを 使ってそのプログラムについてスタックの実行を許可します。 # chatr -es enable program 詳細については、chatr(1)、kmtune(1M)、executable_stack(5) を参照してください。 3.8 無人端末およびワークステーションの保護 無人ワークステーションおよび端末は、未認可ユーザーに対してきわめて無防備です。 入り 口のドアに鍵がかけられていないのと同じで、誰にでも開かれた状態になっています。 本項 では、このリスクを軽減するための以下の方法について説明します。 54 • /etc/inittab と実行レベルを使用したアクセス制御。 /etc/inittab を編集して、 異なる実行レベルで実行すべきデバイスを識別します。 • ユーザー端末セッションに誰からでもアクセスができないようにすることによる、端末 デバイスファイルの保護。 • 画面ロックの構成。 ユーザーおよびシステムのセキュリティ管理 3.8.1 /etc/inittab と実行レベルを使用したアクセス制御 実行レベルとは、特定のプロセスセットの実行が許可されているシステム状態のことです。 プロセスとデフォルトの実行レベルは、/etc/inittab 内に定義されます。 実行レベルは 0 から 6、s、または S があります。プロセスの実行レベルがシステムと同じでなければ、プ ロセスは終了します。 プロセスが同じ実行レベルであれば、プロセスは開始するか、実行を 継続します。 以下は、端末およびモデムを、選択した実行レベルで実行可能とした例です。 ttp1 および ttp2 は、共に実行レベル 2 および 3 です。 ttp1:23:respawn:/usr/sbin/getty -h tty0p1 9600 ttp2:23:respawn:/usr/sbin/uugetty -h ttypd0p2 9600 以下は、cron ジョブを使って、通常の業務時間後に実行レベルを変更して端末およびモデム を使用不能にする例です。 日中の実行レベルは 3 で、端末 ttp1 および ttp2 は実行レベル が 2 および 3 であることから、使用が可能です。月曜日から金曜日までの午前 8:00 に、シ ステム実行レベルは 3 に設定されます。 # crontab -e 0 8 * * 1-5 /sbin/init 3 0 17 * * * /sbin/init 4 毎日午後 5:00 に (前の例の 17 は 1700 時、つまり午後 5:00 を示す)、システム実行レベル は 4 に変更されます。端末 ttp1 および ttp2 は実行レベルが 2 および 3 であるため、午後 5:00 以降は動作できません 3.8.2 端末デバイスファイルの保護 侵入者がオープンな端末へのアクセスを取得すると、別の端末ウィンドウにコマンドをリダ イレクトすることができます。 以下の例では、削除 (rm) コマンドが /dev/tty0p0 にリダ イレクトされます。 # echo "\r rm -r / \r\033d" > /dev/tty0p0 メッセージが端末に書き込まれるのを防止するには、mesg -n (または mesg n) コマンドが 使用できます。 このコマンドは、適切な権限を持たないユーザーの書き込みパーミッション を無効にします。 詳細については、mesg(1) およびwrite(1) を参照してください。 # vi ~/.shrc mesg n ワークステーションまたは端末を保護する別の方法として、xhost コマンドを使う方法があ ります。 詳細については、xhost(1) を参照してください。 xhost コマンドは、ワークステー ションとの接続が許可されたホストおよびユーザーの名前を定義します。 # xhost +Another.system すべてのシステムおよびユーザーにワークステーションへのアクセスを許可するには、以下 のコマンドを使ってアクセス制御をオフにします。 # xhost + 3.8 無人端末およびワークステーションの保護 55 3.8.3 画面ロックの構成 本項では、TMOUT 変数と CDE ロックマネージャを使って、画面ロックを構成する方法につい て説明します。 3.8.3.1 TMOUT 変数の構成 TMOUT 変数を構成すれば、使用中でない端末を自動的にロックすることができます。 各種システムを使うことが多いために .profile ファイルをシステム間でコピーする場合、 TMOUT 変数を .profile に追加すると、さらに便利になります。 通常は 1 つのシステムだ けを使う場合、端末をロックするどちらの方法でも使用できます。 TMOUT 変数を構成するには、以下に示すように .profile ファイルを編集します。 # vi ~/.profile export TMOUT=600 # (600 秒使用停止後にロック) 「600」は他の値に変更できます。 3.8.3.2 CDE ロックマネージャの構成 ある一定の使用停止時間の後に画面をロックするよう CDE ロックマネージャを構成すること ができます。 10 分間の使用停止時間の後に画面をロックするよう CDE ロックマネージャを 構成するには、以下のコマンドを入力します。 # cp /usr/dt/config/C/sys.resources /etc/dt/config/C/sys.resources # vi /etc/dt/config/C/sys.resources dtsession*lockTimeout: 10 CDE ロックマネージャの調節には、スタイルマネージャ タスクパネルを使うこともできま す。 これを行うには、[スクリーン] アイコンをクリックします。 3.9 リモートデバイスによるシステムアクセスからの保護 リモートアクセスによるシステム侵入に対して保護するために、次の予防措置を守ってくだ さい。 56 • すべての対話型モデムにハードウェアダイヤルバックシステムを使用してください。 • /etc/dialups と、オプションで /etc/d_passwd 内にモデム装置用のエントリーを 追加して、モデムユーザーに追加パスワードを要求してください。 「/etc/dialups と/etc/d_passwd を使用したアクセス制御」を参照してください。 • ユーザーにダイヤルインアカウントを頻繁に更新させてください。 • ユーザーが従業員でなくなったら、すぐにシステムアクセスを取り消してください。 • 定期的な監査スケジュールを確立して、リモートの使用状況を見直してください。 • モデムとダイヤルバック設備を単独の HP-UX システムに接続して、ネットワークサービ スがその位置から目的のシステムに届くようにしてください。 • UUCP アクセスに対して、ダイヤルバックの例外を適用してください。 追加制限条項 は、適切な UUCP 構成を通してできます。 詳細については、uucp(1) を参照してくださ い。 ユーザーおよびシステムのセキュリティ管理 別の潜在的な例外は、kermit 経由のファイル転送です。 詳細については、kermit(1) を 参照してください。 • 未知の要因によるセキュリティ侵害が発生したら、ネットワークと電話アクセスの両方 をシャットダウンして、ネットワーク管理者に知らせてください。 • ダイヤルバックモデムシステムを構成するときにセキュリティを最高にするには、ダイ ヤルアウト機構をダイヤルアウト機能専用にしてください。 ダイヤルインを受け入れる ように構成しないでください。ダイヤルインサービス用には別の電話回線上で別のモデ ムを使ってください。 • モデム用の電話番号は外部に出さず、他のビジネス用の電話とは別のシステムに保持し てください。 ダイヤルインの電話番号を公表しないでください。 • モデムは物理的に保護してください。 • コーラー ID 機能を使って、モデムへの着信呼び出しをすべて識別してください。 • 呼び出し転送などの追加の電話サービスは、モデム回線には許可しないでください。 携 帯電話用モデムは使用しないでください。 • リモートアクセスおよびローカルアクセスについては、HP-UX AAA サーバー製品のイン ストールを考慮してください。 HP-UX AAA Server は、業界標準の RADIUS (Remote Authentication Dial-In User Service) プロトコルを使うことで、ネットワークへのエント リーポイントにおけるユーザーのネットワークアクセスについての認証、認可、アカウ ンティングを行います。 詳細については、『HP-UX AAA Server Administrator's Guide』 を参照してください。 • Mobile IPv6 を使用したモバイル接続については、HP-UX IPSec を使って、Mobile IPv6 ク ライアントと Home Agent との間の Mobile IPv6 プロトコルメッセージの暗号化と認証 を行ってください。 詳細については、『HP-UX IPSec Administrator's Guide』 を参照して ください。 3.9.1 /etc/dialups と/etc/d_passwd を使用したアクセス制御 リモートユーザーの識別に関するセキュリティを追加するには、/etc/dialups および /etc/ d_passwd ファイルにエントリーを追加します。 これらのファイルは、ログオンのダイアル アップセキュリティ機能の制御に使用されます。 詳細については、dialups(4) およびlogin(1) を参照してください。 /etc/dialups ファイルが存在する場合、ログインプロセスでは、端末と /etc/dialups にリストされている端末とを比較します。 端末が /etc/dialups に存在する場合、login によってパスワードが要求されます。 このパスワードは /etc/d_passwd のパスワードと比 較されます。 さらに、/etc/passwd ファイルはパスワードの確認にも使用されます。 以下は、/etc/dialups ファイルを構成した例です。 # vi /etc/dialups (許可された端末をリスト) /dev/ttyd0p1 /dev/ttyd0p2 # vi /etc/d_passwd /usr/bin/sh:xxxencrypted-passwordxxxxxxxxx:comments 3.9 リモートデバイスによるシステムアクセスからの保護 57 /usr/bin/ksh:xxxencrypted-passwordxxxxxxxx:comments /sbin/sh:xxxencrypted-passwordxxxxxxxxx:comments ユーザーに対して以下が表示されます。 Login: Password: Dialup password: /etc/d_passwd のパスワードを変更するには、以下のように passwd コマンドを使います。 # passwd -F /etc/d_passwd shell_path shell_path は、/etc/d_passwd にリストされているシェルのパスです。 3.10 ログインバナーの保護 ログインバナーは、システム名、リリースバージョン、システムの目的などのシステム情報 を表示するのによく使用されます。 この情報が、未認可ユーザーのシステム情報入手を助長 することがあります。 より安全なログインバナーを作成するためのガイドラインの例を、以 下に示します。 • 法務部門と相談して、適切なメッセージかどうかを判断してください。 • 未認可での使用を禁止する警告をバナーメッセージに追加します。 • すべてのバナーに表示される内容は、ログイン方式にかかわらず、整合性を持たせてく ださい。 バナーは以下の方法で変更できます。 • /etc/copyright および /etc/motd で定義された login バナーを変更する。 • /etc/issue で定義された telnet バナーを変更する。 telnetd -b バナーファイル コマンドは、カスタムバナーを定義します。 ログインバナーとして /etc/issue を使 うには、以下の行を /etc/inetd.conf ファイルに追加してください。 telnet stream tcp nowait root /usr/lbin/telnetd \ telnetd -b /etc/issue inetd が telnetd を開始すると、/etc/issue 内のバナーが使用されます。 詳細は、 inetd(1M)、telnetd(IM)、inetd.conf(4) を参照してください。 • /etc/ftpd/ftpaccess(ftpd 構成ファイル) に定義された ftp バナーを変更する。 その他の表示メッセージ (あいさつ、バナー、ホスト名、メッセージ) は、/etc/ftpd/ ftpaccess に定義されています。 詳細は、ftpdaccess(4) およびftpd(1M) を参照してく ださい。 以下はログインバナーを示す、保護されていない telnet の例です。 # telnet computerAmy telnet ログインバナーはリリースバージョンとマシンタイプを表示します。 未認可ユーザー が telnet を使って computerAmy に接続をしようとしているとすれば、これでは与える情 報が多すぎます。 以下は、もっと安全なログインバナーを表示する telnet の例です。 $ telnet computerMom 58 ユーザーおよびシステムのセキュリティ管理 Trying... Connected to computerMom.city.company.com. Escape character is '^]'. Local flow control on Telnet TERMINAL-SPEED option ON ************************************************************** This is a private system operated for Hewlett-Packard company business. Authorization from HP management is required to use this system. Use by unauthorized persons is prohibited. ************************************************************* login: Connection closed by foreign host. 3.11 ルートアカウントの保護 ルートアカウントを保護するための留意事項を以下に示します。 • ルートのパスワードは共有しないでください。 • /をルートのホームディレクトリとして使用しないでください。 • last -R と lastb -R からの出力を調べて、異常なルートログインまたはルートログ インの失敗がないか検査し、誰がルートとしてログインしたかを確認します。 • /var/adm/sulog を調べて、su root コマンドの試行がないか検査します。 • logins -d コマンドを使って、UID がゼロ (0) の未許可アカウントを探します。 以下の項では、ルートアカウントを保護する方法についてさらに詳しく説明します。 3.11.1 ルートアカウントへのアクセスのモニター ルートアクセスが必要なシステム管理者が複数いる場合、管理者をトラッキングする方法に ついての提案を以下に示します。 • システムコンソールからの直接のルートログインだけを許可します。 エントリー console だけが入っているファイル /etc/securetty を作成します。 #echo console > /etc/securetty この制限は、ゼロ (0) の UID を持つログイン名すべてに適用されます。 詳細は、login(1) を参照してください。 • 管理者の個人アカウントから su root コマンドを使ってルートにアクセスするよう、 管理者に要求します。 例: login:me $ su root password:xxxx • /var/adm/sulog をモニターして、su を使用してルートにアクセスしたユーザーを確 認します。 • システム管理者ごとに別のルートアカウントを構成します。 # vipw root:xxx:0:3::/home/root;/sbin/sh 3.11 ルートアカウントの保護 59 root1:xxx:0:3::/home/root1:/sbin/sh root2:xxx:0:3::/home/root2:/sbin/sh • 次のように、各システム管理者のヒストリファイルをモニターします。#more ~root1/.sh_history #more ~root2/.sh_history • 成功および失敗した su の試行を、/var/adm/syslog 内でモニターします。 3.11.2 制限付きスーパーユーザーアクセスのための限定 SMH ビルダの使用 制限されたスーパーユーザーアクセス権を非スーパーユーザーに付与する必要がある場合、 限定 SMH ビルダを有効化できます。 限定 SMH ビルダを使えば、ユーザーに対して選択した SMH 領域を使用可能または使用不能にできます。 限定 SMH ビルダを有効化するには、以下 を入力します。 # smh -r ユーザーが制限付きアクセスで SMH を実行すると、ユーザーは定義された領域でスーパー ユーザーのステータスを持ち、これらの SMH 領域だけがメニューに表示されます。 ユーザー は、これ以外の SMH の領域を見ることはできません。 アクセス許可のないユーザーが SMH を実行しようとすると、実行するにはスーパーユーザー権限が必要とのエラーメッセージが 表示されます。 また、アプリケーションを SMH に追加して、限定アクセス用に設定することができます。 3.11.3 スーパーユーザーアクセスの再検討 /var/adm/sulog ファイルでは、su root コマンドのすべての試行を、失敗も含めてログ に記録します。 正常な試行にはプラス (+) のフラグが、失敗にはマイナス (-) のフラグが付け られます。 /var/adm/sulog ファイルを表示できるのはルートだけです。 例: # su root Password: # ll /var/adm/sulog -rw------- 1 root root 690 Aug 17 19:37 /var/adm/sulog 次の例では、userone は su コマンドを使ってルートへのアクセスに成功しました。 別の ユーザー usertwo は成功しませんでした。 さらに、usertwo は su を使って gooduser1 にアクセスすることにも成功していません。 # more /var/adm/sulog SU 08/17 19:10 + 0 userone-root SU 08/17 19:36 - 0 usertwo-root SU 08/17 19:36 - 0 usertwo-root SU 08/17 19:36 + 0 userone-root SU 08/17 19:37 - 0 usertwo-gooduser1 60 ユーザーおよびシステムのセキュリティ管理 第4章 HP-UX Bastille HP-UX Bastille は、セキュリティ強化/ロックダウンツールで、HP-UX オペレーティングシステ ムのセキュリティを向上させるために使います。これにより、Bastion Host や他のセキュリ ティ強化/ロックダウンチェックリストと同様のエンコーディング機能に基づき、システムご とにカスタマイズされたロックダウンが可能になります。 Bastille は、元々、Linux システムでの使用を目的としてオープンソースコミュニティにより開 発されました。 HP は、Bastille の内容に大きく貢献しており、これを基盤として HP-UX Bastille を開発しました。 本章では、次のトピックについて説明します。 • 機能と利点 (4.1 項) • HP-UX Bastille のインストール (4.2 項) • HP-UX Bastille の使用 (4.3 項) • HP-UX Bastille による変更の回復 (4.4 項) • ファイルの場所 (4.5 項) • ヒントとトラブルシューティング (4.6 項) • HP-UX Bastille の削除 (4.7 項) 4.1 機能と利点 HP-UX Bastille には、以下の機能と利点があります。 • • • システムのロックダウン • デーモン、システム設定、およびファイアウォールを、セキュリティ性が向上するよ うに構成する • pwgrd などの不要なサービスをオフにする • ユーザーインタフェースを介してユーザーに情報を提供する • Security Patch Check を自動的に実行されるよう構成する • IPFilter ベースのファイアウォールを構成する セキュリティ構成の状態のレポート • セキュリティ構成のステータスレポートを生成する • HP-UX Bastille 構成のベースラインを作成し、現在のシステムの状態を保存されてい るベースライン (ドリフト) と比較する System Insight Manager (SIM) との統合 • システムをロックダウンし、SIM を介してレポートを生成する • SIM サーバーロックダウン用に事前テスト済みの構成 SIM.config を提供する 4.1 機能と利点 61 4.2 HP-UX Bastille のインストール HP-UX Bastille は、オペレーティング環境メディアに推奨ソフトウェアとして含まれており、 Ignite-UX または Update-UX でインストールおよび実行できます。 HP-UX Bastille のインストー ルに関する情報については、『HP-UX 11i v3 インストール/アップデートガイド』を参照して ください。 最新バージョンの HP-UX Bastille は、以下のサイトからダウンロードできます。 http://www.hp.com/go/bastille 4.3 HP-UX Bastille の使用 HP-UX Bastille を対話形式または非対話形式で使用して、以下の操作を実行できます。 • システムをロックダウンするには (セキュリティ構成ファイルを作成するか、既存の構成 ファイルを適用)、以下を入力します。 # bastille -x • 複数のマシンにセキュリティ構成ファイルを複製するには、以下を入力します。 # bastille -b -f <file> • システムの構成ステータスに関するレポートを生成するには、以下を入力します。 # bastille --assess • HP-UX Bastille 構成のベースラインを作成するか、現在のシステムの状態を保存されてい るベースラインと比較します。 ベースラインを保存するには、以下を入力します。 # bastille_drift --save_baseline <baseline> システムの状態を指定したベースラインと比較するには、以下を入力します。 # bastille_drift --from_baseline <baseline> 詳細については、bastille(1M) およびbastille_drift(1M) を参照してください。 注記: 新しいソフトウェアまたはパッチをインストールした場合は、bastille_drift ユー ティリティを再実行して、これらのパッチやソフトウェアによりシステムの状態が変更され たかどうかチェックしてください。 また、bastille_drift は、ベンダー固有の修正スク リプトを実行するために swverify を-x fix=true オプションまたは-F オプションのいず れかで実行した場合の、システム状態の変更を特定するのにも役立ちます。 4.3.1 対話形式での HP-UX Bastille の使用 HP-UX Bastille は、Perl/Tk で実装されている X インタフェースを使用して対話形式で実行され ます。 このインタフェースは、X サーバーを必要とし、以下を提供します。 • 問題モジュールへのランダムなアクセス • ユーザーの進行状況を示す完了インジケーター • 以下のオプションの使用による、暗号化されたチャンネルを介した X11 トラフィックの トンネリング # ssh -X 62 HP-UX Bastille 詳細については、ssh(1) を参照してください。 ユーザーインタフェースでは、モジュールごとにグループ化された一連の質問により、ユー ザーに情報が提供されます (表 4-1を参照)。 各質問には、セキュリティの問題が説明されて おり、HP-UX システムをロックダウンするのに必要となるアクションが記載されています。 また、各意志決定のコストと利点に関する高度な説明が提供されており、ツールでの問題の 処理方法をユーザーが決定できるようになっています。 すべての質問に答えた後、ロックダウンの各手順の実行が HP-UX Bastille により自動サポート されます。 自動で実行できるアクションは HP-UX Bastille によって実行され、ユーザーが手 動で実行する必要のある残りのアクションを記述した to-do リストが生成されます。 HP-UX Bastille のロックダウン処理を完了するためには、to-do アクションを実行しなくてはなりませ ん。 表 4-1 HP-UX Bastille 質問モジュール モジュール名 説明 パッチアプリケーション セキュリティ報告書準拠のチェックに役立つよう、インストールと構成を行い ます。 ファイルパーミッション SUID およびその他のパーミッション調整を実行します。 アカウントセキュリティ ログイン設定と cron へのアクセスを構成します。 安全な inetd 不要な inetd サービスをオフにします。 その他のデーモン 頻繁に不要になるサービスまたはセキュリティリスクになるサービスをオフに します。 sendmail メールを安全性が向上するよう構成します。またはユーザーによるメールの無 効化を許可します。 DNS DNS をオフにするか、安全性が向上するよう構成します。 Apache Apache Web サーバーを安全性が向上するよう構成します。 FTP FTP サーバーを安全性が向上するよう構成します。 HP-UX HP-UX プラットフォームに固有のセキュリティ構成アクションを実行します。 IPFilter IPFilter ベースのファイアウォールを作成します。 4.3.2 非対話形式での HP-UX Bastille の使用 セキュリティ強化は、構成エンジンを通じて直接実行できます。 この方法は、セキュリティ 構成を同じオペレーティングシステムとアプリケーションがインストールされている複数の マシンに複製するのに便利です。 構成エンジンは、事前定義された構成ファイルを使用しま す。 このオプションは、対話形式のセッションによってデフォルトの場所に作成されたファ イルを使用するか、以下の-f オプションで指定された代替ファイルを使用します。 # bastille -b -f <file> 4.3.3 システムの構成 システムを構成するには、または後で別のシステムでも再利用できる構成ファイルを作成す るには、以下の手順を実行します。 4.3 HP-UX Bastille の使用 63 1. 2. システム構成および設定の変更が必要となるため、root ユーザーに変更します。 HP-UX Bastille がローカルで実行されていない場合、Secure Shell (ssh) または IPSec を介した X11 トラフィックのトンネリングを選択し、ネットワークの露出を抑えるか、ローカル およびリモートのユーザーからの攻撃に対処する、より完全なデスクトップ共有ソリュー ションを使用してください。 システムに変更を加える場合、HP-UX Bastille を対話形式で使用するか、非対話形式で使 用するかを決める必要があります。 DMZ.config などの事前構築された構成ファイルが 付属している場合を除き、初めて使用するユーザーは、HP-UX Bastille を対話形式で実行 して、構成プロファイルを作成する必要があります。 すべての質問を読んで回答してく ださい。これには 1 時間ほどかかります。 HP-UX Bastille の対話形式および非対話形式に関する詳細は、4.3 項を参照してください。 3. 手順 2 での決定に基づいて該当する手順 (対話形式または非対話形式) に従います。 対話形式の手順 a. HP-UX Bastille を起動する 初めて使用するユーザーは、HP-UX Bastille を対話形式で実行して構成プロファイル を作成する必要があります。 このツールはインストール時に PATH 環境変数を更新 します。このため、HP-UX Bastille をインストールした後、ログアウトしてから再ロ グインした場合には、以下を入力してツールを起動します。 # bastille PATH が更新されていない場合は、以下を入力して HP-UX Bastille を起動します。 # /opt/sec_mgmt/bastille/bin/bastille 現在の構成に関するカテゴリの質問だけが表示されます。 b. 質問に答える 質問は機能別に分類されています。1 つのカテゴリが終了したかどうかを示す完了イ ンジケーターとしてチェックマークが使用されます。 これにより、プログラム全体 における進行状況を把握できます。 質問に答えるときは、[Explanation-Detail] メニューを使用して簡単な説明と詳細な説 明を切り替えることができます。 長い回答と短い回答のどちらかしかない質問もあ ります。 c. 構成を保存して変更を適用する メニューバーを使用していつでも構成ファイルを保存またはロードできます。 [Save As] オプションを使用すると、構成ファイルのサイズが大きくなります。これは、ま だ変更作業が完了しておらず、後で構成が変更される可能性があるとみなされるため です。 [Save/Apply] オプションを使用すると、変更作業は終了したとみなされ、よ り多くのフィルタリングを適用できます。 生成される構成ファイルのサイズは異な ることがありますが、HP-UX Bastille の機能はどちらの場合でも同じです。 [Save/Apply] オプションでは、構成ファイルは常に HP-UX Bastille タイトルバーに示されている現 在の場所に保存されます。 64 HP-UX Bastille 非対話形式の手順 a. まだ構成ファイルがない場合には、HP-UX Bastille を対話形式で実行して構成ファイ ルを作成する必要があります。 デフォルトの構成ファイルは、必ず付属しているわけではありません。 このような 場合、HP-UX Bastille を対話形式で実行して構成プロファイルを作成する必要があり ます。 詳細については、「対話形式の手順」を参照してください。 b. 構成ファイルを複製したい各マシン上にコピーする 以下のコマンドにより、構成ファイル /etc/opt/sec_mgmt/bastille/config を最初のマシンの現在の場所から、他のマシンの同じ場所にコピーします。 # bastille -b -f <file> 注記: 一部の質問はオペレーティングシステムまたはインストールされているセキュ リティソフトウェアに固有であるため、複製するマシンにも、構成ファイルが作成さ れたマシンと同じオペレーティングシステムおよびソフトウェアがインストールされ ている必要があります。 c. HP-UX Bastille を複製する各マシンにインストールする これは、一斉に実行でき、後で確認するためのアクションログおよびエラーログを収 集できます。 以下を入力します。 # bastille -b 4. ログファイルを参照する リアルタイムでログを参照するには、以下を入力します。 # tail -f <log_file> アクションログファイル /var/opt/sec_mgmt/bastille/log/action-log には、 HP-UX Bastille がシステムに変更を加えるときに実行した具体的な手順が記録されます。 これは、システムに変更を適用した場合にのみ作成されます。 エラーログファイル /var/opt/sec_mgmt/bastille/log/error-log には、HP-UX Bastille がシステムに変更を加えるときに発生したエラーが記録されます。 これは実行中 にエラーが発生した場合にのみ作成されます。 5. to-do リストに記載された項目を実行する 自動でできるアクションがツールによって実行された後、to-do リスト /var/opt/ sec_mgmt/bastille/TODO.txt が生成されます。これには、ユーザーが手動で実行 する必要のある残りのアクションが記述されています。 リブートが必要な変更が行われ た場合は、リブートもこれに含まれます。 安全な構成を確実に行うためには、to-do リストのアクションを実行する必要がありま す。 注記: to-do リストは、システムに変更が適用された場合にのみ作成されます。 非対話形式の手順 65 4.4 HP-UX Bastille による変更の回復 セキュリティ構成を HP-UX Bastille が実行される前の状態に戻すには、以下を入力します。 # bastille -r 以前の HP-UX Bastille の状態を復元するのに何らかの手動アクションを実行する必要がある場 合は、回復処理によりファイル var/opt/sec_mgmt/bastille/TOREVERT.txt が作成さ れます。 回復処理を完了するには、このファイルに記述されたアクションを実行する必要が あります。 回復オプションを実行した後、TOREVERT.txt ファイルをチェックして、回復プロセスを完 了させるために実行する必要のある手動アクションがないかどうかを確認します。 このファ イルの場所は /var/opt/sec_mgmt/bastille/TOREVERT.txt です。 注記: 一部のファイアウォールオプションを除き、システムの安全性が低下する HP-UX Bastille の動作は、システムの回復しかありません。 4.5 ファイルの場所 以下のリストは、主要な HP-UX Bastille ファイルとその場所を示しています。 • 構成ファイル — 最も最近保存されたセッションへの回答が含まれます。 /etc/opt/sec_mgmt/bastille/config • エラーログファイル — HP-UX Bastille がシステムに変更を加えるときに発生したエラー が含まれます。 /var/opt/sec_mgmt/bastille/log/error-log • アクションログファイル — HP-UX Bastille がシステムに変更を加えるときに実行した具 体的な手順が含まれます。 /var/opt/sec_mgmt/bastille/log/action-log • to-do リストファイル — マシンの安全性を確保するためにユーザーが実行する必要のあ る、残りの手動アクションが含まれます。 /var/opt/sec_mgmt/bastille/TODO.txt • 回復アクションスクリプト — HP-UX Bastille によって、HP-UX Bastille が実行される前の 状態に戻されたファイルを返します。 /var/opt/sec_mgmt/bastille/revert/revert-actions このスクリプトは回復機能の一部です。 • to-revert ファイル — マシンを HP-UX Bastille が実行される前の状態に回復する処理を完 了するために、ユーザーが実行する必要がある手動アクションが含まれます。 /var/opt/sec_mgmt/bastille/TOREVERT.txt • 評価レポートファイル — これらのファイルは HTML、テキスト、および HP-UX Bastille ログファイルとして作成されます。 /var/opt/sec_mgmt/bastille/log/Assessment/assessment-report.HTML 66 HP-UX Bastille /var/opt/sec_mgmt/bastille/log/Assessment/assessment-report.txt /var/opt/sec_mgmt/bastille/log/Assessment/assessment-report-log.txt • 構成ドリフトファイル — HP-UX Bastille が最後に実行されてから、システム上で行われ た構成ドリフトに関する情報が含まれます。 このファイルは、システムに適用されてい る以前の HP-UX Bastille 構成が存在する場合にのみ作成されます。 /var/opt/sec_mgmt/bastille/log/Assessment/Drift.txt 4.6 ヒントとトラブルシューティング このセクションでは、既知のトラブルシューティングの問題に関する基本的な情報を説明し ます。 • HP-UX Bastille によって行われた変更により、他のソフトウェアが動作しなくなる。 この問題をトラブルシューティングするには、以下を入力します。 # bastille -r このコマンドは、HP-UX Bastille が実行される前の状態にシステムを回復した後、問題が 解決されたかどうかをチェックします。 • $DISPLAY not set, cannot use X. ユーザーが X インタフェースを要求しましたが、$DISPLAY 環境変数が設定されていま せんでした。 この問題を解決するには、環境変数を目的のディスプレイに設定します。 • System is in original state... ユーザーが-r オプションを使用して HP-UX Bastille によって行われた変更を回復しよう としましたが、回復すべき変更はありませんでした。 • Must run HP-UX Bastille as root HP-UX Bastille による変更はシステムファイルに影響するため、root として実行する必 要があります。 • ファイルのオープン、コピー、または読み込みで問題が発生する。 これらの操作の実行での問題を示すエラーメッセージは、通常、NFS ファイルシステム がローカルマシンでその root ユーザーを信頼していないことに関連しています。 fstab マンページのoptions セクションで詳細を確認してください。 • 個々の構成ファイルに関するエラー 個々の構成ファイルに関するエラーに、システムの変更量が多すぎて HP-UX Bastille が有 効な変更を行えないこと、または HP-UX Bastille インストールディレクトリのファイル、 場所、またはパーミッションが変更されていることが示されます。 • パスワードの有効期限が切れたときに、即座にユーザーが HP Secure Shell によってシス テムからロックアウトされる場合、HP IT リソースセンターから入手可能な PAM パッチ: PHCO_24839 (HP-UX 11.11) が必要なことがあります。 https://www2.itrc.hp.com/service/patch/mainPage.do 4.6 ヒントとトラブルシューティング 67 • HP-UX Bastille が IPFilter を使用してファイアウォールを構成する。 最も一般的な競合は、ファイアウォールで発生します。 HP-UX Bastille が明示的にオフに していないネットワークサービスが機能していない場合、ファイアウォールの規則が必 要なポートを通過することを確認する必要があります。 詳細については、ipfstat(8) およびipmon(8) を参照してください。 4.7 HP-UX Bastille の削除 HP-UX Bastille をシステムから削除しても、システムは HP-UX Bastille が実行される前の状態 に回復されません。 その代わり、HP-UX Bastille を削除すると revert-actions スクリプト が残ります。 HP-UX Bastille がインストールされていない状態でも、管理者がこのスクリプト を使用して、HP-UX Bastille が実行した構成ファイルを回復できます。 多くの場合、HP-UX Bastille による変更はファイルレベルで記録されています。このため、revert-actions ス クリプトは修正されているファイルだけを回復することができます。 これと別のケースでは、HP-UX Bastille は、ユーザーが独自に同じファイルに対して干渉する 変更を行っていたとしても、プログラム的に回復可能なより詳細な変更を行います。 たとえ ば、パーミッションが変更されているファイルに対してユーザーが修正を加えたとしても、 そのパーミッションを元の状態に回復することができます。 1. HP-UX マシンから HP-UX Bastille を削除するには、swremove を使用します。 2. (オプション) HP-UX Bastille を削除した後、システムの変更を回復するには、以下のコマ ンドを入力します。 # # # # 3. 68 cd /var/opt/sec_mgmt/bastille/revert/ chmod 0500 revert-actions ./revert-actions mv revert-actions revert-actions.last to-revert リスト /var/opt/sec_mgmt/bastille/TOREVERT.txt が作成されていな いかどうかを確認してください。 作成されている場合は、リスト内のアクションを実行 して回復処理を完了させる必要があります。 HP-UX Bastille 第5章 HP-UX Role-Based Access Control 本章では、HP-UX Role-Based Access Control (HP-UX RBAC) について説明します。 本章では以 下の項目について扱います。 • 「概要」 • 「アクセス制御の基礎」 • 「HP-UX RBAC の構成要素」 • 「HP-UX RBAC の導入計画」 • 「HP-UX RBAC の構成」 • 「HP-UX RBAC の使用」 • 「HP-UX RBAC のトラブルシューティング」 5.1 概要 セキュリティ、とりわけプラットフォームのセキュリティは、エンタープライズ インフラス トラクチャにおいて常に重要な課題です。 とはいえ、「個人別のアカウント管理」や「最小 限の特権」といったセキュリティの概念は、これまでは軽視されるか見過ごされることがほ とんどでした。 しかし最近米国において、HIPAA(Health Insurance Portability and Accountability Act) 法や米国企業改革法 (Sarbanes-Oxley Act) などの法律が施行されたことで、これらのセ キュリティ概念の重要性への関心が高まっています。 ほとんどのエンタープライズ環境では、複数のユーザーによりシステムが管理されています。 通常はこれを実現するために、共通の共有アカウント (root) に対するパスワードが複数の管理 者に与えられます。 root アカウントは、root パスワードを持っている管理者にすべての操作 を許可するため、アクセス制御管理を単純化します。しかしその反面、root アカウントは、 アクセス制御管理に次のような固有の障害をもたらします。 • 管理者権限を持つユーザーに root パスワードを与えると、そのユーザーを簡単に制約で きなくなる。 • うまくいった場合でも、管理者 1 名からのアクセスを遮断するには、共通パスワードを 変更し、それ以外の管理者に変更を通知する必要がある。 しかし実際には、パスワード を変更するだけではアクセスを遮断しきれない場合が多い。これは、代替のアクセス機 構が既に実装されている可能性があるためである。 • 共有 root アカウントを使用する限り、個人別のアカウント管理はまず実現不可能であ る。 このため、セキュリティ上の重要なイベントが発生した後で適切な分析を行うこと が困難 (場合によっては不可能) となる。 HP-UX Role-Based Access Control (RBAC) 製品は、通常の (正しく構成された) ユーザーアカウ ントにタスク一式を割り当てる機能を提供することで、これらの障害を解決します。 また HP-UX RBAC は、ユーザー単位を基本とした個別の権限の割り当て/取り消しといった余計な 管理業務の軽減にも役立ちます。 HP-UX RBAC には、以下の機能があります。 • 迅速かつ簡単に導入できるように、HP-UX 固有に事前定義された構成ファイルを用意。 5.1 概要 69 • 組込み可能認証モジュール (PAM) を介した柔軟な再認証機構により、コマンド単位での 制限の設定が可能。 • HP-UX 監査システムとの統合により、統合された単独の監査ログを生成可能。 • 組み込み可能なアーキテクチャにより、アクセス制御の決定をカスタマイズ可能。 5.2 アクセス制御の基礎 アクセス制御システムの目的は、いくつかの制約に基づきリソースへのアクセスを制限する ことです。 通常、これらの制約とその属性は、次のカテゴリに分けられます。 • 主体: リソースにアクセスしようとする主体。 オペレーティングシステムでは、主体は 通常、ユーザーまたはユーザーに関連付けられたプロセスのことを指す。 • 操作: リソースに対して実行されるアクション。 操作がアプリケーションまたはコマン ドに直接対応する場合もある。 HP-UX RBAC の場合、操作は、ピリオドで区切られた階 層化文字列 (hpux.user.add など) となる。 • 対象物: 操作の対象。エンドリソースと同じこともあれば、異なる場合もある。 アクセス制御要求は上記の要素を組み合わせた問い合わせだと考えることもでます。この問 い合わせに対する応答 (通常、許可または拒否) で、リソースに対してアクセスが認められて いるかを判断します。 例: ユーザー ron は、対象物 /dev/dsk/c0t1d0 に対する操作 hpux.fs.mount が許可されて いますか? しばしば、権限という用語はアクセス制御と同じような意味で用いられます。 しかし HP-UX RBAC 製品では、権限は対象物に対して操作が可能なことを意味します。 表 5-1 「ユーザー ごとの権限の例」で示すように、ユーザーは権限一式の認可を受けることができ、またそれ ぞれの権限によりリソースへのアクセスが許可されています。 表 5-1 ユーザーごとの権限の例 権限の操作要素 ユーザー ron lisa jim liz hpux.user.password.modify • • • • hpux.network.nfs.start • hpux.network.nfs.stop • hpux.network.nfs.config • hpux.fs.backup • • hpux.fs.restore • • hpux.user.add hpux.user.delete hpux.user.modify 70 HP-UX Role-Based Access Control 注記: 表 5-1 「ユーザーごとの権限の例」は権限の操作要素のみを示しています。権限の対 象物要素は省略されています。 5.2.1 ロールによるアクセス制御の簡素化 前項のアクセス制御の概要で説明したアクセス制御の基本原則に加えて、本項ではアクセス 制御方針がどのように表され、判定がどのように行われるかについて扱います。 前項のアクセス制御の概要では、アクセス制御方針がどのように表され、判定がどのように 行われるかについては取り上げませんでした。 1 つの方式としては、ただ単にユーザーのリ ストと、各ユーザーに割り当てた権限 (操作と対象物のペア) のリストを保持するというもの があります。 この方式では、各ユーザーの権限一式を、別のユーザーのものとはまったく異 なるものにできるため、柔軟性が高いという利点があります。 しかし残念なことに、この方式では管理が困難になります。新しくユーザーを追加するたび に、各ユーザーに必要とされる権限を、正確に判断する必要性が生じるからです。 また、監 査を実行する際に、各ユーザーの権限の状況を判断するには、それぞれのユーザーを個別に 調査する必要もあります。 HP-UX RBAC では、共通の権限を必要とするユーザーをロールごとにグループ分けすることに より、これらの問題を解決します。 ロールがグループ分け機構となるため、権限割り当てと 監査が容易になります。 権限は、直接ユーザーに割り当てるのではなく、ロールに割り当て ます。 システムにユーザーを追加する際に、そのユーザーに、実行可能なアクションとアク セス可能なリソースを決定するロール一式を割り当てます。 ロールへの権限割り当て状況を示した表 5-2と、各ユーザーへの権限割り当て状況を示した 表 5-1を比較してください。 2 つの表を比較すると、ロールにより権限の割り当てがいかに 簡素化されたかがわかります。 表 5-2 ロールごとの権限の例 権限の操作要素 ロール UserAdmin NetworkAdmin BackupOper Admin hpux.user.add • • hpux.user.delete • • hpux.user.modify • • • hpux.user.password.modify hpux.network.nfs.start • • hpux.network.nfs.stop • • hpux.network.nfs.config • • hpux.fs.backup • • hpux.fs.restore • • 注記: 表 5-2 「ロールごとの権限の例」は権限の操作要素のみを示しています。権限の対象 物要素は省略されています。 5.2 アクセス制御の基礎 71 5.3 HP-UX RBAC の構成要素 HP-UX RBAC の主要な構成要素は、次のとおりです。 privrun ラッパーコマンド privedit コマンド アクセス制御ポリシースイッチ (ACPS) アクセス制御ポリシーモジュール 管理コマンド ユーザーに関連する権限に基づいて、 privrun は権限のチェックの実行と、オプ ションでユーザーを再認証した後、既存の レガシーアプリケーションを変更せずに、 さまざまな特権で呼び出す。 ユーザーに関連する権限に基づいて、 privedit はファイルパーミッションまた はアクセス制御リスト (ACL) のためにユー ザーが通常編集できないファイルについて、 ユーザーに編集を許可する。 主体が対象物に対して操作を実行する権限 があるかを判断する。 HP-UX RBAC データベースファイルを評価 し、マッピング方針を適用してアクセス制 御要求にサービスを提供する。 HP-UX RBAC データベースのファイルを編 集/検証する。 以下の項では、HP-UX RBAC の構成要素についてさらに詳しく説明します。 5.3.1 HP-UX RBAC アクセス制御ポリシースイッチ HP-UX RBAC アクセス制御ポリシースイッチは、アクセス制御の判定を下す必要があるアプリ ケーションと、RBAC データベースで方針情報を解釈した後に判定の応答を行うアクセス制御 ポリシーモジュールとの間でのカスタマイズ可能なインタフェースです。 図 5-1 「HP-UX RBAC のアーキテクチャ」で示すように、HP-UX RBAC アーキテクチャ内の場所から、ACPS はアクセス制御ポリシーモジュールと、アクセス制御の判定を下すアプリケーションとの間 でのインタフェースを提供します。 ACPS には以下のインタフェースがあり、これらについてはそれぞれのマンページで詳しく説 明されています。 • ACPS API (Application Programming Interface) • ACPS サービスプロバイダ インタフェース (SPI) • /etc/acps.conf ACPS の管理インタフェースは /etc/acps.conf 構成ファイルです。 /etc/acps.conf 構 成ファイルは、ACPS が調べるポリシーモジュール、モジュールを調べる対象のシーケンス、 アクセス制御の判断が必要なアプリケーションに結果を配信するための、モジュールの応答 を結合する規則を決定します。 この ACPS の実現方法により、既存のロールベースのアクセ ス制御アプリケーションを変更することなく、カスタム方針を強制するためにモジュールを 作成することができます。 注記: ACPS およびインタフェースについての詳細は、acps(4)、acps.conf(4)、acps_api(3)、 acps_spi(3) を参照してください。 72 HP-UX Role-Based Access Control 5.3.2 HP-UX RBAC 構成ファイル 表 5-3は HP-UX RBAC ファイルの一覧と、その簡単な説明を示したものです。 表 5-3 HP-UX RBAC 構成ファイル 構成ファイル 説明 /etc/rbac/auths すべての有効な権限を含むデータベースファイル。 /etc/rbac/cmd_priv コマンドとファイルの権限および特権を含む privrun データベースファイル。 /etc/rbac/role_auth 各ロールの権限を定義したデータベースファイル。 /etc/rbac/roles すべての構成済みのロールを定義したデータベースファイル。 /etc/rbac/user_role 各ユーザーのロールを定義したデータベースファイル。 /etc/acps.conf ACPS 用の構成ファイル。 /etc/rbac/aud_filter 監査対象となる特定の HP-UX RBAC のロール、操作、および対象物を識別する監査フィ ルターファイル。 5.3.3 HP-UX RBAC のコマンド 表 5-4 「HP-UX RBAC のコマンド」は HP-UX RBAC のコマンドの一覧と、その簡単な説明を 示したものです。 表 5-4 HP-UX RBAC のコマンド コマンド 説明 privrun 権限のチェックの実行と、オプションでユーザーを再認証した後、レガシーアプリケーションをさ まざまな特権で呼び出す。 privedit アクセス制御下にあるファイルについて、認可されたユーザーに編集を許可する。 roleadm /etc/rbac/user_role、/etc/rbac/role_auth、/etc/rbac/roles ファイルにあるロール 情報を編集する。 authadm /etc/rbac/role_auth と /etc/rbac/roles ファイルにある権限情報を編集する。 cmdprivadm /etc/rbac/cmd_priv データベースにあるコマンドの権限と特権を編集する。 rbacdbchk HP-UX RBAC と privrun データベースファイルの権限と構文を確認する。 5.3.4 HP-UX RBAC のマンページ 表 5-5 「HP-UX RBAC のマンページ」は HP-UX RBAC のマンページの一覧と、その簡単な説 明を示したものです。 表 5-5 HP-UX RBAC のマンページ マンページ 説明 rbac(5) HP-UX RBAC の機能の説明。 acps(3) ACPS とそのインタフェースの説明。 acps.conf(4) ACPS 構成ファイルとその構文の説明。 5.3 HP-UX RBAC の構成要素 73 表 5-5 HP-UX RBAC のマンページ (続き) マンページ 説明 acps_api(3) ACPS の API の説明。 acps_spi(3) ACPS のサービスプロバイダ インタフェースの説明。 privrun(1m) privrun の機能と構文の説明。 privedit(1m) privedit の機能と構文の説明。 roleadm(1m) roleadm の機能と構文の説明。 authadm(1m) authadm の機能と構文の説明。 cmdprivadm(1m) cmdprivadm の機能と構文の説明。 rbacdbchk(1m) rbacdbchk の機能と構文の説明。 5.3.5 HP-UX RBAC のアーキテクチャ HP-UX RBAC の主要な構成要素は privrun コマンドで、これは既存のコマンド、アプリケー ション、スクリプトを呼び出します。 privrun コマンドは ACPS サブシステムを使ってア クセス制御要求を行います。 アクセス要求の許可または拒否は、ユーザーとロールおよびロー ルと権限のマッピングを定義した構成ファイル一式に基づいて行われます。 アクセス要求が許可された場合、privrun は追加の特権で対象コマンドを呼び出します。特 権には、UID、GID、きめの細かい特権、コンパートメントのいずれかが 1 つ以上含まれま す。 特権は、対象コマンドが正常に実行できるように構成されます。 図 5-1は、HP-UX RBAC のアーキテクチャを示したものです。 74 HP-UX Role-Based Access Control 図 5-1 HP-UX RBAC のアーキテクチャ 5.3.6 HP-UX RBAC の使用と操作の例 図 5-2 「privrun の呼び出し後の操作例」と後続の脚注は privrun の呼び出し例と、ユーザー のコマンドの呼び出しを許可するかどうかを判断するのに privrun が使用する構成ファイル です。 5.3 HP-UX RBAC の構成要素 75 図 5-2 privrun の呼び出し後の操作例 1. 2. 3. 4. 5. ユーザーの特権よりも上位の特権で対象となるコマンドを実行するために、ユーザーに 関連付けられたプロセス (具体的にはシェル) が privrun を実行する。 対象となるコマンド行 (コマンドと引き数) は明示的に privrun に渡され、呼び出し側 ユーザーの UID がプロセスコンテキストを通じて暗黙的に渡される。 privrun は指定したコマンド行に対して、/etc/rbac/cmd_priv データベース内で一 致するエントリー (またはそのセット) の検出を試みる。 一致した各エントリーでは、必 要な権限 (操作と対象物のペア) も特定される。加えて、ユーザーが指定された権限を持っ ている場合は、結果として生じる特権も特定される。 privrun は (一致する /etc/rbac/cmd_priv エントリーについてそれぞれ)ACPS を呼 び出す。 ACPS の HP-UX RBAC バックエンドは、ユーザーが指定された権限を持ってい るかどうかを判断するために、/etc/rbac/user_role データベースおよび /etc/rbac/role_auth データベースを照会し、その照会結果を privrun に返す。 プロセスに関連付けられているユーザーが、要求されたコマンドに対して /etc/rbac/cmd_priv データベースで指定された、必要な権限を持っていることを想 定して、privrun は /etc/rbac/cmd_priv エントリーで指定された特権を除くすべ ての特権を破棄し、要求されたコマンドを実行する。 privrun コマンドは UID=0 に設 定され、必要なすべての特権を持って起動する。 5.4 HP-UX RBAC の導入計画 HP-UX RBAC を導入する前に、以下の計画手順に従います。 1. 2. 3. ユーザーのロールを設計する。 ロールに対する権限を設計する。 権限とコマンドのマッピング計画をつくる。 以下の項では、これらの手順についてさらに詳しく説明します。 5.4.1 ロールの設計 HP-UX RBAC を導入する上で最も重要な最初のステップは、システムのユーザーに対して、 ロール一式を正しく設計することです。 企業によっては、このようなロールが既に存在して いることがあり、このような場合は HP-UX RBAC の構成時にそのロールを再使用できます。 76 HP-UX Role-Based Access Control 通常は、システムの管理ユーザーに関連付けられた既存のタスクに基づいて、ロールを設計 する必要があります。 ロールを設計する際は、次のガイドラインを考慮してください。 • ロールの数は、システムのユーザー総数よりも大幅に少なくしてください。 それぞれの ユーザーに特殊なロールが必要になると、ロールの使用に関連するすべての管理が簡素 化できなくなります。 • ロールは、ユーザーの実際の業務におけるロールにある程度関連性を持たせる必要があ ります。 • ユーザーには複数のロールを持たせることができます。このため、複数の業務の役割に 共通する権限をグループ化するだけで設計できるロールもあります。 この方式を使用す れば、ロールの権限を含めることで、ロールを階層的に設計して異なるロールを持たせ ることができます。 5.4.2 ロールに対する権限の設計 ロールを定義したら、次は各ロールに関連付ける権限を設計します。 ロールが既存の操作階 層と一致する場合、権限の割り当てはきわめて簡単です。 次のコマンドを実行すると、シス テムで定義した権限すべてが一覧で表示されます。 # authadm list sys 既存の権限階層がロールと一致関係にない場合、各ロールに関連付けられる権限の定義は、 少々面倒です。 次のステップを使用すると便利です。 1. 2. 3. 各ロールでよく使用されるシステムコマンドのリストを作成する。 これらのコマンドを /etc/rbac/cmd_priv データベースのコマンドと対比する。 前のステップを実行して一致するエントリが見つかった場合、そのエントリを、割り当 てる権限の参考として使用する。 たとえば、目的のロールのいずれかが UserOperator であると想定します。このロールでは、 useradd、usermod、userdel などのコマンドが一般的によく実行されます。 次のコマン ドを入力すると、このロールに適した権限を割り出せます。 # grep useradd /etc/rbac/cmd_priv /usr/sbin/useradd:dflt:(hpux.user.add,*):0/0//:dflt:dflt:dflt: この例では、/usr/sbin/useradd コマンドには hpux.user.add 権限が必要になります。 この権限を直接割り当てるか、権限として hpux.user.* を割り当てることができます。 権限を割り当てる際には、ワイルドカードの使用に注意してください。 この権限を割り当て ると、以下のように実際には複数の権限を割り当てることになります。 # grep hpux.user. /etc/rbac/cmd_priv /usr/sbin/pwgrd:dflt:(hpux.user.cache.admin,*):0/0// :dflt :dflt :dflt : /usr/sbin/userdel:dflt:(hpux.user.delete,*):0/0// :dflt :dflt :dflt : /usr/sbin/groupdel:dflt:(hpux.user.group.delete,*):0/0// :dflt :dflt :dflt : /usr/sbin/useradd:dfl:(hpux.user.add,*):0/0//:dflt:dflt:dflt: /usr/sbin/usermod:dflt:(hpux.user.modify,*):0/0// :dflt :dflt :dflt : /usr/sbin/groupadd:dflt:(hpux.user.group.add,*):0/0// :dflt :dflt :dflt : /usr/sbin/groupmod:dflt:(hpux.user.group.modify,*):0/0// :dflt :dflt :dflt : /usr/sbin/vipw:dflt:(hpux.user.modify,*):0/0// :dflt :dflt :dflt : 5.4 HP-UX RBAC の導入計画 77 5.4.3 コマンドマッピングの計画 定義されたロールでよく使用されているにもかかわらず、提供された事前定義の /etc/rbac/cmd_priv ファイルには存在しないコマンドをすべて定義します。 /etc/rbac/cmd_priv ファイルは、権限とコマンドの間のマッピングを定義します。 各コ マンドについて、以下を決定します。 • コマンドの絶対パス • コマンドを実行する前に確認が必要な権限 • コマンドで必要とされる特殊な特権 (たとえば、euid=0) /etc/rbac/cmd_priv ファイルの操作エントリと対象物エントリを構成するテキスト文字 列は自由に記述できますが、コマンドまたはコマンド一式と論理上対応させる必要がありま す。 /etc/rbac/cmd_priv における権限とコマンドのマッピングを計画するにあたって は、以下のガイドラインに従ってください。 • 操作を論理グループにして定義すると、ロールに対する操作の割り当てが容易になりま す。 • 操作のグループは、含まれる子要素の数が多すぎ (10 より大)、もしくは少なすぎ (1) と ならないようにしてください。 操作グループの割り当てが困難となるため、ツリー全体 の幅が広すぎないようにしてください。また個々の操作について長くて使用しにくい名 前を付けて、ツリーを必要以上に深くしないでください。 • 操作名の最後は、アクション (動詞) で終わるようにします。 • 将来コマンドを追加するときに、新しいコマンドの適切な位置が分かりやすいように操 作を定義してください。 追加コマンドを構成する手順については、「追加のコマンドの権限と特権の構成」を参照し てください。 5.4.4 HP-UX RBAC の制限事項および制限条項 HP-UX RBAC を導入する前に検討する必要な項目は、次のとおりです。 • HP-UX RBAC はシングルユーザーモードをサポートしていないため、シングルユーザー モードが必要な状況では root アカウントが使用できる必要があります。 • Serviceguard は、HP-UX RBAC および privrun を使用しての Serviceguard コマンドへ のアクセス許可をサポートしていません。 HP-UX RBAC および Serviceguard クラスタに ついての詳細は、「Serviceguard クラスタにおける HP-UX RBAC」を参照してください。 すべてのアプリケーションと同じように、HP-UX RBAC はコンパートメントを支配する 規則の影響を受けます (第6章 「コンパートメント」を参照)。 HP-UX RBAC をコンパー トメントで使用するときは、以下に留意してください。 • 78 • コンパートメントの定義で制限されているファイル上では、privedit を実行でき ません。 • 異なるアプリケーションに対してきめの細かい特権を提供するには、アプリケーショ ンに提供するために必要なものと同じ特権で privrun コマンドが実行中である必要 があります。 デフォルトでは、privrun はすべての特権で実行するよう構成されて います (詳細は getfilexsec(1M) を参照)。 ただし、このデフォルトの特権設定は制限 されていることがあります。 たとえば、コンパートメントが特権を許可しないよう HP-UX Role-Based Access Control に構成されている場合、privrun それ自体が特権を持たないため、この仕様によっ て、privrun がそのコンパートメント内のアプリケーションに特権を提供できなく なります。 デフォルトでは、密閉されたコンパートメントは POLICY 複合特権を許 可しないように構成されます。 • privrun がコンパートメント内の別のアプリケーションを呼び出すには、privrun は CHANGECMPT 特権を表明する必要があります。 privrun が CHANGECMPT 特権 を表明できない場合、たとえばコンパートメントが特権を許可しないように構成され ていれば、privrun は失敗します。 この動作は意図的で、密閉されたコンパートメ ントの概念を補強するために設計されたものです。 5.5 HP-UX RBAC の構成 HP-UX RBAC の構成は、次の 3 つのステップで行います。 1. 2. 3. ロールを構成する。 権限を構成する。 追加コマンドを構成する。 重要: 権限は HP-UX RBAC 管理コマンドに組み込み済み (ハードコード済み) であるため、構 成できません。 ただし、どのロールおよびユーザーが、必要な HP-UX RBAC 管理コマンド権 限を持つかを構成できます。 HP-UX RBAC 管理コマンドは setuid=0 であるため、privrun コマンドでラッピングする必 要はありません。 HP-UX RBAC 管理コマンドは、誰が呼び出したかにかかわらず、root に等 しい特権で実行されます。 誰が HP-UX RBAC 管理コマンドを使用できるかは、アクセス制御 チェックによって制限されます。 権限についての詳細は、それぞれの HP-UX RBAC 管理コマンドのマンページの権限の項を参 照してください。 この「HP-UX RBAC の構成」の項では、HP-UX RBAC 管理コマンドと構成プロセスを示すため に、表 5-6 「計画結果の例」内の計画結果とユーザーの例を使用します。 表 5-6 計画結果の例 ユーザー ロール 権限 よく使用されるコマンド (注記: 対象物が存在するものと仮定する *) chandrika, rwang UserOperator bdurant, prajessh luman hpux.user.* /usr/sbin/useradd hpux.security.* /usr/sbin/usermod NetworkOperator hpux.network.* /sbin/init.d/inetd Administrator hpux.* /opt/customcmd company.customauth 5.5.1 ロールの構成 ユーザーのロールは、次の 2 つのステップの手順で構成されます。 5.5 HP-UX RBAC の構成 79 1. 2. ロールの作成 ユーザーまたはグループに対するロールの割り当て 5.5.1.1 ロールの作成 roleadm コマンドを使用して、ロールを作成し、ユーザーまたはグループにロールを割り当 てます。 まず存在しないロールを追加して、ユーザーをそのロールに割り当てる必要があり ます。 roleadm コマンドの構文は次のとおりです。 roleadm add role [comments] | delete role | modify oldrolename newrolename | assign user role | assign "&group" role | revoke user [role] | revoke "&group" [role] | list [user=username][role=rolename][sys] roleadm コマンド引き数の一覧と簡単な説明を、以下に示します。 add delete modify assign revoke list 注記: /etc/rbac/roles にあるロールのシステムリストにロールを追加する。 /etc/rbac/roles にあるロールのシステムリストからロールを削除する。 ロールに関連する 3 つのすべてのデータベースファイル (/etc/rbac/roles、/etc/rbac/user_role、/etc/rbac /role_auth) 内のロール名を変更する。 ロールをユーザーまたはグループに割り当てて、/etc/rbac/user_role を 更新する。 ロールをユーザーまたはグループから取り消し、/etc/rbac/user_role か らエントリを削除する。 有効なシステムのロール (sys) か、ユーザーとロールのマッピングをリスト表 示する。 詳細については、roleadm(1m) マンページを参照してください。 roleadm コマンドで新しいロールを追加する 2 つの例を、以下に示します。 # roleadm add UserOperator roleadm: added role UserOperator # roleadm add NetworkOperator roleadm: added role NetworkOperator 注記: HP-UX RBAC に付属するデフォルトの構成ファイルには、前もって構成された単一の ロール (Administrator) が定義されています。 デフォルトでは、Administrator というロールは、 HP-UX のすべてのシステム権限 (hpux.*, *) が割り当てられ、root ユーザーに関連付けられ ています。 有効なロールを定義した後で、それを 1 つ以上のユーザーまたはグループに割り当てること ができます。 作成されていないロールをユーザーに割り当てようとすると、ロールが見つか らないというエラーメッセージが表示されます。 80 HP-UX Role-Based Access Control 5.5.1.2 ユーザーへのロールの割り当て ロールの作成とロールの割り当てを分離することには、以下の利点があります。 • ロールを割り当てる前にそのロールを追加する必要があるため、割り当ての際にロール 名を指定するとき、入力ミスを発見できる。 • 各タスクを別々のユーザーが実行できる。 たとえば、同一ユーザーがロールの作成と ロールの割り当ての両方を行う必要がありません。 有効なロールを作成したら、次の例にように roleadm コマンドを使用してロールを適切な ユーザーに割り当てます。 # roleadm assign luman Administrator roleadm assign done in /etc/rbac/user_role # roleadm assign rwang UserOperator roleadm assign done in /etc/rbac/user_role roleadm assign コマンドを使用してロールをユーザーに割り当てたら、次の例のように、 roleadm list コマンドを使用してロールが正しく割り当てられたかを確認できます。 # roleadm list root: Administrator luman: Administrator rwang: UserOperator 注記: HP-UX RBAC には、DEFAULT という名前の特殊なユーザーを /etc/rbac/user_role データベースに追加する機能があります。 ロールを DEFAULT ユーザーに割り当てることは、 システム上に存在しないユーザーにロールを割り当てることを意味します。 5.5.1.3 グループへのロールの割り当て HP-UX RBAC では、ロールをグループに割り当てることもできます。 user の値を使用する roleadm コマンドオプション (roleadm assign <user> role および roleadm revoke <user> role など) を使用して、グループおよびロールを管理できます。 roleadm コマンドを使用してグループおよびロールの情報を割り当て、取り消し、またはリ スト表示するには、ユーザーの値の先頭にアンド記号 (&) を挿入して、ユーザーの値を引用符 で囲みます。 グループ名の値とアンド記号 (&) は、シェルエスケープするか引用符で囲んで、 roleadm に解釈されるようにする必要があります。 例: # roleadm assign "&groupname" role 5.5.2 権限の構成 権限の構成はロールの作成と割り当てに似ています。 ただし、権限には操作と対象物という 2 つの要素が含まれています。 ワイルドカード (*) は、対象物を指定しないで authadm コマ ンドを呼び出す際に使用される非明示的な対象物として、非常によく使用されます。 多くの 場合、対象物は意図的に指定しないため、操作がすべての対象物に適用されます。 対象物を 指定しない方法は、ラップされたコマンドに適用する権限によく使用されます。コマンド名 から実行の対象を判断するのが困難な場合があるためです。 このように対象物が特定しにくいコマンドの例に、/usr/sbin/passwd コマンドがありま す。 passwd コマンドを実行すると、/etc/passwd ファイル、NIS テーブル、LDAP エント 5.5 HP-UX RBAC の構成 81 リなど多くのリポジトリに作用することがあります。 コマンドラインを見ても実際の対象物 は記述されていないため、通常は最も簡単な方法として、ユーザーはすべての対象物を操作 する必要があるものとして設定します (例: hpux.security.passwd.change, *)。 注記: デフォルト対象物について、値を構成できます。 デフォルトでは、対象物を指定しな い場合、HP-UX RBAC は対象物としてワイルドカード (*) を使用します。 ただ し、/etc/default/security 内の RBAC_DEFAULT_OBJECT= パラメータの値を構成した 場合、HP-UX RBAC はワイルドカード (*) の代わりにこの値をデフォルト対象物として使用し ます。 HP-UX RBAC データベース内の権限情報を編集するには、authadm コマンドを使用します。 authadm 構文は roleadm 構文と類似しています。 authadm コマンドの構文は次のとおり です。 authadm add operation[object[comments]] | delete operation[object] | assign role operation[object] | revoke [role=name][operation=name[object=name]] | list [role=name][operation=name[object=name][sys] authadm コマンド引き数の一覧と簡単な説明を、以下に示します。 add delete assign revoke list /etc/rbac/auths にある有効な権限のシステムリストに、権限を追加する。 /etc/rbac/auths にある有効な権限のシステムリストから、権限を削除す る。 権限をロールに割り当てて、エントリを /etc/rbac/role_auth に追加す る。 権限をロールから取り消して、/etc/rbac/role_auth を更新する。 有効な権限をシステムまたはロールごとにリスト表示し、指定した操作に関 連するロールをリスト表示する。 重要: アスタリスク (*) 文字を含ませて権限を割り当てる場合は、以下の例のように、シェ ルの解釈を避けるためにワイルドカード文字を引用符で囲む必要があります。 表 5-6 「計画結果の例」に基づく権限の作成と割り当ての例を、以下に示します。 # authadm add 'company.customauth.*' authadm added auth: (company.customauth.*,*) # authadm assign Administrator 'company.customauth.*' authadm added auth for role Administrator authadm コマンドで list 引き数を使用すると、次の例のように権限の割り当て状況を確認 できます。 # authadm list Administrator: (hpux.*, *) (company.customauth.*, *) 5.5.3 追加のコマンドの権限と特権の構成 デフォルト構成では提供されていない追加コマンドがあれば、これを定義する必要がありま す。 コマンドの実行に必要な権限も既に存在していて、ロールに割り当て済みである必要が 82 HP-UX Role-Based Access Control あります。 これをまだ行っていない場合、コマンドは構成されますが、コマンドを使用する 適切な権限がどのユーザーにも与えられません。 コマンドの権限情報と特権情報を編集するには、cmdprivadm コマンドを使用します。 cmdprivadm コマンドは roleadm および authadm の動作に類似していますが、privrun デー タベース内のコマンド特権および権限の追加と削除のみが許可されます。 cmdprivadm コマンドの構文は次のとおりです。 cmdprivadm add <cmd=full path name of a command | full path name of a file> |[op=operation]|[object=object] |[ruid=ruid]|[euid=euid] |[rgid=rgid]|[egid=egid] |[compartment=compartment label] |[privs=comma separated privilege list] |[re-auth=pam_service name] |[flags=comma separated flags list] cmdprivadm delete <cmd=full path name of a command | full path name of a file> |[op=operation]|[object=object] |[ruid=ruid]|[euid=euid] |[rgid=rgid]|[egid=egid] |[compartment=compartment label] |[privs=comma separated privilege list] |[re-auth=pam_service name] |[flags=comma separated flags list] 2 つの主要な cmdprivadm コマンド引き数の一覧と簡単な説明を、以下に示します。 add delete コマンド (またはファイル) の権限情報を /etc/rbac/cmd_priv データベー スに追加する。 コマンド (またはファイル) の権限情報を /etc/rbac/cmd_priv データベー スから削除する。 最もよく使用される cmdprivadm 引き数の例を、以下に示します。 # cmdprivadm add cmd=/opt/customcmd op=companyname.customcommand ruid=0 euid=0 flags=edit /opt/customcmd::(companyname.customcommand,*):0/0/-1/-1::::edit cmdprivadm added the entry to /etc/rbac/cmd_priv 上の例で示したとおり、cmd_priv データベースファイルにはフラグ値用のフィールドがあ ります。 コマンドまたはファイルの権限情報および特権情報を構成するときは、cmdprivadm flags の値を必ず考慮してください。 privrun コマンドは、KEEPENV という定義されたフラグ 1 つを認識します。 KEEPENV フ ラグが特定のコマンド用に cmd_priv ファイル内で設定された場合、privrun がその特定 のコマンドをラップしたときには、いかなる環境変数も消去されません。 privedit の場合、フラグ値を指定して、privedit がファイルを編集できるかどうかを示 すことができます。 privrun がコマンドを実行できるかどうかを示すために、追加のフラグ 値も指定できます。 サポートされるフラグ値は、次のとおりです。 flag= 空白またはそれ以外の字句 flag=edit flag=noexec ファイルは実行のみ可能で、編集不可であること を示す。 ファイルは編集も実行も可能であることを示す。 このフラグは主にスクリプトを対象とする。 ファイルは実行できず、privedit でのみ編集可 能なことを示す。 5.5 HP-UX RBAC の構成 83 注記: cmdprivadm の引き数すべてについての詳細は、cmdprivadm(1M) を参照してくださ い。 ほぼすべての引き数はオプションで、何も指定しない場合は妥当なデフォルト値が設定 されます。 注記: /etc/rbac/cmd_priv ファイルの既存のエントリを修正するには、まずそのエント リを削除して、次に更新バージョンを追加して戻す必要があります。cmdprivadm を使用し てエントリを削除するとき、引き数はフィルタとして機能します。 たとえば、cmdprivadm delete op=foo コマンドを指定すると、操作が foo であるエントリのすべてが削除されま す。 このため、cmdprivadm を使用してエントリを削除する場合は、削除すべきエントリを 一意に特定するための十分な引き数を指定しているか十分確認してください。 5.5.4 きめの細かい特権を使用した HP-UX RBAC の構成 アプリケーションはシステムのリソースとシステムコールを使用して通信するため、オペレー ティングシステムがシステムリソースにアクセスできます。 オペレーティングシステムおよ びシステムハードウェアにアクセスするには、アプリケーションについて特殊な上位の特権 がシステムコールで必要になる場合があります。 きめの細かい特権が使用できるようになる以前は、UID=0 であれば、一部のシステムコール について特殊な上位の特権となることができました。 UID が 0 でなければ、システムコール は拒否され、アプリケーションエラーが返されました。 HP-UX RBAC および特に privrun ラッパーコマンドによって、特定のアプリケーションの実 行に必要な特殊な特権レベルまたは UID=0 を、非 root ユーザーが取得することができます。 特定のアプリケーションを実行する状況において非 root ユーザーに UID=0 を提供するだけ でなく、HP-UX RBAC はきめの細かい特権を使用して、UID=0 を使用せずに追加の特権でア プリケーションを実行することもできます。 HP-UX RBAC を使用すれば、選択した特権のセットのみで、また異なるユーザーについては異 なる特権のセットで、さらにすべて UID=0 としないで実行するようコマンドを構成できま す。 たとえば、管理者はいろいろな特権で foobar コマンドを実行する必要があっても、通 常のユーザーは foobar を実行する特権がずっと少なくてよい場合があります。 きめの細かい特権は、「システムコールのアクセス制御チェックキー」と考えてください。 UID=0 をチェックする代わりに、システムコールは特定の権限をチェックします。 これらの きめの細かい特権によって、システムコールを「ロック」し、オペレーティングシステムと ハードウェアのリソースにアクセスするアプリケーションを制御できます。 また、特権をき めの細かい特権に分割すれば、アプリケーションを実行するためにすべての特権が必要とは ならず、特定の特権または特権のセットだけがあればよくなります。 特定の権限のセットで 実行するアプリケーションプロセスが危険にさらされた場合、仮に UID=0 でプロセスを実 行した場合よりも潜在的な損害はずっと少なくなります。 注記: きめの細かい特権についての詳細は、privileges(5) を参照してください。 privrun 用のコマンドをラップして、指定した特権でのみ実行するように構成するには、 cmdprivadm コマンドと privs オプションを使用します。 以下に示すのは、BASICROOT 複合特権で実行するように /usr/bin/ksh コマンドを構成して、(hpux.adm.mount, *) 権限を必要とする cmdprivadm コマンドの例です。 # cmdprivadm add cmd=/etc/mount op=hpux.adm.mount object='*' privs=BASICROOT 84 HP-UX Role-Based Access Control 上記の cmdprivadm コマンドは、/etc/rbac/cmd_priv ファイルに以下のようなエントリ を作成します。 #-------------------------------------------------------------------------------------------------------# Command : Args :Authorizations :U/GID :Cmpt :Privs :Auth :Flags #----------------:--------:---------------------:------:-------:----------:------:------------------/etc/mount :dflt :(hpux.adm.mount,*) :/// :dflt :BASICROOT :dflt : cmdprivadm と privrun を使用してコマンドをラップしてエントリを作成した ら、/etc/mount は、ユーザーが (hpux.adm.mount, *) 権限を持つ場合、BASICROOT というきめの細かい複合的な上位の特権で、UID=0 でなく実行します。 「privrun コマンドを使用した、特権付きでのアプリケーション実行」で説明したように、 privrun -p コマンドオプションは、-p オプションによって指定された特権を持つ /etc/rbac/cmd_priv データベースファイル内のエントリだけと一致します。 privrun -p オプションを使用して特権を指定するとき、privrun は、-p で指定した特権を含む特権 グループと複合特権など、指定した特権を含むすべてのエントリと一致することに留意して ください。 privrun コマンドは、/etc/rbac/cmd_priv 内で最初に一致したものに従っ て実行します。 たとえば、以下は privrun -p コマンドの例と、コマンドが /etc/rbac/cmd_priv 内で一致したエントリのリストを示したものです。 コマンド: # privrun -p MOUNT /etc/mount 一致した /etc/rbac/cmd_priv エントリ: #--------------------------------------------------------------------------------------------------------------# Command : Args :Authorizations :U/GID :Cmpt :Privs :Auth :Flags #----------------:--------:-------------------:------:------:---------------------------------------:-----:----/etc/mount :dflt :(hpux.adm.mount,*) :/// :dflt :PRIV_CHOWN, MOUNT :dflt : /etc/mount :dflt :(hpux.*,nfs) :/// :dflt :MOUNT, PRIV_RTPRIO, PRIV_MLOCK :dflt : /etc/mount :dflt :(hpux.adm.*,*) :/// :dflt :BASICROOT :dflt : 注記: privrun -p MOUNT /etc/mount コマンドは BASICROOT 特権と一致します。こ れは、MOUNT 単純特権は事前定義した BASICROOT 複合特権の一部であるためです。 単純 特権および複合特権についての詳細は、privileges(5) マンページを参照してください。 重要: privrun は最初に見つけた明示的な一致に従って実行するた め、/etc/rbac/cmd_priv 内のエントリのシーケンスは重要です。 上の例で、3 つのエン トリすべてが privrun コマンドの一致として考えられますが、privrun は最初のエントリ を実行します。 コマンドおよび権限を構成するときには、エントリのシーケンスに留意して ください。 cmdprivadm ツールは、/etc/rbac/cmd_priv ファイルの最後にエントリを追 加します。 5.5.5 コンパートメントを使用した HP-UX RBAC の構成 HP-UX RBAC はコンパートメントを使用して、アプリケーションが特定のコンパートメント内 で実行するように構成することもできます。 コンパートメントを使用すれば、システムをコ ンパートメントに論理的に区切って、プロセスがそのコンパートメント外部と通信できなく したり、または外部のリソースにアクセスできなくすることが可能です (コンパートメントの 規則によってこれを許可するよう設定した場合を除く)。 5.5 HP-UX RBAC の構成 85 以下の cmdprivadm コマンドの例は、/sbin/init.d/hpws_apache コマンドが apache コンパートメント内でのみ実行するよう構成したもので、このことは /etc/cmpt/apache.rules コンパートメント規則で定義されています。 # cmdprivadm add cmd='/sbin/init.d/hpws_apache -a start' \ op=hpux.network.service.start object=apache compartment=apache 上記の cmdprivadm コマンドは、/etc/rbac/cmd_priv ファイルに以下のようなエントリ を作成します。 #--------------------------------------------------------------------------------------------------------------# Command : Args :Authorizations :U/GID :Cmpt :Privs :Auth :Flags #-------------------------:--------:------------------------------------:--------------:--------:-------:------/sbin/init.d/hpws_apache :start :(hpux.network.service.start,apache) :/// :apache :dflt :dflt : cmdprivadm を使用してエントリを作成して、privrun を使用してコマンドをラップした 後、認可されたユーザーは /sbin/init.d/hpws_apache -start コマンドを実行でき、 また apache コンパートメントの内部だけで実行できます。 プロセスのコンパートメントタ グは apache に変更でき、プロセスのプロパティは、定義済みの apache コンパートメン ト規則に従います。 注記: コマンドのコンパートメントを構成するには、cmdprivadm コマンドだけを使用しま す。 cmdprivadm を使用せずに /etc/rbac/cmd_priv データベースファイルを編集しな いでください。 /etc/rbac/cmd_priv ファイルの既存のエントリを修正するには、まずそのエントリを削 除して、次に更新バージョンを追加して戻す必要があります。cmdprivadm を使用してエン トリを削除するとき、引き数はフィルタとして機能します。 たとえば、cmdprivadm delete op=foo コマンドを指定すると、操作が foo であるエントリのすべてが削除されます。 この ため、cmdprivadm を使用してエントリを削除する場合は、削除すべきエントリを一意に特 定するための十分な引き数を指定しているか十分確認してください。 5.6 HP-UX RBAC の使用 本項では、privrun と privedit コマンドを実行して、HP-UX RBAC を操作する方法につい て説明します。 5.6.1 privrun コマンドを使用した、特権付きでのアプリケーション実行 ユーザーは privrun コマンドによって、呼び出したユーザーに関連した権限に従って、異な る特権でレガシーアプリケーションを実行できます。 ユーザーは privrun を呼び出し、コ マンド行引き数としてレガシーアプリケーションを指定します。 次に、privrun は /etc/rbac/cmd_priv データベースを調べて、コマンドを追加の特権で実行するためには 何の権限が必要かを判別します。 ユーザーが必要な権限を持つ場合、privrun は /etc/rbac/cmd_priv データベースに指定されているように UID または GID を変更した 後、指定されたコマンドを呼び出します。 privrun コマンドの構文は次のとおりです。 privrun [options] command [args] | [-u eUID|username] | [-g eGID|groupname] | [-U rUID|username] 86 HP-UX Role-Based Access Control | | | | | | | | [-G rGID|groupname] [-a (operation, object)] [-c compartment] [-p privilege[,privilege,privilege...]] [-x] [-v [-v]] [-h] [-t] 以下のリストは、それぞれの privrun コマンドオプションについて説明したものです。 -u -g -U -G -a -c -p -x -v -h -t 指定した実効ユーザー ID (EUID) またはユーザー名に関連した EUID に対応する、EUID を含むエントリだけと一致させる。 指定した実効グループ ID (EGID) またはグループ名に関連した EGID に対応する、EGID を含むエントリだけと一致させる。 指定した実ユーザー ID (RUID) またはユーザー名に関連した RUID に対応する、RUID を 含むエントリだけと一致させる。 指定した実グループ ID (RGID) またはグループ名に関連した RGID に対応する、RGID を含むエントリだけと一致させる。 指定した権限が必要なエントリだけと一致させる。 権限は (操作、対象物) のペアとし て /etc/rbac/cmd_priv データベースファイル内で定義されます。 指定された権限 は、/etc/rbac/cmd_priv ファイル内にある権限と正確に一致する必要があり、ワ イルドカードはサポートされていません。 /etc/rbac/cmd_priv データベースファイル内の指定したコンパートメントと一致 させる。 指定されたコンパートメントは、/etc/rbac/cmd_priv にあるコンパート メントと正確に一致する必要があります。 指定された特権と、/etc/rbac/cmd_priv データベースファイル内にある特権を照 合します。 複数の特権を指定できます。 特権を複数指定するとき、それぞれの特権は コンマで区切ります。 privrun -p オプションを使用して特権を指定するとき、 privrun は、-p で指定した特権を含む特権グループと複合特権など、指定した特権 を含むすべてのエントリと一致することに留意してください。 privrun コマンド は、/etc/rbac/cmd_priv 内で最初に一致したものに従って実行します。 権限または認証のチェックに失敗したときに限り、privrun の動作を変更するフォー ルスルーモードを使用します。 エラーメッセージで終了するのではなく、対象コマン ドが実行されますが、追加の特権は不要です。 対象コマンドは、ユーザーが privrun を使わずにコマンドを直接実行したかのように実行されます。 privrun を詳細表示モードで呼び出す。 -v オプションが 2 つ指定されている場合、 詳細表示レベルが上がります。 詳細表示レベルが上がると、出力される情報が多くな ります。 privrun のヘルプ情報を出力する。 必要な privrun 呼び出しが正常に実行されるかどうかを確認するために、構成ファイ ルに従って、通常の認証と認可のチェックをすべて実行するテストモードを使用する。 唯一の違いは、コマンドを実行するのでなく、成功時に privrun -t は戻るだけとな ります。 所定の privrun 呼び出しが成功するかどうかをプレビューするために使用 されます。 5.6 HP-UX RBAC の使用 87 以下は、最も基本的な privrun の使用法である、レガシーアプリケーションのラッピングの 例です。 この場合、ipfstat コマンドは、呼び出したユーザーに関連する権限に従って実行 するために、privrun コマンド引き数として実行します。 # privrun ipfstat ログインしたユーザーが、/etc/rbac/cmd_priv に定義された必要な権限を持つ限り、 privrun ラッパーコマンドは /etc/rbac/cmd_priv エントリに定義された権限 (UID およ び GID) でレガシーコマンドを実行します。 同じコマンドについて複数のエントリの存在は可能ですが、必要な権限や結果としての特権 は異なる可能性があります。 この場合、privrun は /etc/rbac/cmd_priv データベース 全体を順次反復して、ユーザーが許可された最初のコマンドを実行します。 場合によっては、これは理想的ではありません。 たとえば、すべてのユーザーは、passwd コマンドを実行して自分のパスワードを変更することが許可されていますが、ユーザー管理 者がこれを実行する場合、他のユーザーのパスワードを変更する権限が必要です。 すべての 通常ユーザーのエントリが、ユーザー管理者のエントリよりも前にリストされている場合、 そちらが先に実行されるため、ユーザー管理者はもっと高い特権のバージョンを実行できな くなります。 このような場合に備えて、privrun には、必要な特権をユーザーが指定できるようにするオ プションがあります。 指定した特権 (UID など) と一致するエントリだけが使用されます。 必 要な特権に一致するエントリがない場合、privrun はエラーメッセージを返します。 以下は、実効 UID が 0 に設定されているエントリのみを一致させる privrun の呼び出し例 です。 # privrun -u 0 ipfstat 注記: privrun コマンドの使用についての詳細は、privrun(1M) およびrbac(5) マンページ を参照してください。 5.6.1.1 Serviceguard クラスタにおける HP-UX RBAC Serviceguard は、HP-UX RBAC および privrun を使用しての Serviceguard コマンドへのア クセス許可をサポートしていません。 Serviceguard バージョン A.11.16 では、パッケージお よびクラスタ構成ファイルを介してアクセス制御方針を指定することにより、独自のロール ベースアクセス制御を実現しています。これにより Serviceguard の操作のためのクラスタ認 識方針を提供しています。 Serviceguard のこの機構は、Serviceguard の操作のロールベース のアクセス制御に使用する必要があります。 Serviceguard のアクセス制御方針についての詳 細は、『Serviceguard の管理』ドキュメントを参照してください。 HP-UX RBAC は Serviceguard クラスタ内で、Serviceguard 以外のコマンドと併用できます。 同じ HP-UX RBAC の規則が、クラスタ内のすべてのノードに適用されます。 5.6.2 privedit コマンドを使用した、アクセス制御下にあるファイルの編集 privedit コマンドは、ファイルパーミッションまたは ACL のためにユーザーが通常編集で きないファイルについて、認可されたユーザーにファイルの編集を許可します。 コマンドを 呼び出して、引き数として編集する必要があるファイルを識別した後、privedit が /etc/rbac/cmd_priv データベースを privrun と同様にチェックして、指定したファイ 88 HP-UX Role-Based Access Control ルの編集に必要な権限を判断します。 呼び出し元のユーザーがファイルの編集権限を持つ場 合、privedit はそのファイルのコピーを編集するエディタを呼び出します。 注記: ファイルを編集するエディタの呼び出しに privedit を使用するとき、エディタは いかなる上位の特権でも実行されません。 privedit が呼び出したエディタは上位の特権で は実行しないため、シェルエスケープなどのアクションの試行は、ユーザーの通常の (上位の 特権でない) 特権セットで実行されます。 privedit がファイルの編集に使用するエディタは、EDITOR 環境変数を設定することで指 定できます。 EDITOR 変数を設定しない場合、privedit はデフォルトの vi エディタを使 用します。 privedit コマンド行経由では引き数をエディタに渡せません。 ただし、 privedit を呼び出す前にエディタ特有の環境変数を設定していれば、エディタはその環境 変数を認識してサポートします。 編集するファイルを識別するには、ファイルの完全修飾名を privedit 引き数として使用し ます。 ファイルの完全修飾名を使用しない場合、privedit は指定したファイル名の先頭に 現在の作業ディレクトリを追加します。 編集するファイルの指定方法にかかわらず、すべて のファイル名は privedit を呼び出した後に完全修飾名になります。 privedit コマンド は、シンボリックリンクであるファイルを認識し、サポートします。 privedit コマンドでは一度に 1 つのファイルだけ編集できます。 複数のファイル名を privedit の引き通として指定するとき、privedit は指定済みの最初のファイルを編集し て、後続のファイル名を無視します。 privedit コマンドの構文は次のとおりです。 privedit [option] fully-qualified-file-name | [-a (operation, object)] | [-v] | [-h] | [-t] | [-x] privedit コマンドオプションの一覧と簡単な説明を、以下に示します。 -a authorization -v -h -t -x 指定された権限を持つ /etc/rbac/cmd_priv ファイ ルエントリのみを一致させる。 privedit を詳細表示モードで呼び出す。 privedit のヘルプ情報を出力する。 ファイルの編集と結果のレポートに必要な権限をユー ザーが持っているか確認する。 権限のチェックに失敗すると、ファイルは呼び出し元 の元の特権で編集される。 以下は、privedit コマンドを使用して、(hpux.sec.edit、secfile) という特定の権限 で /etc/default/security ファイルを編集する例です。 # privedit -a "(hpux.sec.edit, secfile)" /etc/default/security 注記: cmd_priv データベース内の各エントリ用のフラグ値は、privedit がファイルを編 集できるかどうかを決定します。 フラグおよび privedit コマンドの使用についての詳細 は、「追加のコマンドの権限と特権の構成」およびprivedit(1M) マンページを参照してくださ い。 5.6 HP-UX RBAC の使用 89 5.6.3 ACPS を使用した privrun および privedit のカスタマイズ HP-UX RBAC には、privedit と privrun がユーザーの権限をチェックする方法をカスタマ イズする機能があります。 ACPS モジュールはカスタマイズ可能なインタフェースで、権限 の判定を行う必要があるアプリケーションに応答を返します。 ACPS 構成ファイル (/etc/acps.conf) は、ACPS の以下の側面について制御します。 • アクセスの判定を下すために調べるモジュール • モジュールを調べる順序 • 結果をアプリケーションに返すための、モジュールの応答を結合する規則 ACPS についての詳細は、「HP-UX RBAC アクセス制御ポリシースイッチ」、acps.conf(4)、 acps(3)、rbac(5) を参照してください。 5.7 HP-UX RBAC のトラブルシューティング HP-UX RBAC のトラブルシューティングとデバッグに使用する主要な機構のリストは、次のと おりです。 • rbacdbchk ユーティリティは、HP-UX RBAC データベース構文を確認します。 • privrun -v コマンドは関連する追加情報をレポートします。 5.7.1 rbacdbchk データベース構文ツール 最もよく発生するバグは、HP-UX RBAC データベースを手動で編集した結果、構文的に誤った 構成になるか、データベース間で整合が取れなくなる (/etc/rbac/user_role のロールが /etc/rbac/roles で定義されていないなど) ことがあります。 これらのよくある過ちを診 断しやすくするために、HP-UX RBAC には rbacdbchk コマンドがあります。 このコマンド は HP-UX RBAC データベース全体を読み取り、不正または不整合となる構成エントリが見つ かると、以下のような警告を出力します。 # rbacdbchk [/etc/rbac/user_role] chandrika: UserOperator invalid user The value 'chandrika' for the Username field is bad. [/etc/rbac/cmd_priv] /opt/cmd:dflt:(newop,*):0/0//:dflt:dflt:dflt: invalid command: Not found in the system The value '/opt/cmd' for the Command field is bad. [Role in role_auth DB with no assigned user in user_role DB] Rebooter:(hpux.admin.*, *) [Invalid Role in user_role DB. Role 'UserOperator' assigned to user 'chandrika' does not exist in the roles DB] 正しく構成されたシステムでは、rbacdbchk コマンドからは何も出力されず、エラーが存在 しないことを示しています。 5.7.2 privrun -v Information 問題を検出するための第 2 の方法は、privrun コマンドを -v オプション (詳細表示モード) で実行することです。 詳細表示モードでは、privrun は入力コマンドが一致したエントリ、 権限チェックのステータス、またその他の関連するデータの追加情報を提供します。 多くの 場合、privrun の失敗の原因になっている問題が、この出力で明らかになります。 出力の詳 90 HP-UX Role-Based Access Control 細表示レベルを高めるには、-v オプションを複数回指定します。 以下は、privrun -v 出 力と、ipfstat コマンドの例です。 # privrun -v /sbin/ipfstat privrun: user root intends to execute command /sbin/ipfstat privrun: input entry: '/sbin/ipfstat:dflt:(,):///:dflt:dflt::' privrun: found matching entry: '/sbin/ipfstat:dflt:(hpux.network.filter.readstat,*):0/0//:dflt:dflt::' privrun: passed authorization check privrun: attempting to set ruid/euid/rgid/egid to 0/0/-1/-1 privrun: current settings for ruid/euid/rgid/egid are 0/0/3/3 privrun: executing: /sbin/ipfstat 5.7 HP-UX RBAC のトラブルシューティング 91 92 第6章 コンパートメント 本章では、HP-UX 11i v3 のコンパートメント機能について説明します。 本章では以下の項目 について扱います。 • 「概要」 • 「コンパートメント構造の計画」 • 「コンパートメントのアクティブ化」 • 「コンパートメント構成の変更」 • 「コンパートメントの構成要素」 • 「コンパートメントの規則と構文」 • 「コンパートメント内でのアプリケーションの構成」 • 「コンパートメントのトラブルシューティング」 • 「Discover モードを使用したコンパートメントの初期構成の生成」 • 「HP Serviceguard クラスタにおけるコンパートメント」 6.1 概要 コンパートメント は、システムの構成要素を互いに隔離する方法です。 適切に構成すれば、 HP-UX システムとそのデータを守る効果的な手段になります。 コンパートメントによって、プロセスまたは主体を互いに隔離したり、またこれらをリソー スや対象物から隔離することもできます。 概念的には、それぞれのプロセスがコンパートメントに所属し、リソースは 2 つの方法のう ち 1 つによって扱われます。 1. リソースには作成側プロセスのコンパートメントのラベルが付けられます。 これは、通 信エンドポイントおよび共有メモリーなどの一時的なリソースに、コンパートメントを 割り当てる方法です。 2. ファイルおよびディレクトリなどの永続的なリソースの場合、異なるコンパートメント にあるプロセスがこれらにアクセスする方法を指定するアクセスリストに、リソースを 関連づけることができます。 つまり、プロセスがリソースにアクセスしたり、または他 のコンパートメントに属するプロセスと通信できるのは、これらのコンパートメントの 間に規則が存在するときに限られます。 同じコンパートメントに属するプロセスは相互 に通信でき、規則がなくてもそのコンパートメント内にあるリソースにアクセスできま す。 コンパートメントは主体と対象物を分離します。 これによって、関連する主体と対象物の仮 想的なグループ化が可能です。 あるコンパートメント内で実行中のサービスに支障を来たし た場合、別のコンパートメントで実行中のサービスに影響が及ばないようにシステムを構成 することができます。 こうすれば、被害は影響を受けるコンパートメントだけに限定されま す。 6.1 概要 93 6.1.1 コンパートメントのアーキテクチャ コンパートメントはシステム内でプロセスと子プロセスを隔離します。図 6-1 「コンパート メントのアーキテクチャ」では、システムのいろいろな部分にアクセスする必要があるいく つかのハンドラープロセスを生成する、親プロセスが示されています。 システム上のコンパー トメントは、プロセスが必要なリソースにアクセスできるように構成されています。 図 6-1 コンパートメントのアーキテクチャ 図 6-1 「コンパートメントのアーキテクチャ」では、親プロセスはコンパートメント A の中 に構成されています。その機能の一部として、親プロセスは別のコンパートメント (コンパー トメント B) にいくつかのハンドラープロセスを生成します。ハンドラープロセスは親プロセ スのコンパートメント構成を受け継ぎます。 このシステムを LAN に接続するネットワーク カードは、別のコンパートメントであるコンパートメント C で構成されます。ファイルシス テムはコンパートメント A に対しては完全アクセスが許可されていますが、コンパートメン ト B に対しては部分アクセスのみ許可されるよう構成されています。別々のコンパートメン トにあるシステム構成要素間での通信は、以下のように構成されています。 • 94 すべてのハンドラープロセスはネットワークと通信するよう構成されている。 コンパートメント • レコーダーはファイルシステムにアクセスできる。 • ハンドラープロセスは、ファイルシステムの一部に対して、読み取りと、読み取り/書き 込みのアクセス権を持つ。 • ハンドラープロセスは親プロセスと通信でき、IPC およびシグナルを使用してレコーダー とも通信できる。 • ネットワークはレコーダーと親プロセスから隔離されている。 このコンパートメント構成によって、ファイルシステムとレコーダーのセキュリティが提供 されます。 どちらも自分のコンパートメントから隔離されます。 ハンドラープロセスはネッ トワークと通信できますが、ネットワークはレコーダーや親プロセスからはアクセスできま せん。 6.1.2 デフォルトのコンパートメント構成 コンパートメントを使用可能にすると、INIT という名前のデフォルトのコンパートメントが 作成されます。 システムをブートすると、init プロセスはこのコンパートメントに属しま す。 INIT コンパートメントは他のすべてのコンパートメントにアクセスするよう定義され ており、コンパートメント ルールファイルには定義されません。 重要: ルールファイルに明示的な規則を作成して INIT コンパートメントを再定義した場 合、コンパートメントのすべての特殊な特性は失われて、システムをリブートしない限り復 元できません。 6.2 コンパートメント構造の計画 コンパートメントの規則の作成を始める前に、コンパートメント構造を計画します。 コンパートメント構造を計画するには、次の質問に答えてください。 • このシステムにアクセスするユーザーを異なるグループに隔離する必要がありますか? たとえば、このシステムは経理部と人事部が使用し、これらのユーザーを別々のグルー プにする必要がありますか? • このシステムでファイアウォールの外部と通信するネットワークインタフェースを、ファ イアウォール内部だけで通信する他のシステムから隔離する必要がありますか? • コンパートメントを使用して解決できる要件または問題が、セキュリティ方針に含まれ ていますか? • 特定のコンパートメントの規則の構成が、セキュリティ方針で指定または提案されてい ますか? これらの質問に答えたら、その回答を使ってシステムの部分を特定のコンパートメントに割 り当てる方法を決定します。 コンパートメント構成を計画するとき、次の推奨事項を考慮してください。 • コンパートメント構成ファイルはすべて /etc/cmpt ディレクトリに配置してください。 #include 指令を使うと、コンパートメント構成ファイルはシステムのどこにでも作成 できます。 しかし、HP ではこのオプションの使用は避けることをお勧めします。 その 代わり、コンパートメント構成ファイルはまとめて分かりやすい場所に配置してくださ い。 6.2 コンパートメント構造の計画 95 • コンパートメント構成は、システムの構成要素ごとに分けて作成してください。 定義された具体的なソフトウェア依存関係が 2 つの構成要素間にない限り、異なる構成 要素の規則を混合しないでください。 1 つの構成要素のコンパートメントには、別の構 成要素のコンパートメントを参照する規則は含まれません。 構成要素を削除する必要が ある場合、コンパートメント構成を別々に維持していれば、コンパートメント構成の修 正がずっと簡単になります。 • コンパートメント構成ファイルは、ソフトウェア構成要素ごとに 1 つ作成してくださ い。 これによって、システムからソフトウェアを削除するとき、コンパートメントの構成を 簡単に削除できます。 また、ソフトウェア構成要素に関するすべての規則を見つけるの が簡単になります。 • ソフトウェア製品によっては、既に構成済みのコンパートメント規則が一緒に出荷され る場合があります。 これらの規則の修正は避けてください。 出荷されたコンパートメント構成を修正する前に、既存の構成を確実に理解してくださ い。 ソフトウェア製品についての文書を読み、既存の構成を入念に調べてください。 注意: 既存の INIT コンパートメントを再定義しないでください。 INIT コンパートメント を変更または再定義しようとした場合、自動生成されたすべての定義が破壊されて、コンパー トメントが正しく機能しなくなります。 6.3 コンパートメントのアクティブ化 システムのコンパートメント規則をアクティブ化するには、次の手順に従います。 1. コンパートメント規則を計画します。 詳細は、「コンパートメント構造の計画」を参照 してください。 ヒント: コンパートメント規則の構成は、細心の注意を払って計画することをお勧めし ます。 構成を編集して実稼動システムに導入した後は、変更が困難になります。 コン パートメント構成を変更すると、ユーザーのプロシージャ、スクリプト、ツールに変更 を加える必要があります。 2. 3. コンパートメント規則を作成します。 この手順の実行手順と、コンパートメント規則の 構文に関するすべての説明は、「コンパートメントの規則と構文」を参照してください。 (オプション) 次のコマンドを入力して、コンパートメント規則を確認します。 # setrules -p -p オプションは構成済みの規則リストを解析して、構文および方式について矛盾があれ ば報告します。 コンパートメント規則をシステム上で使用可能にする前に、この手順を 踏むことをお勧めします。 4. 96 (オプション) コンパートメント構成ファイルのバックアップコピーを取ります。 これら のファイルを /etc/cmpt ディレクトリの外部に配置するか、.rules 接尾辞を省略し ます。 こうしておけば、編集に問題が発生した場合、簡単に出発点に戻ることができま す。 コンパートメント 5. 次のコマンドを入力して、コンパートメント機能を使用可能にします。 # cmpt_tune -e 6. システムをリブートします。 この手順は必須です。 ヒント: バックアップファイルを保持しておきます。こうすれば、以前の構成に戻すのが簡 単になります。 6.4 コンパートメント構成の変更 新しいコンパートメントの作成と、既存のコンパートメントの変更は、システムをリブート せずに実行できます。 コンパートメント機能を使用可能または使用不可にする場合や、コン パートメントを完全に削除する場合、システムをリブートする必要があります。 ただし、あ るコンパートメントに関連するすべての規則と、そのコンパートメントへのすべての参照を 削除しても、そのコンパートメントを次回のリブートまでシステムに残しておくことができ ます。 コンパートメント名の変更の影響に関する詳細は、「コンパートメント名の変更」を参照し てください。 新しいコンパートメント規則の追加、不要な規則の削除、既存の規則の変更が実行できます。 また、既存のコンパートメントの名前も変更できます。 コンパートメント構成の変更方法については、次の項で説明します。 6.4.1 コンパートメント規則の変更 1. 2. (オプション) 変更を予定している構成ファイルの一時的バックアップコピーを取ります。 これらのファイルを /etc/cmpt ディレクトリの外部に配置するか、.rules 接尾辞を 省略します。 こうしておけば、編集に問題が発生した場合、簡単に出発点に戻ることが できます。 次のコマンドを使用して、現在のコンパートメント規則を調べます。 # getrules 3. 4. コンパートメント規則を作成または変更します。 この手順の実行手順と、コンパートメ ント規則の構文に関するすべての説明は、「コンパートメントの規則と構文」を参照し てください。 (オプション) 次のコマンドを入力して、コンパートメント規則を確認します。 # setrules -p -p オプションは構成済みの規則リストを解析して、構文および方式について矛盾があれ ば報告します。 コンパートメント規則をシステム上で使用可能にする前に、この手順を 踏むことをお勧めします。 5. 6. (オプション) コンパートメント構成ファイルのバックアップコピーを取ります。 setrules コマンドを実行して、構成済みの規則をロードします。 # setrules 6.4 コンパートメント構成の変更 97 6.4.2 コンパートメント名の変更 コンパートメントの名前は変更できます。 ただし、コンパートメントの名前を変更すると、 既存のコンパートメント名で既に構成済みのアプリケーションに影響を及ぼす可能性があり ます。 コンパートメントの名前を変更する場合、そのコンパートメント内で構成済みのアプ リケーションも再構成する必要があります。 注記: コンパートメントの名前を変更する場合、本質的には新しいコンパートメントを作成 して、古い名前のコンパートメントを削除することになります。 すべての参照を新しいコン パートメントへ変更する必要があります。 古いコンパートメントは、リブートしない限りシ ステム上に存在し続けます。 6.5 コンパートメントの構成要素 コンパートメント機能は構成ファイル一式とコマンドから成り、これらを使用してコンパー トメントの構成と管理を行います。 コンパートメント機能を使用する際に役立つマンページ があります。 これらの構成要素のリストは次の項にあります。 6.5.1 コンパートメント構成ファイル 表 6-1 「コンパートメント構成ファイル」は、コンパートメントの構成要素と一緒に使用す るファイルについて、簡単に説明したものです。 表 6-1 コンパートメント構成ファイル 構成ファイル 説明 /etc/cmpt コンパートメント規則ファイルが存在するディレクトリ。 /etc/cmpt/*.rules システムに構成したコンパートメント規則を含むファイル。 /etc/cmpt/hardlinks/hardlinks.config 自分自身を指す複数のハードリンクを持つファイルについて、コ ンパートメント規則の整合性を確認するためにスキャンする、有 効なマウントポイントを含むファイル。 6.5.2 コンパートメントコマンド 表 6-2 「コンパートメントコマンド」に、コンパートメントの管理に使うコマンドを示しま す。 表 6-2 コンパートメントコマンド 98 コマンド 説明 cmpt_tune コンパートメント機能を照会したり、使用可能または使用不可にします。 setfilexsec コンパートメント属性を含む、バイナリファイルのセキュリティ属性を設定 します。 getfilexsec コンパートメント属性を含む、バイナリ実行可能ファイルに関連付けられた セキュリティ属性を表示します。 getprocxsec コンパートメント属性を含む、プロセスのセキュリティ属性を表示します。 getrules カーネルで現在アクティブなコンパートメント規則を表示します。 コンパートメント 表 6-2 コンパートメントコマンド (続き) コマンド 説明 setrules 新しい規則または変更された規則をカーネル内でアクティブ化します。 -p オプションを付ければ、変更済みの規則について、カーネルに引き渡さず に表示して確認できます。 複数のハードリンクを持つファイルについてコンパートメント規則の整合性 を確認することで、アクセス規則の矛盾が存在しないようにします。 vhardlinks 6.5.3 コンパートメントのマンページ 表 6-3 「コンパートメントのマンページ」に、コンパートメントに関連するマンページを示 します。 表 6-3 コンパートメントのマンページ マンページ 説明 compartments(4) コンパートメント規則の構文の説明です。 compartments(5) コンパートメント機能の概要と、コンパートメント規則の使い方についての説 明です。 cmpt_tune(1M) cmpt_tune の機能と構文の説明です。 setfilexsec(1M) setfilexsec の機能と構文の説明です。 setfilexsec(1M) getfilexsec 機能と構文の説明です。 getprocxsec(1M) getprocxsec 機能と構文の説明です。 getrules(1M) getrules 機能と構文の説明です。 setrules(1M) setrules 機能と構文の説明です。 vhardlinks(1M) vhardlinks 機能と構文の説明です。 6.6 コンパートメントの規則と構文 コンパートメントは名前と規則一式で構成されています。 本項では、次の 4 種類のコンパー トメント規則について説明します。 • ファイルシステムの規則 • IPC の規則 • ネットワークの規則 • その他の規則 /etc/cmpt ディレクトリに作成したルールファイルに規則を追加します。 このファイルは、 vi エディターまたは類似のテキストエディターを使用して編集できます。 ルールファイルの 拡張子は .rules である必要があります。 追加情報については、compartments(5) を参照してください。 6.6 コンパートメントの規則と構文 99 6.6.1 コンパートメントの定義 各コンパートメントに名前を構成してコンパートメントを定義し、1 つ以上のコンパートメ ント規則をコンパートメント名と関連付けます。 規則はどのような順序で指定しても構いま せん。 コンパートメント定義の構文は、次のようになります。 <discover> <sealed> compartment <new_compartment_name> { <rules> } 例: sealed compartment server_children { /* Deny all access to any file system objects ... */ permission none / } 説明 sealed discover compartment new_compartment_name {} (オプション) このコンパートメント内のプロセ スは、execve() を呼び出すことによって特 権を取得したり、あるいはコンパートメント を変更することはできません。 (オプション) コンパートメントの違反が無効と されるように、規則を見つけて自動的に追加 します。 これは必要な規則を判断する開発用 機能であり、実稼動システムでは使用しない でください。 このキーワードについての詳細 は、6.9 項を参照してください。 規則がコンパートメントの定義であることを 指定します。 新しいコンパートメントに関連するラベルで す。 このラベルは大文字小文字を区別します。 たとえば、compartmenta と CompartmentA ではコンパートメントが違います。 このコンパートメントの規則を囲みます。 注記: INIT のコンパートメントの名前は大文字、大文字小文字を区別しません。 INIT、 init、Init は、システムではすべて同じコンパートメントとして扱われます。 コンパートメントの仕様は、構文解析を開始する前に cpp() で事前に処理されます。 #include、#define、#ifdef、C スタイルのコメントなどの cpp() 指令を使用してルー ルファイルを編成および文書化する理由は、このことによります。 6.6.2 ファイルシステムの規則 ファイルシステムの規則は、システム上のファイルおよびディレクトリへのプロセスによる アクセスを制御します。 ファイルシステムの規則は、親ディレクトリから、その内部のすべ てのサブディレクトリおよびファイルに継承されますが、明示的な規則によって継承が無効 にされる場合はこの限りではありません。 100 コンパートメント デフォルトでは、パーミッションを指定しない場合、ファイルシステムの対象物についてす べてのパーミッションが付与されます。 ファイルシステムの規則の構文は、次のとおりです。 (permission|perm) <permission_list> <file_object> 例: /* deny all permissions except read to entire system */ perm read / /* except for this directory */ perm read,write,create,unlink /var/opt/server /* just read and write log files, not create them */ perm read,write /var/opt/server/logs permission または perm permission_list ファイルまたはディレクトリにパーミッション を設定します。 ファイルまたはディレクトリに適用可能なパー ミッションの種類は、次のとおりです。 • none: ファイルまたはディレクトリへのす べてのパーミッションを拒否します。 • read: 対象物への読み取りアクセスを制御 します。 対象物がファイルの場合、ファイ ルの読み取りと実行が制御されます。 対象 物がディレクトリの場合、ディレクトリの 検索とリスト表示が制御されます。 さらに 継承によって、ディレクトリの下のすべて のファイルの読み取りが制御されます。 ファイルを実行用に開くには、ファイルが 読み取りアクセスを持つ必要があります。 • write: 対象物への書き込みアクセスを制御 します。 対象物がファイルの場合、ファイ ルへの書き込みが制御されます。 対象物が ディレクトリの場合、継承によって、ディ レクトリの下のすべてのファイルへの書き 込みが制御されます。 • create: 対象物を作成する機能を制御しま す。 これはディレクトリ対象物のみに適用 されます。 これは、特定のディレクトリの 下にあるすべてのディレクトリによって継 承されます。 • unlink: 対象物を削除する機能を制御しま す。 これはディレクトリ対象物のみに適用 されます。 これは、特定のディレクトリの 下にあるすべてのディレクトリによって継 承されます。 6.6 コンパートメントの規則と構文 101 • nsearch: file_object がディレクトリ の場合、要素を検索する機能を制御します。 この属性はサブディレクトリに継承されま せん。 ファイルまたはディレクトリの絶対パス名。 file_object 注記: ファイルシステムの対象物に何らかのパーミッションを付与するには、コンパートメ ントはその対象物の上のすべてのディレクトリについて、最低でも読み取りパーミッション を持つ必要があります。 たとえば、/var/opt/tmp/file1 に読み取りと書き込みパーミッ ションを付与するには、/var/opt/tmp、/var/opt、/var、/に読み取りパーミッション を付与する必要があります。 6.6.3 IPC の規則 プロセス間通信 (IPC) 規則は、コンパートメントの間でのプロセス間通信方式をプロセスがど のように使うかを制御します。 IPC 通信方式には、プロセス対プロセスの直線通信か、また は IPC 対象物への共有アクセスが含まれます。 対象物がプロセスと関連付けられると、対象 物はプロセスが作成したのと同じコンパートメントに存在します。 コンパートメント規則を 定義して、対象物にアクセスするプロセスと、アクセスされる対象物の間の関係を説明しま す。 相互通信する 2 つのプロセスをルールに記載するとき、2 つ目のプロセスは対象物とし て取り扱われます。 IPC 対象物のデフォルトの動作では、異なるコンパートメントの間のす べての操作が禁止されています。規則で明示的に許可される場合はこの限りではありません。 IPC 規則には 2 つあります。 最初の規則の種類についての構文は、次のとおりです。 (grant|access) (pty|fifo|uxsock|ipc) <compartment_name> 例: /* allow the children to access UNIX domain */ /* sockets created by the parent compartment */ grant uxsock server_children アクセス Method 規則が対象物中心か主体中心かを指定します。 オプショ ンは次のとおりです。 • grant: 対象物中心の規則を指定します。 この規 則によって、コンパートメント compartment_name 内のプロセスが、現在のコ ンパートメントの指定された IPC 機構にアクセス することが許可されます。 • access: 主体中心の規則を指定します。 この規則 によって、現在のコンパートメント内のプロセス が、コンパートメント compartment_name 内の 指定された IPC 機構にアクセスすることが許可さ れます。 この規則が適用される通信手段を指定します。 オプショ ンは次のとおりです。 • 102 コンパートメント pty: プロセス間通信に使用される pty に、規則 が適用されることを指定します。 • fifo: 規則が FIFO に適用されることを指定しま す。 • uxsock: 規則が UNIX ドメインソケットに適用さ れることを指定します。 • ipc: 規則が SYSV および POSIX IPC 対象物 (共有 メモリー、セマフォ、メッセージ待ち行列など) に 適用されることを指定します。 このコンパートメント内のプロセスが通信できる他の コンパートメントの名前。 compartment_name 2 つ目の種類の IPC 規則は、プロセスアクセスを支配します。 この種類の規則の構文は、次 のとおりです。 (send|receive) signal <compartment_name> 例: /* allow the parent to send signals to children */ send signal server_children 手順 signal compartment_name 現在のコンパートメントのプロセスが、指定した別の コンパートメントからプロセスの動作を表示および変 更するためのアクセスを持つかどうかを指定します。 オプションは次のとおりです。 • send: 主体中心の規則を指定します。 現在のコン パートメント内のプロセスが、シグナルを送信し て、コンパートメント compartment_name 内の プロセスデータを表示できるようにします。 • receive: 対象物中心の規則を指定します。 コン パートメント compartment_name 内のプロセス が、シグナルを送信して、現在のコンパートメン ト内のプロセスデータを表示できるようにします。 この規則がシグナルとプロセスの可視性に適用される ことを指定します。 現在のコンパートメント内のプロセスが、プロセス情 報を表示するためのアクセスを持つか、または現在の コンパートメント内のプロセスを表示できるアクセス を持つ、他のコンパートメントの名前。 6.6.4 ネットワークの規則 ネットワークの規則は、ネットワークインタフェースへのアクセスを制御します。 ネットワー ク規則はまた、INET ドメイン通信 (TCP/IP ソケットおよびストリーム) を使用するプロセス 間の通信も制御します。 デフォルトの動作は、ネットワークへのアクセスを拒否することで す。 ネットワークのエンドポイントは、それを作成したプロセスのコンパートメントのラベルが 付いた対象物として扱われます。 ただし、ネットワークのエンドポイントは 1 つのプロセス で作成してから別のプロセスに引き渡すことができ、別のコンパートメントで実行できます。 6.6 コンパートメントの規則と構文 103 アクセスチェックを実行するのは、エンドポイントが作成されたときのエンドポイントを含 むコンパートメントにおいてであり、現在のコンパートメントではありません。 さらに、エ ンドポイントは新しい接続を受け取ると、受け取り側のエンドポイントにコンパートメント 構成を引き渡します。 INET ドメインエンドポイントはプロセス間通信に頻繁に使用されます。 コンパートメント をそれ相応に構成するようにしてください。 ネットワーク規則の構文は、次のとおりです。 (grant|deny) (server|client|bidir) (tcp|udp|raw [<protonum>] ) [port <port_num>] [peer[port<port>]] <compartment_name> 例: /* allow all inbound TCP connections(any port)from interfaces labeled lancmpt1 grant server tcp */ lancmpt1 /* allow DNS client lookups (both TCP and UDP) through interface labeled lancmpt1 */ grant client tcp port 53 lancmpt1 grant bidir udp port 53 lancmpt1 /* allow only outbound telnet connections through interface labeled ifacelan0 */ grant client tcp peer port 23 ifacelan0 /* allow all TCP traffic except inbound telnet through interface labeled ifacelan0 */ /* the following two lines can be specified in either order */ grant bidir tcp ifacelan0 deny server tcp port 23 ifacelan0 /* allow inbound web server traffic through interface lan1cmpt */ grant server tcp port 80 lan1cmpt アクセス 手順 104 コンパートメント 指定したコンパートメント内のネットワークトラフィッ クに対するコンパートメントアクセスを許可または拒 否します。 オプションは次のとおりです。 • grant • deny 規則が適用される方向を指定します。 オプションは次 のとおりです。 • server: この規則は着信要求のみに適用されま す。 TCP の場合、受信接続のみがこの規則によっ て制御されます。 UDP および RAW の場合、この 規則はすべての着信パケットに適用されます。 • client: この規則は発信要求のみに適用されま す。 TCP の場合、接続の開始のみがこの規則に よって制御されます。 UDP および RAW の場合、 この規則はすべての送信パケットに適用されます。 • bidir: この規則は着信要求と発信要求の両方に適 用されます。 TCP の場合、エンドポイントによっ て開始され受信される接続が、この規則によって 制御されます。 UDP および RAW の場合、この規 則はエンドポイントを介して受け渡されるすべて のパケットに適用されます。 プロトコル <protonum> port <port> peer compartment_name この規則に適用されるネットワークプロトコルを指定 します。 オプションは次のとおりです。 • tcp: この規則は TCP プロトコルに適用されます。 • udp: この規則は UDP プロトコルに適用されます。 • raw: この規則は INET ドメイン内のその他のプロ トコルに適用されます。 この規則で指定されるプロトコル番号。 protonum オ プションは、raw 仕様についてのみ該当します。 (オプション) この規則が特定のポートに適用されること を指定します。 この規則で指定されるポートを識別します。 (オプション) ポート情報は、この規則の通信に関与する ピアエンドポイントに適用されます。 この規則が適用されるピアエンドポイントまたはイン タフェースに関連するコンパートメント名。 ネットワーク規則についての詳細は、compartments(4) を参照してください。 6.6.5 その他の規則 これらの規則は、他の規則のカテゴリに適合しないものです。 ネットワークインタフェースの規則 ネットワークインタフェースの規則は、インタフェー スが属するコンパートメントを指定します。 コンパートメントにないネットワークインタ フェースは、オンラインに設定できません。 注記: セキュリティ方針を厳密にするには、プロセスに割り当てたコンパートメントとは別 のコンパートメントにネットワークインタフェースを構成します。 各コンパートメントのネッ トワークアクセスの規則を、それ相応に定義してください。 各コンパートメントには、完全 な相互アクセスが常に付与されています。 ネットワークインタフェースの規則の構文は、次のとおりです。 compartment <compartment_name> { interface <interface_or_ip[,interface_or_ip][...]> } 例: compartment iface0 { /* Define the compartment for the network interface lan0 */ interface lan0 /* All addresses in the range 192.168.0.0-192.168.0.255 */ interface 192.160.0.0/24 } compartment other_ifaces { /* Define the compartment for two of the other network interfaces */interface lan1,lan5 6.6 コンパートメントの規則と構文 105 interface <interface_or_ip[,interface_or_ip][...]> これがインタフェース定義であるこ とを指定します。 カンマ区切りのインタフェース名、IP アドレス、IP アドレスの範囲のリス トです。 IP アドレスまたはその範囲 は、IPv4 アドレスまたは IPv6 アドレ スで指定でき、オプションのマスク も可能です。 特権制限規則 特権制限規則は、特権の継承を制御します。 特権制限規則に名前がある特権 は、execve(2) を呼び出したときに取得できません。 特権制限規則の構文は、次のとおりです。 disallowed privileges <privilege[,privilege[...]]> 例: /* Disallow all privileges except mount. */ disallowed privileges all,!mount /* Disallow mount only. */ disallowed privileges none,mount disallowed privileges <privilege[,privilege[...]]> これが特権制限規則であること指定 します。 コンマ区切りの特権リスト。 次の キーワードを追加して使用できます。 • all: すべての特権を許可しませ ん • none: すべての特権を許可しま す • !: 例外を表します 特権制限規則をコンパートメントに指定しない場合、各コンパートメントのデフォルトの特 権制限は basicpolicy,mknod ですが、INIT コンパートメントだけは異なります。 INIT コンパートメントのデフォルト特権制限は none です。 6.6.6 ルールファイルの例 ルールファイルの例は /etc/cmpt/examples/sendmail.example にあります。 6.7 コンパートメント内でのアプリケーションの構成 アプリケーションを特定のコンパートメント内で実行するように構成できます。 バイナリファ イルのコンパートメント属性を構成するには、setfilexsec コマンドを使用します。 たとえば、 アプリケーション apple をコンパートメント fruit 内で構成するには、次のコマンドを入 力します。 # setfilexsec -c fruit apple 別の方法として、HP-UX RBAC を使用して、アプリケーションがコンパートメント内で実行す るように構成することもできます。 詳細は「コンパートメントを使用した HP-UX RBAC の構 成」を参照してください。 106 コンパートメント 6.8 コンパートメントのトラブルシューティング システムに不具合があって、コンパートメント構造が原因で問題が発生していることが疑わ れる場合、次のようにしてコンパートメント規則を確認できます。 問題 1: 構成済みのコンパートメント規則に沿ったアクセス制御が行われていない。 解決策: 規則がカーネル内に設定されていない可能性があります。 規則がカーネル内に設定されてい るか確認するには、次の手順に従ってください。 1. 次のコマンドを使用して、カーネル内の有効なコンパートメント規則をリスト表示しま す。 # getrules 2. 次のコマンドを使用して、システムで構成済みのすべての規則をリスト表示します。こ れには、カーネルにロードされていない規則も含まれます。 # setrules -p 3. 2 つのコマンドの出力を比較します。 同じであれば、すべての規則がカーネルにロード されています。 出力が違う場合、規則をカーネルにロードする必要があります。 4. 次のコマンドを使用して、規則をカーネルにロードします。 : # setrules 問題 3: ファイルへのアクセスが正しく機能しない。 解決策: 複数のハードリンクがこのファ イルを指す場合、コンパートメント規則の構成に、ファイルにアクセスする規則として整合 性を欠いたものが含まれている可能性があります。 整合性を欠いたものがあるか確認するに は、次の手順に従います。 1. 次のコマンドを実行します。 # vhardlinks 出力内容に整合性を欠いたものがあれば、手順 2 に進みます。 2. 規則を修正して、整合性を欠いたものを除去します。 「コンパートメント構成の変更」 の説明手順に従ってください。 問題 4: ネットワークサーバーの規則が getrules 出力で表示されない。 解決策: 規則の内部 での管理方法により、コンパートメントのネットワークサーバーの規則は、getrules コマ ンドのターゲットコンパートメント出力にリスト表示できます。 例: /* telnet compartment rule to allow incoming telnet requests through compartment labeled ifacelan0 */ grant server tcp port 23 ifacelan0 この規則が指定されると、getrules の ifacelan0 コンパートメント出力の下にリスト表 示されます。 ACCESS Grant client PROTOCOL tcp SRCPORT 0 DESPORT 23 DESCMPT telnet 6.9 Discover モードを使用したコンパートメントの初期構成の生成 コンパートメントの定義には、キーワード discover のタグを付けることができます。詳細は 「コンパートメントの定義」 (100 ページ) を参照してください。 discover キーワードは、 6.8 コンパートメントのトラブルシューティング 107 アプリケーションを正常に機能させるために必要なすべての規則を見つけるようシステムに 指示を出します。 この機能は、テスト環境での使用だけを意図したものです。 discover モードを使用するには、コンパートメントに discover マークをつけて、通常通 りアプリケーションを実行します。 システムはすべてのリソースアクセスを識別して、必要 な規則を作成します。 アプリケーションの初期の実行が終わったら、getrules –m compartment_name コマン ドを使用して、マシンで判読可能なバージョンの規則を生成します。 システムで生成された規則は、アプリケーションをテスト環境で正しく機能させるために必 要ですが、これは一般化する必要があります。 たとえば、アプリケーションでなくカーネル がポート番号を選択する場合、匿名ポートの範囲にあるポート番号を含むルールがシステム で生成されることがあります。 アプリケーションを再度実行すると、結局はポート番号が異 なり、違う規則が必要になります。 この規則は、すべてのポートか、最低でも匿名のポート 範囲にあるポート番号を指定するように一般化する必要があります。 6.10 HP Serviceguard クラスタにおけるコンパートメント HP Serviceguard と一緒にコンパートメントを使用する場合、デフォルトの INIT コンパート メント内にすべての Serviceguard デーモンを構成する必要があります。 ただし、Serviceguard パッケージは他のコンパートメントで構成することができます。 Serviceguard および Serviceguard Extensions for Oracle Real Application Cluster (RAC) に必要なデーモンについて は、最新バージョンの『 Serviceguard の管理』および『 Serviceguard Extension for RAC ユー ザーガイド』を参照してください。 Serviceguard パッケージは特定のコンパートメントに所属することができます。 Serviceguard パッケージの一部としてモニターされているアプリケーションも、特定のコンパートメント 内に構成できます。 コンパートメントをパッケージ用に設定するとき、そのパッケージに必 要なリソース (ボリュームグループ、ファイルシステム、ネットワークアドレスなど) がその コンパートメントによってアクセス可能であるようにしてください。 コンパートメント規則 はノード固有であり、Serviceguard のフェイルオーバー操作中に持ち越されません。 フェイ ルオーバー後に正しく動作するようにするには、クラスタ内のすべてのノードが同じコンパー トメント構成を持つ必要があります。 一次 LAN インタフェースがスタンバイ LAN インタフェースにフェイルオーバーすると、一 次インタフェースのコンパートメントラベルは、スタンバイ インタフェースがオンラインに ない限り、スタンバイ インタフェースに自動的にコピーされます。 スタンバイ インタフェー スが既にオンラインに構成済みの場合、スタンバイ インタフェースと一次インタフェースが 正常にフェイルオーバーされるには、同じコンパートメント内に構成する必要があります。 スタンバイ インタフェースが一次インタフェースと異なるコンパートメントに構成済みでも、 フェイルオーバー時点でオフラインの場合、インタフェースのフェイルオーバー時にスタン バイ インタフェースは一次インタフェースのコンパートメント構成に更新されます。 HP Serviceguard ノードまたはパッケージにコンパートメントを導入するとき、Serviceguard の動作を正しく維持するには、以下に注意してください。 • INIT コンパートメント仕様は決して変更しないでください。 • inetd が INIT コンパートメント内で実行されているか確認してください。 • クラスタ内のすべての Serviceguard デーモンが、INIT コンパートメント内で実行してい るか確認してください。 たとえば Serviceguard Version A.11.16 のデーモンには、 108 コンパートメント cmclconfd、cmcld、cmlogd、cmlvmd、cmomd、cmsnmpdがあります。 すべての Serviceguard デーモンのリストは、『Serviceguard の管理』を参照してください。 • すべての Serviceguard クラスタ要件が、Serviceguard Extensions for RAC クラスタ用に 満たされているようにしてください。 さらに、Serviceguard Extension for RAC Version A.11.16 を持つクラスタでは、cmsmgd デーモンが INIT コンパートメント内で実行し ている必要があります。 RAC プロセスは libnmapi2 ライブラリへのアクセスを持ち、 cmsmgd と通信できる必要があります。 必要なデーモンとライブラリについては、 『Serviceguard Extension for RAC ユーザーガイド』を参照してください。 • スタンバイ LAN インタフェースをコンパートメント内に構成しないでください。 • コンパートメントと規則は、クラスタ内のすべてのノードに同様に設定してください。 コンパートメントと規則はシステム固有であり、システムのフェイルオーバー時に持ち 越されません。 注記: スタンバイ インタフェースがコンパートメント内に構成された場合、スタンバイ イ ンタフェースが一次インタフェースから正常に切り替わったとしても、setrules コマンド を実行すると、このコンパートメントがスタンバイ インタフェースに適用されます。 構成済 みのスタンバイ インタフェース コンパートメントが一次インタフェース コンパートメント と一致しない場合、一次インタフェース コンパートメントは setrules を実行したときに上 書きされます。 これはセキュリティ違反の原因になることがあります。 コンパートメント、きめの細かい特権、または RBAC の使用を容易にするための Serviceguard スクリプトへの変更はありません。 6.10 HP Serviceguard クラスタにおけるコンパートメント 109 110 第7章 細分化された特権 本章では、HP-UX 11i の細分化された特権機能について説明します。 本章では以下の項目に ついて扱います。 • 「概要」 • 「細分化された特権の構成要素」 • 「使用可能な特権」 • 「細分化された特権を使用したアプリケーションの構成」 • 「細分化された特権のセキュリティ上の影響」 • 「HP Serviceguard クラスタにおける細分化された特権」 • 「細分化された特権のトラブルシューティング」 7.1 概要 UNIX オペレーティングシステム は従来「全部かゼロか」型の特権モデルを使用しており、 ここではスーパーユーザー (root ユーザーなどの UID=0 が使用可能なユーザー) が事実上無制 限の権限を持ち、他のユーザーは特殊な特権をほとんど持たないか、まったく持ちません。 HP-UX には、限定された権限を委任するレガシーな手法があります。この例として、制限付 きのsmh(1M)、privgrp(4) で説明されている特権グループ、shutdown(1M) で説明されている shutdown.allow、crontab(1) で説明されている cron.allow があります。 これらのレガシーな手法は、細分化された特権と HP-UX RBAC アクセス制御フレームワーク を使うことで置き換えることができます。 HP-UX の細分化された特権モデルでは、スーパーユーザーの権限を特権のセットに分割しま す。 細分化された特権は、プロセスに付与されます。 それぞれの特権は、特権を所有するプ ロセスに、カーネルによって提供される制限されたサービスの特定のセットへの権利を付与 します。 詳細については、privileges(5) を参照してください。 7.2 細分化された特権の構成要素 HP-UX 11i の細分化された特権の機能には、構成ファイル、コマンド、マンページなどがあり ます。 これらの構成要素を使って、細分化された特権の構成と管理を行うことができます。 7.2.1 コマンド 表 7-1 「細分化された特権コマンド」は、細分化された特権のコマンドについて簡単に説明 したものです。 7.1 概要 111 表 7-1 細分化された特権コマンド コマンド 説明 setfilexsec バイナリファイルのセキュリティ属性を設定します。 この属性には、保持 された特権、許可済み特権、コンパートメント、特権開始フラグが含まれま す。 getfilexsec バイナリ実行可能ファイルに関連付けられたセキュリティ属性を表示しま す。 この属性には、保持された特権、許可済み特権、コンパートメント、 セキュリティ属性フラグが含まれます。 getprocxsec 実行プロセスに関連付けられたセキュリティ属性を表示します。 この属性 には、有効な特権セット、保持された特権セット、許可済み特権セット、 euid、コンパートメント名が含まれます。 7.2.2 マンページ 表 7-2 「細分化された特権のマンページ」は、細分化された特権のマンページについて簡単 に説明したものです。 表 7-2 細分化された特権のマンページ マンページ 説明 privileges(5) HP-UX の特権の概要です。 privileges(3) 細分化された特権のインタフェースの説明です。 setfilexsec(1M) setfilexsec の機能と構文の説明です。 getfilexsec(1M) getfilexsec 機能と構文の説明です。 getprocxsec(1M) getprocxsec 機能と構文の説明です。 7.3 使用可能な特権 細分化された特権は、主に開発者の使用を対象としています。 しかし、管理者もこのような アプリケーションの動作のしくみを理解したり、未許可のアプリケーションが特権を取得し たかどうかを見つけるためには、特権を理解しておく必要があります。 表 7-3 「使用可能な特権」は、特権とその主な目的を示したものです。 表 7-3 使用可能な特権 112 特権 説明 PRIV_ACCOUNTING プロセスアカウンティング システムの制御をプロセスに許可します。 PRIV_AUDCONTROL 監査システムの開始、変更、停止をプロセスに許可します。 PRIV_CHANGECMPT プロセスのコンパートメントの変更をプロセスに許可します。 PRIV_CHANGEFILEXSEC バイナリファイルに対する権限付与をプロセスに許可します。 PRIV_CHOWN chown() システムコールへのアクセスをプロセスに許可します。 PRIV_CHROOT プロセスのルートディレクトリの変更をプロセスに許可します。 細分化された特権 表 7-3 使用可能な特権 (続き) 特権 説明 PRIV_CHSUBJIDENT プロセスの UID、GID、グループリストの変更をプロセスに許可します。 また、chown() システムコールを使用するとき、プロセスが suid ビッ トまたは sgid ビットをファイルにセットしたままにすることを許可し ます。 PRIV_CMPTREAD コンパートメント規則を回避して、ファイルまたはディレクトリを開い て読み取り、実行、検索を行うことをプロセスに許可します。これらの 操作はコンパートメント規則によって通常許可されません。 PRIV_CMPTWRITE コンパートメント規則を回避して、ファイルまたはディレクトリへの書 き込みをプロセスに許可します。この操作はコンパートメント規則によっ て通常許可されません。 PRIV_COMMALLOWED IPC およびネットワークサブシステムにあるコンパートメント規則を無 効にすることをプロセスに許可します。 PRIV_DACREAD すべての任意の読み取り、実行、検索アクセス制限を無効にすることを プロセスに許可します。 PRIV_DACWRITE すべての任意書き込みアクセス制限を無効にすることをプロセスに許可 します。 PRIV_DEVOPS テープまたはディスクのフォーマットなど、デバイス固有の管理操作を 行うことをプロセスに許可します。 PRIV_DLKM カーネルモジュールのロード、ロード済みのカーネルモジュールからの 情報の取得、動的にロード可能なカーネルモジュール用のグローバル検 索パスの変更をプロセスに許可します。 PRIV_FSINTEGRITY ディスクパーティションのサイズまたは境界を削除または修正するなど のディスク操作を実行すること、または LVM ボリュームグループをシス テム全体でインポートおよびエクスポートすることを、プロセスに許可 します。 PRIV_LIMIT リソースおよび優先順位の制限を、制限の最大値を超えて設定すること をプロセスに許可します。 PRIV_LOCKRDONLY lockf() システムコールを使用して、読み取り専用パーミッションで開 いたファイルをロックすることをプロセスに許可します。 PRIV_MKNOD mknod() システムコールを使用して、キャラクタ型特殊ファイルまたは ブロック型特殊ファイルを作成することをプロセスに許可します。 PRIV_MLOCK plock システムコールへのアクセスをプロセスに許可します。 PRIV_MOUNT mount() および umount() システムコールを使用して、ファイルシステム をマウントおよびマウント解除することをプロセスに許可します。 PRIV_MPCTL プロセッサ バインディング、ローカリティドメイン バインディング、ま たは起動方針の変更をプロセスに許可します。 PRIV_NETADMIN ネットワーク経路指定テーブルの構成やインタフェース情報の照会など、 ネットワーク管理操作の実行をプロセスに許可します。 PRIV_NETPRIVPORT 特権ポートへのバインドをプロセスに許可します。 デフォルトでは、0 から 1023 のポート番号は特権ポートです。 PRIV_NETPROMISCUOUS インタフェースをプロミスキュアス モードでリスンするよう構成するこ とを、プロセスに許可します。 7.3 使用可能な特権 113 表 7-3 使用可能な特権 (続き) 特権 説明 PRIV_NETRAWACCESS 生のインターネットネットワークプロトコルへのアクセスをプロセスに 許可します。 PRIV_OBJSUID プロセスが OWNER 特権を持つ場合、suid ビットまたは sgid ビット を任意のファイル上に設定することを許可します。 また、ファイルの所 有権の変更がプロセスに許可されている場合、suid ビットまたは sgid ビットを解除せずにファイルの所有権を変更することがプロセスに許可 されます。 PRIV_OWNER ファイルまたはリソースの所有者と一致する UID に関して、すべての制 限を無効にすることをプロセスに許可します。 PRIV_PSET システムの pset の構成を変更することをプロセスに許可します。 PRIV_REBOOT リブート操作の実行をプロセスに許可します。 PRIV_RTPRIO rtprio() システムコールへのアクセスをプロセスに許可します。 PRIV_RTPSET RTE psets の制御をプロセスに許可します。 PRIV_RTSCHED POSIX.4 リアルタイムの優先順位の設定をプロセスに許可します。 PRIV_RULESCONFIG システムのコンパートメント規則の追加と変更をプロセスに許可します。 PRIV_SELFAUDIT audwrite() システムコールを使用して、プロセス自身のための監査記録 を生成することをプロセスに許可します。 PRIV_SERIALIZE serialize() システムコールを使用して、対象プロセスが、シリアル化 のマークが付いた他のプロセスと連続した実行を強制することをプロセ スに許可します。 PRIV_SPUCTL Instant Capacity 製品の特定の管理操作を実行することをプロセスに許可 します。 PRIV_SYSATTR 調整パラメータの設定、ホスト名、ドメイン名、ユーザークォータの変 更などのシステム属性の管理をプロセスに許可します。 PRIV_SYSNFS ファイルシステムのエクスポート、getfh() システムコール、NFS ファ イルロッキング、NFS 認証の無効化、NFS カーネルデーモン スレッドの 作成などの NFS 操作の実行をプロセスに許可します。 PRIV_TRIALMODE トライアルモード情報を syslog ファイルに記録することをプロセスに許 可します。 7.4 細分化された特権を使用したアプリケーションの構成 細分化された特権に対応するよう記述または変更されたアプリケーションは、特権認識アプ リケーション (privilege-aware application) と呼ばれます。 特権認識アプリケーションは setfilexsec コマンドを使用して登録する必要があります。 一度登録されると、バイナリ ファイルに関連したセキュリティ属性は構成ファイルに保存され、リブート後も永続するよ う維持されます。 これは、SD-UX ユーティリティを使用して特権認識アプリケーションをイ ンストールおよび構成するときに行われるのがふつうです。 古い HP-UX アプリケーションやレガシーアプリケーションは、特権を認識しません。 UID=0 で実行するレガシーアプリケーションは、細分化された特権で実行するよう構成することが 114 細分化された特権 できます。 HP-UX RBAC を使用してレガシーアプリケーションを構成するには、「きめの細 かい特権を使用した HP-UX RBAC の構成」を参照してください。 ヒント: 変更可能な特権の実行が必要なアプリケーションを構成するには、HP-UX RBAC を 使用することをお勧めします。 特権認識アプリケーションのセキュリティ属性を構成するには、次のように setfilexsec コマンドを使用します。 # setfilexsec [options] filename setfilexsec コマンドは、ローカルファイルシステム上のバイナリファイルに特権を割り 当てることを目的としています。 ネットワークファイルシステム (NFS) から取得されるバイ ナリファイルには、特権を割り当てることができません。これは、異なるシステムによって (NFS サーバーで直接) ファイルが変更された場合、setfilexsec によって設定された拡張 属性が削除できないためです。 setfilexsec のオプションを以下に示します。 -d -D -r -R -p -P -f このファイルのセキュリティ情報があれば、これを構成ファイルとカーネルから削除 します。 このファイルのセキュリティ情報があれば、これを構成ファイルのみから削除します。 削除済みファイルのセキュリティ情報を消去するのに使用します。 最低限の保持された特権を追加または変更します。 最大限の保持された特権を追加または変更します。 最低限の許可済み特権を追加または変更します。 最大限の許可済み特権を追加または変更します。 セキュリティ属性フラグを設定します。 getfilexsec コマンドは、setfilexsec コマンドで設定されたバイナリファイルの拡張属 性を表示します。 # getfilexsec filename 7.4.1 特権モデル それぞれのプロセスには、次のようなそれに関連する 3 つの特権セットがあります。 • 許可済み特権セット プロセスが取り上げることが可能な最大限の特権セットです。 プロセスはこのセットか ら特権を取り下げることはできますが、このセットに特権を追加することはできません。 このセットの特権は、プロセスの有効特権セットに追加できます。 • 有効特権セット プロセスの現在アクティブな特権のセットです。 特権認識プロセスは、有効特権セット を変更して、所定の時点でこのセットの必要な特権のみを保持することができます。 プ ロセスは有効特権セットからどの特権でも削除できますが、追加できるのは許可済み特 権セットからの特権のみです。 有効特権セットは常に、許可済み特権セットのサブセットになります。 7.4 細分化された特権を使用したアプリケーションの構成 115 • 保持された特権セット プロセスが execve() システムコールを呼び出すとき、保持される特権のセットです。 プロセスはこのセットから特権を削除できますが、このセットに特権を追加することは できません。 保持された特権セットは常に、許可済み特権セットのサブセットになります。 最初のプロセス (init) は、小さい特権セットで開始します。 そのプロセスは次に、exec ファミリーコール (execv、execve など) を使用して他のバイナリファイルを実行するプロ セスを作成します。 この exec 呼び出しの間に、バイナリファイルの拡張属性 (setfilexsec コマンドで設定された属性) は、これらのプロセスに親プロセスが持たない特権を取得させた り、親プロセスが持っていた特権を失わさせたりします。 たとえば、バイナリファイルが許 可された最低限の DACREAD を持つ場合 (setfilexsec –p DACREAD がバイナリファイル に実行された場合)、新しいプロセスは、親プロセスがその特権を持つかもたないかにかかわ らず、DACREAD 特権を持ちます。 一方、プロセスが既に DACREAD 特権を持つが、プロセス が実行するバイナリファイルが、許可された最大限の範囲でこの特権を持たない場合 (たとえ ば、setfilexsec -P none ….がファイルで既に実行されていた場合)、プロセスはバイナ リを実行する副次的な効果として、この特権を失います。 7.4.2 複合特権 複合特権は、事前定義された単純特権のセットを簡単に指定する方法です。 複合特権を以下に示します。 • BASIC デフォルトですべてのプロセスで使用可能な基本特権です。 プロセスはこのセットから 1 つ以上の特権を削除することができます。 • BASICROOT 基本特権と、通常は UID=0 に関連した権限を提供する特権です。 • POLICY 方針無効化特権と方針構成特権。 方針無効化特権は、コンパートメント規則を無効にし ます。 方針構成特権は、特権の構成方法を制御します。 それぞれの複合特権における特権の完全なリストは、privileges(5) を参照してください。 7.5 細分化された特権のセキュリティ上の影響 細分化された特権は分散型システム全体に伝播せず、ローカルシステムのみに適用されます。 たとえば、PRIV_DACREAD および PRIV_DACWRITE を持つ 1 つのシステム上のプロセスは、 ファイルの読み取りまたは書き込みを行うための別のシステム上のいかなる制限も無効にで きません。 7.5.1 特権のエスカレーション 特定の状況において、プロセスに 1 つの特権または特権のセットを付与した場合、そのプロ セスは明示的に付与されていなかった追加の特権を取得できることがあります。 これを特権 のエスカレーションと呼びます。 たとえば、PRIV_DACWRITE 特権を持つプロセスは、きわ 116 細分化された特権 めて重要なオペレーティングシステム ファイルを上書きでき、またプロセスにおいて、細分 化された特権を追加してそれ自身に付与することができます。 7.6 HP Serviceguard クラスタにおける細分化された特権 特権認識アプリケーションは、HP Serviceguard でモニターできます。 細分化された特権に対 応するにあたって、Serviceguard パッケージの構成ファイルや、あるいは Serviceguard パッ ケージの管理に変更を加える必要はありません。 細分化された特権の使用を容易にするため の Serviceguard スクリプトへの変更は行っていません。 HP Serviceguard ノードまたはパッケージに HP-UX 11i の細分化された特権を導入するとき、 Serviceguard の動作を正しく維持するには、以下に注意してください。 • root (UID=0) が INIT コンパートメント内で完全な特権を持っているか確認してくださ い。 • 細分化された特権の導入によって、Serviceguard クラスタにセキュリティリスクを発生 させないか確認してください。 7.7 細分化された特権のトラブルシューティング システムに不具合があって、細分化された特権が原因で問題が発生していることが疑われる 場合、次のようにして細分化された特権を確認できます。 問題 1: 細分化された特権がバイナリファイルに割り当てられているにもかかわらず、exec() を使用してバイナリファイルにアクセスするプロセスは、割り当て済みの細分化された特権 を受け取らない。 解決策: 以下のいずれかの状況でないか確認します。 • 問題のファイルはスクリプトか? シェルスクリプトに割り当てた細分化された特権は、すべて無視されます。 • 細分化された特権が割り当てられた後、ファイルが変更されたか? ファイルが変更されると、細分化された特権の属性は失われます。 ファイルを変更する 前か後に、以下のコマンドを実行してください。 # setfilexsec -d filename 次に、ファイルに割り当てる必要のある特権属性を追加します。 細分化された特権のトラブルシューティングについての詳細は、setfilexsec(1M) を参照してく ださい。 問題 2: プロセスに不要な特権があるか、または必要な特権がない。 解決策: 次のように getprocxsec コマンドを使用して、プロセスが持つ特権を識別します。 # getprocxsec -per pid このコマンドによって、プロセスの許可済み特権セット、有効特権セット、保持された特権 セットが表示されます。 詳細は、getprocxsec(1M) を参照してください。 プロセスに正しい特権がない場合、このプロセスを作成したバイナリファイルを正しい特権 で構成してください。 詳細については、「細分化された特権を使用したアプリケーションの 構成」を参照してください。 7.6 HP Serviceguard クラスタにおける細分化された特権 117 118 第8章 ファイルシステムのセキュリティ 本章ではファイルシステムのセキュリティについて説明します。 本章を読む前に、ファイル とファイルシステムの基本を理解しておく必要があります。 データはファイルに保存されるため、ファイルの保護方法を理解しておくことが大切です。 本章では以下の項目について説明します。 • 「ファイルアクセスの制御」 • 「アクセス制御リストの設定」 • 「HFS ACL の使用」 • 「JFS ACL の使用」 • 「JFS ACL と HFS ACL の比較」 • 「ACL と NFS」 • 「/dev デバイス特殊ファイルに関するセキュリティの留意事項」 • 「ディスクパーティションと論理ボリュームの保護」 • 「ファイルシステムのマウントとマウント解除のためのセキュリティガイドライン」 • 「ネットワークでのファイルのセキュリティの制御」 8.1 ファイルアクセスの制御 動作中のグループ、ファイルパーミッション、ファイル所有権、コンパートメント規則によ り、所定のファイルに誰がアクセスできるかが決定されます。 最も簡単なファイルアクセス 規則は、標準の UNIX ファイルパーミッションです。 ユーザーをグループに分割すると、グループで所有するファイルはグループ内で共有でき、 部外者から保護できるようになります。 従来の UNIX ファイルパーミッションは、ls コマンドに -l フラグをつけて使用することで 表示されます。 パーミッションとは、システムの所有者およびグループにどのようなアクセ ス (つまり、読み取り、書き込み、実行を行う能力) が付与されているかを示します。 従来の UNIX ファイル保護では、ファイルおよびディレクトリに誰がアクセスできるかということに ついて、一定の制御が可能でしたが、所有ユーザーおよび所有グループの範囲を超えた個別 のユーザーおよびグループへのアクセスを定義することはできません。 UNIX のファイルパー ミッションの簡単な概要を以下に示します。 各ファイルおよび各ディレクトリには、それに関連する 9 つのパーミッションがあります。 ファイルおよびディレクトリには、次の 3 種類のパーミッションがあります。 • r (読み取り) • w (書き込み) • x (実行) これら 3 つのパーミッションは、次の 3 つのクラスの各ユーザーに起こります。 • u (ユーザー/所有者) 8.1 ファイルアクセスの制御 119 • g (グループ) • o (その他すべて、ワールドとも呼ばれる) r パーミッションは、ユーザーにファイルの表示または出力を許可します。 w パーミッショ ンは、ユーザーにファイルの書き込み (変更) を許可します。 x パーミッションは、ユーザー にファイルの実行 (run) またはディレクトリの検索を許可します。 図 8-1 「ファイルおよびディレクトリのパーミッションフィールド」は、従来のパーミッショ ンフィールドを示したものです。 図 8-1 ファイルおよびディレクトリのパーミッションフィールド ファイルまたはディレクトリのユーザー/所有者は、通常はこれの作成者です。 ファイルの所 有者であれば、chmod コマンドを使用してファイルパーミッションを変更できます。 グループは、ファイルが属するグループを指定します。 ファイルの所有者であれば、chgrp コマンドを使用してファイルのグループ ID を変更できます。 3 つの種類のパーミッションの意味は、一般ファイルとディレクトリとの間でわずかに異な ります。 詳細については、表 8-1を参照してください。 表 8-1 ファイルとディレクトリの特権の違い パーミッション ファイル ディレクトリ r (読み取り) 内容の表示または出力が可能。 内容の読み込みは可能だが、検索は不 能。 通常は、r と x を同時に使用す る。 w (書き込み) 内容の変更または削除が可能。 エントリーを追加または削除が可能。 x (実行) ファイルをプログラムとして使用可 能。 ディレクトリの検索が可能。 8.1.1 ファイルアクセスパーミッションの設定 chmod コマンドは、ファイルの所有者、グループメンバー、またはその他すべてについて、 アクセスの種類 (読み取り、書き込み、実行の特権) を変更します。 ファイルの所有者または 120 ファイルシステムのセキュリティ 適切な特権を持ったユーザーのみが、ファイルアクセスを変更できます。 詳細はchmod(1) を 参照してください。 デフォルトでは、ファイルとディレクトリの読み取りおよび書き込みパーミッションの初期 設定は、作成者の umask 値によって決定されます。 デフォルトのファイルパーミッション を変更するには、umask コマンドを使用します。 詳細はumask(1) を参照してください。 ファイルモード作成マスクに設定したそれぞれのビットは、ファイルモードの対応するパー ミッションビットをクリア (無効化) します。 逆に、マスクでクリアしたビットは、新規作成 したファイルで対応するファイルモードビットを有効にします。 たとえば、8 進数で 022 の umask は、u=rwx、g=rx、o=rx のマスクを作成し、グループ およびその他の書き込みパーミッションを無効化します。 8.1.2 ファイル所有権の設定 chown コマンドはファイルの所有権を変更します。 所有者を変更するには、ファイルの所有 者であるか、適切な特権を持っている必要があります。 chgrp コマンドは、ファイルのグループ所有権を変更します。 グループを変更するには、 ファイルの所有者であるか、適切な特権を持っている必要があります。 詳細は、chown(1) およびchgrp(1) を参照してください。 8.1.3 ディレクトリの保護 通常、ディレクトリが標準パーミッションまたは ACL のどちらかを介して書き込み可能であ る場合、ファイル自身のパーミッションに関係なく、誰でもそのファイルをディレクトリか ら削除できます。 ディレクトリのファイルが不用意に削除されないよう保護するには、以下 を行います。 • 書き込みパーミッションがあっては不都合なディレクトリの書き込みパーミッションを 削除します。 この方法は特に、ユーザーのプライベートディレクトリに効果的です。 このコマンド は、その他のユーザーに mydir ディレクトリの読み取りと検索を許可していますが、所 有者だけがそのディレクトリからファイルを削除できます。 # chmod 755 mydir 詳細については、chmod(1) およびchmod(2) を参照してください。 • • ディレクトリにスティッキービットを設定します。 スティッキービットとは、各ファイルのモードにある特殊ビットです。 スティッキー ビットを設定すると、ユーザーがディレクトリから他のユーザーのファイルを削除する ことを阻止します。 スティッキービットをディレクトリに設定することで、ファイルの 所有者、ディレクトリの所有者、または適切な特権を持つユーザーのみが、ファイルの 削除または名前変更ができるようになります。 この方法は、複数の許可ユーザーにアクセス可能にする必要のある、テンポラリディレ クトリまたはプロジェクトディレクトリ (たとえば、/tmp と /var/tmp) に効果的です。 以下のコマンドは、誰でも /mfgproj 内のファイルを作成、読み取り、書き込みできる ようにします。ただし、ファイルの所有者、ディレクトリの所有者、または適切な特権 を持つユーザーのみが、ファイルを削除できます。 # chmod a+rwxt /mfgproj 8.1 ファイルアクセスの制御 121 スティッキービットの設定は、テンポラリファイルに使用しているディレクトリにとっ て重要です。 テンポラリディレクトリにスティッキービットが設定されていない場合、 攻撃者はテンポラリファイルが作成されるのを待機して、次にファイルを削除し、内容 を変更した新しいファイルを同じ名前で再作成することで、ユーザープログラムの所期 の動作を変更することができます。 ほとんど場合、アプリケーションは変更を認識せ ず、攻撃者に代わって予想に反した悪意のある動作を実行することがあります。 8.1.4 ユーザーアカウントに関連したファイルの保護 ユーザーアカウントに関連したファイルを保護するには、次のガイドラインに従ってくださ い。 • ホームディレクトリは、所有者以外の者の書き込みを可能にしないでください。 書き込 み可能にすると、どのユーザーでもディレクトリにファイルを追加したり、ファイルを 削除することができます。 • 各ユーザーの .profile、.kshrc、.login、および .cshrc ファイルは、アカウント 所有者以外の者の書き込みを可能にしないでください。 • ユーザーの .rhosts ファイルは、所有者以外の者の読み取りおよび書き込みを可能に しないでください。 この予防措置により、自分が持っている他のアカウントをユーザー から推測されるのが防止されるだけでなく、誰でも .rhosts ファイルを編集してその システムへのアクセスを取得できるという事態が防止されます。 詳細は、hosts.equiv(4) を参照してください。 • リモートログイン用の login 認証をバイパスし、ユーザーの暗号化されていないパス ワードまで含むので、.netrc ファイルを使用しないでください。 使用する場合、.netrc は、その所有者以外が読み込みおよび書き込み可能であってはなりません。 詳細は、 netrc(4) を参照してください。 8.1.5 fsck を使用したファイル破損の検索と訂正 以下の問題があるとき、ファイルシステムが破損している可能性があります。 • ファイルに不正なデータ (ごみ) が含まれる。 • ファイルの一部が切り捨てられているか、データが欠落している。 • あるべきファイルが見つからないか、場所が変わっている。 • エラーメッセージがユーザーの端末、システムコンソール、またはシステムログに表示 される。 • ディレクトリの変更またはファイルのリスト表示ができない。 • システムがリブートできない。 ファイルシステムについての問題をユーザーがうまく識別できない場合、fsck コマンドを 使ってファイルシステムをチェックします。 fsck コマンドはファイルシステムの不整合を 検索および訂正する基本ツールです。 fsck コマンドは /etc/fstab にリストされている ファイルシステムを検査します。 fsck ユーティリティではファイル破損を検出できません。 fsck によってもエラーが検出さ れない場合、おそらく問題はファイルシステムの破損ではありません。 つまり、基礎となる 122 ファイルシステムのセキュリティ データが紛失または破損していても、ファイルシステムは使用できます。 ファイルに関する 次のいずれかの問題がないか探してください。 • ユーザー、プログラム、またはアプリケーションが 1 つまたは複数のファイルの削除、 上書き、移動、または一部切り捨てを行った。 • ファイルが作成されたとき、特定のディレクトリに関連したファイルシステムがそのディ レクトリにマウントされていない。 • 1 つまたは複数のファイルが配置されたディレクトリに、マウント済みのファイルシス テムがある。 ファイルは存在しますが、アクセス不可になっています。 ファイルにアク セスするには、ファイルシステムをマウント解除します。 • ファイル保護または所有権によりアクセスが阻止されている。 chmod コマンドまたは chown コマンドを使用してファイルパーミッションを変更します。 8.2 アクセス制御リストの設定 アクセス制御リスト (ACL) は、従来のファイルアクセスパーミッションよりもさらに細かい ファイル保護を提供します。 ACL を使用すれば、ユーザーが属しているグループに無関係 に、個別ユーザーのファイルアクセスを許可または制限できます。 ファイルの所有者または 適切な特権を持ったユーザーのみが、ACL を作成できます。 ジャーナルファイルシステム (JFS) と、HFS(High-Performance File System) は両方とも ACL を サポートしますが、使用する機構と構文は異なります。 JFS は Veritas ジャーナルファイルシステム (VxFS) を HP-UX で実現したものです。 HFS は UNIX ファイルシステム (UFS) の HP-UX バージョンで、以前の HP-UX のバージョンと互換性 があります。 アクセス制御リスト (ACL) は、ファイルに関連したユーザー、グループ、およびモードのエ ントリーのセットです。 このリストでは、ユーザー ID とグループ ID の可能なすべての組み 合わせについて、パーミッションを指定します。 アクセス制御リストを使用すると、従来の UNIX ファイルパーミッションより明確な方法でファイルへのアクセスを制御することができ ます。 ACL は、従来の制御に加えて、個々のユーザーや特定のグループに対してファイルア クセスを許可したり制限したりすることができます。 HFS および JFS ファイルシステムは両方とも ACL をサポートしていますが、使用するメカニ ズムと構文が異なります。 注記: HFS は現在では非推奨です。 将来のオペレーティングシステムのリリースからは除 去されます。 HP-UX は、オペレーティングシステムに付属する基本の JFS 製品と、またオプションの高機 能製品である別途インストールされる OnlineJFS の 2 つの JFS 製品をそれぞれサポートしま す。 どちらの JFS 製品も ACL をサポートします。 詳細については、setacl(1)、getacl(1)、aclv(5)、chacl(1)、lsacl(1)、acl(5) を参照してくださ い。 8.3 HFS ACL の使用 HFS ACL のパーミッションの設定は chacl コマンドで行い、これらの表示は lsacl コマン ドで行います。 詳細は例 8-1 「HFS ACL の作成」を参照してください。 8.2 アクセス制御リストの設定 123 重要: HFS ACL パーミッションが割り当てられているファイルに chmod を使用するときは、 オプション-A を付ける必要があります。 オプション-A を指定しないと、chmod はファイル から ACL パーミッションを削除します。 構文は次のとおりです。 # chmod -A mode file chacl コマンドは、chmod コマンドのスーパーセットです。 chacl コマンドで割り当てる 特定のパーミッションは、chmod コマンドで割り当てる全体的なパーミッションに追加され ます。 ファイルに ACL がある場合、ll コマンドはパーミッション文字列の後にプラス記号 (+) を表 示します。 user.group が 2 つ以上の HFS ACL エントリーと一致する場合、より明確なエントリーが 優先されます。 詳細は例 8-2 「複数の HFS ACL の一致」を参照してください。 124 ファイルシステムのセキュリティ 例 8-1 HFS ACL の作成 この例では、chmod コマンドは myfile への書き込みパーミッションを、ユーザー allan だけに制限しています。 また chmod コマンドは、以前の HFS ACL を削除します。 $ chmod 644 myfile $ ll myfile -rw-r--r-1 allan users 0 Sep 21 16:56 myfile $ lsacl myfile (allan.%,rw-)(%.users,r--)(%.%,r--) myfile lsacl コマンドは、所有者、グループ、その他の基本的なパーミッションに対応するデフォ ルト (ACL なし) の値だけを表示します。 chacl コマンドは、myfile への読み取りおよび書き込みアクセスを、別のユーザーに付与 します。 $ chacl 'naomi.users=rw' myfile $ ll myfile -rw-r--r--+ 1 allan users 0 Sep 21 16:56 myfile $ lsacl myfile (naomi.users,rw-)(allan.%,rw-)(%.users,r--)(%.%,r--) myfile 2 つのことに注意してください。ll のパーミッション表示では、+ が後ろに追加され、ACL が存在することを示しています。また、ll のパーミッション文字列に変化はありません。 lsacl の表示の追加されたエントリーは、グループusers のユーザーnaomi に myfile へ の読み取りと書き込みのアクセス権があることを示しています。 例 8-2 複数の HFS ACL の一致 ユーザーのuser.group の組み合わせが 2 つ以上の ACL エントリーに一致する場合、最も 限定的なエントリーが優先されます。 この例では、まずファイルパーミッションを設定しま す。 $ chmod 644 myfile 次のように chacl コマンドを myfile に使用して、ユーザーnaomi に対して書き込み専用 エントリーを追加します。 $ chacl naomi.%=w myfile $ lsacl myfile (naomi.%,-w-)(allan.%,rw-)(%.users,r--)(%.%,r--) myfile これで、ユーザーnaomi には、naomi.% で定義された ACL を使って、ファイル myfile へ の書き込みアクセスがあります。しかし、%.users と%.% で定義された ACL よりもnaomi.% が優先されるので、読み取りアクセスはありません。 lsacl コマンドは、HFS ACL を後に設定されたものから順に表示します。 つまり、パーミッ ションの照合は、左から右へ行われます。 8.3.1 HFS ACL と HP-UX コマンドと呼び出し 次のコマンドと呼び出し (システムコール) は、HFS ファイルシステム上の ACL を操作しま す。 8.3 HFS ACL の使用 125 表 8-2 HFS ACL コマンド コマンド 説明 chacl ファイルの HFS ACL を変更します。 getaccess ファイルへのユーザーのアクセス権をリストします。 lsacl ファイルの HFS ACL をリスト表示します。 表 8-3 HFS ACL システムコール システムコール 説明 getaccess() ファイルへのユーザーの実効アクセス権を取得します。 getacl()、fgetacl() HFS ACL 情報を取得します。 setacl()、fsetacl() HFS ACL 情報を設定します。 acltostr() HFS ACL 構造を文字列形式に変換します。 chownacl() HFS ファイルの ACL 内に表された所有者またはグループ を変更します。 cpacl()、fcpacl() HFS ACL とモードビットを、あるファイルから別のファ イルにコピーします。 setaclentry()、fsetaclentry() HFS ファイルの ACL エントリーを追加、変更、または削 除します。 strtoacl() HFS ACL 構造を解析して文字列形式に変換します。 strtoaclpatt() HFS ACL パターン文字列を解析して配列に変換します。 以下のコマンド、システムコール、サブルーチンライブラリは、ACL エントリーに影響を与 えます。予期しない形で影響するときもあります。 表 8-4 ACL エントリーに影響するコマンドと呼び出し 126 コマンドまたは呼び出し 説明 chmod デフォルトでは HFS ACL が削除されます。 -A オプショ ンを使用して HFS ACL を保持してください。 chmod() HFS ACL エントリーは削除されます。 getacl() と setacl() を使用して、HFS ACL エントリーを保存して 復元してください。 cpset ファイルのオプションの ACL エントリーは設定しませ ん。 find HFS または JFS ファイルシステム上で、ファイルの ACL エントリーが特定の ACL パターンに一致するか特定の ACL パターンを含むようなファイルを確認できます。 ls -l 長い形式を使用すると、ファイルのパーミッションビッ トの後にプラス記号 (+) を表示することによって、ACL の存在を示します。 mailx /var/mail/* ファイルについて、オプションの ACL エ ントリーはサポートしません。 ファイルシステムのセキュリティ 表 8-4 ACL エントリーに影響するコマンドと呼び出し (続き) コマンドまたは呼び出し 説明 compact、compress、cp、ed、pack、unpack ACL エントリーが作成した新しいファイルに ACL エン トリーをコピーします。 frecover、fbackup ファイルを選択的に回復およびバックアップするために は、これらのコマンドのみを使用してください。 ACL を サポートしていないシステム上での回復用に ACL システ ムからバックアップをする場合は、-A オプションを使 用してください。 ar、cpio、ftio、shar、tar、dump、restore これらのコマンドは、アーカイブおよびリストアしたと きに ACL を保持しません。 これらは、stat() によっ て返される st_mode 値を使用します。 rcs、sccs これらのコマンドは ACL をサポートしません。 HFS アクセス制御リストは、新しいファイルを作成するとき、追加の「継続 i ノード」を使 用します。 次のコマンドを使用するとき、アクセス制御リストを考慮してください。 • fsck: icont の値として、ACL エントリーを持つファイルの数を返します。 -p オプ ションを使用して、参照されない継続 i ノードをクリアしてください。 fsck(1M) を参照 してください。 • diskusg、ncheck: 継続 i ノードを無視します。 diskusg(1M) およびncheck(1M) を参照 してください。 • mkfs: 新しいディスク上で継続 i ノードを許します。 mkfs(1M) を参照してください。 8.4 JFS ACL の使用 本節では、JFS ACL について、およびその使用法について説明します。 注記: JFS ACL を使用するには、ディスクレイアウトのバージョン 4 を使った VxFS ファイ ルシステムが必要です。 ファイルシステムをバージョン 4 へアップグレードする場合の詳細 は、vxupgrade(1M) を参照してください。 8.4.1 JFS ACL の定義 JFS ACL には、1 行ずつ特定のユーザーとグループを指定したエントリーがあり、それぞれど のアクセスが付与されているかを示しています。 JFS ACL があると、ls -l コマンドを使っ て表示される group パーミッションビットの意味も変わります。 JFS ACL には常に、最低 4 つのエントリーがあります。これらは、user エントリー、group エントリー、class エントリー、および other エントリーです。 JFS ACL にこれら 4 つの エントリーだけがあるとき、付与するパーミッションは、標準の UNIX システムのパーミッ ションビットで示されるパーミッションと完全に同じです。 8.4.2 システムが JFS ACL を生成する方法 JFS ファイルシステムでファイルが作成されるときは常に、システムはファイルを最小の JFS ACL で初期化します。このファイルには、所有者パーミッションである user エントリー、 所有者グループパーミッションである group エントリー、所有者グループパーミッション 8.4 JFS ACL の使用 127 である class エントリー、およびその他のグループパーミッションである other エント リーがあります。 追加エントリーは、ユーザーにより追加されるか、親ディレクトリで指定 されたデフォルトエントリーの結果として追加できます。 8.4.3 最小の JFS ACL 前項で定義された 4 つの基本エントリーを持つ ACL は、最小の JFS ACL と呼ばれます。 最 小の ACL の例は次のようになります。 user::rwgroup::r-class:r-other:--• user エントリーは、ファイルの所有者のパーミッションを示し、所有者のパーミッショ ンビットへ直接マップします。 最初のエントリーがファイルの所有者に適用されるた め、ユーザー名の指定は不要です。 この例の ACL エントリーは、ファイルの所有者へ 読み取りと書き込みのアクセスを許可します。 • group およびclass エントリーは、ファイルの所有グループのメンバーに付与したパー ミッションを指定します。 この例の ACL エントリーは、ファイルの所有者グループへ 読み取り専用アクセスを許可します。 group およびclass エントリーの詳細について は、「JFS ACL の group および class エントリー」で説明されています。 • other エントリーは、他のエントリーでパーミッションが許可も拒否もされていない ユーザーへのパーミッションを指定している、その他大勢用のエントリーです。 other エントリーの例として、ファイルの所有者でもファイルの所有グループでもないすべて のユーザーに対してアクセスを拒否するエントリーがあります。 ls -l で表示されるこのファイルのパーミッションビットは、次のようになります。 rw-r----次の項では、JFS ACL の追加エントリーがどのようにファイルアクセスとパーミッションビッ トの解釈に影響を及ぼすかを説明します。 8.4.4 JFS ACL の追加 user および group エントリー システム上の特定のユーザーまたはグループに対して、アクセスを特別に許可または拒否し たい場合は、13 個までの user および group エントリーを前述の 4 つの最小の JFS ACL エントリーに追加することができます。 たとえば、ファイルの ACL 内の次のエントリーは、boss としてログインしたユーザーに、 読み取り、書き込み、実行アクセスを許可します。 user:boss:rwx 次の例では、次のようなエントリーを持つ ACL が、グループ spies のユーザーに対してア クセスを拒否しています。 group:spies:--- 8.4.5 JFS ACL の group および class エントリー 最小の ACL を持つファイルの場合、所有 group と class の ACL エントリーは同じです。 しかし、追加エントリーを持つファイルの場合、所有 group と class の ACL エントリー 128 ファイルシステムのセキュリティ は区別されます。 所有 group エントリーでは、特定のグループ (所有 group) にパーミッ ションを付与します。 class エントリーはもっと全体的で、追加 user および group エントリーのどれかで付与 される最大限のパーミッションが指定されます。 class エントリーで許可されていないパーミッションは、どの ACL エントリーでも許可する ことはできませんが、先頭の user (所有者) エントリーと other エントリーは除きます。 どのパーミッションも、特定のユーザーまたはグループに対して拒否することができます。 class エントリーは、ファイルパーミッションの上限として機能します。 ACL に 2 つ以上の group または user エントリーがある場合、いずれかの追加エントリー で付与される実行パーミッションが class エントリーで制限されるため、追加 user およ び group エントリーを集めたものは、group class エントリーと呼びます。 8.4.6 setacl コマンドと getacl コマンドの使用 ACL を変更および表示するには、setacl と getacl コマンドを使用します。 setacl コマンドを使用して、以下のいずれかの方法で ACL を変更します。 • ディレクトリのデフォルト ACL も含めて、ファイルの ACL 全体を置換する。 • ディレクトリのデフォルトエントリーも含めて、1 つ以上のエントリーを追加、変更、 または削除する。 getacl コマンドは、ACL 内のエントリーを表示します。 user と group のファイルパー ミッションビットは、次のような特別な形式のエントリーへと変わります。 • 所有者パーミッションを示すビットは、ユーザー ID を指定しない user エントリーで 示します。 • グループパーミッションを示すビットは、グループ ID を指定しない group エントリー で示します。 ACL には、特別な user および group エントリーがそれぞれ 1 つずつある必要があり ます。 ACL には、追加 user エントリーおよび group エントリーがいくつあってもか まいませんが、対応するユーザー ID またはグループ ID が入っている必要があります。 ACL に other エントリーは 1 つだけあり、その他のユーザーへ付与するパーミッショ ンのパーミッションビットを示しています。 コマンドの説明については、setacl(1) およびgetacl(1) を参照してください。 8.4.7 class エントリーでの chmod の影響 ファイルに最小の ACL があるとき、所有 group と class の ACL エントリーは同じです。 また、chmod はどちらにも影響を及ぼします。 しかし、ファイルに ACL 内の追加のオプショ ンエントリーがある場合の結果として、次のことがいえます。 • class ACL エントリーは所有 group ACL エントリーと同じである必要はなくなりま す。 • chmod コマンドは、class ACL エントリーに影響を及ぼしますが、所有 group エント リーには影響を及ぼしません。 • 所有 group エントリーを変更するには、setacl コマンドを使用する必要があります。 8.4 JFS ACL の使用 129 8.4.8 最小の JFS ACL の変更例 本項では、JFS ACL の class エントリー機能を説明するために、chmod と setacl が、最 小の JFS ACL を持つファイルと、group class エントリーを持つファイルにどのように影響 を及ぼすかを示します。 注記: getacl および setacl コマンドの使用についての詳細は、「setacl コマンドを使用 した JFS ACL の変更」を参照してください。 また、getacl(1) およびsetacl(1) も参照してくだ さい。 読み取り専用 (444) のパーミッションと最小の JFS ACL を持つファイル exfile について考 えてみます。 ls -l コマンドは、次のように exfile のパーミッションを表示します。 $ ls -l exfile -r--r--r-- 1 jsmith users 12 Sep 20 15:02 exfile getacl コマンドは、exfile に対して次のような最小の JFS ACL の出力を表示します。 $ getacl exfile # file: exfile # owner: jsmith # group: users user::r-group::r-class:r-other:r-chmod コマンドを使って exfile に書き込みパーミッションを追加すると、所有 group と class の両方の ACL エントリーが変更されます。 たとえば、次の getacl コマンドの出力 を参照してください。 $ chmod 666 exfile $ getacl exfile # file: exfile # owner: jsmith # group: users user::rwgroup::rwclass:rwother:rwここで、user および group エントリーを追加します。これらのエントリーは class ACL エ ントリーに影響を及ぼしますが、所有 group エントリーには影響を及ぼしません。 次の例 の 1 番目の setacl コマンドは、ユーザー guest に読み取り専用パーミッションを付与し ます。その他の ACL エントリーには影響ありません。 しかし、2 番目の setacl コマンドは グループ dev に読み取り/実行パーミッションを付与して、パーミッションの上限 (class エントリー) は、実行パーミッションも含めるように拡張されます。 $ setacl -m u:guest:r-- exfile $ setacl -m g:dev:r-x exfile $ getacl exfile# file: exfile # owner: jsmith # group: users user::rw130 ファイルシステムのセキュリティ user:guest:r-group::rwgroup:dev:r-x class:rwx other:rw次に、chmod コマンドがgroup から書き込みおよび実行パーミッションを削除すると、実質 的には class パーミッションが読み取り専用に縮小されます。 所有 group のパーミッショ ンは、変更されませんが、効果としては同様に読み取り専用に縮小されます。 $ chmod g-wx exfile $ getacl exfile # file: exfile # owner: jsmith # group: users user::rwuser:guest:r-group::rw# effective:r-group:dev:r-x # effective:r-class:r-other:rwother のパーミッションは変更されません。 class エントリーは、先頭の user (所有者) エントリーまたは other エントリーに付与されているアクセスについては制限しません。 次に、ls -l コマンドは exfile のパーミッションを表示します。 パーミッション文字列 の最後のプラス記号 (+) は、ファイルに ACL が存在することを示しています。 $ ls -l exfile -rw-r--rw-+ 1 jsmith users 12 Sep 20 15:02 exfile 8.4.9 デフォルトの JFS ACL 1 つのディレクトリに作成されるすべてのファイルが、特定の ACL エントリーを持つように したいことがあります。 たとえば、ユーザーが別のユーザーと一緒に自分のディレクトリで 何か作業するのに、そのディレクトリのファイルはどれでも書き込めるようにすることがで きます。 ディレクトリ内の全ファイルに、必要なアクセスを付与する ACL エントリーを付けることも できます。しかし、新たにファイルを作成するたびに、エントリーを再度追加する必要があ ります。 デフォルト ACL エントリーを使うと、ファイルが作成されるたびに自動的にシステ ムにこの処理をさせることができます。 デフォルト ACL エントリーは次のようになります。 default:user:boss:rwデフォルト ACL はディレクトリのみに配置でき、ディレクトリに対してユーザーに許可され るアクセスに影響しません。 デフォルトの ACL は、ディレクトリに作成されたファイルに適 用されます。 新たに作成されたファイルがディレクトリの場合は、デフォルト ACL エントリーは次の 2 つ の影響を及ぼします。 • 対応する非デフォルト ACL エントリーが作成され、そのディレクトリで作成されるファ イルと同じように、そのディレクトリに対して必要なパーミッションが付与および拒否 されます。 8.4 JFS ACL の使用 131 • デフォルトエントリー自身がコピーされ、新しいサブディレクトリも親ディレクトリと 同じデフォルト ACL を持ちます。 たとえば、デイレクトリ projectdir 内で作成される全ファイルが、特定のユーザーによっ て読み取りできるようにしたい場合、次のようにして適切なデフォルトエントリーを作成で きます。 $ setacl -m d:u:boss:r,d:u:jjones:r,d:u:dev:r projectdir $ getacl projectdir # file: projectdir # owner: jsmith # group: users user::rwuser:boss:rwuser:jjones:rwuser:jdoe:--group::rwgroup:dev:rwclass:rwother:--default:user:boss:r--default:user:jjones:r-default:group:dev:r-新たに作成されたファイルがディレクトリの場合は、同じ ACL エントリーが生成されます。 さらに、デフォルトエントリー自身も ACL 内に配置されます。 これらのエントリーを置くことで、ディレクトリ projectdir 内で作成される新規ファイル はすべて、デフォルトエントリーを持たない前述のような ACL を持つことができます。 8.4.10 setacl コマンドを使用した JFS ACL の変更 本項では、setacl コマンドの使用例を追加して示します。 8.4.10.1 変更および削除オプションの使用 次の setacl コマンドでは、-m (変更) オプションを使用して、junk ファイルに対する読み 取り専用アクセスをユーザー boss に許可しています。 $ setacl -m u:boss:r-- junk グループ dev のすべてのユーザーに読み取りおよび書き込みアクセスを許可するには、 setacl -m コマンドにグループ (g:) パラメータを使用します。 $ setacl -m g:dev:rw- junk -d オプションはエントリーを削除します。 -d を使うときは、ACL エントリーのパーミッ ションは指定しません。 たとえば、次のコマンドはグループ dev のエントリーを削除しま す。 $ setacl -d g:dev junk 132 ファイルシステムのセキュリティ 8.4.10.2 -f オプションの使用 複数のエントリーを追加または変更する場合には、別の手順を使用することができます。 ACL をファイルに保管して、ファイルを編集した後、この新しい ACL をファイルに適用すること ができます。 たとえば、次のコマンドで ACL をファイルに保存します。 $ getacl junk > junk.acl 次のように表示されるようにファイルを編集します。 $ cat junk.acl # file: junk # owner: user1 # group: group1 user::rwuser:user2:rwuser:user3:rwuser:user4:--user:user5:r-group::rwgroup:group2:rwgroup:group3:r-group:group4:--group:group5:rwclass:rwother:r-次のように setacl -f コマンドを使用して、ACL をファイルに適用します。 $ setacl -f junk.acl junk 8.4.10.3 実効パーミッションと setacl -n 通常では、setacl は class エントリーを再設定して、追加の ACL エントリーに許可され たパーミッションが許可されるようにします。 -n オプションを指定すると、class エント リーは再設定されず、既存の値が使用されます。 つまり、ACL エントリーで付与したいくつ かのパーミッションが、実際には付与されていないことがあります。 たとえば、この ACL は setacl -n コマンドを使って、グループ dev に読み取りおよび実 行パーミッションを追加するよう変更されます。 $ getacl exfile # file: exfile # owner: jsmith # group: users user::rwgroup::rwclass:rwother:rw$ setacl -n -m group:dev:r-x exfile $ getacl exfile # file: exfile # owner: jsmith # group: users user::rwgroup::rw8.4 JFS ACL の使用 133 group:dev:r-x class:rwother:rw- #effective r-- グループ dev の ACL エントリーは指定されたとおりに追加されますが、実行パーミッショ ンは実際には付与されません。 class エントリーで実行パーミッションが拒否されていたに もかかわらず、-n が指定されたため、class エントリーは再設定されませんでした。 -n を 使用しない場合は、class は class:rwx に再設定されるので、effective のコメントは 表示されなくなります。 8.5 JFS ACL と HFS ACL の比較 JFS ACL は、POSIX ACL 標準に従っています。 JFS ACL は、形式 (内部および外部) と機能の両方に関して HFS ACL と異なります。 JFS ACL と HFS ACL の機能的な違いには、次のようなことがあります。 • JFS ディレクトリの ACL では、デフォルトエントリーを持つことができ、そのディレク トリ内でその後作成されたファイルに適用することができます。 HFS ACL には、この機 能はありません。 • HFS ACL の所有者は、ACL が制御するファイルの所有者と異なる可能性があります。 JFS ACL は、該当するファイルの所有者によって所有されます。 • HFS ACL では、指定したグループの特定のユーザーごとに別個のエントリーを持つこと ができます。 たとえば、userx が、グループ users のメンバーのときは読み取りと書 き込みのアクセスを持ち、グループ other のメンバーのときは読み取りアクセスだけ を持つように設定することができます。 8.5.1 JFS と HFS のコマンドおよび関数の対応付け 表 8-5 「HFS ACL と JFS ACL の対応付け」は、JFS ACL と HFS ACL のコマンドおよび関数の 対応についてのマンページを示しています。 表 8-5 HFS ACL と JFS ACL の対応付け 134 HFS での名前 JFS で対応する名前 chacl(1) setacl(1) lsacl(1) getacl(1) getacl(2) acl(2) fgetacl(2) — なし — setacl(2) acl(2) fsetacl(2) — なし — acltostr(3C) — なし — chownacl(3C) — なし — cpacl(3C) — なし — setaclentry(3C) — なし — ファイルシステムのセキュリティ 表 8-5 HFS ACL と JFS ACL の対応付け (続き) HFS での名前 JFS で対応する名前 strtoacl(3C) — なし — — なし — aclsort(3C) acl(5) aclv(5) 8.6 ACL と NFS NFS(Network File System) には、リモートファイルに関する ACL 情報を引き渡す機能があり ません。 したがって、NFS によって ACL をリモートファイル上で認識することはできませ ん。 ls -l コマンドで ACL がリモートファイル上にあることは表示されませんが、アクセ スパーミッションに関する ACL 制御は有効です。 各マンページの項目は、この前提のもとでさまざまなシステムコール、ライブラリ呼び出し、 コマンドの動作を説明しています。 重要: オプションのエントリー付きのファイルをネットワークを通して転送するときや、リ モートファイルを操作するときは、NFS がオプションのエントリーを予告なく削除すること があるので注意してください。 8.7 /dev デバイス特殊ファイルに関するセキュリティの留意事項 システム内のすべての装置へのアクセスは、デバイス特殊ファイル (プログラムを装置独立に できる) によって制御されます。 これらのファイルは、適切な使用と最大限のセキュリティ を使用可能にするパーミッション設定に付属しています。 他のデバイス特殊ファイルをインストールする場合、正しいパーミッション設定についての 詳細は、insf(1M) を参照してください。 デバイス特殊ファイルは、他のファイルと同じように、不正な変更に対して無防備なので、 次の予防措置を守ってください。 • すべてのデバイス特殊ファイルを /dev ディレクトリに置くようにしてください。 • メモリーファイルである /dev/mem と /dev/kmemは、重要なユーザー情報を含んでい るので、これらのファイルを不用意なアクセスから保護してください。 たとえば、メモ リーの内容を見て login プログラムの呼び出しを監視するプログラムは、ユーザーがパ スワードを入力したときに、login プログラムのバッファーからパスワードをコピーし ます。ファイル保護は次のように設定する必要があります。 crw-r----crw-r----- • 1 bin 1 bin sys sys 3 0x000001 Jun 3 0x000000 Jun 9 9 2006 /dev/kmem 2006 /dev/mem すべてのディスク特殊ファイルを保護してください。 • 不注意なデータ破壊を防止するために、すべてのディスク特殊ファイルを一般ユー ザーから書き込み保護します。 group および other についての書き込みアクセス をオフにします。 • 開示を防止するために、ディスク特殊ファイルを読み取り保護します。 other の ユーザーの読み取りアクセスをオフにします。 8.6 ACL と NFS 135 ファイル保護は次のように設定する必要があります。 brw-r----crw-r----brw-r----crw-r----- 1 1 1 1 bin bin root root sys sys sys sys 31 188 64 64 0x002000 0x002000 0x000002 0x000002 Feb 18 Aug 3 Jun 11 Jun 11 2004 2004 2006 2006 /dev/dsk/c0t2d0 /dev/rdsk/c0t2d0 /dev/vg00/lvol2 /dev/vg00/rlvol2 • ユーザーに write または talk プログラムの使用による通信を許す場合、HP-UX システ ム上の端末ポートは誰からも書き込み可能になります。 読み取りパーミッションは、所 有者だけに許してください。 • 各ユーザーは、端末デバイスまたは個人のプリンター以外には、デバイス特殊ファイル の所有を許可しないでください。 • 出所のわからないディスクまたは他のマウント可能デバイスをサービス状態にする前に、 まずデバイス特殊ファイルと setuid プログラムがないか、そのファイルをチェックし てください。 詳細は、「ファイルシステムのマウントとマウント解除のためのセキュリ ティガイドライン」を参照してください。 8.8 ディスクパーティションと論理ボリュームの保護 論理ボリュームマネージャ (LVM) は、一般のディスク管理ツールです。 LVM はディスクパー ティションよりも簡単にディスクを分割し、ボリュームは複数のディスクに及ぶことができ ます。 ボリュームは、物理的なディスクパーティションとして表示される論理デバイスです。 ボリュームは、ファイルシステムまたはデータベースを作成するようなアプリケーションで、 仮想ディスクパーティションとして使用することができます。 ディスクパーティションと論理ボリュームに関するセキュリティ上の留意事項は、以下のと おりです。 • ディスクパーティションと論理ボリュームのデバイス特殊ファイルは、root によっての み、あるいはディスクバックアップに使用されたアカウントによってのみ読み込み可能 であるようにします。 詳細は、「/dev デバイス特殊ファイルに関するセキュリティの 留意事項」を参照してください。 • 所有権とパーミッションが i ノード内に保存されるので、マウントされているパーティ ションへの書き込みパーミッションを持つ人は誰でも、そのパーティション内のどんな ファイルにもユーザー ID を設定できます。 ファイルは所有者に関係なく変更される予 定で、chmod() システムコールやその他のセキュリティチェックはバイパスされます。 デバイス特殊ファイルが書き込み可能な場合、ユーザーはこのファイルを開いて、raw ディスクにアクセスできます。 そうすればユーザーは、ファイルシステムの編集、ファ イルの読み取り、またはファイルパーミッションおよび所有者の変更が直接行えます。 ファイルパーミッションがデバイス特殊ファイルへのアクセスを禁止していて、root だ けに読み取りを許可するようにしてください。 • 136 データベースアプリケーションのようなプログラムが、パーティションへの直接アクセ スを必要とする場合、そのパーティションはそのプログラム専用に確保する必要があり ます。 ユーザーがパーティションに直接アクセスできる場合、パーティションをファイ ルシステムとしてマウントしないでください。 ユーザーがパーティションをファイルシ ステムとしてマウントした場合、ユーザーは基本のファイルシステムを編集できます。 ファイルシステムのセキュリティ プログラムユーザーには、ファイルのセキュリティが HP-UX ファイルシステムによって ではなくそのファイルのパーミッション設定によって実施されることを知らせる必要が あります。 8.9 ファイルシステムのマウントとマウント解除のためのセキュリティ ガイドライン mount コマンドにより、現在のファイルツリーに、着脱可能なファイルシステムやディスク、 またはディスクパーティションを結び付けることができます。 mount コマンドは、使用可能 なファイルシステムのリストと対応するマウントポイントを含んでいる /etc/fstab ファイ ルを使用します。 /etc/fstab ファイルは、書き込みは root のみが可能で、読み込みは他 のユーザーにも可能であるようにします。 ファイルシステムのマウントの詳細については、 fstab(4) を参照してください。 ファイルシステムまたはディスクをマウントするときは、次の予防措置を守ってください。 • 新しいファイルシステムをマウントする位置に、マウントポイントディレクトリ (/mnt など) を作成してください。 すでにファイルが存在するディレクトリにファイルシステ ムをマウントすると、そのファイルにアクセスできなくなるため、決してその部分には マウントしないでください。 マウントされたファイルシステムのマウントポイントは、そのファイルシステムのルー トディレクトリのパーミッションと所有権を獲得します。 • ディスクパス名のパーミッションとアクセス制御リストのエントリーを設定して、ディ スクへのアクセスを制御してください。 • mount コマンドの-r オプションを使用して、読み取り専用としてファイルシステムを マウントしてください。 物理的に書き込み保護されたファイルシステムは、この方法で マウントする必要があります。 • 新規に、または外部のファイルシステムをマウントするときは、媒体が安全でないと想 定してください。 • PATH の環境変数に、「.」(現在のディレクトリ) が含まれていないことを確認しま す。 含まれている場合、新しいファイルシステムを調べる間に、トロイの木馬 (Trojan Horse) バージョンの ls や同様のコマンドを実行してしまう可能性があります。 • fsck コマンドを実行し、ファイルシステムが技術的に壊れていないことを確認しま す。 fsck(1M) を参照してください。 • ncheck_hfs -s または ncheck_vxfs -s コマンドを実行することにより、setuid や setgid を行うプログラムやデバイスファイルをスキャンして、疑わしい検出物 があればすべて調査してください。 -s オプションは、セキュリティの方針の隠れた 違反を発見することを目的としています。 詳細は、ncheck_hfs(1M) および ncheck_vxfs(1M) を参照してください。 • デイレクトリのパーミッションを 700 (drwx------) に設定することによって、ルー トに制限されたディレクトリを作成してください。 # mkdir /securefile # chmod 700 /securefile • 外部のファイルシステムを読み取り専用でその場所にマウントします。 8.9 ファイルシステムのマウントとマウント解除のためのセキュリティガイドライン 137 # mount -r /dev/disk1 /securefile • 特権プログラムがないか、すべてのディレクトリをチェックして、すべてのプログラ ムの身元を確かめてください。 • 読み取りおよび書き込みモードでシステムを再マウントし、不必要な setuid や setgid パーミッションをすべて、前の手順で見つけたファイルから削除してくださ い。 個人のファイルシステムのマウントをユーザーが要求した場合、これらの予防 措置は特に重要です。 これらのテストが完了した場合のみ、ファイルシステムのマウントを解除して、それを 必要な位置に再マウントしてください。 • アカウントを使用不能に、または削除しているユーザーがマウントしたファイルシステ ムはすべて、必ずマウントを解除してください。 NFS 環境内でマウントされたファイルについては、「NFS 環境内にマウントされたファイル」 を参照してください。 8.10 ネットワークでのファイルのセキュリティの制御 セキュリティの観点からいえば、ネットワークシステムはスタンドアロンシステムよりも無 防備です。 ネットワークは、システムへのアクセスの可能性を増大させるだけでなく、セキュ リティ違反のリスクをも大きくします。 ネットワークを介したセキュリティの制御は完璧にはできませんが、侵入のリスクを制限す ることで、システムまたはユーザーの生産性を低下させることなく、ネットワーク上の各々 のノードのセキュリティが制御できます。 すべてのネットワーク管理プログラムが、root ではなく、uucp、nso、またはdaemon のよ うな、保護されたネットワーク固有アカウントによって所有されるようにします。 8.10.1 ネットワーク制御ファイルでのパーミッション設定の確認 すべてのシステムファイルのモード、所有者、グループは、注意深く設定されています。 こ れらのファイルが変更されていないか、定期的に確認します。 元の値から変更がないか注意 し、あれば訂正します。 /etc ディレクトリ内のネットワーク制御ファイルには特に注意してください。 これらのファ イルは、ネットワーク自体へのアクセスを提供するため、未許可アクセスの取得を図るユー ザーにとって特に関心が高いものです。 ネットワーク制御ファイルは、決して一般ユーザー に書き込み可能にしてはいけません。 これらのファイルには、以下が含まれています。 exports hosts hosts.equiv inetd.conf netgroup networks protocols services 138 NFS クライアントへエクスポートするファイルシステムのリスト ネットワークホスト名とそのアドレス ローカルホストと等価なアクセスを許すリモートホストの名前 インターネット構成ファイル ネットワーク全体のグループのリスト ネットワーク名とそのアドレス プロトコル名データベース サービスネームデータベース ファイルシステムのセキュリティ 8.10.2 NFS 環境内にマウントされたファイル ネットワークファイルシステム (NFS) は、次の点で便利です。 • ファイルスペースを節約する。 • ファイル使用量の調和を取る。 • 無駄のない、協調的なユーザー環境を提供する。 NFS は、/etc/exports ファイルを介してアクセスを制御することにより、サーバーとクラ イアントシステム間のファイルの共有を簡素化します。 /etc/exports 内のエントリーは、 サーバー上に存在するファイルシステムを、任意のクライアントマシン上、または指定され たマシンリスト上へマウントすることを許可します。 ファイルシステムがいったん /etc/ exports 内に登録されると、情報は NFS マウントを行うことができる人なら誰にでも使用 可能になります。 このように、NFS クライアントユーザーは、サーバーシステムにログイン することなく、サーバーファイルシステムにアクセスできます。 エクスポートされたファイ ルシステムへのアクセスを制御するための詳細についてはexports(4) を、セキュリティガイド ラインについては「NFS マウントされたファイルを守る方法」を参照してください。 8.10.2.1 サーバーの弱点 サーバーのセキュリティは、ファイル /etc/exports 内に限定的なパーミッションを設定す ることによって維持されます。 ルート特権は、NFS を超えては維持されません。 このよう に、ルート特権をクライアントシステム上に持っていても、サーバーへの特別なアクセスは 提供されません。 サーバーは、それ自身のユーザー用にローカルで行うのと同じパーミッションチェックを、 リモートのクライアントに対して行います。 サーバー側は、クライアントのユーザー ID とグ ループ ID (ネットワークを経由して受け取る) を、サーバーファイルのユーザー ID とグルー プ ID と比較することによって、クライアントのサーバーファイルへのアクセスを制御しま す。 チェックは、カーネルの内部で行います。 NFS クライアント上で特権を持つユーザーは、その特権を、NFS サーバーへの無制限なアク セスを得られるように拡大できます。 注記: 自分自身のノードポリシーよりも特権が寛大に承諾されているノードには、ファイル システムを決してエクスポートしないでください。 8.10.2.2 クライアントの弱点 ワークステーション用の以前のリリースの NFS では、i ノード /dev が、クライアントのディ スク上に常駐していなければなりませんでした。 現在 NFS では、クライアントがマウントし ているデバイス特殊ファイルのメジャー番号とマイナー番号を持っている i ノード /dev を、 サーバー上に持つことができます。 これは、サーバー側で見つけたファイルと i ノード番号 を介して、デバイス特殊ファイルにアクセスすることにより、クライアントにマウントされ たデバイス特殊ファイルに設定されたパーミッションを無視するトロイの木馬が作成される 可能性をオープンしてしまいます。 クライアント側にデバイス特殊ファイル作成用のパーミッションがなくても、システム侵入 者は、サーバー側でルートパーミッションを使用することにより、/dev/kmem, のような、 デバイス特殊ファイルが作成できます。 新しい /dev ファイルは、クライアント側のターゲッ 8.10 ネットワークでのファイルのセキュリティの制御 139 トデバイスのメジャーとマイナー番号と同じメジャーとマイナー番号を持ち、次のパーミッ ションで作成されます。crw-rw-rw-。 それから、侵入者は、クライアントへ行き、普通のユーザーとしてログインし、そして NFS を使用して、新しく作成したサーバー側デバイス特殊ファイルをオープンして、正道でない 手段のために NFS を使用できます。 8.10.2.3 NFS マウントされたファイルを守る方法 NFS マウントされたファイルを保護するための方法を、以下に示します。 • 可能なら、同じ人がクライアントとサーバーシステムの両方を管理するようにしてくだ さい。 • サーバーとクライアントシステム用のユーザー ID とグループ ID の同一性を維持してく ださい。 • サーバーからエクスポートされたファイルシステム内の /dev ファイルを定期的にチェッ クしてください。 • /etc/passwd クライアントファイルへの書き込みアクセスが可能なユーザーを制限し てください。 • 最も厳しく制御するには、ネットワークを通してアクセス可能なすべてのホストを監査 してください。 • root として実行可能でシステムを破壊する setuid プログラムに対して、fstab nosuid コマンドを使ってシステムを保護することを検討してください。 デフォルトのマウント オプションは suid で、これは setuid パーミッションを持ったマウント済みのプログ ラムが、プログラムを誰が開始するかにかかわらず、その所有者のパーミッションで実 行することを許可します。 したがって、setuid パーミッションを持つプログラムが root によって所有されている場合、誰が開始するかにかかわらず root パーミッションで 実行します。 140 ファイルシステムのセキュリティ 第9章 システムへのリモートアクセスの保護 HP-UX は、ファイル転送、リモートログイン、リモートコマンド実行、IP アドレスおよびネッ トワーククライアントの管理、経路指定プロトコル、メール交換、および inetd インター ネットスーパーデーモンによって生成されるセキュリティ機構などの、複数のリモートアク セスサービスを提供します。 本章では、次のトピックについて説明します。 • 「インターネットサービスおよびリモートアクセスサービスの概要」 • 「inetd デーモン」 • 「TCP ラッパーによるスプーフィングからの保護」 • 「安全化インターネットサービス (SIS)」 • 「運用領域の制御」 • 「HP-UX Secure Shell (SSH) を使用したリモートセッションの保護」 9.1 インターネットサービスおよびリモートアクセスサービスの概要 各種インターネットサービスによって使用される認証と許可の機構およびセキュリティのリ スクについて簡単に説明します。 HP-UX インターネットサービスは、http://docs.hp.com/en/netcom.html#Internet%20Services の『 HP-UX Internet Services Administrator's Guide』 および『 Using HP-UX Internet Services』 に文書化されています。 また、次のサイトの『 HP-UX Remote Access Services Administrator's Guide』 も参照してくだ さい。 http://docs.hp.com/en/netcom.html#Internet%20Services HP-UX インターネットサービスは、構成ファイル内にセットアップされたパスワード検証ま たは認可のいずれかを使用して、認証を行います。 インターネットサービスの構成要素のリ ストとそれらのアクセス検証または認可の機構については、表 9-1 「インターネットサービ スの構成要素とアクセス検証、認可、および認証」を参照してください。 表 9-1 インターネットサービスの構成要素とアクセス検証、認可、および認証 インターネットサービスの構成 アクセス検証、認可、または認証機構 要素 ftp (ファイル転送) パスワード検証。 /etc/inetsvcs.conf で定義された Kerberos 認証機構を使 用することもできます。 ftp(1) を参照してください。 rcp (リモートコピー) $HOME/.rhosts または /etc/hosts.equiv ファイル内のエントリー。 /etc/ inetsvcs.conf で定義された Kerberos 認証機構を使用することもできます。 rcp(1) を参照してください。 rdist (リモートファイル配布) $HOME/.rhosts または /etc/hosts.equiv ファイル内のエントリー。 rdist(1) を参照してください。 remsh、rexec (リモートシェ $HOME/.rhosts または /etc/hosts.equiv ファイル内のエントリー。 /etc/ ルからの実行) inetsvcs.conf で定義された Kerberos 認証機構を使用することもできます。 remsh(1) を参照してください。 9.1 インターネットサービスおよびリモートアクセスサービスの概要 141 表 9-1 インターネットサービスの構成要素とアクセス検証、認可、および認証 (続き) インターネットサービスの構成 アクセス検証、認可、または認証機構 要素 rlogin (リモートログイン) パスワード検証または $HOME/.rhosts または /etc/hosts.equiv ファイル内 のエントリー。 /etc/inetsvcs.conf で定義された Kerberos 認証機構を使用 することもできます。 rlogin(1) を参照してください。 telnet (TELNET プロトコルを パスワード検証。 TAC User ID オプションが telnetd デーモンによって有効にな 使用したリモートログイン) ると、telnet は、$HOME/.rhosts または /etc/hosts.equiv ファイルを使 用します。 telnet(1) およびtelnetd(1M) を参照してください。 注記: 情報 (パスワードを含む) は、2 つのシステム間をクリアテキストで渡されます。暗号 化されません。 インターネットサービスは、互いによく認識および定義し合っているホスト 間で、ファイアウォールの背後にあるプライベートな内部ネットワーク内でのみ使用してく ださい。 信用できないネットワークを介して通信するときは、IPSec または Kerberos を使用 して通信を保護してください。 リモートアクセスサービスは、ネットワーク内のリモートシステムを接続します。 デフォル トで、リモートアクセスサービスは、保護されていない環境で機能します。 保護された環境 で動作させるには、Kerberos V5 ネットワーク認証を有効にしてください。 保護されていな い環境では、リモートシステムにアクセスするログイン名とパスワードは必要ですが、その ログイン名は認証と認可の確認を受けません。 保護されている環境では、ログイン名とパス ワードは必要ありません。 リモートシステムに接続しようとすると、Kerberos プロトコル は、ユーザーがリモートシステムへのアクセスを許可されているかどうかを確認します。 9.1.1 ftp の保護 未認可ユーザーが ftp コマンドを使用してシステムへのアクセスを試みる可能性がありま す。 この問題を防止するためのヒントは、次のとおりです。 • ftpd -l コマンドを使用して、/etc/inetd.conf 内の ftp ロギングを有効にしま す。 • 異常なリモートアクセスが試みられていないかどうか、/var/adm/syslog/syslog.log および /var/adm/syslog/xferlog 内の ftp ログを調査します。 syslogd(1M) およ びxferlog(5) を参照してください。 • /etc/ftpd/ftpusers のリストに入れることによって、guest、root、およびその他 のアカウントへの ftp アクセスを拒否します。 ftpusers(4) を参照してください。 • ユーザーの ~/.netrc ファイルを定期的に検索して削除します。 .netrc ファイルに は、ftp autologin プロセス、rexec() ライブラリルーチン、および rexec コマンドに よって使用されるログイン、パスワード、およびアカウント情報が含まれます。 netrc(4) を参照してください。 9.1.2 匿名 ftp の保護 $HOME/.rhosts ファイルが /home/ftp に置かれていると、未認可ユーザーが rlogin を 使用してユーザー、ftp としてログインできる可能性があります。 rhosts ファイルでは、 パスワードなしで rcp、remsh、または rlogin を使用してローカルアカウントにアクセス 142 システムへのリモートアクセスの保護 できるホストとユーザーを指定します。 詳細については、hosts.equiv(4) を参照してくださ い。 匿名 ftp をより安全にするためのヒントは、次のとおりです。 • /home/ftp も、そのすべての子も、どちらも書き込み可能でないことを確認します。$ chmod -R a -w /home/ftp • /etc/passwd 内の ftp エントリが正しく設定されていることを確認します。 ftp:*:500:100:Anonymous FTP user:/var/ftp:/usr/bin/false • ~ftp/etc/passwd 内のすべてのパスワードがアスタリスク (*) であることを確認しま す。$ more ~ftp/etc/passwd root:*:0:3::/:/usr/bin/false daemon:*:1:5::/:/usr/bin/false • 書き込み可能な pub ディレクトリが必要な場合は、1733 パーミッションを使用します。 $ chmod 1733 /home/ftp/pub • ディスク割り当てまたは cron ジョブを使用して /home/ftp/pub のサイズを制御しま す。0 1 * * * find /home/ftp/pub/* -atime +1 exec rm -rf {} \; • /var/adm/syslog/syslog.log 内の匿名 ftp アクティビティを確認します。$ tail /var/adm/syslog/syslog.log 9.1.3 /etc/ftpd/ftpusers を使用したアクセスの拒否 サービス要求が /etc/services で示されるポートで受信されたときに、inetd デーモンは ファイル転送プロトコルサーバー、ftpd を実行します。 ftpd サーバーは、/etc/ftpd/ ftpusers にリストされているローカルユーザーアカウントへのリモートログインを拒絶し ます。 これらのユーザーアカウントは、制限付きアカウントと呼ばれます。 ftpd(1M)、 privatepw(1) およびservices(4) を参照してください。 /etc/ftpd/ftpusers ファイルで、各制限付きアカウント名が 1 行に単独で示される必要 があります。 また、/etc/passwd に定義されている制限付きログインシェルのあるユーザー アカウントを追加します。ftpd は、ログインシェルを使用せずにローカルアカウントにアク セスするからです。 /etc/ftpd/ftpusers が存在しない場合は、ftpd は、セキュリティチェックを実行しませ ん。 詳細については、ftpusers(4) を参照してください。 HP-UX 11i では、ftpd デーモンは WU-FTPD に基づいています。 WU-FTPD は、Washington University (ワシントン大学) で開発された ftpd デーモンの HP 実装版です。 WU-FTPD には、 拡張されたアクセス制御、強化されたロギング機能、仮想ホストのサポート、および RFC1413 (識別プロトコル) のサポートが含まれます。 詳細については、次のサイトの『 HP-UX Remote Access Services Administrator's Guide』 を参照してください。 http://docs.hp.com/en/netcom.html#Internet%20Services 9.1.4 スプーフィングに対するその他のセキュリティ対策 スプーフィングは、有効なユーザーまたはホストに成りすましてシステムに未許可アクセス をする手段です。 IP アドレスとホスト名はスプーフィングが可能なの で、/var/adm/inetd.sec セキュリティファイルを inetd (インターネットデーモン) に対 9.1 インターネットサービスおよびリモートアクセスサービスの概要 143 して使用することは、確実なセキュリティ対策とはいえません。 inetd に関する詳細につい ては、「inetd デーモン」を参照してください。 代わりのセキュリティ対策して、次のセキュリティ機能および製品があります。 • IPFilter は、アプリケーションサーバーを保護するシステムファイアウォールとしての使 用に適した TCP/IP パケットフィルターです。 詳細については、http://docs.hp.com/en/ internet.html#HP-UX%20IPFilter の『 HP-UX IPFilter Administrator's Guide』 を参照してく ださい。 • TCP ラッパーでは、inetd によって起動されセキュリティを強化する TCP ラッパーデー モン、tcpd が提供されます。 「TCP ラッパーによるスプーフィングからの保護」およ び http://docs.hp.com/en/netcom.html#Internet%20Services の『 HP-UX Internet Services Administrator's Guide』 を参照してください。 • 安全化インターネットサービス (SIS) では、ftp、rcp、remsh、rlogin、および telnet に対して Kerberos 認証と認可を使用することができます。 ユーザーパスワードの代わ りに、暗号化 Kerberos 認証では、ネットワーク上の転送を記録します。 「安全化イン ターネットサービス (SIS)」、http://docs.hp.com/en/netcom.html#Internet%20Services の『 Installing and Administering Security Services』、および http://docs.hp.com/en/ internet.html#Kerberos の『 Configuration Guide for Kerberos Client Products on HP-UX』 を参照してください。 • IP のセキュリティプロトコルスイート、IPSec は、データの完全性、認証、データプライ バシー、アプリケーションに依存しないセキュリティ、および暗号化などの IP ネット ワークのセキュリティを提供します。 『Building secure tunnels』 および http://docs.hp.com/en/internet.html#HP-UX%20IPSec の『 HP-UX IPSec Administrator's Guide』 を参照してください。 9.2 inetd デーモン インターネットデーモン、/usr/sbin/inetd は、複数のインターネットサービスのマスター サーバーです。 inetd デーモンは、ブートプロセス中に /sbin/init.d/inetd スクリプトによって自動的 に起動されます。 inetd デーモンは、/etc/inetd.conf 構成ファイル内にリストされたサービスに対する接 続要求をモニターし、要求の受信時に適切なサーバーを生成します。 すなわち、ユーザーは、 telnet などのインターネットサービスを使用してリモートシステムに接続します。 inetd デーモンは、接続が完了する前にホストからの telnet 接続が許可されるかどうかを判断し ます。 アクセスの許可または拒否についてのホスト情報は、/var/adm/inetd.sec ファイ ルにあります。 inetd デーモンは、次のように動作します。 1. 2. システムブート時に実行レベル 2 で起動します。 (システムの起動スクリプトに次のコ マンドがある場合: /sbin/init.d/inetd start) /etc/inetd.conf を確認して提供するサービスを決定します。 詳細については、ftp(1) およびinetd.conf(4) を参照してください。 144 システムへのリモートアクセスの保護 3. 4. 5. 6. 7. 8. /etc/services を確認して /etc/inetd.conf にリストされたサービスをモニター するポートを決定します。 /etc/services ファイルは、サービス名をポート番号に マッピングします。 詳細については、services(4) を参照してください。 クライアントからインターネットサービス接続要求を受信します。 たとえば、誰かが telnet を実行するような場合です。 /var/adm/inetd.sec を調べてクライアントにアクセスが許可されているかどうかを 特定します。 詳細については、inetd.sec(4) を参照してください。 ロギングが有効な場合は、要求を /var/adm/syslog/syslog.log に記録します。 詳 細については、syslogd(1M) を参照してください。 inetd がセキュリティ上の理由から接続を拒絶した場合は、接続はシャットダウンされ ます。 接続要求が有効な場合は、inetd はサーバープロセスを起動して有効な接続要求を処理 します。 サーバープロセスには、inetd に加えてその他のセキュリティ機能がありま す。 9.2.1 inetd の保護 /etc/inetd.conf ファイルは、inetd 構成ファイルです。これは、inetd デーモンが起 動できるサービスをリストします。 /etc/inetd.conf にリストされている各サービス は、/etc/services ファイルにも存在する必要があります。 /etc/services ファイル は、サービス名をポート番号にマッピングします。 各ポート番号には、tcp や udp などの関 連付けられたプロトコル名があります。 プロトコルに対するすべてのエントリには、/etc/ protocols ファイル内に一致するエントリが存在する必要があります。 inetd をより安全にするヒントは、次のとおりです。 • /etc/rc.config.d/netdaemons 内の inetd ロギングを有効にします。 詳細につい ては、rc.config.d(4) を参照してください。 • /etc/inetd.conf と /etc/services に変更がないかどうかを調査します。 未認可 ユーザーが root アクセスを取得して /etc/services および /etc/inetd.conf ファ イルを変更した可能性があります。 /etc/inetd.conf で、使用していないサービスの 名前を検索します。 /etc/services で、http://www.iana.org の Internet Assigned Numbers Authority (IANA) に登録されていないポート番号を検索します。 インターネッ トサービス用にリストされたポート番号が IANA に登録されたポート番号と一致するこ とを確認します。 • /etc/inetd.conf で、finger などの不必要なサービスをコメントアウトします。 finger コマンドでは、ユーザー情報の表示にパスワードを必要としません。 • /etc/inetd.conf で、リモートプロシージャコール (RPC) サービスをコメントアウト します。 • /etc/inetd.conf 内の inetd「internal trivial」サービスをコメントアウトし、DoS (Denial of Service:サービス拒否) 攻撃を回避します。 悪意のあるユーザーが、inetd を chargen (キャラクタジェネレータ) 要求によって過負荷状態にすることがあります。 詳 細については、inetd(1M) およびinetd.conf(4) を参照してください。 9.2 inetd デーモン 145 9.2.1.1 /var/adm/inetd.sec を使用したアクセスの拒否または許可 /etc/inetd.conf ファイルの構成に加えて、/var/adm/inetd.sec というオプションの セキュリティファイルを構成し、inetd によって起動されるサービスへのアクセスを制限す ることができます。 /var/adm/inetd.sec ファイルでは、各サービスへのアクセスを許可 または拒否されるホストのリストを示します。 詳細については、inetd.conf(4) を参照してく ださい。 例: login allow 10.3-5 192.34.56.5 ahost anetwork login deny 192.54.24.5 cory.example.edu.testlan 9.3 TCP ラッパーによるスプーフィングからの保護 Transmission Control Protocol (TCP) ラッパーは、inetd によって生成されたサービスに対す るセキュリティを強化します。 TCP ラッパーは、/etc/inetd.sec の使用に対する代替手 段です。 TCP ラッパーは、ホスト名およびホストアドレススプーフィングからの保護を提供 します。 スプーフィングは、有効なユーザーまたはホストに成りすましてシステムに未許可 アクセスをする手段です。 スプーフィングを防止するために、TCP ラッパーではアクセス制御リスト (ACL) を使用しま す。 ACL は、/etc/hosts.allow および /etc/hosts.deny ファイル内のシステムのリ ストです。 TCP ラッパーは、IP アドレスマッピングに対するホスト名を確認したり、IP の発 信元経路指定があるパケットを拒絶したりするように設定された場合には、IP スプーフィン グからある程度保護します。 しかし、TCP ラッパーでは、暗号認証やデータ暗号化は提供しません。 inetd と同様に、情 報はクリアテキストで渡されます。 TCP ラッパーは、HP-UX インターネットサービスソフトウェアの一部です。 詳細については、 http://docs.hp.com/en/netcom.html#Internet%20Services の 『HP-UX Internet Services Administrator's Guide』 と次のマンページを参照してください。 tcpd(1M)、tcpdmatch(1)、tcpdchk(1)、tcpd.conf(4)、hosts_access(3)、hosts_access(5)、 hosts_options(5)。 TCP ラッパーを有効にすると、inetd は、要求されたサービスを直接実行する代わりに、TCP ラッパーデーモン、tcpd を実行します。 TCP ラッパーは、次のように動作します。 1. 2. 3. 4. 5. 146 クライアントは、通常のように、inetd に接続要求を送信します。例: telnet。 サーバープロセスを起動する代わりに、inetd は、TCP ラッパーデーモン (tcpd) を呼 び出します。 TCP ラッパーデーモンは、クライアントの接続要求の有効性を判断します。 tcpd デー モンは、要求を記録し、アクセス制御ファイル (/etc/hosts.allow および /etc/ hosts.deny) を確認します。 クライアントが有効な場合は、tcpd は、適切なサーバープロセスを呼び出します。 サーバープロセスは、クライアントの要求を処理します。たとえば、telnet 接続を完 了します。 システムへのリモートアクセスの保護 9.3.1 TCP ラッパーの追加機能 構成パラメータを /etc/tcpd.conf 構成ファイル内に定義することもできます。ロギング 動作、ユーザー名検索、および逆検索失敗動作などです。 tcpd デーモンは、この構成ファ イル を読んで実行時に構成パラメータを検索します。 /etc/hosts.allow および /etc/hosts.deny ファイルをその他のセキュリティ機能用に 設定することができます。トラップ設定やバナーメッセージなどです。 TCP ラッパーのトラップ設定機能を使用すると、リモートホストからの接続試行で拒否され た回数により、適切なアクションを起動させることができます。 バナーメッセージ機能は、アクセス制御ファイルに ACL 規則が含まれる場合に、メッセージ がクライアントに送信されるようにします。 9.3.2 TCP ラッパーは RPC サービスと連動しない TCP ラッパーは、TCP を介してリモートプロシージャコール (RPC) と連動しません。 これら のサービスは、/etc/inetd.conf ファイル内に rpc または tcp として登録されています。 この制限によって影響を受ける唯一の重要なサービスは、on コマンドによって使用される rexd です。 9.4 安全化インターネットサービス (SIS) 安全化インターネットサービス (SIS) は、オプションで有効になる機構で、リモートアクセス サービス (ftp、rcp、remsh、rlogin、および telnet) に対する Kerberos V5 認証と認可 を実装しています。 安全なインターネットサービスは、HP-UX インターネットサービス製品の一部です。これは、 http://docs.hp.com/en/netcom.html#Internet%20Services の『 Using HP-UX Internet Services』 と次のマンページに文書化されています。 sis(5)、kinit(1)、klist(1)、kdestroy(1M)、krbval(1M)、k5dcelogin(1M)、inetsvcs_sec(1M)、 inetsvcs(4)。 SIS コマンドを実行する場合は、ネットワークを介して読取り可能な形式でパスワードを転送 する必要がなくなりますので、セキュリティが向上します。 注記: SIS ライブラリはユーザーを認可したりサービスを認証したりするために必要なもの 以外には、セッションを暗号化しません。 したがって、これらのサービスでは、データやリ モートサービスに対する完全性チェックや暗号化サービスは行いません。 データを暗号化す るには、OpenSSL を使用してください。 詳細については、http://docs.hp.com/en/ internet.html#OpenSSL の『 OpenSSL Release Notes』 を参照してください。 2 つのシステムが Kerberos V5 ベースのセキュリティ環境で作動している場合、安全化イン ターネットサービスは、ローカルホストとリモートホストが安全かつ信頼性の高い方法で相 互に確認し、ユーザーがリモートアカウントへアクセスする権限を取得できるように保証し ます。 ftp/ftpd、rlogin/rlogind、および telnet/telnetd の場合は、Kerberos V5 認証機 構は、ユーザーの確認と識別のためにネットワークを介してパスワードの代わりに暗号化さ れたチケットを送信します。 rcp/remshd および remsh/remshd を使用すると、それらの 9.4 安全化インターネットサービス (SIS) 147 サービスの安全なバージョンによって、ユーザーはリモートアカウントへアクセスする権限 を確実に取得することができます。 9.5 運用領域の制御 すべてのネットワーク管理プログラムは、root ではなく、uucp、nso などの保護されたネッ トワーク固有のアカウントによって、またはデーモンによって所有される必要があります。 運用領域とは、パスワード検査なしで相互アクセスをユーザーに許可する、ネットワークサー ビスで接続された一群のシステムです。 運用領域では、システムユーザーがホストシステム によってすでに確認されていることを前提としています。 次の手順に従って、運用領域の確 認や制御を行ってください。 1. /etc/exports 内のファイルシステムをエクスポートするノードを列記します。 /etc/ exports ファイルには、ファイルシステムパス名のエントリと、ファイルシステムへの アクセスが許可されたシステムまたはシステムのグループのリストが含まれています。 /etc/exports エントリには、システムのグループ名が含まれている場合があります。 /etc/netgroup を確認することで、グループに含まれている個々のシステムを検出す ることができます。 2. /etc/hosts.equiv 内に等価なパスワードデータベースのあるノードをリストします。 3. 運用領域内の各ノードが、その中に含まれていない任意のノードにまで特権を拡張して いないことを確認します。 領域内のノードごとに手順 2~3 を繰り返します。 4. 運用領域内のすべてのノード上のルートおよびローカルのセキュリティを制御します。 領域内の任意のマシン上のスーパーユーザー特権を持つユーザーは、領域内のすべての マシン上でそれらの特権を獲得できます。 5. 運用領域内のパスワードファイル間で、ユーザー名、uid、および gid の整合性を維持 します。 6. 運用領域内のすべてのノード上のあらゆるグループファイル間で、整合性を維持します。 たとえば、hq および mfg システムで整合性を確認するには、mfg システムのルートファ イルシステムがリモートで hq に /nfs/mfg/としてマウントされている場合は、次の diff コマンドを入力します。$ diff /etc/group /nfs/mfg/etc/group。何らか の差異が表示される場合は、2 つの /etc/group ファイルには整合性がありません。整 合性が必要です。 9.5.1 ネットワーク制御ファイルのパーミッション設定の確認 /etc ディレクトリ内のネットワーク制御ファイルは、ネットワーク自体へのアクセスを提供 しますので、セキュリティの対象になります。 ネットワーク制御ファイルは、決して一般ユー ザーから書き込み可能にしてはいけません。 すべてのシステムファイルでモード、所有者、およびグループを注意深く設定します。 これ らのファイルが変更されていないかどうかを定期的に確認してください。変更があれば修正 してください。 最もよく使用されるネットワーク制御ファイルは、次のとおりです。 • /etc/exports NFS クライアントにエクスポートできるディレクトリのリスト。 詳細については、 exports(4) を参照してください。 • 148 /etc/hosts システムへのリモートアクセスの保護 ネットワークホストとそれらの IP アドレスのリスト。 詳細については、hosts(4) を参照 してください。 • /etc/hosts.equiv アクセスが許可されローカルホストと等価のリモートホストのリスト。 詳細について は、hosts.equiv(4) を参照してください。 • /etc/inetd.conf インターネットサービス構成ファイル。 詳細については、inetd.conf(4) を参照してくだ さい。 • /etc/netgroup ネットワーク全体のグループのリスト。 詳細については、netgroup(4) を参照してくださ い。 • /etc/networks ネットワーク名とそれらのネットワーク番号のリスト。 詳細については、networks(4) を 参照してください。 • /etc/protocols プロトコル名と番号のリスト。 詳細については、protocols(4) を参照してください。 • /etc/services 正式なサービス名とエイリアス、サービスの使用するポート番号およびプロトコルのリ スト。 詳細については、services(4) を参照してください。 9.6 HP-UX Secure Shell (SSH) を使用したリモートセッションの保護 HP-UX Secure Shell は、オープンソース SSH 製品 (http://www.openssh.org ) である OpenSSH 製品に基づいています。 この製品がなければ安全ではなかったネットワーク上で、クライア ントとリモートホスト間の安全な接続を可能にします。 この安全な接続の重要な属性は、次 のとおりです。 • クライアントとリモートホストの両方に対する強力な認証。 • クライアントリモートホスト間の通信用の強力な暗号化および公開鍵暗号法。 • クライアントがリモートホスト上でコマンドを実行するために使用する安全なチャネル。 HP-UX Secure Shell は、telnet、remsh、rlogin、ftp、および rcp のようなよく使用さ れる機能とコマンドの安全な代替物を提供します。 HP-UX Secure Shell のドキュメンテーションについては、ssh クライアント用のssh(1) マン ページと sshd サーバー用のsshd(8) マンページを参照してください。 どちらのマンページに も、製品に付属の他の HP-UX Secure Shell マンページへの参照情報が含まれています。 http://docs.hp.com/en/internet.html#Secure%20Shell の『 HP-UX Secure Shell Release Notes』 も参照してください。 9.6 HP-UX Secure Shell (SSH) を使用したリモートセッションの保護 149 9.6.1 HP-UX Secure Shell の重要なセキュリティ機能 HP-UX Secure Shell の重要なセキュリティ機能は、次のとおりです。 • 強力な暗号化 クライアントとリモートホスト間の通信はすべて、Blowfish、3DES、AES、および arcfour などの特許権なしの暗号化アルゴリズムを使用して暗号化されます。 パスワードなどの 認証情報は、ネットワーク間でクリアテキストで送信されることはありません。 暗号化 と強力な公開鍵ベース暗号法の組み合わせによって、潜在的なセキュリティ侵害からも 保護することができます。 • 強力な認証 HP-UX Secure Shell は、クライアントとサーバー間の強力な一連の認証方式をサポートし ます。 認証は、2 方向で可能です。つまり、サーバーがクライアントを認証し、クライ アントがサーバーを認証します。 これによって、各種のセキュリティ上の問題からセッ ションが保護されます。 サポートされる認証方式は、「HP-UX Secure Shell 認証」に記 述されています。 • ポートフォワード クライアントとリモートホスト間の TCP/IP 接続のリダイレクション (および戻り) は、 ポートフォワードまたは SSH トンネリングといいます。 HP-UX Secure Shell は、ポート フォワードをサポートします。 たとえば、クライアントとサーバー間の ftp トラフィッ ク (または電子メールクライアントと POP/IMAP サーバー間の電子メールトラフィック) は、ポートフォワードを使用してリダイレクトされます。 クライアントがサーバーと直 接通信する代わりに、sshd サーバーに安全なチャネルを通してトラフィックがリダイ レクトされ、次に sshd サーバーがトラフィックを実際のサーバーマシンの指定された ポートに転送することができます。 • 基底をなす HP-UX セキュリティ機能との統合。 HP-UX Secure Shell 製品は、重要な HP-UX セキュリティ機能と統合されています。 詳細 については、「HP-UX Secure Shell と HP-UX システム」を参照してください。 9.6.2 HP-UX Secure Shell のソフトウェア構成要素 HP-UX Secure Shell ソフトウェアは、一連のクライアントおよびサーバー構成要素から構成さ れます。 表 9-2 「HP-UX Secure Shell のソフトウェア構成要素」を参照してください。 表 9-2 HP-UX Secure Shell のソフトウェア構成要素 150 構成要素 説明 ssh Secure Shell クライアントは、telnet および クライアント remsh の安全な代替品です。セキュリティ機能を 有する remsh とよく似ています。 remsh、telnet、 rlogin slogin ssh へのシンボリックリンク クライアント remsh、telnet、 rlogin scp 安全なコピークライアントおよび安全なコピー サーバー クライアントおよ rcp びサーバー システムへのリモートアクセスの保護 場所 等価の安全でない構成 要素 表 9-2 HP-UX Secure Shell のソフトウェア構成要素 (続き) 構成要素 説明 場所 等価の安全でない構成 要素 sftp 安全な ftp クライアント クライアント ftp sshd Secure shell デーモン サーバー remshd、telnetd、 rlogind sftp-server 安全な ftp デーモン サーバー ftpd ssh-rand-helper 乱数ジェネレータ。sshd がサーバー上で /dev/ サーバー random または /dev/urandom を検出できない ときに使用されます。 HP-UX には、カーネル常駐 の乱数ジェネレータ、rng が付属しています。 rng が設定解除されている場合は、sshd は prngd を使用します。 該当なし ssh-agent クライアントからサーバーへの「自動」鍵ベース クライアントおよ rhosts ファイル機構 のログイン用のツール びサーバー ssh-add ssh-agent に認識されているクライアントの鍵 ペアを作成するためのツール クライアント 該当なし ssh-keygen 公開鍵認証用の鍵ペアを生成するためのツール クライアント 該当なし ssh-keyscan クライアントが Secure Shell デーモン (sshd) を クライアント 実行する一連のホストに対する公開鍵を収集する ためのツール。 該当なし ssh-keysign ホストベースの認証中に必要とされる電子署名を クライアント 生成するツール。ssh() が使用してローカルホスト 鍵によるホストベース認証にアクセスします。 該当なし 9.6.3 HP-UX Secure Shell の実行 表 9-2 「HP-UX Secure Shell のソフトウェア構成要素」にリストされている任意の Secure Shell クライアントを実行する前に、まず、Secure Shell サーバーデーモン、sshd を起動してくだ さい。 sshd デーモンは、その最初の構成値を sshd_config ファイルから取得します。こ のファイルは、サーバーシステムの /opt/ssh/etc ディレクトリにあります。 sshd_config 内の最も重要な構成指令の 1 つは、sshd デーモンがサポートする一連の認証方式です。 詳 細については、「HP-UX Secure Shell 認証」を参照してください。 9.6.3.1 ssh クライアントの実行 ssh クライアントアプリケーションは、sshd サーバーとのソケット接続を確立します。 sshd サーバーは、子 sshd プロセスを生成します。 この子は、接続ソケットを継承し、選択され た認証方式に従ってクライアントを認証します。 正常で安全なクライアントセッションは、 正常な認証の場合にのみ確立されます。 セッションの作成後に、クライアントとこの子 sshd プロセス間で直接、後続の通信が発生 します。 これで、クライアントはサーバー上のリモートコマンドを実行できるようになりま す。 ssh クライアントからの各コマンド要求によって、子 sshd プロセスがそのコマンドを 実行するシェルプロセスを生成することになります。 9.6 HP-UX Secure Shell (SSH) を使用したリモートセッションの保護 151 まとめると、動作中の ssh クライアントサーバーセッションは、次のプロセスから構成され ます。 • sshd サーバーに接続されたすべてのクライアントシステムには、そのクライアントシ ステムから現在確立されている ssh 接続ごとに 1 つの ssh クライアントプロセスがあ ります。 • サーバーシステムには、1 つのの親 sshd プロセス、およびサーバーに同時接続されて いる ssh クライアントと同じ数の子 sshd プロセスがあります。 サーバー上で特権分 離が有効になっている場合は、サーバー上で動作する子 sshd プロセスの数は 2 倍にな ります。 「HP-UX Secure Shell 特権分離」を参照してください。 • サーバーシステム上では、ssh クライアントからのコマンド実行要求ごとに、対応する 子 sshd プロセスがシェルプロセスを生成し、UNIX パイプを使用してコマンド要求を このシェルプロセスに伝達します。 このシェルプロセスは、コマンドの実行結果を UNIX パイプを使用して子 sshd プロセスに戻し、コマンドの実行が完了すると終了します。 9.6.3.2 sftp クライアントの実行 sftp クライアントアプリケーションは、sftp クライアントプロセスに ssh クライアントを 生成させ、次に UNIX パイプを使用してそれと通信させます。 その後、ssh クライアントは、 sshd サーバーとのソケット接続を確立します。 その他のサーバー相互作用は、「ssh クライアントの実行」に記述されている ssh クライア ントの事例とほぼ同じです。 違いは、リモートコマンドを実行するシェルを生成する代わり に、子 sshd プロセスが sftp-server プロセスを生成することです。 この sftp セッショ ン中のその後の通信はすべて、次のプロセスの間で発生します。 • sftp クライアントと ssh クライアント。クライアントシステム上で、UNIX パイプを 使用します。 • ssh クライアントと子 sshd プロセス。確立された接続ソケットを介します。 • 子 sshd プロセスと sftp サーバープロセス。UNIX パイプを使用します。 9.6.3.3 scp クライアントの実行 scp クライアントの事例は、sftp クライアント実行とほぼ同じです。 違いは、sftp-server を生成する代わりに、子 sshd プロセスが scp プロセスを生成することです。 scp セッショ ン中のその後の通信はすべて、次のプロセスの間で発生します。 • scp クライアントと ssh クライアント。クライアントシステム上で、UNIX パイプを使 用します。 • ssh クライアントと子 sshd プロセス。確立された接続ソケットを介します。 • 子 sshd プロセスと scp サーバープロセス、UNIX パイプを使用します。 9.6.4 HP-UX Secure Shell 特権分離 HP-UX Secure Shell は、特権分離機能を通して、より高度のセキュリティを提供します。 「HP-UX Secure Shell の実行」の説明のとおり、親 sshd および子 sshd プロセスは、特権 ユーザーとして動作します。 特権分離が有効な場合は、ユーザー接続ごとにプロセスが 1 つ 余計に生成されます。 152 システムへのリモートアクセスの保護 ssh クライアントが特権分離用に設定された sshd サーバーに接続すると、親 sshd プロセ スは特権子 sshd プロセスを生成します。 特権分離が有効な場合は、この子 sshd プロセス は、追加の非特権子 sshd プロセスを生成します。 この非特権子 sshd プロセスは、次に、 接続ソケットを継承します。 クライアントとサーバー間のその後の通信はすべて、この非特 権子 sshd プロセスを使用して発生します。 クライアントからのほとんどのリモートコマンド実行要求は非特権であり、この非特権子 sshd プロセスの下で生成されたシェルによって処理されます。 非特権子 sshd プロセスが 特権機能を実行する必要がある場合は、UNIX パイプを使用してその特権親 sshd プロセスと 通信します。 特権分離は、侵入者からの潜在的な被害の抑制に役立ちます。 たとえば、シェルコマンド実 行中にバッファーオーバーフロー攻撃が発生した場合は、制御は非特権プロセス内にあり、 したがって、潜在的なセキュリティ上のリスクが抑制されます。 注記: 特権分離は、HP-UX Secure Shell のデフォルト設定です。 sshd_config ファイルの UsePrivilegeSeparation NO を設定することで、特権分離をオフにすることができます。 セキュリティリスクが潜在する可能性があるので、特権分離は十分に検討してから無効にし てください。 9.6.5 HP-UX Secure Shell 認証 HP-UX Secure Shell は、次の認証方式をサポートします。 • GSS-API (Kerberos ベースのクライアント認証) • 公開鍵認証 • ホストベース認証 • パスワード認証 クライアントがリモートの sshd デーモンと接続するときは、希望の認証方式 (上記のいずれ か) を選択し、接続要求の一部として適切な証明書を提示するか、サーバーから送り返された プロンプトに応答します。 すべての認証方式は、このように動作します。 サーバーは、正常な接続を確立するために、クライアントから適切な鍵、パスフレーズ、パ スワード、または証明書を必要とします。 sshd インスタンスに、セキュリティ要件に基づき、サポートされる認証方式のサブセットの みをサポートさせることができます。 HP-UX Secure Shell は上記の認証方式をサポートしますが、システム管理者は、その環境の具 体的なセキュリティ要件に従って、sshd インスタンスの提供する認証方式を制限することが できます。 たとえば、ある HP-UX Secure Shell 環境では、すべてのクライアントは公開鍵ま たは Kerberos 方式を使用して認証しなければならないと指示することができます。 その結 果、残りの方式は無効になります。 サポートされる認証方式の有効化と無効化は、 sshd_config ファイルに指定された構成指令によって行われます。 ssh クライアント接続要求が行われると、サーバーは、まず、そのサポートされる認証方式 のリストによって応答します。 このリストは sshd サーバーのサポートする認証方式を示し、 それらの方式の順序は試行される順序です。 クライアントは、それらの認証方式のうちの 1 つまたは複数を省略することができます。 また、クライアントは、方式が試行される順序を 9.6 HP-UX Secure Shell (SSH) を使用したリモートセッションの保護 153 変更することもできます。 それには、クライアント構成ファイル、/opt/ssh/etc/ ssh_config 内の構成指令を使用します。 HP-UX Secure Shell のサポートする認証方式は、次の項にまとめられています。 9.6.5.1 GSS-API Kerberos ベースクライアント認証である Generic Security Service Application Programming Interface (GSS-API) を使用すると、クライアントは事前に Kerberos 証明書を取得する必要が あります。また、適切なクライアントディレクトリに Kerberos 構成ファイルが存在しなけれ ばなりません。 クライアントが sshd デーモンに接続するときに、クライアントはその証明 書を接続時に提示します。 サーバーはこれらの証明書を、この特定のユーザーに対する証明 書のコピーと照合します。 また、サーバーは、オプションで、クライアントのホスト環境の 妥当性を確立することができます。 詳細については、http://docs.hp.com/en/internet.html#Kerberos のgssapi(5)、kerberos(9)、お よび Kerberos 管理者のドキュメンテーションを参照してください。 9.6.5.2 公開鍵認証 公開鍵認証では、Secure Shell 環境は次をセットアップする必要があります。 • クライアントとサーバーの両方が鍵ペアをもつ必要があります。 すべての ssh クライ アントおよびすべての sshd サーバーは、ssh-keygen ユーティリティを使用して自身 の鍵ペアを生成する必要があります。 • クライアントは、通信が必要なすべての sshd サーバーに、その公開鍵を知らせる必要 があります。 それには、各クライアントの公開鍵を、関連する各サーバーにある事前に 決められているディレクトリにコピーしてください。 • クライアントは、通信が必要なすべてのサーバーの公開鍵を取得する必要があります。 クライアントは、ssh-keyscan ユーティリティを使用して公開鍵を取得します。 このセットアップが完了したら、sshd サーバーに接続している ssh クライアントは公開鍵 と秘密鍵を使用して認証されます。 公開鍵暗号法に関する詳細については、「公開鍵暗号方 式」を参照してください。 HP-UX Secure Shell は、公開鍵認証を効率化する追加機能を提供します。 環境によっては、常 にパスワードプロンプトに応答しなくても済むようにしたいことがあります。 クライアント マシン上で動作する ssh-agent プロセスと ssh-add プロセスの組み合わせを使用すること で、パスワードプロンプトに応答しなくてもよいようにすることができます。 クライアント は、ssh-add ユーティリティを使用して ssh-agent プロセスにそのすべての鍵情報を登録 します。 そうすると、クライアントとサーバー間の公開鍵認証は、ssh-agent によって、 sshd デーモンがクライアントと対話する必要なくなります。 9.6.5.3 ホストベースおよび公開鍵認証 ホストベースおよび公開鍵認証は、公開鍵認証を拡張してより安全にしたものです。 この方 式は、クライアントとサーバーの両方に対する鍵ペアをもつことに加えて、クライアント環 境が、通信相手のサーバーを制限することができるようにします。 この制限を実装するには、 クライアントのホームディレクトリに .rhosts ファイルを作成してください。 154 システムへのリモートアクセスの保護 9.6.5.4 パスワード認証 パスワード認証方式は、単一のユーザー ID およびパスワードベースのログインの在り方に依 存します。 このログインは、/etc/passwd に指定されたユーザーのログインに基づくか、 PAM ベースになります。 HP-UX Secure Shell は、サーバーシステム上にある PAM モジュールと完全に統合されていま す。 この目的のために、/opt/ssh/etc/sshd_config ファイルには、UsePAM 構成指令 が記述されています。 YES に設定されると、クライアントからのあらゆるパスワード認証要 求で、sshd が PAM 構成ファイル (/etc/pam.conf) を参照します。 次に、構成済み PAM モジュールを使用して、パスワード認証が順に成功するまで実行されます。 PAM 認証に関す る詳細については、pam.conf(4) を参照してください。 PAM 認証を無視するには、UsePAM 指令を NO に設定してください。 そうすると、クライア ントからのあらゆるパスワード認証要求で、sshd がサーバー上の PAM 構成設定を無視しま す。 代わりに、sshd は、getpwnam() ライブラリ呼び出しを直接呼び出すことで、ユーザー パスワード情報を取得します。 HP-UX Secure Shell は、PAM_UNIX、PAM_LDAP、および PAM_KERBEROS でテスト済みです。 PAM_DCE や PAM_NTLM などのその他の PAM モジュールでも動作すると考えられます。 9.6.6 通信プロトコル HP-UX Secure Shell ユーザーは、SSH-1 または SSH-2 プロトコルを使用してリモート sshd デーモンと接続することができます。 SSH-2 のほうが安全です。SSH-1 に代えて使用するこ とを強くお勧めします。 9.6.7 HP-UX Secure Shell と HP-UX システム HP-UX Secure Shell は、実際には、本当のシェルではありません。 クライアントとリモートホ スト間で安全な接続を作成しリモートシェルセッションをホスト上で安全に実行するための 機構です。 安全な接続を実現するために、HP-UX Secure Shell 自体がほとんどの認証および セッション作成を行います。 HP-UX Secure Shell の使用する機能の例は、次のとおりです。 • login 試行のロギング telnet や remsh のように、HP-UX Secure Shell は、正常なセッションと失敗したセッ ションを、それぞれ /var/adm/wtmp ファイルと /var/adm/btmp ファイルに記録し ます。 詳細については、utmp(4) を参照してください。 • PAM モジュール 「HP-UX Secure Shell 認証」の説明のとおり、HP-UX Secure Shell はクライアントセッショ ンに PAM 認証を使用することができます。 PAM 認証が選択されると、HP-UX Secure Shell は /etc/pam.conf ファイルを使用し、認証用の PAM モジュールを起動します。 /etc/pam.conf ファイルに関する詳細については、pam.conf(4) を参照してください。 • /etc/default/security ファイルの使用 これは、ログインの動作、パスワードなどのセキュリティ設定を定義する属性を含む、 システム全体の構成ファイルです。 HP-UX Secure Shell は、これらの属性の使用を一部 制限付きで許可します。これについては、/opt/ssh/README.hp ファイルの HP-UX Secure Shell の部分に説明されています。 9.6 HP-UX Secure Shell (SSH) を使用したリモートセッションの保護 155 /etc/default/security ファイルに関する詳細については、security(4) を参照してく ださい。 • シャドウパスワード HP-UX Secure Shell は、HP-UX シャドウパスワード機能と統合されています。 詳細につ いては、shadow(4) を参照してください。 • 制御システムログ (syslog) HP-UX Secure Shell は、syslog を使用して重要なメッセージを書き込みます。 詳細に ついては、syslog(3C) およびsyslogd(1M) を参照してください。 • 監査ロギング HP-UX Secure Shell は、それ自体のコードに監査ロギング (高信頼性モードで) を実装し ました。 詳細については、audit(5) を参照してください。 9.6.8 関連するテクノロジ HP-UX Secure Shell は、次のテクノロジでテスト済みです。 • Kerberos 5 および GSS-API • OpenSSL • IPv6 • TCP ラッパー • PAM (PAM_UNIX、PAM_Kerberos、PAM_LDAP) • HP-UX 強力な乱数ジェネレータ 9.6.9 強力な乱数ジェネレータの要件 すべての暗号鍵ベース製品と同様に、HP-UX Secure Shell には乱数ジェネレータが必要です。 HP-UX 強力な乱数ジェネレータ特殊デバイスファイル、/dev/urandom および /dev/random を検索し、最初に見つけた特殊デバイスファイルを使用します。 これら 2 つのファイルがシ ステム上に存在しない場合は、HP-UX Secure Shell は、それ自体の内部乱数ジェネレータ、 ssh-rand-helper を使用します。 HP-UX 強力な乱数ジェネレータは、HP-UX Secure Shell のパフォーマンスとエントロピー (で たらめさの尺度。すなわち、生成された鍵の安全さ) を向上させます。 再現不可能な、本当 の乱数を生成します。 HP-UX 強力な乱数ジェネレータは、HP-UX Secure Shell での使用を強く お勧めします。 HP-UX 強力な乱数ジェネレータは、デフォルトで使用可能です。 詳細については、random(7) を参照してください。 9.6.10 TCP ラッパーのサポート HP-UX Secure Shell デーモン、sshd は、アーカイブライブラリ、libwrap.a にリンクされ て TCP ラッパーをサポートします。 「TCP ラッパーによるスプーフィングからの保護」も参 照してください。 156 システムへのリモートアクセスの保護 9.6.11 chroot の牢獄ディレクトリ chroot は、牢獄ディレクトリです。 指定したディレクトリのアプリケーションを起動し、 ユーザーをそのディレクトリとその下のディレクトリへのアクセスのみに制限します。 ユー ザーは指定したディレクトリより上位のディレクトリに変更することができません。 これは、 ファイルおよびディレクトリのアクセスを、アプリケーション使用中はそのアプリケーショ ンのユーザーのみに制限することを意図したものです。 アプリケーションの chroot を有効にする必要があります。 新しいディレクトリを作成し て、関連する一連のファイルをそれらの新しく作成されたディレクトリにコピーする必要が あります。 オプションで、chroot ディレクトリによって、ssh、scp、および sftp を設定することが できます。 /opt/ssh/README.hp の HP-UX Secure Shell README ファイルには、chroot 機能、chroot セットアップスクリプト、および ssh、sftp、および scp を chroot 環境で有効にするた めにこのスクリプトがコピーする特定のファイルについて説明されています。 chroot(1M) も 参照してください。 chroot セットアップスクリプトは、/opt/ssh/utils/ssh_chroot_setup.sh ファイル にあります。これは、HP-UX Secure Shell ソフトウェア製品 (Secure Shell 4.30.004/005) に 含まれています。 9.6 HP-UX Secure Shell (SSH) を使用したリモートセッションの保護 157 158 第10章 監査管理 監査の目的は、セキュリティ侵害の分析と検出のためにイベントを選択的に記録することで す。 監査データは、ログファイルに記録されます。 したがって、監査システムはシステム悪 用に対する抑止力として働き、潜在的なセキュリティの弱点を明らかにします。 監査システムは、システム上の対象物への主体によるアクセスのインスタンスを記録します。 保護機構すり抜けのあらゆる (繰り返される) 試みおよび特権のあらゆる悪用を検出します。 システム内のセキュリティの潜在的な弱点を明らかにするのにも役立ちます。 ユーザーがログインすると、「監査タグ」という一意の監査セッション ID が生成され、ユー ザーのプロセスに関連付けられます。 各ログインセッション中、監査タグが変化することは ありません。 ユーザーが 1 つのセッション内で ID を変更したとしても、すべてのイベント は同じ監査タグで記録され、元のログインユーザー名の下で解釈されます。 監査記録は、選択されたセキュリティ関連のシステムイベントに対して生成されます。 各監 査記録には、イベントについての情報が含まれています。たとえば、イベントの概要、発生 時刻、発生させたユーザーの ID、発生させたプロセスの ID などです。 監査記録は、監査ログ/ファイルにバイナリ形式で収集されます。 HP-UX 11i v3 リリースの HP-UX 監査システムには、複数の書き込みスレッドを使用してデータをファイルに記録する 機能があります。 各書き込みスレッドは、1 つのファイルに書き込みをします。 これによっ て、データのスループットが向上します。 結果として、監査ログは、複数の監査ファイルを 含むディレクトリとしてファイルシステム上に存在します。 監査ログ内のレコードは圧縮して、ファイルスペースを節約します。 初めてプロセスが監査 されると、プロセスのライフタイムにわたって変化しない情報が含まれる監査ログにプロセ ス識別レコード (PIR) が書き込まれます。 これには、プロセス ID、親プロセスの ID、監査タ グ、実ユーザー ID、実グループ ID、実効ユーザー ID、実効グループ ID、グループ ID リス ト、許可および維持されている実効特権、コンパートメント ID、およびターミナル ID が含ま れます。 PIR は、監査ログおよびプロセス当たり、1 回だけ入力されます。 本章では、次のトピックについて説明します。 • 「監査構成要素」 • 「システムの監査」 • 「ユーザーの監査」 • 「イベントの監査」 • 「監査ログ」 • 「監査ログの表示」 • 「自己監査」 • 「HP-UX RBAC 監査」 10.1 監査構成要素 HP-UX 11i の監査機能には、構成ファイル、コマンド、およびマンページが含まれています。 これらは、以下の項にリストされています。 10.1 監査構成要素 159 10.1.1 コマンド 表 10-1 「監査コマンド」 には、各監査コマンドの簡単な説明が記述されています。 表 10-1 監査コマンド コマンド 説明 audevent イベントまたはシステムコールステータスを変更または表示します。 audisp 監査レコードを表示します。 audomon 監査ファイルモニターおよびサイズパラメータを設定します。 audsys 監査を開始または停止します。監査ファイルまたはディレクトリ情報を設定およ び表示します。 userdbset AUDIT_FLAG=1 オプションを指定することによって、監査されるユーザーを選択 します。 10.1.2 監査構成ファイル 表 10-2 「監査構成ファイル」の表には、監査機能に関連付けられている各構成ファイルの簡 単な説明が記述されています。 表 10-2 監査構成ファイル ファイル 説明 /etc/audit/audit.conf 定義済みイベント分類情報のあるファイル。 /etc/audit/ auditr_site.conf サイト固有のイベント分類情報のあるファイル。 /etc/default/security システム全体の監査デフォルト設定のあるファイル。 /var/adm/userdb ユーザーごとの監査情報を含むデータベース。 /etc/rc.config.d/ auditing システムの再ブート時に監査に起動を指示する構成情報を含むファイル。 10.1.3 監査マンページ 表 10-3 「監査マンページ」には、監査機能に関連付けられている各マンページの簡単な説明 が記述されています。 表 10-3 監査マンページ マンページ 説明 audevent(1M) audevent の機能と構文を説明します。 audisp(1M) audisp の機能と構文を説明します。 audomon(1M) audomon の機能と構文を説明します。 audsys(1M) audsys の機能と構文を説明します。 userdbset(1M) userdbset の機能と構文を説明します。 160 監査管理 表 10-3 監査マンページ (続き) マンページ 説明 audit.conf(4) /etc/audit/audit.conf ファイルについて説明します。 audit(5) HP-UX 監査に関する予備的な情報を提供します。 10.2 システムの監査 システム上の監査の計画、有効化、およびモニターをするには、次の手順を使用してくださ い。 10.2.1 監査実装の計画 監査実装を計画するには、次の手順に従ってください。 1. 2. 監査対象のユーザーを特定します。 デフォルトでは、すべてのユーザーが監査対象とし て選択されています。 監査対象のイベントまたはシステムコールを特定します。 現在監査対象のイベントおよ びシステムコールのリストを表示するには、audevent コマンドを使用してください。 イベントとシステムコールは、グループ化してプロファイルにすることができます。 3. 4. システム上で監査ログファイル (監査ログ) を配置する場所を決定します。 監査ログファ イルの構成に関する詳細は、「監査ログ」を参照してください。 監査ファイルのアーカイブとバックアップの戦略を作成します。 監査ファイルは、ディ スクスペースを大量に消費することがあります。また、ファイル管理を注意深く行わな いと、オーバーフローすることがあります。 audomon コマンドに-X オプションを指定 してアーカイブを自動化します。 監査実装に役立つ監査システムパフォーマンスおよび管理に関する詳細は、「性能の留意事 項」および「監査システムの運用のためのガイドライン」を参照してください。 10.2.2 監査の有効化 システムでの監査を有効にするには、次の手順に従ってください。 1. 2. userdbset コマンドを使用して、監査するユーザーを構成します。 ユーザーに対する 監査の構成に関する詳細は、「ユーザーの監査」を参照してください。 audevent コマンドを使用して、監査するイベントを構成します。 たとえば、MySitePolicy に従って監査するには、次のコマンドを入力します。 # audevent -P -F -r MySitePolicy MySitePolicy は、/etc/audit/audit_site.conf ファイルに定義されている必要が あります。 audevent コマンドをオプションなしで使用し、現在監査対象として構成されているイ ベントおよびシステムコールのリストを表示します。 イベントに対する監査の構成に関する詳細は、「イベントの監査」を参照してください。 3. /etc/rc.config.d/auditing ファイルの audevent 引き数パラメータを設定し、 システムの再ブート時に監査システムが現在の構成パラメータを維持できるようにしま 10.2 システムの監査 161 す。 たとえば、手順 2 で構成したパラメータを維持するには、次のようにパラメータを 設定します。 AUDEVENT_ARGS1 = –P –F –r MySitePolicy 4. 次のように、audsys コマンドを使用して監査システムを起動し監査ログを定義します。 #audsys -n -c primary_audit_file -s 1000 5. /etc/rc.config.d/auditing ファイルのログファイルとログファイルスイッチパラ メータをセットアップします。 次の手順に従ってください。 a. PRI_AUDFILE を一次監査ログファイルの名前に設定します。 b. PRI_SWITCH を一次監査ログファイルの最大サイズ (KB 単位) に設定します。このサ イズで監査ロギングが補助ログファイルに切り替わります。 c. SEC_AUDFILE を補助ログファイルの名前に設定します。 d. SEC_SWITCH を二次監査ログファイルの最大サイズ (KB 単位) に設定します。 一次および二次監査ログファイルのセットアップに関する詳細は、「監査ログ」を参照 してください。 6. audomon デーモンが起動されていない場合は、起動します。 audomon デーモンは、現 在の監査ログの増殖をモニターし、必要に応じて代替監査ログに切り替えます。 例: #audomon -p 20 -t 1 -w 90 -X "/usr/local/bin/rcp_audit_trail hostname" 7. 8. audomon デーモンの構成に関する詳細は、「監査ログのモニターと管理」を参照してく ださい。 /etc/rc.config.d/auditing ファイルの audomon 引き数パラメータを設定し、シ ステムを再ブートしても現在の設定が維持されるようにします。 /etc/rc.config.d/auditing ファイルの AUDITING フラグを 1 に設定し、システ ムのブート時に監査システムが自動的に起動するようにします。 10.2.3 監査の無効化 システムでの監査を無効にするには、次の手順に従ってください。 1. 次のコマンドを使用して、システム監査を停止します。 # audsys -f 2. 3. /etc/rc.config.d/auditing ファイルの AUDITING フラグを 0 に設定し、システ ムの再ブート時に監査システムが起動しないようにします。 (オプション) audomon デーモンを停止するには、次を入力します。 # kill `ps -e | awk '$NFS~ /audomon/ {print $1}'` この手順は、audomon デーモンを再構成するときにのみ使用してください。 audomon デーモンを再構成して再起動するには、「監査の有効化」の記述のとおり、手順 6 およ び 手順 7 に従ってください。 10.2.4 監査ファイルのモニター 監査ファイルを表示、モニター、および管理するには、次の手順に従ってください。 1. audisp コマンドを使用して監査ログファイルを表示します。 # audisp audit_file 162 監査管理 audisp コマンドの使用法に関する詳細は、「監査ログの表示」を参照してください。 2. 3. /etc/rc.config.d/auditing ファイルの監査ログファイルモニター引き数を設定し ます。 手順 2 で使用したものと同じ値を設定します。 (オプション) 次のコマンドを使用して、システム監査を停止します。 #audsys -f 4. (オプション) /etc/rc.config.d/auditing ファイルの AUDIT フラグを 0 に設定 し、次回のシステムの再ブート時に監査システムが起動しないようにします。 10.2.5 性能の留意事項 監査を実行すると、システムのオーバーヘッドが増大します。 性能が問題になる場合は、ど のイベントとユーザーを監査するか、選択してください。 これは、監査が性能に及ぼす影響 を小さくするのに役立ちます。 10.2.6 監査システムの運用のためのガイドライン システムを管理するときは、次のガイドラインを使用してください。 • セキュリティ方針に従って、監査ログを確認します。 オンライン監査ファイルは 24 時 間以上保持する必要があり、オフラインで保存されるすべての監査レコードは最低 30 日間保持する必要があります。 • 異常なアクティビティがないか監査ログを調査します。たとえば、遅い時間のログイン、 ログインの失敗、システムファイルへのアクセスの失敗、セキュリティ関連のタスク実 行の失敗などです。 • 毎日アーカイブすることで、監査ファイルのオーバーフローを防止します。 • 現在選択可能なイベントを定期的に変更します。特に、新しいリリースの HP-UX をイン ストールした後は変更してください。新しいリリースには、新しいシステムコールが導 入されていることが多いからです。 • 監査対象ユーザーを定期的に変更します。 • イベントやユーザーの選択は、特定のパターンやスケジュールに従わないでください。 • サイトのガイドラインを策定します。 これらのガイドラインの決定には、ユーザーおよ び経営層を関与させてください。 • 監査データ量が多くなると予想される場合は、複数の物理ディスクと複数の物理 I/O カードから構成される論理ボリュームに監査ログを構成します。 audsys コマンドで-N オプションを使用して、監査ログを複数のファイルに分割してください。 10.3 ユーザーの監査 デフォルトでは、システム監査がオンの場合は、すべてのユーザーの監査ステータスがオン になります。 システムに新しく追加されたユーザーは、自動的に監査対象になります。 監査を使用して、HP-UX システム上でのユーザーの動作をモニターすることができます。 監 査対象のユーザーを変更するには、次のいずれかのオプションを選択してください。 • すべてのユーザーを監査します。 10.3 ユーザーの監査 163 デフォルトでは、監査システムがオンになると、すべてのユーザーの監査ステータスが オンに設定されます。 システムに新しく追加されたユーザーは、自動的に監査対象にな ります。 すべてのユーザーに対して監査がオフにされている場合は、/etc/default/security ファイルの AUDIT_FLAG=1 を設定してください。 • ユーザーをまったく監査しません。 すべてのユーザーに対して監査をオフにするには、次の手順に従ってください。 1. すでに監査されているユーザーを確認します。 確認するには、次の手順に従ってく ださい。 a. /etc/default/security ファイルの AUDIT_FLAG 設定を確認します。 b. 次のコマンドを使用して、ユーザーデータベースに格納された AUDIT_FLAG 設定を確認します。 # userdbget -a AUDIT_FLAG 2. • /etc/default/security ファイルの AUDIT_FLAG=0 を設定します。 特定のユーザーを監査します。 特定のユーザーに対して監査を設定するには、次の手順 に従ってください。 1. /etc/default/security ファイルの AUDIT_FLAG=0 を設定して、すべての ユーザーに対して監査をオフにします。 2. 次のコマンドを使用して、特定のユーザーの監査を構成します。 # /usr/sbin/userdbset -u user-name AUDIT_FLAG=1. 監査システムがまだ有効でない場合は、audsys -n コマンドを使用して監査システムを起動 します。 監査の変更は、そのユーザーの次のログイン時に有効になります。 10.4 イベントの監査 イベントは、セキュリティと密接な関係のあるアクションです。たとえば、ファイルを作成 する、ファイルを開く、システムにログインするなどです。 HP-UX システム上のイベントを 監査して、可能性のあるセキュリティ侵害を検出することでセキュリティを向上させること ができます。 ただし、監査するイベントを増やすと、使用されるシステムリソースが増加し システム性能により大きな影響を与えます。 セキュリティ設計者は、さまざまな業務上のニー ズと該当する政府の規制に基づいて監査するイベントを決定する必要があります。 監査対象のシステムアクティビティ (監査可能なイベント) を指定するには、audevent コマ ンドが使用されます。 監査可能なイベントは、構成を容易にするためにイベントカテゴリと プロファイルに分類されます。 イベントカテゴリまたはプロファイルが選択されたら、イベ ントカテゴリまたはプロファイルに関連付けられたすべてのシステムコールと自己監査イベ ントが選択されます。 監査システムがインストールされると、/etc/audit/audit.conf ファイルにデフォルトの一連のイベント分類情報が提供されます。 また、サイト固有の分類 およびプロファイルも、/etc/audit/audit_site.conf ファイルに定義されることがあ ります。 164 監査管理 注記: 少なくとも次のイベントを監査することをお勧めします。 • admin イベント • login イベント • moddac 自己監査イベント • execv、execve • pset イベント これらのイベントは、/etc/audit/audit.conf ファイルの基本プロファイルにあらかじ め定義されています。 監査システムをオンにする前に、監査するイベントを構成します。 audevent コマンドの構 文は、次のとおりです。 # audevent [options] 通常、次のオプションを audevent コマンドで使用します。 表 10-4 audevent コマンドオプション audevent オプション 説明 -e [event] 記録するイベントを指定します -F 失敗したイベント操作を記録します -l すべてのイベントタイプと関連するシステムコールのリストを表示します -P 成功したイベント操作を記録します -r [profile] 記録するイベントのプロファイルを指定します。 プロファイルは、/etc/audit/ audit.conf ファイルに定義されます。 -S [system call] または イベントまたはシステムコールの監査ステータスを変更します -s [system call] オプションなし 選択したイベントまたはシステムコールの現在のステータスを表示します 監査用の admin、login、および modaccess を構成するには、次のコマンドを入力します。 # audevent -P -F -e admin -e login -e moddac 監査用の基本プロファイルにイベントを構成するには、次のコマンドを使用します。 # audevent -P -F -r basic Audit Success および Audit Failure のどちらも、正常および失敗したイベントまたは システムコールのモニター用イベントタイプとして設定されます。 これは、システムを実行 するために推奨される最小限のイベントタイプ選択です。 一般に、レコードは、イベントが監査用に選択され、かつイベントを開始するユーザーが監 査対象に選択されている場合にのみ書き込まれます。 しかし、レコードによっては、ユーザー が監査対象に選択されていなくても、ユーザーがセッションを開始するときと終了するとき に生成されるものがあります。 それらのレコードはユーザー選択ではなくイベント選択に基 づいたシステム全体の情報と見なされます。 自己監査するプログラムは、ユーザー選択を無 10.4 イベントの監査 165 視する恣意的な決定をすることがありますが、これは自己監査に推奨されているわけではあ りません。 10.5 監査ログ すべての監査データは、監査ログに書き込まれます。 通常モードでは、監査ログはディレク トリと同じファイルシステム上にあり、1 つまたは複数のログファイルによって構成されま す。 ログファイルの数は、データロギングに使用されている書き込みスレッド数によって異 なります。 ディレクトリ内の 1 つまたは複数のファイルではなくディレクトリ全体のみが分 析や表示に意味のあるデータを示します。 通常モードに対して、HP-UX 11i v3 リリースには 互換モードも用意されています。これでは、1 つのファイルとして存在する監査ログを生成 します。 互換モードは、旧製品との互換性のためにのみサポートされているものであり、 HP-UX 11i v3 より後の今後のリリースではサポートされません。 詳細については、audsys(1M) マンページを参照してください。 監査システムが有効になるときは必ず、少なくとも 1 つの監査ログが存在する必要がありま す。 ログの名前とログの各種属性は、audsys を使用して指定することができます。 現在のロ グが定義済みの容量 (その監査ファイル切り替え (AFS) サイズ) を超える場合、またはログが 存在する監査ファイルシステムが定義済みの容量 (そのファイルスペース切り替え (FSS) サイ ズ) に近づいた場合は、監査サブシステムは警告を発行します。 現在の監査ログの AFS また は FSS のいずれかに達したら、監査サブシステムは補助ログを検索します。 補助ログが使用 可能なら、記録は補助ログに切り替えられます。 補助ログが指定されていない場合は、監査 サブシステムは新しい監査ログを同じ基本名に異なったタイムスタンプ拡張子をつけて作成 し、それに記録を開始します。 また、Audomon を、正常な監査ログ切り替えの後でコマンド ラインで実行して、前回の監査ログを処理します。 サイト固有のニーズによって、この処理 には、データバックアップ、アーカイブ、オフサイトへの移行、クリーンアップ、またはデー タ報告が含まれます。 自動切り替えが失敗した場合は、適切な管理者アクションを要求する ための警告メッセージが送信され、現在の監査ログは増え続けます。 注記: 1. HP-UX 11i v3 では、切り替え用の補助ログを手動で明示的に指定する必要はなくなりま した。 監査システムは、監査ログの切り替えを自動的に行います。 2. 自動切り替えが失敗して現在のログが FSS ポイントを過ぎて増殖を続ける場合は、シス テム定義のパラメータ、minfree に達することがあります。 この時点で、通常のユー ザーに対するすべての監査可能アクションは一時停止されます。 監査データをアーカイ ブするか空きスペースのあるファイルシステム上の新しい監査ログを指定してシステム の運用を元に戻してください。 3. その他のアクティビティがファイルシステム上のスペースを消費する場合や、選択した ファイルシステムに選択した AFS サイズに足るスペースがない場合は、監査ファイル切 り替えポイントに達する前にファイルスペース切り替えポイントに達することがありま す。 監査ログファイルに十分なスペースのあるファイルシステムを選択してください。 bdf コマ ンドを使用して、ファイルシステムのサイズを評価できます。 ログファイルを少なくとも次 のパラメータに構成することをお勧めします。 • ファイルシステムでは、一次監査ログファイル用に 5000KB 以上が使用可能である必要 があります。 166 監査管理 • 合計ファイルスペースの 20% 以上が使用可能である必要があります。 監査ログファイルの増殖は監査オーバーフローモニターデーモン、audomon によって綿密に モニターされ、監査データの消失がないことを保証します。 10.5.1 監査ログの構成 audsys コマンドを使用して、監査データを収集する一次監査ログファイルと (オプションで) 補助監査ログファイルを指定します。 #audsys -n -N2 -c my_audit_trail -s 5000 この例では、監査システムを開始し、my_audit_trail ディレクトリにデータを記録しま す。2 つの書き込みスレッドを使用します。 AFS サイズは、5000K バイトに設定されます。 詳細は、audsys(1M) を参照してください。 10.5.2 監査ログのモニターと管理 監査ログのモニターおよび管理には、監査オーバーフローモニターデーモン (audomon) が使 用されます。 システム起動時に監査が開始されると (/sbin/init.d/auditing 内で AUDITING=1)、audomon デーモンが自動的に起動します。 また、特権ユーザーによって audomon デーモンが起動されることもあります。 起動すると、audomon デーモンは現在の 監査ログとそれが存在するファイルシステムの容量をモニターします。 audomon デーモンの 起動に使用されるコマンドの例は、次のとおりです。 # audomon -p 20 -t 1 -w 90 -X "/user/local/bin/rcp_audit_trail hostname" このコマンドは、audomon デーモンを次の動作で起動します。監査システムは次のコマンド で開始されていることを前提としています。 # audsys -n -N 2 -c /var/.audit/my_trail -s 500 • audomon は 1 分間以上の間隔で休眠状態になります。 • 現在の監査ログが 4500Kb に達するか、監査ログのあるファイルシステムが 80% 使用 状態になると、audomon デーモンは現在の監査ログへの記録を停止し、次の新しい監査 ログに記録を始めます。/var/.audit/my_trail.<yyyymmddHHMM> • 新しい監査ログへの切り替えが成功すると、audomon デーモンは次のコマンドを起動し ます。 sh -c "/usr/local/bin/rcp_audit_trail hostname /var/.audit/my_trail" このスクリプトはサイト固有で、古い監査ログのコピー、データバックアップまたはアー カイブ機能の実行、監査レポートの作成に使用されます。 audomon デーモンに関する 詳細は、audomon(1) を参照してください。 注意: • 監査ログが含まれるファイルシステムがいっぱいになっている場合は、監査データを生 成する非ルートプロセスはカーネル内部でブロックします。 また、非ルートプロセスが システム端末に接続される場合は、終了します。 詳細は、audsys(1M) の「WARNINGS (警告)」の項を参照してください。 • 監査ログはルートファイルシステムに配置しないでください。 10.5 監査ログ 167 ヒント: データ記憶域の長期戦略を実行するスクリプトを記述し、audomon デーモンに-X オプションを指定して渡すことをお勧めします。 audomon コマンドは次の引き数を取ります。 -p fss 監査システムが補助ログファイルに切り替わる前に、一次監査ログ ファイルの含まれるファイルシステムに残されたスペースの最小割 合。 デフォルトの fss 値は 20% です。 -t sp_freq システムが監査ログファイル切り替えポイントの警告メッセージを コンソール上に表示する最小の起動間隔 (分)。 デフォルトの sp_freq 値は 1 分間です。 -w warning 使用済み監査ログファイルスペースの割合または使用済みファイル システム最小空きスペースの割合。これ以降は警告メッセージがコ ンソールに送信されます。 デフォルトの警告値は 90% です。 -X command command は audomon が監査ログを切り替えるたびに実行されます。 詳細については、audomon(1M) を参照してください。 10.6 監査ログの表示 監査では、多くのデータが累積されます。 audisp コマンドを使用して表示するデータを選 択してください。 #/usr/sbin/audisp audit_trail audisp コマンドで使用できるオプションは、次のとおりです。 -f -p -c system_call -t -s -u user-name -l terminal-name -e event-name > file-name 失敗したイベントのみを表示します。 成功したイベントのみを表示します。 選択したシステムコールを表示します。 指定した時刻以後に発生したイベントを表示します。 指定した時刻以前に発生したイベントを表示します。 特定のユーザーの情報を表示します。 特定の端末の情報を表示します。 指定したイベントの情報を表示します。 指定したファイルに出力を書き込みます。 量の多い監査ログを扱うときは表示するレコードの準備に数分かかることがあります。 監査 データを表示するときは、次の異常に注意してください。 • 監査データは監査可能システムコールを呼び出すプログラムが不正なパラメータを渡す と正確に表示されない可能性があります。 監査データは、ユーザープログラムがカーネ ルに渡したものをそのまま表示します。 たとえば、kill() システムコールをパラメー タなしで呼び出すと監査レコードのパラメータセクションに予測困難な値が生成されま す。 • ファイル名引き数を取るシステムコールでは、デバイスおよび i ノード情報が正しく記 録されないことがあります。 コールが正常に完了しない場合は、値は、-1 になります。 168 監査管理 • イベントまたはシステムコールパラメータを変更する間にスーパーユーザーを監査する と、監査レコードが長くなります。 たとえば、監査対象のイベントタイプを追加する と、監査に対して有効になっている各イベントタイプおよびシステムコールに対してレ コードが生成されます。追加された新しいイベントタイプに対してだけではありません。 10.6.1 audisp コマンドの使用例 audisp コマンドを使用して表示される監査情報の例は、次のとおりです。 • 画面にログ出力を表示します。 #/usr/sbin/audisp audit_trail • ログ出力を /tmp/mylogoutput に出します。 #/usr/sbin/audisp audit_trail > /tmp/mylogoutput • 成功したイベントのみを表示します。 #/usr/sbin/audisp -p audit_trail • ユーザー joe の所有するアクティビティを表示します。 #/usr/sbin/audisp -u joe audit_trail • 端末、ttypa にアクティビティを表示します。 #/usr/sbin/audisp -l ttypa audit_trail • ログインイベントのみを表示します。 #/usr/sbin/audisp -e login audit_trail 10.7 自己監査 プロセスによっては、監査対象となり得る一連のアクションを起動するものがあります。 収 集される監査ログデータ量を削減し、監査ログファイル内でより意味のある表記法を提供す るために、これらのプロセスの一部は、起動するアクションの監査を一時停止し、発生した プロセスを記述する 1 つの監査ログエントリーを作成するようにプログラミングされていま す。 この方法でプログラミングされたプロセスは、自己監査プログラムといいます。自己監 査を使用して監査ログデータを簡素化します。 注記: 自己監査プロセスのリストは、システムによって異なります。 自己監査プロセス 次のプロセスには自己監査機能があります。 chfn chsh login newgrp passwd audevent finger エントリーの変更 ログインシェルの変更 ログインユーティリティ 実効グループの変更 パスワードの変更 監査対象イベントの選択 10.7 自己監査 169 audisp audsys audusr init lpsched fbackup ftpd remshd rlogind telnetd privrun privedit roleadm authadm cmdprivadm 監査データの表示 監査システムの起動または停止 監査対象ユーザーの選択 実行レベル、ログオフするユーザーの変更 ラインプリンター要求のスケジュール 柔軟なファイルバックアップ ファイル転送プロトコルデーモン リモートシェルサーバーデーモン リモートログインサーバーデーモン Telnet サーバーデーモン レガシーアプリケーションの起動1 認可ユーザーにファイルの編集を許可1 ロール情報の編集1 権限情報の編集1 コマンド権限と特権の編集1 ほとんどの自己監査プログラムは 1 つのイベントカテゴリの下で監査データを生成します。 たとえば、audsys コマンドは、admin イベントの下で監査データを生成します。 コマンド によっては、複数のイベントカテゴリの下で監査データを生成するものがあります。 たとえ ば、init コマンドは、login イベントおよび admin イベントの下で監査データを生成しま す。 10.8 HP-UX RBAC 監査 privrun、privedit、roleadm、authadm、および cmdprivadm HP-UX RBAC コマンド は、それぞれ監査レコードを生成します。 各監査レコードには、次の属性が含まれています。 • ユーザー名 • UID • ロール • 権限 (操作、対象物) • イベントの時刻 • イベントの結果 (成功または失敗) 10.8.1 HP-UX RBAC 基準および/etc/rbac/aud_filter ファイルに基づく監査 HP-UX RBAC バージョン B.11.23.02 以降は、特定の HP-UX RBAC 監査基準を識別する監査 フィルターファイルの使用をサポートしています。 /etc/rbac/aud_filter という名前の フィルターファイルを作成して監査レコードを生成する対象の特定のロール、操作、および 対象物を識別することができます。 監査レコードは、プロセスの属性が/etc/rbac/aud_filter にある 3 つすべてのエントリー (ロール、操作、および対象物) と一致する場合にのみ生成さ れます。 ユーザーのロールと関連付けられている権限がファイルに見つからず明示的に一致 しない場合は、ロール-権限に固有の監査レコードは生成されません。 1. 詳細については、第5章を参照してください。 170 監査管理 認可ユーザーは、テキストエディターを使用して /etc/rbac/aud_filter ファイルを編集 し、監査対象のロールと権限を指定することができます。 各権限は、操作、対象物ペアの形 式で、指定されます。 ロールに関連付けられたすべての権限は、1 つのエントリーに指定さ れる必要があります。 各行にロール当たり 1 つの権限のみ指定することができます。しか し、ワイルドカード (*) はサポートされています。 /etc/rbac/aud_filter ファイルのサ ポートされているエントリーと形式は、次のとおりです。 ロール、操作、対象物 次のリストでは、/etc/rbac/aud_filter の各エントリーを説明します。 ロール 操作 対象物 /etc/rbac/roles で定義されている有効な任意のロール。 * が指定されている場 合は、すべてのロールが操作によってアクセスできます。 対象物に対して実行可能な特定の操作。 たとえば、hpux.printer.add は、プリ ンターを追加する操作です。 あるいは、hpux.printer.* は、プリンターを追加 または削除するいずれかの操作です。 * が指定されている場合は、すべての操作が 操作によってアクセスできます。 ユーザーがアクセスできる対象物。 * が指定されている場合は、すべての対象物が 操作によってアクセスできます。 次に示すのは、(hpux.passwd, /etc/passwd) の権限を持つ SecurityOfficer のロール、お よび hpux.printer.add 操作をすべての対象物上で実行する権限を持つ Administrator ロー ルに対する監査レコードを生成する方法を指定する /etc/rbac/aud_filter エントリーの 例です。 SecurityOfficer, hpux.passwd, /etc/passwd Administrator, hpux.printer.add, * 注記: vi などのエディターを使用して /etc/rbac/aud_filter ファイルを直接編集しま す。 HP-UX RBAC 管理コマンドには、/etc/rbac/aud_filter とのインタフェースがあり ません。 10.8.2 HP-UX RBAC 基準を監査する手順 次の手順は、システム上の HP-UX RBAC 基準を監査する監査プロセスの構成方法を示します。 1. 次のコマンドを使用して Administrator イベントに対する Passed または Failed イベント を監査するようにシステムを構成します。 # audevent -PFe admin 2. 次のコマンドを使用して、監査出力ファイルの位置と名前を構成し、システム上の監査 を有効にします。 # audsys -n -c /tmp/aud.out -s 2048 3. HP-UX RBAC コマンドを実行します。例: # /usr/sbin/authadm add newauth 4. 監査出力ファイルを開き、次のコマンドを使用して authadm コマンド上のレコードを検 索します。 # audisp /tmp/aud.out |fgrep authadm 10.8 HP-UX RBAC 監査 171 注記: HP-UX システムの監査に関する詳細は、audit(5)、audevent(1M)、audsys(1M)、およ びaudisp(1M) を参照してください。 172 監査管理 付録A 高信頼性システム この付録では、高信頼性システムのセットアップおよび管理方法を説明します。 この付録で は、次のトピックについて説明します。 • 「高信頼性システムのセットアップ」 • 「高信頼性システムの監査」 • 「高信頼性パスワードとシステムアクセスの管理」 • 「高信頼性バックアップと回復のためのガイドライン」 注記: 高信頼性システムの利用は、低調になってきています。 HP-UX 11i v3 は、この製品 をサポートする最後のリリースです。 A.1 高信頼性システムのセットアップ 高信頼性システムをセットアップするには、次の手順に従ってください。 1. 作業場所に合った全体的なセキュリティの方針を確立します。 2. システム上の現状のファイルをすべて検査してセキュリティ上の危険がないか調べ、そ れらを改善します。 これは、高信頼性システムに変える前には重要です。 その後は、定 期的にまたはセキュリティを侵害されたことに気づいたら、ファイルを調べます。 第8 章 「ファイルシステムのセキュリティ」の「ファイルシステムのマウントとマウント解 除のためのセキュリティガイドライン」を参照してください。 3. ユーザーファイルを後で回復するために、ファイルシステムをバックアップします。 ま た、変換前に /etc/passwd ファイルをテープにバックアップします。 初期のバックアップと回復には、HP-UX が提供するどのバックアップと回復プログラム でも使用できます。 しかし、一度セキュリティ機能を実施したら、fbackup と frecover だけを使用してください。fbackup と frecover により、アクセス制御リスト (ACL) が保存、修復されます。 詳細については、fbackup(1M) およびfrecover(1M) を参照して ください。 4. 高信頼性システムに変換します。 高信頼性システムへの変換は、可逆的な操作です。 高信頼性システムを変換するには、HP SMH を実行して [System Security Policies] をクリッ クします。 [Convert to trusted system] プロンプトが表示されます。 確認プロ ンプトを受け取ることがあります。 Y を押して変換処理を始めます。 高信頼性システムに変換するとき、変換プログラムは、次のことを行います。 アクショ ン: • /tcb/files/auth/内に、新しく保護されたパスワードデータベースを作成しま す。 • 暗号化されたパスワードを /etc/passwd ファイルから保護されたパスワードデー タベースに移動して、/etc/passwd 内のパスワードフィールドをアスタリスク (*) に置き換えます。 • すべてのユーザーにパスワードを使用するように強制します。 • 各々のユーザー用の監査 ID 番号を作成します。 ユーザーの履歴全体を通して、監 査 ID は変化しません。 ユーザーを一意に識別します。 HP-UX 11i v3 では高信頼性 システムと同様、監査 ID は廃止の方向にあり、ユーザーが新しいログインセッショ A.1 高信頼性システムのセットアップ 173 ンを正常に開始するたびに動的に割り当てられる監査タグに置き換えられつつあり ます。 監査タグに関する詳細については、第10章を参照してください。 • 現在の全ユーザー用に監査フラグを設定します。 • 5. 6. at、batch、crontab 入力ファイルを、実施者の監査 ID を使用するように変換し ます。 監査ファイルがシステム上にあることを確かめます。 1. swlist -l fileset を使用して インストール済みファイルセットをリストしま す。 SecurityMon というファイルセットを検索します。 これには、監査プログラ ムファイルが含まれます。 リストを少なくするには、次のコマンドを入力します。 # swlist -l fileset | grep Security 2. さらに、SecurityMon で指定されていない次のファイルも存在していることを確 かめます。 • /etc/rc.config.d/auditing は、監査を制御するパラメータを含んでいま す。 このファイルは、テキストエディタを使用して SMH または手作業で変更 できます。 • /sbin/rc2.d/S760auditing は、監査を始めるスクリプトです。 このファ イルを変更しないでください。 高信頼性システムに変換した後は、監査サブシステムを使用して、HP-UX システムを高 信頼性システムとして実行することができます。 注記: HP-UX 11i v3 上では、監査システムは高信頼性システムに変換しなくてもシステ ム上でも動作します。 詳細は、第10章を参照してください。 高信頼性システムを標準のシステムに戻す必要がある場合、HP SMH を実行して Auditing and Security ウィンドウを使用してください。 Audited Events、Audited System Calls、Audited Users 画面は、どれも unconvert オプションを提供します。 ヒント: システムが高信頼性システムに変換されたかどうかを確認する 1 つの方法は、/tcb ファイルを検索することです。 存在すれば、高信頼性システムがあります。 A.2 高信頼性システムの監査 高信頼性システムの監査は、高信頼モードに変換されていないシステムの監査とほぼ同じで す。 監査に関する詳細は、第10章を参照してください。 唯一の違いは、監査対象ユーザーの 選択方法です。 高信頼性モードに変換されていないシステムでは、監査対象ユーザーの指定 に userdbset コマンドが使用されます。 userbdset(1M) およびuserdb(4) を参照してくださ い。 関連付けられている属性は AUDIT_FLAG といいます。これは、security(4) で説明されて います。 高信頼性システムでは、audusr コマンドで監査対象となるユーザーを指定します。 詳細については、audusr(1M) を参照してください。 A.3 高信頼性パスワードとシステムアクセスの管理 パスワードは、最も重要な各ユーザーの識別シンボルです。 システムは、それを使用して、 システムへのアクセスを許可するユーザーを認証します。 パスワードは、使用時や保存時、 または通知時に危険にさらされやすいので、いかなるときにもパスワードの秘密保持が必要 です。 174 高信頼性システム パスワードに関する詳細は、第3章 「ユーザーおよびシステムのセキュリティ管理」を参照 してください。 セキュリティ管理者の責任 セキュリティ管理者とシステム上のすべてのユーザーは、パスワードセキュリティに対して 責任を共有しなければなりません。 セキュリティ管理者は、次のセキュリティ作業を実行し ます。 • 新しいユーザーの一時的なパスワードを生成します。 このパスワードは、最初のログイ ン時に使用されなければなりません。 この番号が確かめられると、新しいユーザーは新 しいパスワードの入力を求められます。 • 標準のパスワードファイル /etc/passwd、高信頼性データベースファイル /tcb/files/ auth/* など、すべてのシステムファイルに関して適切なパーミッションを維持します。 • パスワードエージングを確立します。 • パスワードの再使用を管理します。 • 期限切れのパスワード、もはやシステムにアクセスする権限のないユーザーのユーザー ID とパスワードを削除または無効にします。 ユーザーの責任 すべてのユーザーは、次の規則を守る必要があります。 • パスワードを記憶していて、いかなる場合にもその秘密を保持する。 • すぐに初期パスワードを変える。その後、パスワードを定期的に変える。 • ステータスの変更やセキュリティ違反の疑いがあれば、すべて報告する。 • パスワードを入力するとき誰も見ていないことを確かめる。 • アカウントのある各々の計算機用に異なったパスワードを選択する。 A.3.1 パスワードファイル 高信頼性システムは、複数のパスワードファイルを維持します。/etc/passwd ファイルと 保護されたパスワードデータベース /tcb/files/auth/内のファイル (「/tcb/files/auth/Database」を参照) です。 各ユーザーは 2 つのファイル内にエントリーを 持ち、login はログイン要求を認証するために両方のエントリーを見ます。 すべてのパスワードは、入力後すぐに暗号化されて、ユーザーの保護されたパスワードデー タベースファイル /tcb/files/auth/user-char/user-name に保存されます。 暗号化 されたパスワードだけが、比較に使用されます。 どちらのパスワードファイル内でも、パスワードフィールドを空 (null) のままにしないでくだ さい。 高信頼性システムでは、/etc/passwd 内のパスワードフィールドは、無視されます。 空のパスワードを持つユーザーは、高信頼性システムにログインするとすぐパスワードの設 定を強制されます。 しかし、これでもセキュリティ侵害の可能性が残されています。このア カウントにログインする誰でも、パスワードを設定できます。 直接パスワードファイルを編集してはいけません。 パスワードファイルエントリーの変更に は HP SMH、useradd、userdel、または usermod を使用してください。 セキュリティ管理者の責任 175 A.3.1.1 /etc/passwd ファイル 高信頼性システムは、/etc/passwd ファイルを使用してログイン時にユーザーを識別しま す。 このファイルは、HP-UX システムのすべてのアカウントのエントリーを含んでいます。 各々のエントリーは、コロンによって分離されていて、7 つのフィールドから成ります。 高 信頼性システムでの /etc/passwd の典型的なエントリーは、次のようになります。 robin:*:102:99:Robin Hood,Rm 3,x9876,408-555-1234:/home/robin:/usr/bin/sh フィールドは、コロンで区切られた次の情報を含んでいます (順番に列記します)。 1. 最大 8 文字から成るユーザー名 (ログイン名)。 (この例では、robin) 2. 使用されないパスワードフィールド。実際のパスワードの代わりにアスタリスク (*) の 形で保持されます。 3. ユーザー ID、0 から MAXINT-1 (2,147,483,646 または 231-2 と等しい) までの整数。 (この例では102) 4. グループ ID、/etc/group に定義されている 0 から MAXINT-1 までの整数。(この例 では99) 5. ユーザーのフルの名前、住所、電話番号など、情報を確認するために使用される注釈 フィールド。 歴史的理由から、このフィールドは gecos フィールドとも呼ばれていま す。 (この例ではRobin Hood,Rm 3,x9876,408-555-1234) 6. ホームディレクトリ、ユーザーの初期ログインディレクトリ。 (この例では/home/robin) 7. ユーザーがログインしたときに実行される、ログインプログラムのパス名。(この例で は/usr/bin/sh) ユーザーは、chfn コマンドを使って注釈フィールド (5 番目のフィールド) を変更できます。 また、chsh コマンドを使ってログインプログラムのパス名 (7 番目のフィールド) を変更でき ます。 システム管理者は、残りのフィールドを設定します。 ユーザー ID は、一意でなけれ ばなりません。 詳細については、chfn(1)、chsh(1)、passwd(1)、およびpasswd(4) を参照して ください。 ユーザーは passwd を使って、保護されたパスワードデータベース内のパスワー ドを変更できます。 A.3.1.2 /tcb/files/auth/Database システムを高信頼性システムに変換したときは、通常 /etc/passwd の 2 番目のフィールド 内に保持された暗号化されたパスワードは、保護されたパスワードデータベースへ移動され て、/etc/passwd ファイル内のその場所にアスタリスクが入ります。 保護されたパスワードデータベースファイルは、/tcb/files/auth/階層構造内に保存され ます。 ユーザー認証プロファイルは、ユーザーアカウント名の最初の英字に基づいてこれら のディレクトリ内に保存されます。 たとえば、ユーザー david 用の認証プロファイルは、 ファイル /tcb/files/auth/d/david 内に保存されます。 高信頼性システムでは、重要なセキュリティ要素は、保護されたパスワードデータベースの 中に保持され、スーパーユーザーのみアクセス可能です。 HP SMH を使用してパスワードデー タエントリーを設定します。 ユーザーに対して設定されないパスワードデータは、デフォル トでは、ファイル /tcb/files/auth/system/default 内に保存されたシステムデフォル トになります。 保護されたパスワードデータベースは、ユーザーの多くの認証エントリーを含んでいます。 これらのエントリーに関する詳細は、prpwd(4) を参照してください。パスワードデータベー スのエントリーには次のものがあります。 176 • ユーザー名とユーザー ID • 暗号化されたパスワード 高信頼性システム • アカウントの所有者 • 指定したユーザーにシステムの起動を許可する起動認証。security(4) を参照してくださ い。 • ユーザーの監査 ID と監査フラグ (監査がオンであるかどうか) • パスワード変更の間の最短時間 • パスワード最大長 • パスワード満期時間、どれくらい経ったらパスワードを変更しなければならないか • パスワード寿命、どれくらい経ったらアカウントがロックされるか • 最後に成功したパスワード変更と成功しなかったパスワード変更の時間 • アカウントが期限切れになる絶対的な時間 (日付) • アカウントがロックされる前にログインの間に許される最大時間 • 警告が表示される満期までの日数 • パスワードをユーザーが生成するか、システムが生成するか • パスワードにありふれた単語やよく知られた用語が使われることを防止するためのパス ワード単純度チェック • システム生成パスワードの型 • ヌルパスワード • パスワードを最後に変えた人のユーザー ID (アカウント所有者でない場合) • このアカウントを使用してログインできる時間 • 最後のこのアカウントへのログイン (成功したものと成功しないもの) に対応する端末ま たはリモートホストの ID • ログインに失敗した回数。ログインが成功するとクリアされる • アカウントがロックされずに試みることができる、ログインの回数 A.3.2 パスワードの選択と生成 高信頼性システムでは、次のパスワード生成オプションが使用できます。 • ユーザー生成パスワード パスワード生成オプションを使用して、ログイン名とグループ名、ログイン名とグルー プ名の組み合わせ、および回文の使用をチェックします。 新パスワードには、旧パスワードと少なくとも 3 文字は異なるものを使用する必要があ ります。 • 英字だけの組み合わせを使用するシステム生成パスワード • 英字、数字、区切り文字の組み合わせを使用するシステム生成パスワード • 発音可能な意味のない音節を使用したシステム生成パスワード システムに対して、パスワード生成オプションを設定することができます。 さらに、ユーザー ごとにパスワード生成オプションを設定できます。これはシステムデフォルトより優先され ます。 ユーザーの責任 177 少なくとも 1 つのパスワード生成オプションを、各々のユーザー用に設定しなければなりま せん。 複数のオプションがユーザーに使用可能な場合、ユーザーが自分のパスワードを変え るとき、パスワード生成メニューが表示されます。 A.3.3 パスワードエージング 各々のユーザー用にパスワードエージングを有効にしたり無効にしたりできます。 パスワー ドエージングが有効にされるとき、システムはパスワード用に次のデータを維持します。 最短時間 パスワード変更の間に必須の最短時間。 これにより、ユーザーが、新しいパスワー ドを覚えないで済むようにするために、パスワードをいったん変更してからすぐ に元のパスワードに戻すことができなくなります。 満期時間 ログイン時のパスワードの変更が必要になるまでの時間。 警告時間 警告が発行される満期までの時間。 寿命 アカウントがロックされることなく、パスワードを変更せずに使用できる時間。 アカウントが一度ロックされると、それを解除できるのはシステム管理者だけで す。 ロックを解除しても、ユーザーがアカウントにログインするには、パスワー ドを変更しなければなりません。 満期時間および寿命の値は、パスワードを変更すると、リセットされます。 寿命を 0 とする と、パスワードエージングを指定しないことになります。この場合、他のパスワードエージ ング時間は無効です。 A.3.4 パスワード履歴とパスワード再使用 システム全体でパスワード履歴機能を使用すると、ユーザーが前のパスワードを再使用する のを防ぐことができます。 /etc/default/security ファイルに PASSWORD_HISTORY_DEPTH 属性を定義すること によって、パスワード再使用チェックを有効にします。 PASSWORD_HISTORY_DEPTH=n このとき、n は整数で、何回前のパスワードまでチェックするかを指定します。 ユーザーがパスワードを変更するとき、現在のパスワードから n 回前のパスワードに対して 新しいパスワードがチェックされます。 同じパスワードがある場合、新しいパスワードは拒 否されます。 たとえば n が2 の場合、ユーザーが 2 つのパスワードを交互に使うことを防 ぎます。 詳細については、passwd(1) およびsecurity(4) を参照してください。 A.3.5 時間に基づくアクセス制御 高信頼性システムでは、各々のユーザーについてログインを許す時刻と曜日を指定できます。 ユーザーが許されたアクセス時間外にログインしようと試みると、イベントが記録されて (ロ グイン失敗と成功に対して監査が使用可能になっている場合)、ログインは終了します。 スー パーユーザーは許されたアクセス時間外にログインできますが、イベントは記録されます。 アクセスを許可された時間帯は、ユーザーから保護されたパスワードデータベース内に保存 されており、HP SMH で設定することができます。 アクセスを許可された時間帯が終了する ときにログインしたユーザーがログアウトされることはありません。 A.3.6 装置に基づくアクセス制御 高信頼性システム上の MUX ポートと専用 DTC ポートそれぞれについて、アクセスを許すユー ザーのリストを指定できます。 装置に対するリストがヌルのときは、すべてのユーザーがア クセスを許されます。 178 高信頼性システム 装置のアクセス情報は、装置割り当てデータベース /tcb/files/devassign 内に保存され ます。このデータベースは、高信頼性システムの各々の端末装置に対するエントリーを持っ ています。 エントリー内のフィールドには、その装置の使用を許しているユーザーを列記し ます。 高信頼性システムの端末ログイン情報は、端末制御データベース /tcb/files/ttys 内に保 存されます。このデータベースは、各々の端末について次のデータを提供します。 • デバイス名 • 端末に最後に正常にログインしたユーザーのユーザー ID • 最後に成功した端末へのログイン時刻 • 最後に成功しなかった端末へのログイン時刻 • 端末がロックされるまでの連続不成功ログインの回数 • 端末ロックフラグ スーパーユーザーだけが、これらの高信頼性システムデータベースにアクセスでき、HP SMH を介してエントリーを設定できます。 詳細は、devassign(4) およびttys(4) を参照してくださ い。 A.3.7 高信頼性システムデータベースの操作 次のマンページで説明されているライブラリルーチンを使用して、パスワードファイルと他 の高信頼性システムデータベース内の情報にアクセスします。 getdvagent(3) /tcb/files/devassign 内のデバイスエントリーを操作し ます getprdfent(3) /tcb/files/auth/system/default 内のシステムデフォ ルトを操作します getprpwent(3) /tcb/files/auth/からパスワードエントリーを取得します getprtcent(3) 端末制御データベース /tcb/files/ttys を操作します getpwent(3C) /etc/passwd からパスワードエントリーを取得します putpwent(3C) /etc/passwd へパスワードファイルエントリーを書き込み ます getspwent(3X) /tcb/files/auth/からパスワードエントリーを取得します (旧製品との互換性のため提供) putspwent(3X) /tcb/files/auth/へパスワードエントリーを書き込みます (旧製品との互換性のため提供) putprpwnam(3) /tcb/files/auth/へパスワードファイルエントリーを書き 込みます A.4 高信頼性バックアップと回復のためのガイドライン 次に示すのは、高信頼性システムでのバックアップと回復のためのガイドラインです。 • 選択的なファイルのバックアップや回復には、fbackup と frecover のみを使用して ください。 fbackup と frecover だけが、アクセス制御リスト (ACL) を保持します。 ACL が実装されていないシステムでの使用で、ファイルのバックアップや回復を行うと きは、これらのコマンドの-A オプションを使用してください。 詳細については、 fbackup(1M) およびfrecover(1M) を参照してください。 • 別のシステムへファイルを回復する場合は、両方のシステム上のユーザーのユーザー名 とグループ名が一致していることを確かめてください。 A.4 高信頼性バックアップと回復のためのガイドライン 179 • バックアップメディアは、機密資料であることに注意してください。 メディアへのアク セスは、必要性が明らかな場合にのみ許可してください。 • バックアップテープにラベルを付けて、それらを安全に保管してください。 オフサイト に保管することで、セキュリティを最大限に高めることができます。 アーカイブは最低 6 カ月取っておき、その後、再利用してください。 • 適切な手順を使用して、再使用の前にデータを削除し磁気メディアをきれいにしてくだ さい。 • 毎日の増分バックアップと毎週のフルバックアップを実行してください。 バックアップスケジュールは、組織における情報の動きに合わせてください。 たとえ ば、主要なデータベースが毎週金曜日にアップデートされる場合、毎週のバックアップ を金曜日の夕方に予定した方がよいでしょう。 • すべてのファイルを予定どおりにバックアップしなければならない場合、バックアップ を実行する前に、すべてのユーザーに対し、端末作業を終了するように要求してくださ い。 しかし、バックアップ実行中にファイルが変化した場合は、fbackup が警告しま す。 • 最終バックアップのログファイルを調べて、バックアップの間に発生した問題がないか 確認してください。 バックアップログファイルに限定的なパーミッションを設定してく ださい。 • frecover コマンドでは、ファイルの上書きを許可します。 しかし、ファイルは、バッ クアップされたときに設定されていたパーミッションと ACL を保持します。 • 回復処理は前もって試験し、緊急事態が発生した場合に、データを十分に回復できるこ とを確かめておかなければなりません。 • 別のマシンからのファイル回復時に、ユーザーやグループが新しいシステム上に存在し ていない場合は、chown コマンドを実行して、システム既存のユーザー ID とグループ ID を設定しなければなりません。 指定されたグループがない新しいシステムに、ファイ ルを回復する場合、ファイルは、frecover を実行したユーザーのグループ所有権を引 き継ぎます。 所有者やグループ名が、システムごとに異なる意味を持つ場合、回復結果 が予期しないものになることがあります。 • 電源異常でファイルが紛失することはまずありません。 しかし、電源異常の後にファイ ルの紛失が報告された場合は、バックアップテープから復元する前に、/lost+found 内にないかファイルを探してください。 • 回復するテープの内容の確認のために、frecover の -I オプションを使用して、テー プ上のファイル索引をプレビューしてください。 ただし、ファイルシステムの現在の パーミッションは、バックアップを行っても、元のままであることに注意してください。 ファイルのパーミッションが読み込み禁止の場合、frecover はファイルを読み込みま せん。 • /etc/passwd や /tcb/files 内のファイルのように重要なファイルは、決して同じ場 所に回復しないでください。 その代わりに、ファイルをテンポラリディレクトリ (/tmp は使用しないでください) に復元し、このディレクトリにパーミッションdrwx------を 与えて、他の誰かがそれを使用するのを防止してください。 復元されたファイルを元の ファイルと比較してください。 必要な変更を行ってください。 • 監査は、システムを回復するときには自動的に使用可能にはなりません。 audsys コマ ンドを使用して、必ず監査を有効にしてください。 180 高信頼性システム 付録B その他のセキュリティ製品 この付録は、その他のセキュリティ製品について言及します。それらの製品は、HP-UX に使 用することができます。 これらの製品は、Web サイトの HP ソフトウェアデポ http://www.hp.com/go/softwaredepot から無料でダウンロードすることができます。 B.1 HP HIDS HP ホスト侵入検知システム (HIDS) を使用すると、セキュリティ管理者は、次のように、ネッ トワーク内の攻撃に対する事前の監視、検出、および対応をすることができます。 • 既存の攻撃シナリオおよび一部の未知のシナリオの両方から保護します。 各種データ ソースからのシステムアクティビティに関する情報を調べることで、セキュリティの侵 害や不正アクセスを示すパターンを検出します。 そのような不正なアクティビティに は、ハッカーがシステムに侵入しようとしたりシステムを妨害しようしたりすること、 破壊的な内部アクティビティ、何者かがウイルスを蔓延させようとすることなどがあり ます。 • 生成されるものを検出することで、ネットワーク内のローカルホストレベルセキュリティ を向上させます。 ネットワーク内の各構成済みホストシステムに対する不正な侵入や危 害を与える可能性のある侵入を自動的に監視します。 チェックされない場合は、重要な システムの可用性を損ない、システムの完全性が損なわれることがあります。 HP-UX HIDS は、多くの種類のセキュリティ上の弱点に対して警告を生成します。 • 他の侵入検知システムとは異なり、既存の攻撃シナリオと未知のシナリオの両方に対し て継続的に保護します。 検知テンプレートを使用して侵入を検出します。 検知テンプ レートは、エンタープライズネットワークで頻繁に見られる権限のないシステムアクティ ビティやセキュリティ攻撃の基本的なタイプを判別するために使用する構築ブロックで す。 • 事前に攻撃につながる可能性のある不審なアクティビティが発生した場合に通知します。 逆に、他の侵入検知システムは、オペレータ主導のシステムログファイル解析に完全に まかせています。 通常、オペレータは、1 日の終わりにシステムログファイルを解析し ます。 この攻撃に対する解析時間の遅れによって、その間にシステムが被害を受けま す。 B.2 セキュリティパッチ Security Patch Check は、最新のセキュリティ報告書をチェックし、お使いのシステムをセキュ リティ報告書に適合した状態にするために、パッチの適用、アップデート、手動設定を行う 必要があるかどうかを判断する一連のプロセスの自動化に役立つツールです。 Security Patch Check を実行すると、システムの現在の状態を分析し、セキュリティ報告書に記載されてい る情報に基づいて、セキュリティパッチの推奨リスト、インストール済みの警告付きパッチ リスト、ソフトウェアに関する分析結果が表示されます。 当社は、システムへ未許可のルートアクセスを許すような既知のセキュリティ問題を解決す るための最新のソフトウェアパッチを提供します。 Security Patch Check を使用し、セキュリ ティパッチを自動的に更新するように設定できます。 詳細については、第2章を参照してください。 B.1 HP HIDS 181 B.3 HP-UX IPFilter HP-UX IPFilter は、IP パケットをフィルター処理してマシンに出入するパケットフローを制御 するためのシステムファイアウォールです。 マシン上の公開ポイント数を削減することでセ キュリティ防御施設として動作します。 B.4 HP-UX Secure Shell HP-UX Secure Shell は、ハッシングを使用してデータの完全性を確保し、セキュアなトンネリ ング機能、ポートフォワード、およびクライアント上の秘密鍵を維持する SSH エージェント を提供します。 HP-UX Secure Shell を使用すると、ネットワークを介して他のシステムに安全にログインし、 リモートシステム上のコマンドを実行し、システム間でファイルを移動することができます。 HP-UX Secure Shell は、rlogin、rsh、rcp、ftp、および telnet のような安全でないコマ ンドの代わりになる一連のコマンドを提供します。 また、HP-UX Secure Shell は、次のセキュ リティハザードからも、ネットワークを保護します。 IP スプーフィング コンピュータへの権限のないアクセスをするために使用される技術。 侵入者は、メッセージが高信頼性ホストから来ていることを示す IP アドレスを使用して、コンピュータにメッセージを送信します。 盗聴 パスワード、クレジットカード番号、業務上の機密を求めてシステ ムを検索することです。 ハイジャック 通信主体間で転送されるデータを攻撃者が検査して変更することに よってネットワーク通信を乗っ取るために使用される技術。 182 その他のセキュリティ製品 用語集 3DES Triple Data Encryption Standard(トリプルデータ暗号化規格)。 各 56 ビットの 毎回異なる鍵を 3 回使用して (鍵に 168 ビット使用) データを暗号化する対称 鍵ブロック暗号化アルゴリズム。 3DES は、大量データ暗号化に適していま す。 AAA サーバー AAA は認証 (Authentication)、許可 (Authorization)、アカウンティング (Accounting) の頭文字。 AAA サーバーは、ネットワークのエントリーポイン トでユーザーネットワークアクセスの認証、許可、およびアカウンティング サービスを提供します。 HP-UX は、AAA サーバーを提供します。RADIUS プ ロトコルおよび Diameter ベースプロトコルに基づいています。 ACL Access Control List(アクセス制御リスト)。 ユーザーまたはその他のプリンシパ ルがアクセスできるリソースと、許可されているアクセスのタイプを定義す るリストまたはデータベース。 AES Advanced Encryption Standard(高度暗号化規格)。 対称鍵ブロック暗号化アル ゴリズム。 HP-UX IPSec は、128 ビット鍵の AES をサポートします。 AES は、大量データ暗号化に適しています。 AH Authentication Header(認証ヘッダー)。 AH は、データの完全性、システムレ ベルの認証を提供します。リプレイ (再送) 防止保護も可能です。 AH は IPsec プロトコルスイートの一部です。 Authentication Header(認証 ヘッダー) AH を参照。 Bastion Host 内部ネットワークを侵入者から保護するコンピュータシステム。 ファイア ウォールおよび強化システムも参照してください。 CA Certificate Authority(認証局)。 ユーザーを認証して証明書を発行する信頼性の ある第三者機関。 ユーザーの公開鍵および証明書にあるその他のセキュリティ 関係の情報のバインディングによって信頼を確立するほか、CA は、その秘密 鍵を使用して証明書の内容に電子署名を行います。 Certificate Authority(認証 局)。 CA を参照。 chroot の牢獄 プロセスおよびそのプロセスのユーザーによってアクセスできるファイルお よびディレクトリを制限する手法。 プロセスは、指定した基本ディレクトリ (ルート) で開始します。ルートディレクトリより上のディレクトリやファイル にはアクセスできません。 CRL 証明書失効リスト。 証明書は、開始日時と満期日時によって定められた特定 の有効期間を指定して発行されます。 しかし、鍵値情報の漏洩など、証明書 の失効が必要となる状況になることがあります。 この場合、認証局は証明書 を失効させることができます。 これは、証明書のシリアル番号を CRL に含め ることで実現されます。これは、CA によって定期的に更新および公開され、 証明書ユーザーが参照することができます。 CA を参照してください。 Data Encryption Standard(デー タ暗号化規格) DES を参照してください。 183 DES Data Encryption Standard(データ暗号化規格)。 対称鍵ブロック暗号に 56 ビッ ト鍵を使用します。 DES は、大量データ暗号化に適しています。 DES は解読方法が発見されています (DES を使用して暗号化したデータは第三 者によって解読されてきています)。 Diameter ベー ス 認証、許可、アカウンティング (AAA) サービスを RADIUS プロトコルによっ て提供するプロトコル。 Diameter プロトコルは RADIUS と同じ機能を、高い 信頼性、セキュリティ、およびインフラストラクチャとともに提供します。 RADIUS も参照してください。 Diffie-Hellman 当事者 2 人が公開された値を交換して同じ対称鍵を生成するための公開鍵手 法。 素数 p および生成元 g から始まります。これらは、公開可能です (通常 これらの数字はよく知られた Diffie-Hellman グループからのものです)。 それ ぞれの当事者は、秘密の値 (a および b) を選択し、公開された値 (g**a mod p) および (g**b mod p) を生成します。 当事者は、それらの公開された値を 交換します。 次に、各当事者はそれぞれ、自分の秘密の値と相手方の公開さ れた値を使用して同じ対称鍵 (g**a)**b mod p および (g**b)**a mod p を生成します。これらは、どちらも、g**(a*b) mod p となり、これから の通信に使用します。 Diffie-Hellman 方式は、中間者攻撃や第三者攻撃 (スプーフィング) を防止する ために、認証と組み合わせる必要があります。 たとえば、Diffie-Hellman は、 証明書や事前共有鍵認証とともに使用することができます。 DoS(サービス 拒否) 攻撃 システムがネットワークパケットに対する応答を阻止されシステムが要求に 対するサービスに対応できなくなるような攻撃。 DoS(サービス拒否) 攻撃は、 甚大なリソースを消費する不正な要求が脆弱なシステムに殺到することによっ て遂行されます。 DoS(サービス拒否) 攻撃は、多くの場合、ホストスプーフィ ングで使用され、スプーフィングされたホスト (スプーファーの想定している IP アドレスをもつホスト) を、スプーファーと、スプーファーがアクセスを試 みているシステムとの間での交信に参加させないようにします。 EAP Extensible Authentication Protocol(拡張認証プロトコル)。 複数の認証方式およ びプロトコルを使用するためのフレームワークを提供するプロトコル。認証 方式やプロトコルにはパスワード、Kerberos およびチャレンジ-レスポンスプ ロトコルなどがあります。 Encapsulating Security Payload(カプセル化セキュリティペイロード)。 ESP を参照。 ESP Encapsulating Security Payload(カプセル化セキュリティペイロード)。 AH は IPsec プロトコルスイートの一部です。 ESP は、機密性 (暗号化) および再送防 止サービスを提供します。 オプションの ESP 認証フィールド (認証済み ESP) を使用するかまたは認証ヘッダメッセージ内でネストするかによって、認証 とともに使用する必要があります。 認証済み ESP は、データ原点認証とコネ クションレス型統合を提供します。 トンネルモードで使用されると、ESP は、 限定されたトラフィックフローの秘匿性も提供します。 Extensible Authentication Protocol(拡張認証プロトコル) EAP を参照。 184 用語集 HMAC Hashed Message Authentication Code (ハッシュメッセージ認証コード)。 MAC も参照してください。 IKE IKE(インターネット鍵交換) プロトコルは IPsec プロトコルスイートの一部で す。 IKE は、IPsec ESP または AH プロトコル交換の前に使用され、使用され る暗号化や認証サービスを決定します。 また、IKE は、ESP および AH によっ て使用される対称 (共有) 暗号鍵の配布と更新を管理します。 ESP および AH も参照してください。 IPSec ポリシー IPSec ポリシーは、データが安全に転送されるための規則を指定します。 IPSec ポリシーは、通常、パケットフィルター情報とアクションを含みます。 パケッ トフィルターは、パケット用のポリシーを選択するために使用され、アクショ ンはポリシーを使用してパケットに適用されます。 Kerberos クライアントまたはサーバーアプリケーションに強力な認証を提供するよう に設計されたネットワーク認証プロトコル。 Kerberos を使用すると、ユー ザーは暗号化されていないパスワードをネットワークを介して送信しなくて も自身の認証が可能です。 LDAP (Lightweight Directory Access Protocol) LDAP プロトコルは、ネットワークディレクトリアクセスを提供します。 LDAP は、OSI X.500 ディレクトリサービスに似たディレクトリ構造を使用します。 しかし、データを文字列として格納し TCP/IP ネットワークスタックを OSI ネットワークスタックの代わりに使用します。 MAC MAC(メッセージ認証コード) は、認証タグで、チェックサムともいいます。 認証アルゴリズムのアプリケーションによって秘密鍵とともに、メッセージ に対して生成されます。 MAC は、同じ鍵で計算され検証されるので、電子署 名とは異なり、目的の受信者によってのみ検証されます。 Hash function-based MACs (HMACS) は、ハッシュ関数と組み合わせて 1 つま たは複数の鍵を使用し、メッセージに追加されるチェックサムを生成します。 1 つの例は、メッセージ認証の鍵付 MD5 方式です。 MAC は、ブロック暗号からも生成されます。 データは DES CBC を使用して メッセージブロック内で暗号化され、暗号文内の最後のブロックがチェック サムとして使用されます。 DES-CBC MAC は、米国および国際標準として広 く使用されています。 MD5 Message Digest-5。 RSA によって開発された認証アルゴリズム。 MD5 は、 128 ビット鍵を使用して 128 ビットのメッセージダイジェストを生成しま す。 IPSec は、メッセージダイジェストを 96 ビットに短縮します。 NAT Network Address Translation(ネットワークアドレス変換)。 内部プライベート ネットワーク内の複数のシステムが 1 つの公開インターネット IP アドレスを 共有することを可能にする手法。 NAT ゲートウェイは、パケットを内部ネッ トワークから外部インターネットに転送するときに内部 IP アドレスおよびポー トをその公開 IP アドレスに置き換え (変換し)、リターンパスに対しては逆変 換を行います。 PAM Pluggable Authentication Module(組込み可能認証モジュール)。 システム管理 者が、システムログインユーティリティなどの HP-UX ユーティリティに対す る、認証のサービス、アカウント管理、セッション管理、パスワード管理を 設定できる認証フレームワーク。 PFS (Perfect Forward Secrecy) PFS を使用する場合、1 つの鍵を公開すると、その鍵によって保護されるデー タのみにアクセスが許可されます。 RADIUS RADIUS (Remote Authentication Dial In User Service) プロトコルは、ネットワー クサービスへのアクセスを管理するために広く使用され実装されています。 ネットワークアクセス装置と、認証、許可、アカウンティング操作を実行す る認証、許可、アカウンティング (AAA) サーバーとの間の情報交換に関する 185 標準を定義します。 RADIUS AAA サーバーは、(ユーザー名およびパスワード を検証する) 認証用のユーザープロファイル、配布するサービスのタイプを指 定する構成情報、ユーザーアクセス制限の実施方針を管理することができま す。 RADIUS プロトコルは、認証交換用のフレームワークのみを提供し、多数の認 証方式と併用することができます。 RBAC Role-Based Access Control(ロールベースのアクセス制御)。 システムリソース、 コマンド、およびシステムコールへのきめ細かいアクセスを提供する HP-UX 機構。 ユーザーはロールに割り当てられ、ユーザーはロールに基づいたアク セス特権を付与されます。 Role-Based Access Control(ロールベースのアクセス制御) RBAC を参照。 186 用語集 RSA RSA は Rivest、Shamir、Adelman の頭文字。 プライバシー (暗号化) および認 証 (署名) に使用可能な公開-秘密鍵暗号システム。 暗号化については、システ ム A は、システム B の公開鍵によって暗号化されたデータを送信することが できます。 システム B の秘密鍵のみでそのデータを復号することができま す。 認証については、システム A は電子署名付きのデータを送信することが できます (システム A の秘密鍵によるダイジェストまたはハッシュ暗号化)。 署名を検証するには、システム B はシステム A の公開鍵を使用して署名を復 号し、復号されたハッシュまたはダイジェストをメッセージに対して計算し たハッシュまたはダイジェストと比較します。 SASL Simple Authentication and Security Layer。 認証サービスを接続ベースのネッ トワークアプリケーションに追加するために使用するプロトコル。 SASL API は、複数の認証サービスにアクセスする共通のインタフェースをプログラマ が使用できる柔軟なフレームワークを提供します。 Secure Shell SSH を参照。 Secure Sockets Layer SSL を参照。 SHA1 Secure Hash Algorithm-1。 160 ビット鍵を使用して 160 ビットメッセージダ イジェストを生成する認証アルゴリズム。 SSH Secure Shell。 リモートログイン、ファイル転送、およびリモートコマンド実 行のための安全な代替物を提供する一連のネットワークサービス。 また、SSH は、安全なトンネリング機能、ポート転送、および SSH エージェントを提供 し、クライアント上の秘密鍵を維持します。 SSL Secure Sockets Layer。 ネットワークデータの暗号化に使用されるプロトコル。 SSL プロトコルは、データスタック内で TCP の上になります。 SSL は、公開/ 秘密鍵を使用してプリンシパルを認証し秘密 (共有) 鍵を交換します。 次に、 SSL は、秘密鍵を使用してデータを暗号化します。 VPN Virtual Private Network。 グローバルインターネットなどの公的ネットワーク 内のプライベートネットワーク。 VPN は仮想です。物理的なネットワーク内 に独立した論理ネットワークを効率的に作成するためにトンネルを使用する からです。 VPN はプライベートです。外部のユーザーは転送されているデー タを見たり変更したりすることができないからです。 ホスト ID 認証を使用す る VPN は、IP アドレススプーフィングに対する保護も提供します。 アウトオブバ ンド鍵交換 対面や電話など、通常のコンピュータ通信チャネル外にある安全な通信チャ ネルを使用した鍵交換。 暗号化 読み取り可能な形式から読み取りできない形式にデータを変換してプライバ シーを実現するプロセス。 暗号化関数は、通常、データと暗号鍵 (値または ビットシーケンス) を入力として受け取ります。 暗号方式 通常のデータ (つまりクリアテキスト データ) を暗号化するプロセス。特定の 情報の所持者のみが解読できます。 イベント ファイルを作成する、ファイルを開く、システムにログインするなどのアク ション。 監査 セキュリティ侵害の分析と検出に関するイベントの選択的な記録です。 HP-UX 監査システムは、ユーザーおよびプロセスを監査する機構を提供します。 強化システム 不適切なユーザーや有害な侵入型アプリケーションからネットワークを保護 するためのバリアとして使用される、最小のオペレーティング システム機能、 ユーザー、およびアプリケーションを備えるコンピュータシステム。 Bastion Host も参照してください。 共有鍵暗号方 式 2 つの当事者が同じ鍵を使用して (同じ鍵を共有して) データを暗号化または 認証する暗号方式。 データのプライバシーまたは認証を提供するには、鍵の 値を知っているのは 2 つの当事者のみである必要があります (鍵は秘密にする 必要があります)。 共有鍵暗号方式は、公開-秘密鍵暗号方式よりもデータの暗 号化が効率的なので、大量データ暗号化によく使用されます。 しかし、共有 鍵の配布や確立にはアウトオブバンド鍵交換 (対面口頭による交換など)、 Diffie-Hellman 交換などの機構が必要です。 秘密鍵暗号方式または対称鍵暗号方式も参照してください。 許可 アクセス制御情報を評価して、主体 (ユーザー、ホスト、デバイスなどのコン ピュータネットワーク内の主体) が、特定のリソースつまり対象物に対する操 作の実行を許可されているかどうかを判断するプロセス。 許可は、通常、主 体の身元が認証された後で実行されます。 RBAC 関連では、許可は、特に、操作と対象物の組み合わせのことを示し、 パーミッションともいいます。 RBAC を参照してください。 組込み可能認 証モジュール PAM を参照。 公開-秘密鍵暗 号方式 秘密鍵暗号方式 を参照。 公開鍵暗号方 式 数学的に関連のある 2 つの鍵 (たとえば k1 と k2) を使用して、k1 によって暗 号化されたデータが k2 によってのみ復号できるよう暗号方式。 また、ほと んどのアルゴリズムは、k2 によって復号できるデータを k1 の保持者のみが 正しく暗号化できることを保証しています。 1 つの鍵は秘密である (所有者のみが知っている) 必要がありますが、2 つ目 の鍵は広く知らしめることができ (公開)、鍵の配布を簡単に管理できます。 公開鍵暗号方式は、コンピュータの使用上コストがかかるので、大量データ 暗号化には実用的ではありません。 代わりに、公開鍵暗号方式は、通常、デー タの認証に使用されます。 非対称鍵暗号方式 (2 つの鍵が異なる) または公開-秘密鍵暗号方式も参照して ください。 コンパートメ ント システムのさまざまな構成要素を互いに隔離する手法。 正しく設定されると、 構成要素は HP-UX システムとその上にあるデータを守る効果的な手法になり ます。 187 188 用語集 細分化された 特権 特定の低レベル操作を実行するパーミッション (特定のシステムコールを実行 するパーミッションなど)。 事前共有鍵 暗号化または認証用に 2 つのシステムが同意した暗号値。 鍵は、コンピュー タデータ通信の前に、通常、アウトオブバンド鍵交換 (対面による口頭での交 換など) によって交換されます。 共有鍵暗号も参照してください。 シャドウパス ワード ユーザーパスワードのセキュリティを向上させる構造。 シャドウパスワード 構造 (spwd) には、パスワード構造で使用される暗号化されたユーザーパス ワードとその他の情報が含まれています。 シャドウパスワード構造は、通常、 特権ユーザーのみが読み込み可能なファイルに格納されます。 主体 コンピュータネットワーク内のユーザー、ホスト、デバイス、またはその他 の主体。 認可関連では、許可の決定を必要とする対象物に対する操作の要求 元。 手動鍵 手動で設定された IPSec 用の暗号鍵。 IPSec セキュリティアソシエーション (SA) 用の暗号鍵およびその他の情報を生成する IKE (Internet Key Exchange) プ ロトコルの代替手段です。 証明書 セキュリティ証明書は、公開鍵をプリンシパル (特定の人物、システム、デバ イスなどの主体) に関連付けます (バインディング)。 セキュリティ証明書は、 対応する秘密鍵の所持者 (人、デバイスなどの主体) の身元を保証して確認す る、認証局 (CA) というユーザーが信頼を置く実体によって発行されます。 CA は、CA の秘密鍵で証明書に電子署名します。したがって、証明書は CA の公開鍵を使用して検証することができます。公開鍵証明書で最もよく使用 される形式は、国際標準化機構 (ISO) の規格 X.509 Version 3 です。 証明書失効リ スト CRL を参照。 推移する信頼 関係 信頼関係を他の信頼されているエンティティに拡張すること。 A と B の両方 が C を信頼している場合、A と B は C を介した推移する信頼関係を使用して 互いに信頼し合うことができます。 階層構造では、A と B は、共通のルート に信頼の連鎖を確立することができれば、推移する信頼関係を確立すること ができます。 スタックバッ ファーオー バーフロー攻 撃 プロセスに悪意のあるコードを実行させることでシステムを攻撃する手段。 これは、通常、スタック内の入力バッファーをオーバーフローさせて悪意の あるコードを挿入し、その悪意のあるコードを実行するようにスタックポイ ンタを変更することで実現されます。 バッファーオーバーフロー攻撃も参照 してください。 ステートフル パケットフィ ルター 上位層プロトコルフィールドおよび TCP 接続状態などの状態情報を使用する 一種のパケットフィルタリング。 セキュリティ 証明書 証明書 を参照。 操作 1 つまたは複数の対象物に対する特定モードのアクセス。 たとえば、ファイ ルへの書き込み。 認可関連では、認可は主体の対象物に対する操作に対して 与えられます。 第三者攻撃 第三者攻撃では、攻撃者は、攻撃されている 2 つの当事者、A および B の間 のパケットを傍受します。A および B は、メッセージをお互いの間で交換し ているつもりですが、実際は第三者と交換しています。 攻撃者は A の身元で B とメッセージを交換し、B の身元で A とメッセージを交換しているように 装います。これは中間者攻撃ともいいます。 対称鍵暗号方 式 共有鍵暗号方式 を参照。 対象物 システム、ファイル、プリンター、端末、データベースレコードなどのシス テムまたはネットワークのリソース。 認可関連では、認可は主体の対象物に 対する操作に対して与えられます。 チャレンジ-レ スポンス認証 認証者が認証対象のユーザーまたはプリンシパルにランダムな値を送る (チャ レンジ) 認証の方式。 ユーザーは、チャレンジ値に基づいたレスポンスと、認 証者との間で過去に確立された MD5 ハッシュ値などの共有の秘密の値を送り 返します。 通常のパスワード交換とは異なり、チャレンジ/レスポンスダイアログは変化 するので、侵入者は認証を得るためのユーザーの応答を再現できません。 中間者攻撃 第三者攻撃 を参照。 電子署名 電子署名は、公開/秘密鍵ペアを使用する鍵付ハッシュアルゴリズムの一種で す。 送信者はその秘密鍵とデータを入力として使用し電子署名値を作成しま す。 特権 コンピュータシステム上でアクションを実行するためのパーミッション。 認証 主体 (ユーザー、ホスト、デバイスなどのコンピュータネットワーク内の主体) の身元を確認するプロセス。 認証は、多くの場合、システム内のリソースへ のアクセスを許可する前提条件になります。 または、データの完全性やデー タ送信元の身元を確認するプロセスでもあります。 パケットフィ ルター ネットワークパケットを選択または制限するために使用されるフィルター。 パケットフィルターには、ネットワークパケット特性を指定します。 通常、 パケットフィルターには、送信元および宛先 IP アドレス、上位層プロトコル (TCP や UDP など)、および TCP または UDP ポート番号を指定します。 また、 パケットフィルターには、IPv6 ヘッダタイプ、上位層メッセージタイプ (ICMP メッセージタイプなど)、TCP 接続状態などのその他のパケットフィールドを 定義することもあります。 バッファー オーバーフ ロー攻撃 プロセスエラーを引き起こしたりプロセスに悪意のあるコードを実行させた りすることでシステムを攻撃する手段。 通常、スタック内の入力バッファー をオーバーフローさせることで実現されます。 これによって、メモリ違反や その他のエラーが起こり、プロセスを終了させたり、プロセスに悪意のある コードを実行させたりします。 スタックバッファーオーバーフロー攻撃も参 照してください。 非対称鍵暗号 方式 公開鍵暗号方式 を参照。 秘密鍵暗号方 式 共有鍵暗号方式 を参照。 ファイア ウォール 不適切なユーザーや有害な侵入型アプリケーションからネットワークを保護 するためのバリアとして使用される 1 つまたは複数の装置またはコンピュー タシステム。 Bastion Host および強化システムも参照してください。 フィルター 不必要なオブジェクトを選別する機構、またはアクセスを許可または拒否さ れたオブジェクトを指定するパラメータ。 通常、フィルターは不必要なネッ トワークパケットを選別するために使用されます (パケットフィルター)。 プリンシパル 人物、システム、デバイス、またはその他のエンティティ。 包含 プロセスのアクセス権を制限する 1 つまたは 1 連の機構。 189 RBAC 関連では、包含は、強制アクセス制御と細分化された特権の組み合わせ です。 RBAC を参照してください。 ロール 190 用語集 ロールに割り当てられたユーザーに付与される権限と責任に関連する意味を 持った、組織内における職務。 索引 A ACL HFS の設定, 123 JFS と HFS の比較, 134 JFS の設定, 127 NFS との比較, 135 高信頼性システムのバックアップ/回復, 179 最小の JFS の場合の変更例, 130 設定, 123 デフォルトの JFS エントリー, 131 AES (Advanced Encryption Standard), 183 AH (Authentication Header) 定義, 183 at コマンド, 174 audisp コマンド 監査ログ出力の表示, 168 authadm, 82 構文, 82 例, 82 B Bastille (参照 HP-UX Bastille) Bastion Host, 61 batch, 174 btmp ファイル 失敗したログインのトラッキング, 35 C CA (認証局) 定義済み, 183 CDE ログインマネージャ ログイン, 34 CDE ロックマネージャ 構成, 56 chfn, 176 chmod コマンド class エントリーでの影響, 129 ファイルアクセスパーミッションの変更, 120 chown, 30, 176, 180 chroot の牢獄, 157 chsh, 176 cmdprivadm, 83 構文, 83 例, 83 crontab, 174 Diffie-Hellman, 184 グループ, 184 E ESP (Encapsulating Security Payload) 定義, 184 /etc/d_passwd ファイル アクセス制御, 57 /etc/default/security, 27 /etc/dialups ファイル アクセス制御, 57 /etc/ftpd/ftpusers, 143 /etc/ftpd/ftpusers ファイル アクセスの変更, 143 /etc/group ファイル, 176 /etc/inetd.sec, 146 /etc/inetd.sec ファイル, 146 /etc/pam_user.conf ファイル, 37 /etc/pam.conf ファイル, 37 システム共通の構成, 39 /etc/passwd, 30 /etc/passwd ファイル, 173–176 アプリケーション ユーザーアカウント, 32 回復, 30 擬似アカウントの例, 46 形式, 44 制限付きアカウント, 32 変更, 43 /etc/rbac/aud_filter, 170 /etc/rbac/cmd_priv, 84 エントリ, 85 /etc/security.dsc ファイル, 48 /etc/shadow シャドウパスワードファイル, 45 F fbackup コマンド, 29 高信頼性バックアップ, 179 frecover コマンド, 29 高信頼性回復, 179 fsck コマンド ファイル破損の訂正, 122 FTP 匿名 ftp の保護, 142 保護, 142 ftpd サーバー, 143 G D DES(データ暗号化規格), 184, 187 /dev 特殊デバイスファイル セキュリティの留意事項, 135 getacl コマンド ACL の表示, 129 getdvagent 関数, 179 getfilexsec コマンド, 98, 112 getprdfent 関数, 179 191 getprocxsec コマンド, 98, 112 getprpwent 関数, 179 getprtcent 関数, 179 getpwent 関数, 179 getspwent 関数, 179 GSS-API SSH, 154 H HFS, 123 HFS ACL JFS ACL との比較, 134 NFS との比較, 135 設定, 123 操作するコマンドと呼び出し, 125 High Performance File System 「HFS」を参照, 123 HP-UX Bastille, 61 to-do リスト 実行, 63 使用, 65 インストール, 62 構成ファイル 作成, 62–63 複製, 62 削除, 68 使用 対話形式, 62 非対話形式, 63 対話形式での使用, 62 ダウンロード, 62 ドリフト bastille_drift の使用, 62 構成ドリフトファイルへのアクセス, 67 状態の比較, 62 非対話形式での使用, 63 ヒントとトラブルシューティング, 67 ファイル 場所と説明, 66 ログファイルの表示, 65 変更の回復, 66 レポート 生成, 62 ファイルへのアクセス, 66 HP-UX RBAC アーキテクチャ, 74 監査, 170 構成ファイル, 73 構成要素, 72 コマンド, 73 ラッピング, 79 コンパートメントの構成, 85 操作, 75 デフォルトユーザー, 81 トラブルシューティング, 90 マンページ, 73 HP-UX のインストール 192 索引 インストール時セキュリティオプションの設定, 27 インストール後のセキュリティのヒント, 29 事後のセキュリティパッチのインストール, 27 セキュリティの留意事項, 25 セキュリティパッチのインストール, 27 ブート中のセキュリティ侵害の防止, 25 HP-UX のセキュリティ報告書 申し込み, 28 I IKE (Internet Key Exchange) プロトコル, 184 inetd デーモン TCP ラッパー, 146 概要, 144 保護, 145 IPSec ポリシー 定義, 185 IT リソースセンター, 28 J JFS, 123 JFS ACL HFS ACL との比較, 134 NFS との比較, 135 setacl コマンドを使用した変更, 132 最小の場合の変更例, 130 設定, 127 デフォルトエントリーの使用, 131 L last コマンド 使用例, 35 LDAP ディレクトリサーバー 保存されたパスワードの保護, 47 Logical Volume Manager 「LVM」を参照, 136 login コマンド, 34, 175 lost+found ディレクトリ, 30, 180 LVM, 136 M MAC, 185 N NFS, 139 ACL との比較, 135 NFS マウントされたファイルの保護, 140 クライアントの保護, 139 サーバーの保護, 139 NIS 保存されたパスワードの保護, 47 P PAM 概要, 37 システム共通の構成, 39 ユーザーの認証, 36 PAM サービスモジュール, 37 PAM 認証 ログイン例, 41 PAM ライブラリ, 38 parameter PASSWORD_HISTORY_DEPTH, 178 passwd コマンド, 176 例, 44 PASSWORD_HISTORY_DEPTH parameter, 178 PFS (Perfect Forward Secrecy) 定義済み, 185 privedit, 88 オプション, 89 構文, 89 privrun, 86 -p, 85 オプション, 87 構文, 86 操作, 75 例, 88 prpwd, 176 putprpwnam 関数, 179 putpwent 関数, 179 putspwent 関数, 179 R setgid プログラム, 30, 180 管理, 51 setuid プログラム, 180 管理, 51 setuid を行うプログラム, 30 SIS, 147 SSH, 47 GSS-API, 154 HP-UX システム, 155 scp クライアントの実行, 152 sftp クライアントの実行, 152 ssh クライアントの実行, 151 TCP ラッパーのサポート, 156 暗号化, 150 関連するテクノロジ, 156 機能, 150 強力な乱数ジェネレータ, 156 公開鍵ベース認証, 154 実行, 151 ソフトウェア構成要素, 150 特権モード実行, 152 認証, 150, 153 パスワード認証, 155 ポートフォワード, 150 リモートセッションの保護, 149 SSH-1 プロトコル, 155 SSH-2 プロトコル, 155 swlist コマンド, 174 roleadm, 80 構文, 80 例, 80–81 root 欠点, 69 RPC TCP ラッパー, 147 RSA 暗号システム, 185–186 rsh コマンド システムアクセスの制限, 32 T S U /sbin/rc2.d/S760auditing, 174 Sec00Tools セキュリティレベル, 27 Sec20MngDMZ セキュリティレベル, 27 Sec30DMZ セキュリティレベル, 27 Secure Shell 「SSH」を参照, 149 Security Patch Check 使用, 28 security_patch_check コマンド 例, 28 SecurityMon ファイルセット, 174 setacl コマンド ACL の変更, 129 使用した JFS ACL の変更, 132 setfilexsec コマンド, 98, 112 umask コマンド デフォルトのファイルパーミッションの変更, 121 userdbset コマンド ユーザー属性を定義する例, 50 /tcb/files/auth/*/*, 173, 176, 178–179 /tcb/files/auth/保護されたパスワードデータベース, 174–175 /tcb/files/ttys, 179 TCP ラッパー SSH, 156 スプーフィングからの保護, 146 TMOUT 変数 構成, 56 /tmp, 180 V /var.adm/userdb ファイル, 49 /var/adm/inetd.sec, 146 var/adm/inetd.sec ファイル 構成, 146 W who コマンド ユーザーログイン情報の取得, 36 193 wtmp ファイル 成功したログインのトラッキング, 35 WU-FTPD, 143 getprpwent, 179 getprtcent, 179 getpwent, 179 getspwent, 179 putprpwnam, 179 putpwent, 179 putspwent, 179 あ アクセス 時間に基づくアクセス, 177–178 装置に基づくアクセス, 178 端末制御, 177 パスワード, 177 アクセス制御ポリシースイッチ, 72 インタフェース, 72 カスタマイズ, 90 アクセス制御リスト 「ACL」を参照, 123 暗号化 定義, 184, 187, 189 暗号化パスワードフィールド, 176 い 一次監査ログファイル, 167 一時的アカウント 使用不能化, 32 イベントの監査, 164 インターネットサービス, 141 概要, 141 インターネットデーモン 「inetd デーモン」を参照, 144 き 擬似アカウント 例, 46 きめの細かい特権 構成, 84 強力な乱数ジェネレータ, 156 く グループ ID (gid), 176 グループ ID 設定プログラム 「setgid プログラム」を参照, 51 グループアカウント 管理, 33 け う ゲストアカウント モニター, 32 権限, 70 構成, 81 操作, 70 対象物, 70 権限番号, 175 運用領域 管理, 148 こ か 回復 セキュリティのガイドライン, 29 画面ロック 構成, 56 監査 回復後の有効化, 30 基本プロファイル, 165 コマンド, 160 有効化, 160 ユーザー, 159 監査 ID(aid), 174, 176–177 監査イベント タイプ, 165 監査フラグ, 177 監査ログファイル, 166 既存の上書き, 167 データの簡素化, 169 表示, 168 関数 getdvagent, 179 getprdfent, 179 194 索引 公開鍵ベース認証 SSH によって使用, 154 およびホストベース認証, 154 高信頼性, 177 高信頼性システム データベース, 179 変換, 173–174 高信頼性パスワード, 177 高信頼性パスワードデータベース, 179 コマンド login, 175 swlist, 174 固有のユーザー名 重要性, 34 コンパートメント, 93 IPC の規則, 102 アクティブ化, 96 規則の作成, 99 規則の変更, 99 構造の計画, 95 特権制限規則, 106 トラブルシューティング, 107, 117 ネットワークインタフェースの規則, 105 ネットワークの規則, 103 ファイルシステムの規則, 101 さ 再使用 パスワード, 178 最短時間 パスワードエージング, 178 細分化された特権, 111 し 時間に基づくアクセス制御, 178 自己監査プログラム, 169 システムアクセス リモートのためのセキュリティガイドライン, 56 システム管理 FTP の保護, 142 HP-UX の安全なインストール, 25 HP-UX のファイルシステムの保護, 119 inetd の保護, 145 PAM を使用したユーザーの認証, 36 setuid および setgid プログラムの管理, 51 インストール時セキュリティオプションの設定, 27 インターネットサービスの保護, 141 運用領域の管理, 148 監査のガイドライン, 163 スタックバッファー オーバーフロー攻撃の回避, 54 セキュリティ侵害, 25 セキュリティ属性の定義, 48 セキュリティパッチのインストール, 27 ネットワークでのファイルのセキュリティの制御, 138 パスワードの管理, 42 バックアップのガイドライン, 29 未許可アクセスを防止するためのブート認証の使用, 27 ファイルシステムの安全なマウントとマウント解除, 137 無人ワークステーションおよび端末の保護, 54 ユーザーアクセスの管理, 31 ユーザーの監査, 159 リモートアクセスの管理, 56 ルートアクセスの保護, 59 ログイン中のユーザーの認証, 33 ログインバナーの保護, 58 システム実行レベル アクセス制御, 55 変更, 55 システムのセキュリティ セキュリティ属性の定義, 48 事前共有鍵 定義, 186–190 実行レベル アクセス制御, 55 変更, 55 ジャーナルファイルシステム 「JFS」を参照, 123 シャドウパスワード, 45 寿命 パスワードエージング, 178 証明書失効リスト (CRL), 183, 189 シングルユーザーモード ブート, 26 す スーパーユーザーアクセス 限定 SMH ビルダの使用による制限, 60 再検討, 60 スーパーユーザーのアクセス 保護, 59 モニター, 59 スタックバッファーオーバーフローの保護, 54 スティッキービット 設定, 121 スプーフィング TCP ラッパーを使用した保護, 146 定義済み, 143 せ セキュリティ強化 (参照 HP-UX Bastille) セキュリティ属性 定義, 48 セキュリティパッチ インストール, 27 セキュリティパッチのインストール Security Patch Check の使用, 28 セキュリティレベル インストール時での選択, 27 選択と生成, 177 そ 操作 作成のガイドライン, 78 装置に基づくアクセス制御, 178 装置割り当てデータベース 高信頼性システム, 179 た 端末 画面ロックの構成, 56 無人の場合の保護, 54 端末アクセス, 177 端末制御データベース 高信頼性システム, 179 端末デバイスファイル 保護, 55 て ディスクパーティション セキュリティの留意事項, 136 ディレクトリアクセス 保護, 121 電源異常, 30, 180 ファイルの紛失, 30 195 電話 保護, 57 と バックアップメディア セキュリティ, 179 パッチのインストール, 27 Security Patch Check の使用, 28 匿名 ftp 保護, 142 ふ に 認証, 174 PAM の使用, 36 PAM のログイン例, 41 SSH によって使用, 153 ブートの使用, 27 ログイン中, 33 ね ネットワーク管理, 148 運用領域の管理, 148 ファイルのセキュリティの制御, 138 ネットワーク制御ファイル パーミッションの確認, 138, 148 ネットワーク制御ファイルのパーミッションの確認, 148 は パーミッション ネットワーク制御ファイルの確認, 138, 148 パスワード, 177 暗号化, 175 暗号化フィールド, 176 エージング, 174, 176–178 最短時間, 178 寿命, 178 満期時間, 178 エントリー 操作, 179 管理, 42 再使用, 178 シャドウ, 45 整合性, 175 生成, 177 セキュリティ, 174 タイプ, 177 データベース, 173–174, 176 /tcb/files/auth/, 174–175 適切性の基準, 43 認証 SSH によって使用, 155 ファイル フィールド, 175 保護されたパスワードデータベース, 173–174, 176 履歴, 178 パスワードの管理, 42 バックアップ 高信頼性システム, 173, 179 セキュリティのガイドライン, 29 196 索引 ファイル /etc/group, 176 /etc/passwd, 173–176 ファイルアクセス アクセスパーミッションの設定, 120 ファイルアクセスの管理, 119 ファイルシステム マウントおよびマウント解除のためのセキュリティガイド ライン, 137 ファイルシステムを安全にマウント解除する, 137 ファイルシステムを安全にマウントする, 137 ファイル所有権 設定, 121 ファイルセット SecurityMon, 174 ファイルのセキュリティ /dev 特殊ファイルに関する留意事項, 135 NFS マウントされたファイルの保護, 140 ディスクパーティションと論理ボリュームの保護, 136 ネットワークでの制御, 138 ファイルアクセスの制御, 119 ユーザーアカウントに関連したファイルの保護, 122 ファイル破損 fsck コマンドを使用した検索と訂正, 122 フィルター 定義, 187–189 ブート ブート中のセキュリティ侵害の防止, 25 ブート認証 使用, 27 ブートプロセス 取得, 26 ほ 保護されたパスワードデータベース /tcb/files/auth/, 174–175 補助監査ログファイル, 167 ホストベース認証 SSH によって使用, 154 および公開鍵ベース認証, 154 ま 満期時間 パスワードエージング, 178 も モデムアクセス 管理のためのセキュリティガイドライン, 56 モバイル接続 保護, 57 ゆ ユーザー ID (uid), 176 ユーザー ID(uid), 177 ユーザー ID 設定プログラム 「setuid プログラム」を参照, 51 ユーザーアカウント 制限付き, 32 ユーザーアクセス 管理, 31 ユーザー認証 PAM の使用, 36 PAM のログイン例, 41 ログイン中, 33 ユーザーのセキュリティ 管理, 31 ユーザー名 固有に作成, 34 保護, 58 ログインプロセス 説明, 34 ログファイル 監査, 166 ロックダウンツール (参照 HP-UX Bastille) 論理ボリューム セキュリティの留意事項, 136 わ ワークステーション 無人の場合の保護, 54 ら 乱数ジェネレータ, 156 り リモートアクセス 管理のためのセキュリティガイドライン, 56 リモートアクセスサービス, 141 概要, 141 リモートセッション SSH を使用した保護, 149 リモートセッションの保護, 149 リモートプロシージャコール 「RPC」を参照, 147 領域 管理, 148 履歴 パスワード, 178 る ルートアカウント 保護, 59 ルートアクセス 限定 SMH ビルダの使用による制限, 60 再検討, 60 取得, 26 モニター, 59 ろ ロール グループ, 81 構成, 79 作成のガイドライン, 77 デフォルト, 80 ログイン トラッキングファイル, 35 ログインバナー 197
© Copyright 2024 Paperzz