Red Hat Enterprise Linux 6 セキュリティガイド

Red Hat Enterprise Linux 6
セキュリティガイド
Red Hat Enterprise Linux のセキュリティに関するガイド
Martin Prpič
Yoana Ruseva
Tomáš Čapek
Miroslav Svoboda
Stephen Wadeley
Robert Krátký
Red Hat Enterprise Linux 6 セキュリティガイド
Red Hat Enterprise Linux のセキュリティに関するガイド
Martin Prpič
Red Hat Custo mer Co ntent Services
[email protected] m
To máš Čapek
Red Hat Custo mer Co ntent Services
[email protected] m
Stephen Wadeley
Red Hat Custo mer Co ntent Services
[email protected] m
Yo ana Ruseva
Red Hat Custo mer Co ntent Services
[email protected] m
Miro slav Svo bo da
Red Hat Custo mer Co ntent Services
msvo bo [email protected] m
Ro bert Krátký
Red Hat Custo mer Co ntent Services
[email protected] m
法律上の通知
Co pyright © 20 14 Red Hat, Inc.
This do cument is licensed by Red Hat under the Creative Co mmo ns Attributio n-ShareAlike 3.0
Unpo rted License. If yo u distribute this do cument, o r a mo dified versio n o f it, yo u must pro vide
attributio n to Red Hat, Inc. and pro vide a link to the o riginal. If the do cument is mo dified, all Red
Hat trademarks must be remo ved.
Red Hat, as the licenso r o f this do cument, waives the right to enfo rce, and agrees no t to assert,
Sectio n 4 d o f CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shado wman lo go , JBo ss, MetaMatrix, Fedo ra, the Infinity
Lo go , and RHCE are trademarks o f Red Hat, Inc., registered in the United States and o ther
co untries.
Linux ® is the registered trademark o f Linus To rvalds in the United States and o ther co untries.
Java ® is a registered trademark o f Oracle and/o r its affiliates.
XFS ® is a trademark o f Silico n Graphics Internatio nal Co rp. o r its subsidiaries in the United
States and/o r o ther co untries.
MySQL ® is a registered trademark o f MySQL AB in the United States, the Euro pean Unio n and
o ther co untries.
No de.js ® is an o fficial trademark o f Jo yent. Red Hat So ftware Co llectio ns is no t fo rmally
related to o r endo rsed by the o fficial Jo yent No de.js o pen so urce o r co mmercial pro ject.
The OpenStack ® Wo rd Mark and OpenStack Lo go are either registered trademarks/service
marks o r trademarks/service marks o f the OpenStack Fo undatio n, in the United States and o ther
co untries and are used with the OpenStack Fo undatio n's permissio n. We are no t affiliated with,
endo rsed o r spo nso red by the OpenStack Fo undatio n, o r the OpenStack co mmunity.
All o ther trademarks are the pro perty o f their respective o wners.
概要
本書は、ユーザーおよび管理者が、ローカルまたはリモートからの侵入、悪用および悪意のある行
為に対してワークステーションとサーバーを保護するプロセスと方法を習得する際の手助けとなり
ます。 本ガイドは Red Hat Enterprise Linux にフォーカスしたものですが、概念と手法はすべて
の Linux システムに適用できるものです。データセンター、勤務先および個人宅での安全なコン
ピューター環境の構築に必要となるプランニングとツールについて詳細に説明しています。 管理
上の適切な知識と警戒体制およびツールを備えることで、Linux を実行しているシステムの機能を
フルに活用し、かつこれらのシステムをほとんどの一般的な侵入や悪用の手法から保護することが
できます。
目次
目次
. . 1. 章
⁠第
. . セキュリティの概要
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8. . . . . . . . . .
⁠1.1. セキュリティの概要
8
⁠1.1.1. コンピューターセキュリティとは
8
⁠1.1.1.1. コンピューターセキュリティの成り立ち
8
⁠1.1.1.2. 今日のセキュリティ
8
⁠1.1.1.3. セキュリティの標準化
9
⁠1.1.2. SELinux
9
⁠1.1.3. セキュリティ制御
9
⁠1.1.3.1. 物理的コントロール
10
⁠1.1.3.2. 技術的コントロール
10
⁠1.1.3.3. 管理的コントロール
10
⁠1.1.4. 結論
10
⁠1.2. 脆弱性のアセスメント
11
⁠1.2.1. 敵の視点で考える
⁠1.2.2. アセスメントとテストの定義
⁠1.2.2.1. 方法論の確立
⁠1.2.3. ツールの評価
⁠1.2.3.1. Nmap を使用したホストのスキャン
⁠1.2.3.1.1. Nmap の使用
⁠1.2.3.2. Nes s us
⁠1.2.3.3. Nikto
⁠1.2.3.4. 今後のニーズの予測
⁠1.3. 攻撃者と脆弱性
⁠1.3.1. ハッカーの歴史の概観
⁠1.3.1.1. ハッカーの帽子
⁠1.3.2. ネットワークセキュリティへの脅威
⁠1.3.2.1. セキュリティが十分ではないアーキテクチャー
⁠1.3.2.1.1. ブロードキャストネットワーク
⁠1.3.2.1.2. 集中化サーバー
⁠1.3.3. サーバーセキュリティへの脅威
⁠1.3.3.1. 未使用のサービスと開かれたポート
⁠1.3.3.2. 管理における不注意
⁠1.3.3.3. 本質的に安全ではないサービス
⁠1.3.4. ワークステーションおよび家庭用 PC のセキュリティに対する脅威
11
12
13
13
13
14
14
14
15
15
15
15
16
16
16
16
16
16
17
17
18
⁠1.3.4.1. 不適切なパスワード
⁠1.3.4.2. 脆弱なクライアントアプリケーション
⁠1.4. 一般的な不正使用と攻撃
⁠1.5. セキュリティの更新
⁠1.5.1. パッケージの更新
⁠1.5.2. 署名パッケージの検証
⁠1.5.3. 署名パッケージのインストール
⁠1.5.4. 変更の適用
18
18
18
21
21
22
23
24
. . 2. 章
⁠第
. . ネットワークのセキュリティ保護
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2. 7. . . . . . . . . .
⁠2 .1. ワークステーションのセキュリティ
27
⁠2 .1.1. ワークステーションのセキュリティ評価
27
⁠2 .1.2. BIO S およびブートローダーのセキュリティ
27
⁠2 .1.2.1. BIO S パスワード
27
⁠2 .1.2.1.1. x8 6 以外のプラットフォームのセキュリティ
28
⁠2 .1.2.2. ブートローダーのパスワード
28
⁠2 .1.2.2.1. G RUB のパスワード保護
28
⁠2 .1.2.2.2. インタラクティブスタートアップの無効化
29
1
Red Hat Ent erprise Linux 6 セキュリティガイド
⁠2 .1.2.2.2. インタラクティブスタートアップの無効化
⁠2 .1.3. パスワードのセキュリティ
⁠2 .1.3.1. 強固なパスワードの作成
⁠2 .1.4. 組織内でのユーザーパスワード作成
⁠2 .1.4.1. 強固なパスワードの強制
⁠2 .1.4.2. パスフレーズ
⁠ .1.4.3. パスワードエージング
2
⁠2 .1.5. 動きのないアカウントをロックする
⁠2 .1.6 . アクセス制御のカスタマイズ
⁠2 .1.7. 時間ベースのアクセス制限
⁠2 .1.8 . アカウント制限の適用
⁠2 .1.9 . 管理者コントロール
⁠2 .1.9 .1. Ro o t アクセスの許可
⁠2 .1.9 .2. Ro o t アクセスの拒否
⁠2 .1.9 .3. 自動ログアウトの有効化
⁠2 .1.9 .4. Ro o t アクセスの制限
⁠2 .1.9 .5. アカウントのロック
⁠2 .1.10 . セッションのロック
⁠2 .1.10 .1. G NO ME スクリーンセーバーコマンドを使用して G NO ME をロックする
⁠2 .1.10 .1.1. スクリーンセーバーロックの自動アクティベーション
⁠2 .1.10 .1.2. リモートでのセッションロック
⁠ .1.10 .2. vlo c k を使った仮想コンソールのロック
2
⁠2 .1.11. 利用可能なネットワーク
⁠2 .1.11.1. サービスへのリスク
29
30
31
31
32
32
35
36
37
37
38
38
39
42
43
43
45
46
46
47
48
48
48
⁠2 .1.11.2. サービスの特定および設定
⁠2 .1.11.3. 安全でないサービス
49
50
⁠2 .1.12. 個人用ファイアウォール
⁠2 .1.13. セキュリティ強化の通信ツール
51
52
⁠2 .2. サーバーのセキュリティ
⁠2 .2.1. TCP Wrap p erおよび xinetd によるサービスのセキュア化
⁠2 .2.1.1. TCP Wrap p er によるセキュリティ強化
⁠2 .2.1.1.1. TCP Wrap p er と接続バナー
⁠2 .2.1.1.2. TCP Wrap p er と攻撃警告
⁠2 .2.1.1.3. TCP Wrap p er とロギングの強化
⁠2 .2.1.2. xinetd を使用したセキュリティの強化
⁠2 .2.1.2.1. トラップの設定
⁠2 .2.1.2.2. サービスリソースの制御
53
53
53
53
54
54
55
55
55
⁠2 .2.2. ポートマップのセキュア化
⁠2 .2.2.1. TCP Wrap p er でポートマップを保護する
56
56
⁠ .2.2.2. ip tab les でポートマップを保護する
2
⁠2 .2.3. NIS のセキュア化
⁠2 .2.3.1. ネットワークの注意深いプラニング
56
57
57
⁠2 .2.3.2. パスワードのような NIS ドメイン名およびホスト名を使用する
⁠2 .2.3.3. /var/yp /s ec urenets ファイルを編集する
57
58
⁠2 .2.3.4. 静的ポートの割り当てと ip tab les ルールの使用
⁠2 .2.3.5. Kerb ero s 認証を使用する
58
59
⁠2 .2.4. NFS のセキュア化
⁠2 .2.4.1. ネットワークの注意深いプラニング
2
29
59
59
⁠2 .2.4.2. NFS マウントオプションのセキュア化
⁠2 .2.4.2.1. NFS サーバーのレビュー
⁠2 .2.4.2.2. NFS クライアントのレビュー
59
60
60
⁠2 .2.4.3. 構文エラーに注意
⁠2 .2.4.4. no _ro o t_s q uas h オプションは使用しない
61
61
⁠2 .2.4.5. NFS ファイアウォールの設定
61
目次
⁠ .2.4.5. NFS ファイアウォールの設定
2
⁠2 .2.5. Ap ac he HTTP サーバーのセキュア化
⁠h ttp d モジュールの削除
⁠h ttp d および SELinux
⁠2 .2.6 . FTP のセキュア化
⁠2 .2.6 .1. FTP グリーティングバナー
⁠2 .2.6 .2. 匿名のアクセス
⁠2 .2.6 .3. ユーザーアカウント
⁠2 .2.6 .3.1. ユーザーアカウントの制限
⁠2 .2.6 .4. TCP Wrap p er を使用してアクセスを制御する
⁠2 .2.7. Po s tfix のセキュア化
61
62
63
64
64
64
65
66
66
67
67
⁠2 .2.7.1. サービス拒否攻撃を制限する
⁠2 .2.7.2. NFS と Po s tfix
67
68
⁠2 .2.7.3. メール専用ユーザー
⁠2 .2.7.4. Po s tfix ネットワークリスニングの無効化
68
68
⁠2 .2.7.5. Po s tfix が SASL を使用する設定
⁠D o vec o t のセットアップ
⁠P o s tfix のセットアップ
68
69
69
⁠ の他のリソース
そ
⁠2 .2.8 . Send mail のセキュア化
70
70
⁠2 .2.8 .1. サービス拒否攻撃を制限する
⁠2 .2.8 .2. NFS と Send mail
70
71
⁠2 .2.8 .3. メール専用ユーザー
⁠2 .2.8 .4. Send mail ネットワークリスニングの無効化
71
71
⁠2 .2.9 . リッスンしているポートの確認
⁠2 .2.10 . ソースルーティングの無効化
72
72
⁠2 .2.11. 逆方向パス転送
⁠2 .2.11.1. その他のリソース
⁠ .3. シングルサインオン (SSO )
2
74
75
75
⁠2 .4. PAM (プラグ可能な認証モジュール)
⁠2 .5. Kerb ero s
75
75
⁠2 .6 . TCP Wrap p er と xinetd
⁠2 .6 .1. TCP Wrap p er
76
76
⁠ .6 .1.1. TCP Wrap p er の利点
2
⁠2 .6 .2. TCP Wrap p er の設定ファイル
77
77
⁠2 .6 .2.1. アクセスルールのフォーマット
⁠2 .6 .2.1.1. ワイルドカード
78
79
⁠2 .6 .2.1.2. パターン
⁠2 .6 .2.1.3. Po rtmap と TCP Wrap p er
⁠2 .6 .2.1.4. 演算子
⁠ .6 .2.2. オプションフィールド
2
80
81
81
82
⁠2 .6 .2.2.1. ロギング
⁠2 .6 .2.2.2. アクセス制御
⁠2 .6 .2.2.3. シェルコマンド
⁠2 .6 .2.2.4. 拡張機能
⁠2 .6 .3. xinetd
⁠2 .6 .4. xinetd の設定ファイル
⁠2 .6 .4.1. /etc /xinetd .c o nf ファイル
⁠2 .6 .4.2. /etc /xinetd .d / ディレクトリー
⁠2 .6 .4.3. xinetd 設定ファイルの変更
⁠2 .6 .4.3.1. ロギングのオプション
⁠2 .6 .4.3.2. アクセス制御オプション
⁠2 .6 .4.3.3. バインドとリダイレクトのオプション
⁠2 .6 .4.3.4. リソース管理オプション
82
82
83
83
84
84
85
85
86
86
87
88
90
3
Red Hat Ent erprise Linux 6 セキュリティガイド
⁠2 .6 .4.3.4. リソース管理オプション
⁠2 .6 .5. その他のリソース
⁠2 .6 .5.1. インストール済みの TCP Wrap p er ドキュメント
⁠2 .6 .5.2. 有用な TCP Wrap p er の Web サイト
⁠2 .6 .5.3. 関連書籍
⁠2 .7. 仮想プライベートネットワーク (VPN)
⁠2 .7.1. VPN の機能
⁠2 .7.2. O p ens wan
⁠2 .7.2.1. 設定
⁠2 .7.2.2. コマンド
⁠O p ens wan のサービスコマンド
⁠接続のロードおよびアンロード
⁠接続の起動、オンデマンド、および終了
⁠IPs ec カーネルサブシステムのチェック
⁠IPs ec ユーザースペースサブシステムのチェック
⁠IPs ec 用の生 RSA
⁠IPs ec での証明書の設定
⁠2 .7.3. O p ens wan を使った IPs ec VPN
⁠O p ens wan のインストール
90
90
90
91
91
91
92
92
93
94
94
94
94
94
94
95
96
96
⁠2 .7.4. O p ens wan を使った VPN 設定
⁠2 .7.5. O p ens wan を使用したホスト間の VPN
⁠2 .7.5.1. O p ens wan を使ったホスト間 VPN の検証
⁠2 .7.6 . O p ens wan を使ったサイト間の VPN
97
97
99
10 0
⁠ .7.6 .1. O p ens wan を使ったサイト間 VPN の検証
2
⁠2 .7.7. O p ens wan を使ったサイト間の単一トンネル VPN
⁠2 .7.8 . O p ens wan を使ったサブネット押し出し
⁠2 .7.9 . O p ens wan を使ったロードウォリアーアプリケーション
⁠2 .7.10 . その他のリソース
10 1
10 1
10 2
10 3
10 4
⁠2 .7.10 .1. インストールされているドキュメント
⁠2 .7.10 .2. 役に立つ Web サイト
⁠ .8 . ファイアウォール
2
⁠2 .8 .1. Netfilter と IPTab les
4
90
10 4
10 4
10 4
10 6
⁠2 .8 .1.1. IPTab les の概要
⁠2 .8 .2. 基本的なファイアウォールの設定
⁠2 .8 .2.1. Firewall Co nfig uratio n To o l
⁠2 .8 .2.2. ファイアウォールの有効化および無効化
⁠2 .8 .2.3. 信頼できるサービス
10 6
10 6
10 7
10 8
10 8
⁠2 .8 .2.4. 他のポート
⁠2 .8 .2.5. 設定の保存
⁠2 .8 .2.6 . IPTab les サービスの有効化
⁠ .8 .3. IPTab les の使用
2
10 9
110
110
110
⁠2 .8 .3.1. IPTab les コマンド構文
⁠2 .8 .3.2. 基本的なファイアウォールポリシー
⁠2 .8 .3.3. IPTab les ルールの保存と復元
⁠2 .8 .4. 一般的な IPTab les によるフィルタリング
⁠2 .8 .5. FO RWARD および NAT ルール
111
111
111
112
113
⁠2 .8 .5.1. ポストルーティングと IP マスカレード
⁠2 .8 .5.2. プレルーティング
⁠2 .8 .5.3. DMZ と IPTab les
⁠2 .8 .6 . 悪意のあるソフトウェアと偽装された IP アドレス
114
114
115
115
⁠2 .8 .7. IPTab les と接続追跡 (Co nnec tio n Trac king )
⁠2 .8 .8 . IPv6
⁠2 .8 .9 . IPTab les
⁠2 .8 .9 .1. パケットフィルタリング
116
117
117
117
目次
⁠2 .8 .9 .1. パケットフィルタリング
⁠2 .8 .9 .2. IPTab les のコマンドオプション
⁠2 .8 .9 .2.1. IPTab les コマンドオプションの構造
⁠2 .8 .9 .2.2. コマンドオプション
⁠2 .8 .9 .2.3. IPTab les パラメーターのオプション
⁠2 .8 .9 .2.4. IPTab les マッチオプション
117
120
120
121
122
123
⁠2 .8 .9 .2.5. ターゲットオプション
⁠2 .8 .9 .2.6 . リストのオプション
⁠2 .8 .9 .3. IPTab les ルールの保存
⁠2 .8 .9 .4. IPTab les 制御スクリプト
126
128
128
129
⁠2 .8 .9 .4.1. IPTab les 制御スクリプト設定ファイル
⁠2 .8 .9 .5. IPTab les および IPv6
⁠2 .8 .9 .6 . その他のリソース
⁠2 .8 .9 .6 .1. 有用なファイアウォールの Web サイト
⁠2 .8 .9 .6 .2. 関連ドキュメント
130
131
131
131
132
⁠2 .8 .9 .6 .3. インストールされている IP Tab les ドキュメント
132
. . 3章
⁠第
. . . 暗号化
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. 33
...........
⁠3 .1. 静止しているデータ
⁠3 .1.1. ディスク全体の暗号化
⁠3 .1.2. ファイルベースの暗号化
⁠3 .1.3. LUKS のディスク暗号化
⁠L UKS の概要
⁠3 .1.3.1. Red Hat Enterp ris e Linux での LUKS 実装
⁠3 .1.3.2. 手動によるディレクトリーの暗号化
⁠3 .1.3.3. 既存デバイスへの新規パスフレーズの追加
⁠3 .1.3.4. 既存のデバイスからのパスフレーズ削除
⁠3 .1.3.5. Anac o nd a での暗号化したブロックデバイスの作成
⁠3 .1.3.6 . その他のリソース
⁠ .2. 移動中のデータ
3
⁠3 .2.1. 仮想プライベートネットワーク (VPN)
⁠3 .2.2. SSH (Sec ure Shell)
⁠3 .2.2.1. 暗号化ログイン
⁠3 .2.2.2. 複数の認証方法
⁠3 .2.2.3. SSH の他のセキュア化
⁠プロトコルバージョン
133
133
133
133
133
134
135
137
137
137
138
138
138
138
139
140
140
140
⁠鍵のタイプ
⁠デフォルト以外のポート
⁠R o o t 以外のログイン
⁠ .3. O p enSSL インテル AES-NI エンジン
3
140
140
141
141
⁠3 .4. 乱数ジェネレーターの使用
⁠3 .5. G NU Privac y G uard (G PG )
⁠3 .5.1. G NO ME での G PG 鍵の生成
⁠3 .5.2. KDE での G PG 鍵の作成
⁠3 .5.3. コマンドラインを用いた G PG 鍵の生成
142
143
143
144
144
⁠ .5.4. 公開鍵の暗号化について
3
⁠3 .6 . s tunnel の使用
⁠3 .6 .1. s tunnel のインストール
⁠3 .6 .2. s tunnel を TLS ラッパーとして設定する
146
146
146
146
⁠3 .6 .3. s tunnel の起動、停止、再起動
⁠3 .7. TLS 設定の強化
⁠3 .7.1. 有効にするアルゴリズムの選択
⁠プロトコルのバージョン
⁠公開鍵の長さ
149
149
149
149
151
5
Red Hat Ent erprise Linux 6 セキュリティガイド
⁠公開鍵の長さ
151
⁠3 .7.2. TLS 実装の使用
⁠3 .7.2.1. O p enSSL での暗号化スイートの使用
⁠3 .7.2.2. G nuTLS での暗号化スイートの使用
⁠3 .7.3. 特定アプリケーションの設定
151
151
153
154
⁠3 .7.3.1. Ap ac he HTTP サーバーの設定
⁠3 .7.4. その他の情報
⁠インストールされているドキュメント
⁠オンラインのドキュメント
154
155
155
155
. . 4. 章
⁠第
. . 情報セキュリティの一般原則
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1. 56
...........
. . 5章
⁠第
. . . セキュアなインストール
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1. 57
...........
⁠5 .1. ディスクパーティション
157
⁠5 .2. LUKS パーティション暗号化の利用
157
. . 6. 章
⁠第
. . ソフトウェアのメンテナンス
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1. 58
...........
⁠6 .1. 最小限のソフトウェアインストール
158
⁠6 .2. セキュリティ更新の計画と設定
158
⁠6 .3. 自動更新の調整
⁠6 .4. 一般的なリポジトリからの署名パッケージのインストール
158
158
. . 7. 章
⁠第
. . システム監査
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.6. 0. . . . . . . . . .
⁠使用例
⁠7 .1. Aud it システムのアーキテクチャー
16 0
16 1
⁠7 .2. aud it パッケージのインストール
16 2
⁠7 .3. aud it サービスの設定
⁠7 .3.1. CAPP 環境用の aud itd 設定
16 2
16 3
⁠7 .4. aud it サービスの起動
16 3
⁠7 .5. Aud it ルールの定義
⁠7 .5.1. aud itc tl ユーティリティーを使った Aud it ルールの定義
16 4
16 4
⁠制御ルールの定義
⁠ファイルシステムルールの定義
16 4
16 6
⁠システムコールルールの定義
16 6
⁠7 .5.2. 永続的な Aud it ルールの定義と /etc /aud it/aud it.rules ファイルでの制御
⁠制御ルールの定義
16 7
16 7
⁠ファイルシステムおよびシステムコールのルールの定義
⁠事前設定ルールのファイル
16 8
16 8
⁠7 .6 . Aud it ログファイルについて
⁠最初の記録
⁠2 番目の記録
16 9
16 9
172
⁠ 番目の記録
3
⁠7 .7. Aud it ログファイルの検索
172
174
⁠7 .8 . Aud it レポートの作成
174
⁠7 .9 . Aud it 用の PAM 設定
⁠7 .9 .1. p am_tty_aud it の設定
175
175
⁠7 .10 . その他のリソース
176
⁠オンラインのリソース
⁠インストールされているドキュメント
176
177
⁠m an ページ
177
. . 8. 章
⁠第
. . コンプライアンスおよび
. . . . . . . . . . . . . . . . . . . .O. penSCAP
. . . . . . . . .を使った脆弱性のスキャン
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.7. 8. . . . . . . . . .
⁠8 .1. Red Hat Enterp ris e Linux におけるセキュリティコンプライアンス
⁠8 .2. コンプライアンスポリシーの定義
6
178
178
⁠8 .2.1. XCCDF ファイル形式
18 0
⁠8 .2.2. O VAL ファイル形式
18 2
目次
⁠8 .2.2. O VAL ファイル形式
⁠8 .2.3. データストリームの形式
⁠8 .3. o s c ap の使用
⁠8 .3.1. o s c ap のインストール
18 2
18 5
18 6
18 7
⁠8 .3.2. SCAP コンテンツの表示
18 9
⁠8 .3.3. システムのスキャン
⁠8 .3.4. レポートおよびガイドの生成
19 0
19 1
⁠ .3.5. SCAP コンテンツの検証
8
⁠8 .4. Red Hat Satellite での O p enSCAP の使用
19 3
19 3
⁠8 .5. 実用的な使用例
19 3
⁠8 .5.1. Red Hat 製品のセキュリティ脆弱性の監査
⁠8 .5.2. SCAP セキュリティガイドを使ったシステム設定の監査
⁠8 .6 . その他のリソース
⁠インストールされているドキュメント
⁠オンラインのドキュメント
19 3
19 4
19 4
19 5
19 5
. . 9. 章
⁠第
. . 米連邦政府の標準および規制
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.9. 6. . . . . . . . . .
⁠9 .1. はじめに
19 6
⁠9 .2. 連邦情報処理標準 (FIPS: Fed eral Info rmatio n Pro c es s ing Stand ard )
⁠9 .2.1. FIPS モードの有効化
19 6
19 6
⁠9 .3. NISPO M (Natio nal Ind us trial Sec urity Pro g ram O p erating Manual)
19 9
⁠9 .4. PCI DSS (Payment Card Ind us try Data Sec urity Stand ard )
⁠9 .5. セキュリティ技術導入ガイド (Sec urity Tec hnic al Imp lementatio n G uid e)
19 9
19 9
. . 1. 0. 章
⁠第
. . .参考資料
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.0. 0. . . . . . . . . .
.暗号の標準
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.0. 2. . . . . . . . . .
⁠A .1. 同期式の暗号
20 2
⁠A .1.1. 高度暗号化標準 (AES)
20 2
⁠A .1.1.1. AES の歴史
⁠A .1.2. データ暗号化標準 (DES)
20 2
20 2
⁠A .1.2.1. DES の歴史
⁠A .2. 公開鍵暗号
⁠A .2.1. Diffie-Hellman
20 2
20 2
20 3
⁠A .2.1.1. Diffie-Hellman の歴史
⁠A .2.2. RSA
20 3
20 3
⁠A .2.3. DSA
20 4
⁠A .2.4. SSL/TLS
⁠A .2.5. Cramer-Sho up 暗号システム
20 4
20 4
⁠A .2.6 . ElG amal 暗号
20 4
. . . . . .システムのリファレンス
Audit
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.0. 6. . . . . . . . . .
⁠B .1. Aud it イベントフィールド
⁠B .2. Aud it 記録のタイプ
20 6
20 9
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.1. 4. . . . . . . . . .
改訂履歴
7
Red Hat Ent erprise Linux 6 セキュリティガイド
第1章 セキュリティの概要
ビジネスの運営や個人情報の記録において、ネットワーク化された強力なコンピューターへの依存度が高
まっていることから、各種業界ではネットワークとコンピューターのセキュリティの実践に関心が向けら
れています。企業は、システム監査の適正な実施やソリューションが組織の運営要件を満たすようにするた
めに、セキュリティ専門家の知識と技能を求めてきました。ほとんどの組織はますます動的になってきてい
ることから、従業員は会社の重要な IT リソースにローカルまたはリモートでアクセスするようになってい
ます。このため、セキュアなコンピューティング環境に対するニーズはより顕著になっています。
しかし残念なことに、多くの組織 (個々のユーザーも含む) が、機能性や生産性、便利さ、使いやすさおよび
予算面の懸念事項にばかり目を向けてセキュリティを付け足しと見なし、セキュリティのプロセスが見過
ごされています。さらに、セキュリティの適切な実施については、無許可の侵入が発生した 後にはじめて徹
底されることも多くあります。多くの侵入の試みを阻止する効果的な方法は、インターネットなどの信頼で
きないネットワークにサイトを接続する前に、適切な措置を講じることです。
注記
本書では、/l i b ディレクトリにあるファイルにも言及しています。64 ビットのシステムを使用し
ている場合は、それらのファイルの一部は /l i b6 4 にある可能性があります。
1.1. セキュリティの概要
1.1.1. コンピューターセキュリティとは
コンピューターセキュリティは、コンピューティングと情報処理の幅広い領域で使用される一般的な用語
です。日常業務や重要な情報へのアクセスにおいてコンピューターシステムとネットワークに依存する業界
は、企業データを総体的資産の重要な部分であると見なしています。総保有コスト (Total Cost of
Ownership: TCO) や サービスの品質 (Quality of Service: QoS) などのいくつかの用語および評価指標は日
常的なビジネス用語として用いられるようになっていますが、これらの評価指標を用いて、各種の業界はプ
ランニングおよびプロセス管理コストの一環としてデータ保全性や可用性などを算出しています。電子商取
引などを行う業界では、データの可用性と信頼性がビジネスの成否を決める可能性があります。
1 .1 .1 .1 . コンピューターセキュリティの成り立ち
公開ネットワークへの依存度が高まり、個人情報、金融情報その他の機密情報の開示を防ぐために、情報セ
キュリティが長年にわたって進歩してきました。Mitnick ⁠ [1] や Vladimir Levin ⁠ [2] 事件などの数多くの事例
が起こる度に、あらゆる業界の企業は、情報の送信と開示などの取扱い方法の見直しを迫られてきました。
さらにインターネットの普及は、データセキュリティにおける一層の努力を喚起する最も重要な進化の 1
つとなりました。
個人のコンピューターからインターネット上のリソースにアクセスする人の数は増え続けています。リサー
チや情報収集から電子メールや電子商取引に至るまで、インターネットは 20 世紀の最も重要な進歩の 1 つ
と見なされています。
しかし、インターネットとその初期のプロトコルは、 信頼ベースのシステムとして開発されました。つま
り、インターネットプロトコルはそれ自体がセキュリティ保護されるものとしては設計されませんでした。
TCP/IP 通信スタックには承認されたセキュリティ標準が組み込まれておらず、ネットワーク全体で潜在的
に悪意のあるユーザーやプロセスに対して無防備な状態になっています。最近の開発によりインターネット
通信の安全性は高まっていますが、依然として全国で注目されるような事件も起こっており、完全に安全な
ものはないという警告になっています。
1 .1 .1 .2 . 今日のセキュリティ
8
⁠第1 章 セキュリティの概要
2000 年 2 月には、分散サービス妨害 (D D oS: D istributed D enial of Service) 攻撃が、インターネット上
のトラフィックの最も多いサイトのいくつかに仕掛けられました。攻撃者は ping flood とも呼ばれる大型の
ICMP パケットを送信してルーターを数時間使用不可能にし、yahoo.com、cnn.com、amazon.com、
fbi.gov および他のいくつかのサイトを通常のユーザーから完全にアクセス不能にしました。この攻撃は、
不明の攻撃者が特別な目的で作成された広く出回っているプログラムを使ってなされました。これらのプロ
グラムは、脆弱なネットワークサーバーをスキャンし、サーバーに トロイの木馬と呼ばれるクライアント
アプリケーションをインストールし、それに感染したサーバーが犠牲サイトを溢れさせ、かつそれらを利用
不可能して攻撃のタイミングを設定します。使用されるルーターやプロトコルがパケットの目的や送信先に
かかわらず、すべての受信データを受け取ってしまう構造になっている点に根本的な弱点があると、多くの
人が非難しました。will possibly be removed
2007 年には、Wired Equivalent Privacy (WEP) 無線暗号化プロトコルの広く知られた脆弱性を悪用する
データ侵害により、世界中の金融機関から 4500 万件を超えるクレジットカード番号が盗まれました。
残念なことに、システムとネットワークのセキュリティ問題は複雑化する可能性があるため、組織の情報に
対する捉え方や、使用法、処理方法、および送信方法などの複雑な要素を十分に把握しておくことが求めら
れます。組織 (および組織を構成する人々) がビジネスを行う方法を理解することは、適切なセキュリティ
計画を実施する上で非常に重要になります。
1 .1 .1 .3. セキュリティの標準化
すべての業界の企業は、米国医師会 (AMA: American Medical Association) や米国電気電子学会 (IEEE:
Institute of Electrical and Electronics Engineers) などの標準化推進団体によって作成される規制やルール
に従っています。情報セキュリティにも同じことが言えます。多くのセキュリティコンサルタントやベン
ダーは 機密性 (Confidentiality) 、保全性 (Integrity) 、可用性 (Availability) の頭文字をとった CIA として知られ
る標準セキュリティモデルを採用しています。この 3 階層モデルは、機密情報のリスク評価やセキュリ
ティ方針の確立において一般的に採用されているモデルです。以下でこの CIA モデルについて説明します。
機密性 — 機密情報は、事前に定義された個人に対してのみ利用可能とする必要があります。情報の許可
されていない送信や使用は、制限する必要があります。例えば、情報に機密性があれば、権限のない個
人が ID 盗難やクレジット詐欺などの悪意のある目的で顧客情報や財務情報を入手できません。
保全性 — 情報は、不完全または不正確になるように改ざんすべきではありません。認証されていない
ユーザーは、機密情報を変更したり破壊する機能を使用できないように制限される必要があります。
可用性 — 情報は、認証されたユーザーが必要な時にいつでもアクセスできる必要があります。可用性
は、情報が合意された頻度とタイミングで入手できることを保証します。これは、パーセンテージで測
定されることが多く、ネットワークサービスプロバイダーやその企業顧客が使用するサービスレベルア
グリーメント (SLA) で正式に合意されます。
1.1.2. SELinux
Red Hat Enterprise Linux には、SELinux と呼ばれる Linux カーネルの拡張機能が含まれ、この機能は、
システム内のファイル、プロセス、ユーザーおよびアプリケーションに対して詳細な制御を提供する強制ア
クセス制御 (MAC: Mandatory Access Control) アーキテクチャーを実装します。SELinux の詳細な議論は
本書のスコープ外となりますが、SELinux の詳細と Red Hat Enterprise Linux での使用法については、
Red Hat Enterprise Linux SELinux ユーザーガイド を参照してください。SELinux によって保護されるサー
ビスの設定と実行に関する詳細は、SELinux Managing Confined Services Guide を参照してください。
SELinux についてのその他の入手可能なリソースは、10章参考資料 に記載されています。
1.1.3. セキュリティ制御
コンピューターセキュリティは多くの場合、以下の 3 つの異なるマスターカテゴリーに分類され、一般に
はコントロールと呼ばれています。
物理的
9
Red Hat Ent erprise Linux 6 セキュリティガイド
技術的
管理的
これら 3 つの大まかカテゴリーは、セキュリティの適切な実施における主な目的を定義するものです。こ
れらのコントロールには、コントロールおよびそれらの実装方法を詳細化するサブカテゴリーがあります。
1 .1 .3.1 . 物理的コントロール
物理的コントロールは、機密資料への認証されていないアクセスの抑止または防止のために、明確な構造で
セキュリティ対策を実施することです。物理的コントロールの例は以下の通りです。
有線監視カメラ
動作/温度感知アラームシステム
警備員
写真付き身分証明書
施錠されたデッドボルト付きのスチールドア
バイオメトリクス (指紋、声、顔、虹彩、筆跡、および本人確認を行うためのその他の自動認識方法が含
まれます)
1 .1 .3.2 . 技術的コントロール
技術的コントロールでは、物理的な構造物やネットワークにおける機密データのアクセスや使用を制御する
ための基盤となる技術を使用します。技術的コントロールは広い範囲に及び、以下のような技術も含まれま
す。
暗号化
スマートカード
ネットワーク認証
アクセス制御リスト (ACL: Access control lists)
ファイル完全性監査ソフトウェア
1 .1 .3.3. 管理的コントロール
管理的コントロールは、セキュリティの人的要素を定義します。これらは組織内のあらゆるレベルの人員に
関連するもので、次のような手段によって、誰がどのリソースや情報にアクセスするかを決定します。
トレーニングおよび認識の向上
災害準備および復旧計画
人員採用と分離の戦略
人員登録とアカウンティング
1.1.4 . 結論
10
⁠第1 章 セキュリティの概要
セキュリティの起源、セキュリティが必要な理由およびセキュリティのさまざまな分野に触れたことで、
Red Hat Enterprise Linux に関する適切な行動指針の決定が容易になると思われます。適切な戦略の計画と
実行には、セキュリティを構成する要素や条件を知ることが重要です。これらを把握することで、プロセス
を明確にでき、さらにセキュリティプロセスの細部を掘り下げる際の方向性がより明らかになります。
1.2. 脆弱性のアセスメント
時間、リソースおよびやる気のある攻撃者は、ほとんどすべてのシステムに侵入することができます。現在
利用できるすべてのセキュリティ手順と技術を駆使しても、すべてのシステムを侵入から完全に保護できる
訳ではありません。ルーターはインターネットへのセキュアなゲートウェイの提供に役立ちます。ファイ
アウォールはネットワークの境界を保護します。仮想プライベートネットワーク (VPN) は、暗号化された
ストリームにおいてデータを安全に通過させます。侵入検知システムは悪意のある活動について警告しま
す。しかし、これらの技術が成功するかどうかは、以下を含む数多くの要因によって決まります。
技術の設定、監視および保守を行うスタッフの専門知識
サービスとカーネルのパッチおよび更新を迅速かつ効率的に行う能力
ネットワーク上での警戒を常に怠らない担当者の能力
データシステムと各種技術の動的な組み合わせを考慮すると、企業リソースの確保は極めて複雑なタスクに
なり得ます。この複雑さゆえに、使用するすべてのシステムについての専門家リソースを見つけることは多
くの場合、困難になります。高レベルの情報セキュリティの多くの分野をよく知っている人員を確保するこ
とはできても、複数分野における専門家スタッフを確保することは容易ではありません。これは主に、情報
セキュリティの各専門分野では継続的な注意とフォーカスが必要とされるためです。情報セキュリティは
常に変化しています。
1.2.1. 敵の視点で考える
例えば、企業ネットワークの管理者であることを想定してください。通常、企業ネットワークはオペレー
ティングシステム、アプリケーション、サーバー、ネットワークモニターおよび侵入検知システムなどから
構成されます。これらを常に最新の状態に保たなければならないことを想像してみてください。現在のソフ
トウェアとネットワーク環境の複雑さを考えると、不正使用やバグが必然的に発生すると言えます。ネット
ワーク全体をパッチと更新によって最新の状態に維持することは、複数の異種システムを持つ大企業におい
ては困難な作業であることが分かります。
専門知識を有し、最新の状態を維持するタスクを実施していたとしても、有害なインシデントが発生した
り、システムの侵害やデータ破壊およびサービス中断の発生を避けることはできません。
セキュリティ技術を強化し、システム、ネットワークおよびデータの保護を支援するには、攻撃者の視点で
弱点のチェックして、システムのセキュリティを判断する必要があります。システムとネットワークリ
ソースに対する予防的な脆弱性アセスメントにより、事前に対処できる問題が明らかになり、攻撃者による
悪用を防ぐことができます。
脆弱性アセスメントは、ネットワークとシステムのセキュリティについての内部監査です。このアセスメン
トの結果で、ネットワークの機密性、保全性および可用性の状態が明らかになります (「セキュリティの標
準化」に詳述)。通常、脆弱性アセスメントは、対象システムとリソースに関する重要なデータを収集する
調査フェーズから開始されます。この後にはシステム準備フェーズが続きます。基本的にこのフェーズで
は、対象を絞り、それが持つすべての既知の脆弱性を検査します。準備フェーズの後には報告フェーズが続
きます。ここでは、調査結果が高中低のカテゴリに分類され、対象のセキュリティを向上させる (または脆
弱性のリスクを軽減する) 方法が検討されます。
自宅の脆弱性アセスメントを実施することを想定してみましょう。まずは自宅のドアが閉じられており、か
つ施錠されているのを確認するために各ドアの点検を行うことでしょう。また、すべての窓が完全に閉じら
れていて掛け金が締められていることもチェックするでしょう。これと同じ概念がシステムやネットワー
ク、および電子データにも適用されます。悪意のあるユーザーはデータを盗み、これを破壊します。悪意の
11
Red Hat Ent erprise Linux 6 セキュリティガイド
あるユーザーが使用するツールや考え方および動機に注目すると、彼らの行動にすばやく反応することが可
能になります。
1.2.2. アセスメントとテストの定義
脆弱性アセスメントは、 外部からの視点と内部からの視点の 2 種類に分類できます。
外部からの視点で脆弱性アセスメントを実施する場合、システムに外部から攻撃を試みます。会社の外部に
位置することで、攻撃者の視点を得ることができます。一般にルーティング可能な IP アドレスや DMZ に
あるシステムやファイアウォールの外部インターフェースなど、攻撃者が目を付けるものに着目します。
D MZ は「非武装地帯 (demilitarized zone)」を表し、企業のプライベート LAN などの信頼できる内部ネッ
トワークと公的なインターネットなどの信頼できない外部ネットワークの間にあるコンピューターまたは小
さなサブネットワークに相当します。通常、D MZ には Web (HTTP) サーバー、FTP サーバー、SMTP (email) サーバーおよび D NS サーバーなど、インターネットのトラフィックにアクセスできるデバイスが含
まれます。
内部からの視点で脆弱性アセスメントを実施する場合、実行者は内部関係者であり、信頼されるステータス
にあることから、有利な位置に立ちます。内部からの視点は、実行者やその同僚がシステムにログオンした
時点で得られるものです。プリントサーバーやファイルサーバー、データベースおよびその他のリソースを
見ることができます。
これら 2 種類の脆弱性アセスメントには大きな違いがあります。会社の内部にいる場合は、外部者にはない
多くの特権が与えられます。多くの組織では、侵入者を締め出すようにセキュリティが構成されています。
しかし、組織内の各分野に対しては、ほとんどセキュリティ対策が取られていません (部門内ファイア
ウォール、ユーザーレベルのアクセス制御および内部リソースに対する認証手順など)。また、一般的にほ
とんどのシステムは社内にあるので、内部からの方がより多くのリソースを確認できます。いったん社外に
移動すると、ステータスは信頼されない状態になります。外部から利用できるシステムやリソースは、通常
は非常に限られたものになります。
脆弱性アセスメントと 侵入テストの違いを考えてみましょう。脆弱性テストを侵入テストの第一歩と捉えて
ください。アセスメントで得られる情報は、その後のテストで使用されます。アセスメントはホールや潜在
的な脆弱性を検査する目的で行われるのに対し、侵入テストでは調査結果を実際に使用する試みがなされま
す。
ネットワークインフラストラクチャーのアセスメントは動的なプロセスです。セキュリティ (情報セキュリ
ティと物理的なセキュリティ) は動的に実施されます。システムでアセスメントを実施することで概要が明
らかになり、誤検出 (False positives) と検出漏れ (False negatives) が示される場合があります。誤検出で
は、実際には存在しない脆弱性をツールが検出します。検出漏れでは、実際の脆弱性が省略されます。
セキュリティ管理者の力量は、使用するツールとその管理者が有する知識で決まります。現在使用できるア
セスメントツールのいずれかを選び、それらをシステムに対して実行すると、ほぼ間違いなくいくつかの誤
検出が見つかります。プログラム障害かユーザーエラーかに関わらず、結果は同じです。ツールは誤検出す
ることもあれば、さらに悪い場合は、検出漏れをすることもあります。
脆弱性アセスメントと侵入テストの違いが定義されたところで、新たなベストプラクティスの一環として侵
入テストを実施する前に、アセスメントの結果を注意深く確認、検討してみましょう。
警告
実稼働システム上で脆弱性を悪用する試みを行わないでください。システムとネットワークの生産性
と効率に悪影響を与える可能性があります。
脆弱性アセスメントの実施には、以下のような利点があります。
情報セキュリティに事前にフォーカスできる
12
⁠第1 章 セキュリティの概要
攻撃者が発見する前に潜在的な不正使用を発見できる
システムを最新の状態に維持し、パッチを適用できる
スタッフの成長と専門知識の開発を促す
経済的な損失とマイナスの評判を緩和する
1 .2 .2 .1 . 方法論の確立
脆弱性アセスメントの方法論を確立すると、脆弱性アセスメント用のツール選択に役立ちます。残念なが
ら、現時点では事前定義の方法論や業界で承認された方法論はありませんが、一般常識やベストプラクティ
スを適切なガイドとして活用することができます。
ターゲットは何か? 1 つのサーバーまたはネットワーク全体、およびネットワーク内のすべてが含まれるの
か? 会社の外部にいるのか、それとも内部にいるのか? これらの質問に対する答えは、ツールの選択のみな
らず、ツールの使用方法決定する際にも役立ちます。
方法論の確立についての詳細は、以下の Web サイトを参照してください。
http://www.owasp.org/ The Open Web Application Security Project
1.2.3. ツールの評価
アセスメントは、情報収集ツールを使用することから始まります。ネットワーク全体を評価する際は、最初
にレイアウトを描いて実行されているホストを把握します。ホストの場所を確認したら、それぞれのホスト
を個別に検査します。これらのホストにフォーカスするには別のツールセットが必要になります。どのツー
ルを使用すべきかを知っておくことは、脆弱性の発見において最も重要なステップである可能性がありま
す。
日常生活のあらゆる状況と同様に、同じジョブを実行できる異なるツールは数多くあります。この概念は脆
弱性アセスメントの実施にも当てはまります。ツールには、オペレーティングシステムやアプリケーション
に固有ものや、(使用されるプロトコルに基づいて) ネットワークに固有のツールもあります。ツールにはフ
リーのものもあれば、そうでないものもあり、直感的で使いやすいツールもあれば、難解で適切に文書化さ
れてはいないものの、他のツールにはない機能を持つツールもあります。
適切なツールを見つけることは困難なタスクとなる場合もあり、最終的には経験が重要になります。可能で
あれば、実験ラボをセットアップし、各ツールの長所と短所を発見できるようできる限り多くのツールをテ
ストするようにします。ツールの READ ME ファイルや man ページも確認してください。さらに、イン
ターネットからツールについての記事やステップバイステップのガイドまたはツール固有のメーリングリス
トなどの詳細情報を入手してください。
以下で説明するツールは、利用可能なツールのごくわずかなサンプルです。
1 .2 .3.1 . Nm ap を使用したホストのスキャン
Nmap はネットワークのレイアウトを決定するためによく使用されるツールです。Nmap は長年にわたっ
て利用されており、情報収集を行う際におそらく最もよく使われるツールです。各種のオプションと使用法
を詳述した優れたマニュアルページが含まれています。管理者は、ネットワーク上で Nmap を使用し、ホ
ストシステムやそれらのシステム上で開かれているポートを見つけることができます。
Nmap は、脆弱性アセスメントにおける最初の有効なステップです。ネットワーク内にあるすべてのホスト
のマッピングができるほか、Nmap が特定ホスト上で実行中のオペレーティングシステムを特定できるよう
にするオプションを渡すこともできます。Nmap はセキュアなサービスの使用と不必要なサービスの停止に
ついての方針を定める際の優れた土台を提供します。
Nmap をインストールするには、root ユーザーとして yum i nstal l nmap コマンドを実行します。
13
Red Hat Ent erprise Linux 6 セキュリティガイド
1.2.3.1.1. N map の使用
Nmap は、シェルプロンプトに nmap コマンドを入力し、その後にスキャン対象のマシンのホスト名また
は IP アドレスを入力して実行できます。
nmap <hostname>
例えば、ホスト名が fo o . exampl e. co m のマシンをスキャンするには、シェルプロンプトに以下を入力
します。
~]$ nmap fo o . exampl e. co m
基本的なスキャン (ホストの位置や他のネットワーク条件によって数分の時間がかかる場合があります) の
結果は以下のようになります。
Interesting ports on foo.example.com:
Not shown: 1710 filtered ports
PORT
STATE SERVICE
22/tcp open
ssh
53/tcp open
domain
80/tcp open
http
113/tcp closed auth
Nmap はリッスンしているまたはサービスを待機しているの最も一般的なネットワーク通信ポートをテスト
します。テストから得られる情報は、不必要または未使用のサービスの終了を希望している管理者にとって
役に立つものです。
Nmap の使用法に関する詳細情報は、以下の URL にある公式ホームページを参照してください。
http://www.insecure.org/
1 .2 .3.2 . Ne ssus
Nessus は完全サービス型のセキュリティスキャナーです。Nessus のプラグインアーキテクチャーを使う
と、ユーザーは使用しているシステムやネットワーク用にスキャナーをカスタマイズすることができます。
他のスキャナーと同様に、Nessus の性能はベースとなる署名データベースに左右されます。幸いなこと
に、Nessus の更新は頻繁に行われており、Nessus は完全なレポート作成機能やホストスキャンおよびリ
アルタイムの脆弱性検索機能があります。しかし、Nessus のように頻繁に更新される強力なツールであっ
ても、誤検出や検出漏れの可能性があることに注意してください。
注記
Nessus クライアントおよびサーバーソフトウェアを使用するには、サブスクリプションが必要で
す。本ガイドでは、このアプリケーションに関心のあるユーザー向けに参考情報として説明していま
す。
Nessus に関する詳細は、以下の URL にある公式 Web サイトを参照してください。
http://www.nessus.org/
1 .2 .3.3. Nikt o
14
⁠第1 章 セキュリティの概要
Nikto は、共通ゲートウェイインターフェース (CGI) の優れたスクリプトスキャナーです。Nikto は、CGI
の脆弱性をチェックするだけでなく、侵入検知システムを逃れるために回避的な方法でチェックを行いま
す。Nikto には詳細の資料が同梱されており、プログラムの実行前に注意して確認してください。Nikto
は、CGI スクリプトに対応する Web サーバーのセキュリティをチェックする優れたリソースになります。
Nikto の詳細については、以下の URL を参照してください。
http://cirt.net/nikto2
1 .2 .3.4 . 今後のニーズの予測
ターゲットおよびリソースに応じて、数多くのツールが利用可能です。無線ネットワーク、Novell ネット
ワーク、Windows システム、Linux システム用などのツールがあります。アセスメントの他の重要な要素
には、物理的なセキュリティのレビューや人的スクリーニング、または音声/PBX ネットワークのアセスメ
ントなどもあります。war walking および wardriving (無線ネットワークの脆弱性を評価するために企業の物
理構造の境界線をスキャンする) などの概念は検討に値するものであり、必要に応じてアセスメントに組み
込むことができます。脆弱性アセスメントの計画と実施は、考え得るあらゆる範囲で実行可能です。
1.3. 攻撃者と脆弱性
優れたセキュリティ戦略を計画して導入するために、まず強い決意と動機を持つ攻撃者がシステムを攻撃す
るために悪用するいくつかの問題点を理解しましょう。これらの問題を詳細に見る前に、攻撃者を特定する
際に使う用語を定義する必要があります。
1.3.1. ハッカーの歴史の概観
現在のハッカー という言葉の意味をたどると、マサチューセッツ工科大学 (MIT) の技術モデル鉄道クラブが
大規模で複雑な鉄道セットを設計した 1960 年代に遡ります。ハッカーは、巧妙なトリックや問題の回避方
法を発見したクラブのメンバーの名前として使われていました。
これ以降、ハッカーという用語はコンピュータ通から天才プログラマーにまで幅広く使われるようになりま
した。多くのハッカーに見られる一般的な特徴は、コンピューターのシステムとネットワーク機能の詳細を
自力で掘り下げる意欲に満ちているという点です。オープンソースソフトウェアの開発者は自身と自身の仲
間をハッカーと見なすことが多くあり、ハッカーを尊敬を表す言葉として使用することがあります。
通常ハッカーは、ある種の ハッカー倫理 に従います。ハッカー倫理は、情報と専門知識の探求は必須のもの
であり、この知識を共有することがコミュニティに対するハッカーの義務であると規定します。この知識の
探求において、一部のハッカーはコンピューターシステムのセキュリティコントロールの裏をかくことに
非実用的な意欲を燃やす人々もいます。このため、マスコミはハッカーという用語を、悪質で悪意がある
か、または犯罪の意図を持ってシステムやネットワークに不正にアクセスする人々を説明するためによく用
います。この種類のコンピューターハッカーをより的確に説明する名前がクラッカーです。クラッカー
は、これらの 2 つのコミュニティを区別するために 1980 年代中ごろにハッカーによって作成された造語
です。
1 .3.1 .1 . ハッカーの帽子
システムやネットワークにある脆弱性を見つけてこれを利用する人々のコミュニティは、いくつかの異なる
グループに分かれています。これらのグループは、セキュリティ調査の際に「着用する」帽子の色によって
表され、その色はそれぞれの意図を示します。
ホワイトハットハッカーは、パフォーマンスの検査や侵入に対する脆弱性を判別するためにネットワーク
やシステムをテストする人々です。通常ホワイトハットハッカーは、自らのシステムか、またはセキュリ
ティ監査のためにホワイトハットハッカーを雇用した顧客のシステムに対し、クラッキング行為を行ない
ます。この顧客には、学術研究員やセキュリティコンサルタントの専門家などが含まれます。
15
Red Hat Ent erprise Linux 6 セキュリティガイド
ブラックハットハッカー はクラッカーの同義語です。通常、クラッカーはプログラミングやシステム侵入
に関する非実用的な側面にはあまり重きを置きません。多くの場合、クラッカーは利用可能なクラッキング
用のプログラムに依存し、システムの既知の脆弱性を悪用して、個人的な利益のために機密情報を暴露した
り、標的となるシステムやネットワークに損害を与えます。
他方、グレーハットハッカーは、たいていの場合はホワイトハットハッカーと同様のスキルと意図を持ち
ますが、自らの知識を高潔な目的以外で利用することがあります。グレーハットハッカーとは、自らの目的
を遂行する際にはブラックハットを着用するホワイトハットハッカーであると考えることができるでしょ
う。
グレーハットハッカーのハッカー倫理は通常のものとは異なるもので、盗難や機密漏洩などの違反を犯さな
い限り、ハッカーはシステムに侵入してもよいとするのが通例です。しかしながらこれについては、システ
ムに侵入する行為自体が非倫理的であるという反論があります。
侵入者の意図を何であれ、クラッカーが悪用しかねない弱点について知っておくことが重要です。本章の残
りの部分では、これらの問題点に焦点を当てていきます。
1.3.2. ネットワークセキュリティへの脅威
ネットワークの以下の要素を設定する際に不適当なプラクティスが行われると、攻撃のリスクが増大しま
す。
1 .3.2 .1 . セキュリティが十分ではないアーキテクチャー
間違った構成のネットワークは、未承認ユーザーの主要のエントリーポイントになります。信頼ベースの
オープンなローカルネットワークを非常に安全でないインターネットに対して無防備な状態にしておくこと
は、犯罪の多発地区でドアを半開きにしておくようなものです。すぐに何かが起きることはないかもしれま
せんが、 いずれ誰かがこの機会を悪用するでしょう。
1.3.2.1.1. ブロードキャストネットワーク
システム管理者は、セキュリティ計画においてネットワーキングハードウェアの重要性を見落としがちで
す。ハブやルーターなどの単純なハードウェアは、ブロードキャストやノンスイッチの仕組みに基づいてい
ます。つまり、あるノードがネットワークを介して受信ノードにデータを送信するときは常に、受信ノード
が受信してデータを処理するまで、ハブやルーターはデータパケットのブロードキャストを送信します。こ
の方式は、外部侵入者やローカルホスト上の認証されていないユーザーが仕掛けるアドレス解決プロトコル
(ARP) およびメディアアクセスコントロール (MAC) アドレスの偽装に対して最も脆弱です。
1.3.2.1.2. 集中化サーバー
ネットワーキングのもうひとつの落とし穴は、集中化されたコンピューティングの使用にあります。多くの
企業では、一般的なコスト削減手段として、すべてのサービスを 1 台の強力なマシンに統合しています。集
中化は、複数サーバーの設定よりも管理がより簡単な上、コストを大幅に削減できるので便利な手段と言え
ます。しかし、集中化されたサーバーはネットワークにおける単一障害点となるため、集中化サーバーが攻
撃されると、ネットワークは完全に使えなくなるか、またはデータの不正操作や盗難が起きやすくなる可能
性があります。こうした状況では、1 つの集中化サーバーが侵入口となり、ネットワーク全体へのアクセス
を許してしまうことになります。
1.3.3. サーバーセキュリティへの脅威
サーバーには組織の重要情報が数多く含まれることが多いため、サーバーのセキュリティはネットワークの
セキュリティと同様に重要です。サーバーが攻撃されると、攻撃者がすべてのコンテンツを意のままに盗ん
だり、不正に操作したりできるようになることがあります。以下のセクションでは、主な問題のいくつかを
詳述します。
1 .3.3.1 . 未使用のサービスと開かれたポート
16
⁠第1 章 セキュリティの概要
Red Hat Enterprise Linux 7 を完全にインストールすると、1000 以上のアプリケーションとライブラリの
パッケージが含まれます。しかし、ほとんどのサーバー管理者は、ディストリビューションに含まれるす
べての個別パッケージをインストールすることはありません。その代わりに、複数のサーバーアプリケー
ションを含むパッケージのベースインストールを行います。
システム管理者は、どのアプリケーションがインストールに含まれるかを気にせずにオペレーティングシス
テムをインストールしてしまうことがよくあります。必要のないパッケージがインストールされ、デフォル
ト設定でオンにしてしまうと、これが問題になる場合があります。これにより、管理者の気づかないところ
で、Telnet や D HCP、または D NS などの不要なサービスがサーバーやワークステーションで実行され、
その結果、サーバーへの不要なトラフィックが発生したり、攻撃者にシステムへのパスが提供される可能性
があります。ポートを閉じる方法や未使用のサービスを無効にする方法についての詳細は、「サーバーのセ
キュリティ」を参照してください。
1 .3.3.2 . 管理における不注意
システムにパッチを当てようとしない管理者は、サーバーセキュリティへの最大の脅威の 1 つとなりま
す。SysAdmin, Audit, Network, Security Institute (SANS) によると、コンピューターのセキュリティ脆弱性
の主な原因は、「訓練を受けていない人にセキュリティの保守を任せ、保守を行うために必要な訓練や時間
を与えないこと」にあります。これは、自信過剰な管理者やモチベーションの高い管理者だけではなく、経
験の少ない管理者にも起こり得ます。
サーバーやワークステーションにパッチを当てない管理者のほかに、システムのカーネルやネットワーク通
信からのログメッセージを見落とす管理者もいます。またよく起こるエラーとして、サービスのデフォルト
パスワードやキーを変更しないまま放置しておくことがあります。例えば、データベースにはデフォルトの
管理パスワードが設定されているものがありますが、この設定では、システム管理者がインストール後すぐ
にデフォルトパスワードを変更することをデータベース開発者が想定しています。しかし、データベース管
理者がこのパスワードの変更を忘れると、経験の浅い攻撃者でさえ、周知のデフォルトパスワードを使って
データベースの管理者権限を得ることができます。これらは、管理者の不注意がサーバーを危険にさらすこ
とになる数例に過ぎません。
1 .3.3.3. 本質的に安全ではないサービス
どんなに注意深い組織であっても、選択するネットワークサービスが本質的に安全でない限り、攻撃を受け
やすくなります。例えば、多くのサービスは、信頼できるネットワークで使用されるとの仮定に基づいて開
発されますが、これらのサービスが (本質的に信頼できない) インターネット上で利用可能になる時点で、
この仮定は成立しなくなります。
安全ではないネットワークサービスのカテゴリの 1 つに、暗号化されていないユーザー名とパスワードを認
証時に要求するサービスがあります。Telnet や FTP がこの種のサービスです。パケット盗聴ソフトウェア
がリモートユーザーとこのようなサービス間のトラフィックをモニタリングしていれば、ユーザー名とパス
ワードは簡単に傍受される可能性があります。
また、基本的にこのようなサービスはセキュリティ業界で 中間者攻撃と呼ばれる攻撃の餌食になりやすくな
ります。この種の攻撃では、攻撃者は、ネットワーク上のクラッキングされたネームサーバーをだまし、目
標のサービスではなくクラッカーのマシンにポイントすることで、ネットワークトラフィックをリダイレク
トします。誰かがサーバーへリモートセッションを開くと、攻撃者のマシンがリモートサービスと用心して
いなユーザー間に静かに存在する目に見えないパイプとして機能し、この間を流れる情報を取り込みます。
このようにして、攻撃者はサーバーやユーザーに気づかれることなく、管理パスワードや生データを収集で
きるようになってしまいます。
安全ではないサービスの別のカテゴリは、NFS または NIS などのネットワークファイルシステムと情報
サービスです。これらは、LAN 利用を目的として開発されましたが、(リモートユーザー用の) WAN も対象
に含まれるように拡張されます。NFS では、攻撃者による NFS 共有のマウントやそこに格納されているも
のへのアクセスを防ぐ認証やセキュリティの仕組みがデフォルトで設定されていません。NIS も、プレーン
17
Red Hat Ent erprise Linux 6 セキュリティガイド
テキスト ASCII または D BM (ASCII から派生) データベースの中に、パスワードやファイルパーミッション
などの、ネットワーク上のすべてのコンピューターに知らせる必要のある重要な情報を保持しています。攻
撃者がこのデータベースのアクセス権を取得すると、管理者のアカウントを含む、ネットワーク上のすべて
のユーザーアカウントにアクセスできるようになってしまいます。
Red Hat Enterprise Linux は、上記のサービスをデフォルト時にすべて無効にしてリリースされます。しか
し、管理者はこれらのサービスの使用を迫られる場合も多くあるため、注意して設定することが重要になり
ます。安全な方法でサービスをセットアップする詳細情報は、「サーバーのセキュリティ」を参照してく
ださい。
1.3.4 . ワークステーションおよび家庭用 PC のセキュリティに対する脅威
ワークステーションや家庭用 PC はネットワークやサーバーほど攻撃にさらされることはないかもしれませ
んが、クレジットカード情報のような機密データが含まれるのでシステム攻撃者の標的になります。ワーク
ステーションは知らぬ間に攻撃者によって「スレーブ」マシンとして引き入れられ、一連の攻撃で攻撃者に
使用される可能性もあります。このため、ユーザーはワークステーションの脆弱性を理解しておくと、オペ
レーティングシステムの再インストールや、深刻な場合はデータ盗難からの回復といった問題から免れるこ
とができます。
1 .3.4 .1 . 不適切なパスワード
不適切なパスワードの設定は、システムにアクセスする最も簡単な方法を攻撃者に提供します。パスワード
を作成する際のよくある落とし穴を避ける方法については、「パスワードのセキュリティ」を参照してくだ
さい。
1 .3.4 .2 . 脆弱なクライアントアプリケーション
管理者がサーバーに十分な安全対策を施し、パッチを当てている場合でも、リモートユーザーによるアクセ
スが安全であるわけではありません。例えば、サーバーが公開ネットワーク上で Telnet や FTP サービスを
提供している場合、攻撃者はネットワークを通過するプレーンテキストのユーザー名とパスワードを取り込
み、アカウント情報を使用してリモートユーザーのワークステーションにアクセスすることが可能です。
SSH などのセキュアなプロトコルを使用している場合であっても、クライアントアプリケーションを定期
的に更新していないと、リモートユーザーは特定の攻撃を受けやすくなる可能性があります。例えば、v.1
SSH クライアントは、悪意のある SSH サーバーからの X 転送攻撃に対して脆弱です。クライアントが
サーバーに接続すると、攻撃者はネットワーク上でクライアントによるキー入力やマウス操作をひそかに収
集できます。この問題は v.2 SSH プロトコルで修正されましたが、ユーザーはどのアプリケーションにこ
のような脆弱性があるかを追跡し、必要に応じてアプリケーションを更新する必要があります。
「ワークステーションのセキュリティ」では、管理者とホームユーザーがコンピューターのワークステー
ションの脆弱性を限定するために取るべき手順をより詳細に説明しています。
1.4 . 一般的な不正使用と攻撃
表1.1「一般的な不正使用」では、侵入者が組織のネットワークリソースにアクセスするために使用する最
も一般的な不正使用とエントリーポイントのいくつかについて詳しく説明しています。これらの一般的な不
正使用については、それらがどのように実行され、管理者がそれらの攻撃からネットワークをどのように適
切に保護できるかを理解していることが重要になります。
表1.1 一般的な不正使用
不正使用
18
説明
注意事項
⁠第1 章 セキュリティの概要
不正使用
説明
注意事項
空またはデフォル
トのパスワード
管理パスワードを空白のままにしたり、
製品ベンダーが設定したデフォルトパス
ワードをそのまま使用します。ルーター
やファイアウォールなどのハードウェア
で最もよく見られますが、Linux で実行
するサービスにはデフォルトの管理者パ
スワードが入っているものがあります
(ただし Red Hat Enterprise Linux はパ
スワードなしで出荷されます)。
ルーター、ファイアウォール、VPN お
よび Network Attached Storage (NAS)
アプライアンスなどのネットワークハー
ドウェアに一般的に関連するものです。
数多くのレガシーオペレーティングシス
テム、とくにサービスをバンドルしたオ
ペレーティングシステム (UNIX や
Windows など) によくあります。
セキュアなサービスでは、開発や評価テ
スト用にデフォルトのセキュリティ鍵が
パッケージ化されていることがありま
す。これらの鍵を変更せずにインター
ネット上の実稼働環境に置いた場合、同
じデフォルトの鍵を持つすべてのユー
ザーがその共有鍵のリソースや、そこに
あるすべての機密情報にアクセスできる
ようになります。
リモートマシンがローカルネットワーク
上でノードとして動作し、サーバーに脆
弱性を見つけるとバックドアプログラム
またはトロイの木馬をインストールし
て、ネットワークリソース全体へのコン
トロールを得ようとします。
無線アクセスポイントや事前設定済みの
セキュアなサーバー機器に最も多く見ら
れます。
デフォルトの共有
鍵
IP スプーフィング
管理者が急いで特権ユーザーアカウント
を作成したためにパスワードが空白のま
まになっていることがありますが、これ
は、このアカウントを発見した悪意のあ
るユーザーにとっては、絶好のエント
リーポイントとなります。
スプーフィングは、攻撃者が標的となる
システムへの接続を調整するのに
TCP/IP シーケンス番号を予測しなけれ
ばならないのでかなり難しいことです
が、攻撃者による脆弱性への攻撃を支援
するツールはいくつかあります。
標的となるシステムで実行される、 ソー
スベース認証技術を使用するサービス
(rsh、 tel net、FTP その他) によって
異なりますが、このようなサービス
は、ssh または SSL/TLS で使用される
PKI やその他の形式の暗証化認証と比較
すると推奨できるものではありません。
19
Red Hat Ent erprise Linux 6 セキュリティガイド
不正使用
説明
注意事項
盗聴
2 つのノード間の接続を盗聴することに
より、ネットワーク上のアクティブな
ノード間を行き交うデータを収集しま
す。
この種類の攻撃には大抵、Telnet、
FTP、および HTTP 転送などのプレーン
テキストの転送プロトコルが使われま
す。
このような攻撃を仕掛けるには、リモー
トの攻撃者は LAN 上で攻撃するシステ
ムへのアクセス権を持っていなければな
りません。通常、攻撃者は LAN 上にあ
るシステムを危険にさらすために活発な
攻撃(IP スプーフィングや中間者攻撃な
ど) を仕掛けます。
パスワードのなりすましを防ぐ予防策と
しては、暗号化鍵交換、ワンタイムパス
ワードまたは暗号化された認証による
サービス使用が挙げられます。通信中は
強力な暗号化を実施することをお勧めし
ます。
サービスの脆弱性
攻撃者はインターネット上で実行されて
いるサービスの欠陥や抜け穴を見つけま
す。この脆弱性を利用する攻撃者は、シ
ステム全体と格納されているデータを攻
撃するだけでなく、ネットワーク上の他
のシステムも攻撃する可能性がありま
す。
CGI などの HTTP ベースのサービスは、
リモートのコマンド実行やインタラク
ティブなシェルアクセスに対しても脆弱
です。HTTP サービスが「nobody」な
どの権限のないユーザーとして実行され
る場合でも、設定ファイルやネットワー
クマップなどの情報が読み取られる可能
性があります。または、攻撃者がサービ
ス拒否攻撃を開始して、システムのリ
ソースを流出させたり、他のユーザーが
利用できないようにする可能性もありま
す。
開発時およびテスト時には気づかない脆
弱性がサービスに含まれることがありま
す。このような脆弱性 (攻撃者が任意の
値を使用してアプリケーションのメモ
リーバッファー領域をあふれさせ、攻撃
者が任意のコマンドを実行できるような
インタラクティブなコマンドプロンプト
を与えて、サービスをクラッシュさせ
るバッファーオーバーフローなど)は完
全な管理コントロールを攻撃者に与える
ものとなる可能性があります。
管理者は、サービスが root ユーザーと
して実行されないようにし、ベンダーま
たは CERT や CVE などのセキュリティ
組織からのアプリケーション用のパッチ
やエラータ更新がないか常に注意する必
要があります。
20
⁠第1 章 セキュリティの概要
不正使用
説明
注意事項
アプリケーション
の脆弱性
攻撃者はデスクトップやワークステー
ションのアプリケーション(電子メール
クライアントなど)に欠陥を見つけ出
し、任意のコードを実行したり、将来の
システム侵害のためにトロイの木馬を移
植したり、システムを破壊したりしま
す。攻撃を受けたワークステーションが
ネットワークの残りの部分に対して管理
特権を持っている場合は、さらなる不正
使用が起こる可能性があります。
ワークステーションとデスクトップは、
ユーザーが侵害を防いだり検知するため
の専門知識や経験を持たないため、不正
使用の対象になりやすくなります。認証
されていないソフトウェアをインストー
ルしたり、たのんでいないメールの添付
ファイルを開く際には、それに伴うリス
クについて個々に通知することが必須で
す。
単独の攻撃者または攻撃者のグループ
は、目標のホスト(サーバー、ルー
ター、ワークステーションのいずれか)
に認証されていないパケットを送ること
により、組織のネットワークまたはサー
バーのリソースに対して攻撃を仕掛けま
す。これにより、正当なユーザーはリ
ソースを使用できなくなります。
通常ソースパケットは、攻撃の本当のも
とを調査するのが難しくなるよう、偽装
(または再ブロードキャスト)されてい
ます。
サービス拒否攻撃
(D oS: D enial of
Service)
電子メールクライアントソフトウェアが
添付ファイルを自動的に開いたり、実行
したりしないようにするといった、予防
手段を取ることが可能です。さらに、
Red Hat Network や他のシステム管理
サービスなどからワークステーションの
ソフトウェアを自動更新することによ
り、マルチシートのセキュリティデプロ
イメントの負担を軽減することができま
す。
i ptabl es を使用したイングレスフィ
ルタリング (IETF rfc2267) や sno rt な
どのネットワーク侵入検知システムにお
ける進歩は、管理者が分散型サービス拒
否攻撃を追跡し、これを防止するのに役
立っています。
1.5. セキュリティの更新
セキュリティの脆弱性が発見された場合、セキュリティ上のリスクを最小限に抑えるために、影響を受け
るソフトウェアを更新する必要があります。そのソフトウェアが現在サポートされている Red Hat
Enterprise Linux ディストリビューション内のパッケージの一部である場合、Red Hat は脆弱性を修正す
る更新パッケージをできるだけ迅速にリリースするように全力を尽くします。多くの場合、セキュリティ上
の特定の不正使用に関する発表にはパッチ (または問題を解決するソースコード) が伴われています。この
パッチは Red Hat Enterprise Linux パッケージに適用されます。パッチはテストされ、エラータ更新とし
てリリースされるものです。しかし、発表にパッチが含まれていない場合には、開発者は問題の解決に向け
てそのソフトウェアの保守担当者と協力します。問題が解決されると、パッケージがテストされ、エラータ
更新としてリリースされます。
システムで使用しているソフトウェアのエラータ更新がリリースされている場合、システムが攻撃される可
能性のある期間を最小限にするため、影響を受けるパッケージをできる限り早く更新することが強く推奨さ
れます。
1.5.1. パッケージの更新
システムのソフトウェアを更新する際には、信頼できるソースから更新をダウンロードすることが重要で
21
Red Hat Ent erprise Linux 6 セキュリティガイド
す。攻撃者は、問題を解決するはずのバージョンと同じバージョン番号のパッケージを簡単に再構築し、そ
のパッケージからセキュリティ上の別の不正使用を可能にした上で、それをインターネット上にリリース
する場合があります。こうした事態が発生すると、元の RPM に対するファイル検証などのセキュリティ対
策を講じても、不正アクセスを検知することができません。このため、RPM は Red Hat などの信頼できる
ソールからのみダウンロードし、その保全性を検証するためにパッケージの署名を確認することが極めて重
要になります。
注記
Red Hat Enterprise Linux には、利用可能なシステム更新があると、目につくアラートを表示する便
利なパネルアイコンが含まれます。
1.5.2. 署名パッケージの検証
Red Hat Enterprise Linux のパッケージはすべて、Red Hat GPG 鍵を使って署名されています。GPG は
GNU Privacy Guard または GnuPG の略で、配信ファイルの信頼性を保証するために使用されるフリーソ
フトウェアのパッケージです。例えば、秘密鍵 (シークレットキー) はパッケージをロックし、公開鍵は
パッケージのロックを解除し、パッケージを検証します。RPM の検証時に、Red Hat Enterprise Linux が
配信する公開鍵が秘密鍵と一致しなければ、パッケージは改ざんされている可能性があるので信頼できませ
ん。
Red Hat Enterprise Linux 6 内の RPM ユーティリティは、RPM パッケージのインストール前に、GPG 署
名の検証を自動的に試行します。Red Hat GPG 鍵がインストールされていない場合は、Red Hat インス
トール CD -ROM または D VD などの安全で静的な場所からインストールしてください。
ディスクが /mnt/cd ro m にマウントされていると仮定すると、root ユーザーとして以下のコマンドを使用
して keyring (システム上の信頼できるキーのデータベース) にインポートすることができます。
~]# rpm --i mpo rt /mnt/cd ro m/R P M-G P G -KEY
これで Red Hat GPG 鍵が /etc/pki /rpm-g pg / ディレクトリに置かれます。
RPM の検証用にインストールされたすべてのキーを一覧表示するには、次のコマンドを実行します。
~]# rpm -q a g pg -pubkey*
gpg-pubkey-db42a60e-37ea5438
特定のキーに関する詳細を表示するには、以下の例のように、先のコマンドの出力の前に rpm -q i コマン
ドを使用します。
~]# rpm -q i g pg -pubkey-d b4 2a6 0 e-37ea54 38
Name
: gpg-pubkey
Relocations: (not
relocatable)
Version
: 2fa658e0
Vendor: (none)
Release
: 45700c69
Build Date: Fri 07 Oct 2011
02:04:51 PM CEST
Install Date: Fri 07 Oct 2011 02:04:51 PM CEST
Build Host: localhost
Group
: Public Keys
Source RPM: (none)[ 出力は省略さ
れています]
RPM ファイルのインストール前に、そのファイルの署名を検証してパッケージの元のソースからの改ざん
されていないことを確認することは極めて重要です。ダウンロードしたパッケージすべてを一度に検証する
には、以下のコマンドを実行します。
22
⁠第1 章 セキュリティの概要
~]# rpm -K /ro o t/upd ates/*. rpm
alsa-lib-1.0.22-3.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
alsa-utils-1.0.21-3.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
aspell-0.60.6-12.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
それぞれのパッケージについて GPG 鍵が問題なく検証されると、このコマンドは g pg O K を返します。
検証に失敗した場合は、コンテンツのソースを検証するほか、Red Hat の適切な公開鍵を使用していること
を確認してください。GPG 検証に失敗したパッケージは、第三者によって改ざんされている可能性がある
ためにインストールしないでください。
GPG 鍵を検証し、エラータレポートに関連する全パッケージをダウンロードした後に、シェルプロンプト
で root としてこれらのパッケージをインストールします。
または、Yum ユーティリティを使って、署名されたパッケージを検証することもできます。Yum は、すべ
てのパッケージリポジトリ (つまりパッケージソース) または個別のリポジトリに対し、GPG 署名された
パッケージの GPG 署名検証を有効にして、セキュアなパッケージ管理を可能にします。署名の検証を有効
にすると、Yum は該当リポジトリの適切な鍵を使って GPG 署名されていないパッケージのインストール
を拒否します。つまりこれにより、システムにダウンロードし、インストールできる RPM パッケージは
Red Hat のような信頼できるソースからのものであり、転送時に変更されるていないことが確信できます。
Yum を使ったパッケージのインストールまたは更新の際に GPG 署名の自動検証を有効にするに
は、/etc/yum. co nf ファイルの [mai n] セクション下に以下のオプションが定義されていることを確
認します。
gpgcheck=1
1.5.3. 署名パッケージのインストール
次のコマンドを root として実行すると、ほとんどのパッケージを安全にインストールすることができます
(カーネルパッケージを除く)。
rpm -Uvh <package>…
たとえば、/tmp/ ディレクトリー下で upd ates/ という新規のディレクトリー下にすべてのパッケージを
インストールするには、以下を実行します。
~]# rpm -Uvh /tmp/upd ates/*. rpm
Preparing...
###########################################
[100%]
1:alsa-lib
###########################################
[ 33%]
2:alsa-utils
###########################################
[ 67%]
3:aspell
###########################################
[100%]
カーネルパッケージの場合は、以下のコマンドを使用します。
rpm -i vh <kernel-package>
例えば、kernel-2.6.32-220.el6.x86_64.rpm をインストールするには、シェルプロンプトに以下を入力しま
す。
~]# rpm -i vh /tmp/upd ates/kernel -2. 6 . 32-220 . el 6 . x86 _6 4 . rpm
23
Red Hat Ent erprise Linux 6 セキュリティガイド
Preparing...
[100%]
1:kernel
[100%]
###########################################
###########################################
新しいカーネルを使用してマシンが安全に再起動されると、以下のコマンドを使用して古いカーネルを削除
することができます。
rpm -e <old-kernel-package>
例えば、kernel-2.6.32-206.el6.x86_64 を削除するには、以下を入力します。
~]# rpm -e kernel -2. 6 . 32-20 6 . el 6 . x86 _6 4
または、Yum を使ってパッケージをインストールするには、root として以下のコマンドを実行します。
~]# yum i nstal l kernel -2. 6 . 32-220 . el 6 . x86 _6 4 . rpm
Yum を使用してローカルパッケージをインストールするには、root として以下のコマンドを実行します。
~]# yum l o cal i nstal l /ro o t/upd ates/emacs-23. 1-21. el 6 _2. 3. x86 _6 4 . rpm
注記
古いカーネルを削除する必要はありません。デフォルトのブートローダー GRUB を使うと、複数の
カーネルをインストールし、ブート時にメニューから選択することができます。
重要
セキュリティに関するエラータをインストールする前に、エラータレポートに記載されているすべ
ての特別な指示をよく読み、指示に従ってインストールしてください。エラータ更新に基づく変更の
適用についての一般的な情報は、「変更の適用」 を参照してください。
1.5.4 . 変更の適用
セキュリティに関するエラータと更新をダウンロードしてインストールした後は、古いソフトウェアの使用
を中止して新しいソフトウェアの使用を開始することが重要です。これを実際に行う方法は、更新済みのソ
フトウェアの種類によって異なります。以下では、ソフトウェアの一般的なカテゴリを示し、パッケージ
のアップグレード後に更新バージョンを使用する方法について説明します。
注記
一般に、システムの再起動は、ソフトウェアパッケージの最新バージョンが使用されていることを
確認するための最も確実な方法です。ただし、このオプションはシステム管理者に常に必要、または
利用可能というわけではありません。
アプリケーション
24
⁠第1 章 セキュリティの概要
ユーザースペースのアプリケーションとは、システムユーザーが開始可能なすべてのプログラム
のことです。一般的に、このようなアプリケーションは、ユーザー、スクリプトまたは自動化さ
れたタスクユーティリティがそれらを起動する場合にのみ使用されるものであり、長い期間持続
するものではありません。
ユーザースペースのアプリケーションが更新されると、システムにあるアプリケーションのすべ
てのインスタンスが停止し、更新バージョンを使用するためにプログラムが再起動されます。
カーネル
カーネルは、Red Hat Enterprise Linux オペレーティングシステムの中心的なソフトウェアコン
ポーネントです。カーネルはメモリー、プロセッサーおよび周辺機器へのアクセスを管理するだ
けでなく、すべてのタスクをスケジュールします。
カーネルは中心的な役割を担うので、カーネルの再起動にはコンピューターの停止が伴います。
つまりカーネルの更新バージョンは、システムの再起動後にはじめて使用できるようになりま
す。
共有ライブラリ
共有ライブラリは、g l i bc のように、多くのアプリケーションやサービスにより使用される
コードの集合です。通常、共有ライブラリを使用しているアプリケーションは、アプリケーショ
ンが初期化されるときに共有コードを読み込みます。そのため、更新されたライブラリを使用し
ているすべてのアプリケーションは、まず停止してから再起動する必要があります。
特定ライブラリにリンクしている実行中のアプリケーションを判別するには、以下の例のように
l so f コマンドを使用します。
l so f <path>
例えば、l i bwrap. so ライブラリにリンクしている実行中のアプリケーションを判別するに
は、以下を入力します。
~]# l so f /l i b6 4 /l i bwrap. so *
COMMAND
PID
USER FD
TYPE DEVICE SIZE/OFF
NODE NAME
sshd
13600 root mem
REG 253,0
43256 400501
/lib64/libwrap.so.0.7.6
sshd
13603 juan mem
REG 253,0
43256 400501
/lib64/libwrap.so.0.7.6
gnome-set 14898 juan mem
REG 253,0
43256 400501
/lib64/libwrap.so.0.7.6
metacity 14925 juan mem
REG 253,0
43256 400501
/lib64/libwrap.so.0.7.6[ 出力は省略されています]
このコマンドは、ホストのアクセス制御に TCP Wrapper を使用する実行中のプログラムの一覧
を返します。そのため tcp_wrappers パッケージが更新される場合には、リストにあるすべて
のプログラムを中止し、再起動する必要があります。
SysV サービス
SysV サービスは、ブート中に起動される永続的なサーバープログラムです。SysV サービスの例
としては、 sshd 、vsftpd 、および xi netd があります。
通常、これらのプログラムはマシンが稼働している間はメモリ内に残るので、パッケージのアッ
プグレード後にはそれぞれの更新 SysV サービスを停止してから再起動する必要があります。こ
れは、サービス設定ツールを使用するか、または root としてシェルプロンプトにログインし、以
下の例のように /sbi n/servi ce コマンドを発行することで実行されます。
25
Red Hat Ent erprise Linux 6 セキュリティガイド
/sbi n/servi ce <service-name> restart
上記の例にある <service-name> を sshd などのサービス名に置き換えます。
xi netd サービス
xi netd スーパーサービスによって管理されているサービスは、アクティブな接続があるときに
のみ実行されます。xi netd に制御されるサービスの例には、Telnet、IMAP、および POP3 な
どがあります。
これらのサービスの新規インスタンスは、新しい要求が受信されるたびに xi netd が起動される
ので、アップグレード後に発生する接続は更新ソフトウェアによって処理されます。ただ
し、xi netd が制御するサービスのアップグレード時にアクティブな接続がある場合、それらは
古いバージョンのソフトウェアによって処理されます。
xi netd が制御する特定サービスの古いインスタンスを停止するには、そのサービスのパッケー
ジをアップグレードしてから、現在実行中のすべてのプロセスを停止します。プロセスが実行中
であるかどうかを判別するには ps または pg rep コマンドを使用し、ki l l または ki l l al l
コマンドを使用してサービスの現在のインスタンスを停止します。
例えば、i map パッケージのセキュリティエラータがリリースされている場合、パッケージを
アップグレードしてから、シェルプロンプトに root として以下のコマンドを入力します。
~]# pg rep -l i map
1439 imapd
1788 imapd
1793 imapd
このコマンドはすべてのアクティブな IMAP セッションを返します。それぞれのセッションを終
了するには、root として以下のコマンドを発行します。
ki l l <PID>
セッションの終了に失敗した場合は、代わりに以下のコマンドを使用します。
ki l l -9 <PID>
上記の例では、<PID> を IMAP セッションのプロセス ID 番号 (pg rep -l コマンドの 2 番目の
列) に置き換えます。
すべてのアクティブな IMAP セッションを終了するには、以下のコマンドを発行します。
~]# ki l l al l i mapd
[1] http ://law.jrank.o rg /p ag es /379 1/Kevin-Mitnic k-Cas e-19 9 9 .html
[2] http ://www.living internet.c o m/i/ia_hac kers _levin.htm
26
⁠第2 章 ネットワークのセキュリティ保護
第2章 ネットワークのセキュリティ保護
2.1. ワークステーションのセキュリティ
Linux 環境の安全を確保する作業はワークステーションから始めます。個人用のマシンをロックダウンする
にしてもエンタープライズシステムのセキュリティ保護をするにしても、信頼できるセキュリティポリ
シーは個別のコンピューターが第一歩となります。コンピューターネットワークのセキュリティは、一番
弱いノードのレベルで決められてしまいます。
2.1.1. ワークステーションのセキュリティ評価
Red Hat Enterprise Linux ワークステーションのセキュリティを評価する際は、以下の点を考慮してくだ
さい。
BIOS およびブートローダーのセキュリティ — 未承認ユーザーがマシンに物理的にアクセス可能で、パ
スワードなしでシングルユーザーモードまたはレスキューモードによる起動が可能ですか?
パスワードのセキュリティ — マシンのユーザーアカウントのパスワードはどの程度安全ですか?
管理者コントロール — システムにアカウントを持っているのは誰で、どの程度の管理者コントロールが
ありますか?
利用可能なネットワークサービス — ネットワークからの要求をリッスンしているのはどのサービス
で、それらは稼働しているべきですか?
パーソナルファイアウォール — もし使うのであれば、どのタイプのファイアウォールが必要ですか?
セキュリティ強化の通信ツール — ワークステーション間の通信で使用すべきツールはどれで、使用す
べきでないツールはどれですか?
2.1.2. BIOS およびブートローダーのセキュリティ
BIOS (もしくは BIOS に相当するもの) およびブートローダーのパスワード保護により、システムに物理的
にアクセス可能な未承認ユーザーがリムーバブルメディアを使って起動したり、シングルユーザーモードで
root 権限を取得したりすることを防ぐことができます。このような攻撃に対するセキュリティ対策は、
ワークステーション上の情報の機密性とマシンの場所によって異なります。
例えば、マシンが見本市で使われていて機密情報を含んでいない場合、このような攻撃を防ぐことは重要で
はないかもしれません。しかし、同じ見本市で企業ネットワーク用のプライベートで暗号化されていない
SSH 鍵のあるノートパソコンが誰も監視せずに置かれていた場合、重大なセキュリティ侵害につながり、
その影響は企業全体に及ぶ可能性があります。
ただし、ワークステーションが権限のあるユーザーもしくは信頼できるユーザーのみがアクセスできる場所
に置かれてるのであれば、BIOS もしくはブートローダーの安全確保は必要ない可能性もあります。
2 .1 .2 .1 . BIOS パスワード
コンピューターの BIOS をパスワードで保護する主な理由は、以下の 2 つです ⁠ [3] 。
1. BIOS 設定の変更を防止する — 侵入者が BIOS にアクセスした場合、CD -ROM やフラッシュドラ
イブから起動するように設定できます。このようにすると、侵入者がレスキューモードやシングル
ユーザーモードに入ることが可能になり、システム上で任意のプロセスを開始したり、機密性の高
いデータをコピーできるようになってしまいます。
2. システムの起動を防ぐ — BIOS の中には起動プロセスをパスワードで保護できるものもあります。
これを有効にすると、攻撃者は BIOS がブートローダーを開始する前にパスワード入力を求められ
27
Red Hat Ent erprise Linux 6 セキュリティガイド
ます。
BIOS パスワードの設定方法はコンピューターメーカーで異なるため、具体的な方法についてはコンピュー
ターのマニュアルを参照してください。
BIOS パスワードを忘れた場合は、マザーボード上のジャンパーでリセットするか、CMOS バッテリーを
外します。このため、可能な場合はコンピューターのケースをロックすることがよい方法です。ただし、
CMOS バッテリーを外す前にコンピューターもしくはマザーボードのマニュアルを参照してください。
2.1.2.1.1. x86 以外のプラットフォームのセキュリティ
他のアーキテクチャーでは、x86 システム上の BIOS とほぼ同等の低レベルのタスクを実行するために異な
るプログラムを使用します。例えば、Intel® Itanium™ コンピューターは Extensible Firmware Interface
(EFI) シェルを使用します。
他のアーキテクチャー上で BIOS と同様のプログラムをパスワード保護する方法については、メーカーの指
示を参照してください。
2 .1 .2 .2 . ブートローダーのパスワード
Linux ブートローダーをパスワードで保護する主要な理由は以下のとおりです。
1. シングルユーザーモードへのアクセスを防ぐ— 攻撃者がシステムを起動してシングルユーザーモー
ドに入れるとすると、root パスワードの入力なしで自動的に root としてログインすることになっ
てしまいます。
警告
/etc/sysco nfi g /i ni t ファイルで SINGLE パラメーターを編集してシングルユーザー
モードへのアクセスを保護する方法は推奨されません。攻撃者は、GRUB のカーネルコマン
ドライン上で (init= を使って) カスタム初期コマンドを特定することでパスワードを迂回
できます。「GRUB のパスワード保護」 にあるように、GRUB ブートローダーをパスワー
ドで保護することが推奨されます。
2. GRUB コンソールへのアクセスを防ぐ— マシンがブートローダーに GRUB を使用している場合、
攻撃者は GRUB エディターインターフェイスを使って設定を変更したり、cat コマンドを使用し
て情報収集が可能になります。
3. 安全でないオペレーティングシステムへのアクセスを防ぐ— デュアルブートシステムの場合、攻
撃者はアクセス制御やファイルパーミッションを無視する (例えば、D OS などの) OS を起動時に
選択できます。
Red Hat Enterprise Linux 6 は、出荷時に x86 プラットフォーム上で GRUB ブートローダーが組み込まれ
ています。GRUB の詳細については、Red Hat Enterprise Linux インストールガイド を参照してください。
2.1.2.2.1. G R U B のパスワード保護
「ブートローダーのパスワード」 にある初めの 2 つの問題は、GRUB の設定ファイルに パスワード指示文
を追加することで対処できます。これを行うには、まず強固なパスワードを選択し、シェルを開いて root
でログインした後、以下のコマンドを実行します。
/sbi n/g rub-md 5-crypt
パスワードの入力を求められたら、GRUB パスワードを入力して Enter を押します。すると、パスワード
の MD 5 ハッシュが返されます。
28
⁠第2 章 ネットワークのセキュリティ保護
次に GRUB 設定ファイル /bo o t/g rub/g rub. co nf を編集します。これを開いて、ドキュメンテー
ションの主要セクションにある ti meo ut 行の下に以下の行を追加します。
password --md5 <password-hash>
<password-hash> の部分を /sbi n/g rub-md 5-crypt が返した値に置き換えます ⁠ [4] 。
次回のシステム起動時には、p を押して GRUB パスワードを押さないとエディターやコマンドインター
フェイスにアクセスできないように、GRUB メニューが保護します。
残念ながらこの方法では、攻撃者がデュアルブートシステムで起動して安全でないオペレーティングシステ
ムに侵入することは防げません。この問題に関しては、/bo o t/g rub/g rub. co nf ファイルの別の部分
を編集する必要があります。
安全にしたいオペレーティングシステムの ti tl e 行のすぐ下に l o ck 指示文の行を追加します。
D OS システムでは、最初の部分は以下のようになります。
title DOS
lock
警告
この方法が正常に機能するには、passwo rd 行は /bo o t/g rub/g rub. co nf ファイルの主要セク
ションにある必要があります。それ以外の場所では、攻撃者は GRUB エディターにアクセスして
lock 行を削除することが可能になってしまいます。
特定のカーネルやオペレーティングシステムに異なるパスワードを作成するには、この部分に l o ck 行を
追加して、その次の行をパスワード行にします。
一意のパスワードで保護された各節は、以下の例と同様の行で始まります。
title DOS
lock
password --md5 <password-hash>
2.1.2.2.2. インタラクティブスタートアップの無効化
起動順序の最初に I キーを押すと、インタラクティブな方法でシステムを起動できます。この方法では、シ
ステムがユーザーにサービスを 1 つずつ開始するように求めます。しかし、システムに物理的なアクセスが
ある攻撃者の場合は、この方法だとセキュリティ関連のサービスを無効にし、システムへのアクセスを許す
ことになってしまいます。
このようなインタラクティブなスタートアップを防止するには、root で /etc/sysco nfi g /i ni t ファ
イルの PROMPT パラメーターを以下のように無効にします。
PROMPT=no
2.1.3. パスワードのセキュリティ
パスワードは、Red Hat Enterprise Linux がユーザーの ID を確認する第一の手段です。ユーザーやワーク
ステーション、ネットワークの保護にパスワードのセキュリティが重要であるのは、このためです。
29
Red Hat Ent erprise Linux 6 セキュリティガイド
セキュリティ目的で、インストールプログラムはシステムが セキュアハッシュアルゴリズム 512 (SHA512
とシャドウパスワードを使うように設定します。この設定を変更しないことが強く推奨されます。
インストール中にシャドウパスワードが検出されると、すべてのパスワードは全ユーザーが読み取り可能な
/etc/passwd ファイルに一方向のハッシュとして保存されます。この場合、システムはオフラインのパ
スワードクラッキング攻撃に脆弱なものとなってしまいます。侵入者が通常のユーザーとしてマシンにアク
セスすると、/etc/passwd ファイルを侵入者自身のマシンにコピーして、パスワードクラッキングプロ
グラムをいくつでも実行できるようになります。このファイルに安全でないパスワードがあれば、パスワー
ドクラッカーがこれを見つけるのは時間の問題となります。
シャドウパスワードは、パスワードハッシュを /etc/shad o w ファイルに保存することで、このタイプの
攻撃を排除します。このファイルは、root ユーザーのみが読み取り可能なためです。
この場合、攻撃者は SSH や FTP などのマシン上のネットワークサービスにログインしてリモートからパ
スワードクラッキングを試みることが強いられます。このようなブルートフォース攻撃は時間がかかり、何
百回ものログイン失敗がシステムファイルに書き込まれるので、明らかな痕跡が残ります。もちろん、ク
ラッカーが脆弱なパスワードがあるシステムに真夜中から攻撃を開始した場合、夜明け前にはアクセスに成
功し、痕跡を隠すためにログファイルを編集してしまう、という可能性もあります。
フォーマットやストレージに加えて考慮すべき点は、コンテンツの問題です。パスワードクラッキングから
アカウントを保護するためにユーザーがなし得る最重要事項は、強固なパスワードを作成することです。
2 .1 .3.1 . 強固なパスワードの作成
安全なパスワードを作成するには、長いパスワードの方が短くかつ複雑なものよりも強固であることをユー
ザーは認識する必要があります。あるパスワードが数字や特殊文字、大文字のアルファベットを含んでいて
も、それが 8 文字の長さしかなければ、強固なパスワードとは言えません。「John The Ripper」のような
パスワード解析ツールは、人間が記憶するには困難なパスワードを分解するために最適なものです。
情報の理論上では、エントロピーはランダムな変数に関連付けられる不確実性のレベルで、ビット表示され
ます。エントロピーの値が高ければ高いほど、パスワードはより安全と言えます。NIST (米標準技術研究
所) の SP 800-63-1 文書によると、一般的に選択される 5 万件のパスワードからなる辞書にないパスワー
ドには、少なくとも 10 ビットのエントロピーがあります。このため、ランダムな 4 単語からなるパスワー
ドには、およそ 40 ビットのエントロピーがあることになります。安全性を高めるために複数の単語で構成
される長いパスワードは、パスフレーズ とも呼ばれます。例を示します。
randomword1 randomword2 randomword3 randomword4
大文字や数字、特殊文字の使用が強制されるシステムでは、上記の推奨事項に合致するパスフレーズは簡単
に修正することができます。たとえば、最初の文字を大文字にして、" 1! " を追加します。このような修正
は、パスフレーズの安全性を大幅に高めるもの ではない ことに注意してください。
安全なパスワードの作成にはいくつものアプローチがありますが、以下の悪い点は必ず避けてください。
辞書の 1 単語を使用する。外国語の 1 単語を使用する。反転した単語を使用する。数字のみを使用す
る。
パスワードまたはパスフレーズを 10 文字未満にする。
キーボードのレイアウトにおけるキーの配列を使用する。
パスフレーズを書き留める。
誕生日や記念日、家族の名前、ペットの名前などの個人情報をパスフレーズに使用する。
複数のマシンで同じパスワードまたはパスフレーズを使用する。
30
⁠第2 章 ネットワークのセキュリティ保護
セキュアなパスワードの作成は不可欠ですが、パスワードの適切な管理も特に大きな組織のシステム管理者
にとっては重要です。次のセクションでは、組織内でのユーザーパスワードの作成および管理で推奨される
方法を説明します。
2.1.4 . 組織内でのユーザーパスワード作成
組織内に多くのユーザーがいる場合、システム管理者は 2 つの基本的な方法で強固なパスワードの使用を強
制できます。つまり、管理者がパスワードを作成してユーザーに渡すか、パスワードが受容可能なレベルに
あるかどうかを検証しながらユーザー自身がパスワードを作成する方法です。
前者の方法だとパスワードは強固なものになりますが、組織が拡大するにつれてタスクが重荷になります。
また、ユーザーが自分のパスワードを書き留めるリスクも高まります。
これらの理由で、多くのシステム管理者は後者を選択します。ただし、パスワードが強固かどうかを積極的
に検証し、場合によってはパスワードエージングで定期的にユーザーが強制的にパスワードを変更するよう
にします。
2 .1 .4 .1 . 強固なパスワードの強制
ネットワークを侵入から守るには、組織内で使われているパスワードが強固なものであることをシステム管
理者が確認することが推奨されます。ユーザーはパスワードを作成・変更する際に、コマンドラインアプリ
ケーション passwd を使用できます。これは、Pluggable Authentication Modules (PAM) 対応なので、パス
ワードが短すぎないかまたは簡単にクラックされないかをチェックします。このチェック
は、pam_crackl i b. so PAM モジュールを使って実行されます。Red Hat Enterprise Linux で
は、pam_crackl i b PAM モジュールを使って、パスワードの強度を規則セットに対してチェックするこ
とができます。これは、他の PAM モジュールとともに /etc/pam. d /passwd ファイルの passwo rd コ
ンポーネント内にスタックして、ユーザーログイン用のカスタムルールセットを設定することができま
す。pam_crackl i b には、以下の 2 つのルーチンがあります。ひとつは、示されたパスワードが辞書内に
あるかどうかをチェックすること。辞書にない場合は、さらなるチェックを行うことです。チェック項目の
完全一覧については、pam_crackl i b(8) の man ページを参照してください。
例2.1 pam_crackl i b を使ったパスワード強度チェックの設定
パスワードを 8 文字以上にして、4 種類すべての文字を含めることを要件とするに
は、/etc/pam. d /passwd ファイルの passwo rd セクションに以下の行を追加します。
password
required
pam_cracklib.so retry=3 minlen=8 minclass=4
パスワード強度チェックで連続文字または反復文字のチェックを行うには、/etc/pam. d /passwd
ファイルの passwo rd セクションに以下の行を追加します。
password
required
maxrepeat=3
pam_cracklib.so retry=3 maxsequence=3
この例では、「abcd」や「1234」など、4 つ以上連続する文字をパスワードに含めることはできませ
ん。また、同じ文字は、3 つまでしか繰り返すことはできません。
注記
root ユーザーに対してはこれらのチェックは実行されないので、警告メッセージが出ても root ユー
ザーは通常ユーザー用にどんなパスワードでも設定することができます。
31
Red Hat Ent erprise Linux 6 セキュリティガイド
PAM はカスタマイズ可能なので、pam_passwd q c (http://www.openwall.com/passwdqc/ から入手可能)
などのパスワード健全性チェッカーをさらに追加したり、新たなモジュールを書き込んだりすることができ
ます。入手可能な PAM モジュールのリストについては、http://uw714doc.sco.com/en/SEC_pam/pam6.html を参照してください。PAM の詳細情報については、Managing Single Sign-On and Smart Cards ガイ
ドを参照してください。
パスワード作成時に行われるパスワードチェックは、脆弱なパスワードの発見において、パスワードクラッ
キングプログラムが実行するチェックほど効果的ではありません。
Red Hat Enterprise Linux 下で実行可能な多くのパスワードクラッキングプログラムがありますが、これら
はオペレーティングシステムに同梱されていません。以下に一般的なパスワードクラッキングプログラムの
例を挙げます。
John The Ripper — 高速かつ柔軟性のあるパスワードクラッキングプログラムです。複数の単語リスト
が使用可能で、ブルートフォースパスワードクラッキングも実行できます。オンラインで
http://www.openwall.com/john/ から入手できます。
Crack — おそらく最も知名度の高いパスワードクラッキングソフトウェアです。C rack は非常に高速
ですが、扱いは Jo h n T h e R ip p er ほど簡単ではありません。
Slurpie — Slu rp ie は Jo h n T h e R ip p er および C rack と類似したものですが、複数のコンピュー
ター上で同時に実行するように設計されており、分散パスワードクラッキング攻撃を生成します。他の
多くの分散攻撃セキュリティ評価ツールとともに、オンラインで
http://www.ussrback.com/distributed.htm で入手可能です。
警告
組織内でパスワードのクラッキングを試みる場合は常に、最初に書面で許可を得てください。
2 .1 .4 .2 . パスフレーズ
パスフレーズとパスワードは、現在のほとんどのシステムおけるセキュリティの土台となっています。残念
ながら、生体認証や 2 要素認証はまだ多くのシステムで主流になっていません。システムの安全確保にパス
ワードを使用するのであれば、パスフレーズの使用を検討することが推奨されます。パスフレーズはパス
ワードよりも長く、数字や記号などの非標準文字で実行してもパスワードよりもすぐれた保護を提供しま
す。
2 .1 .4 .3. パスワードエージング
パスワードエージングは、システム管理者が組織内での脆弱なパスワードに対する防御として用いるもうひ
とつのテクニックです。パスワードエージングとは、一定期間後 (通常 90 日) にユーザーが新たなパスワー
ドを作成するように求められるシステムのことです。理論上は、ユーザーに定期的なパスワード変更を強制
すれば、クラックされたパスワードは侵入者にとって一定期間しか有効でないことになります。しかし、パ
スワードエージングのマイナス面は、ユーザーがパスワードを書き留める可能性が高くなるという点です。
Red Hat Enterprise Linux では、パスワードエージングを指定する主要プログラムは次の 2 つになりま
す。chag e コマンド、もしくはグラフィカルな U ser Man ag er (system-co nfi g -users) アプリケー
ションです。
32
⁠第2 章 ネットワークのセキュリティ保護
重要
chag e コマンドを使用するには、シャドウパスワードが有効となっている必要があります。詳細は
Red Hat Enterprise Linux 6 導入ガイド を参照してください。
chag e コマンドの -M オプションでは、パスワードが有効となる最長日数を指定します。例えば、ユー
ザーのパスワードが 90 日間で期限切れとなるように設定するには、以下のコマンドを実行します。
chag e -M 9 0 <username>
上記のコマンドでは、<username> をユーザー名で置き換えます。パスワードの期限切れを無効にするに
は、通常 -M オプションの後に 9 9 9 9 9 の値を使います (これは 273 年余りに相当します)。
chag e コマンドで使用可能なオプションの詳細情報については、以下の表を参照してください。
表2.1 ch ag e のコマンドラインオプション
オプション
説明
-d days
1970 年 1 月 1 日から最後にパスワードを変更した日までの日数を指定し
ます。
アカウントがロックされる日付を YYYY-MM-D D の形式で指定します。
日付の代わりに、 1970 年 1 月 1 日からの日数を指定することも可能で
す。
パスワードが失効してからアカウントがロックされるまでのアクティブ
でない日数を指定します。値を 0 とすると、パスワード失効後にアカウ
ントはロックされません。
現在のアカウントエージングの設定を一覧表示します。
パスワード変更が必要となる間隔の最短日数を指定します。値を0 とす
ると、パスワードは失効しません。
パスワードの有効最長日数を指定します。このオプションで指定した日
数と -d オプションで指定した日数の合計が、1970 年 1 月 1 日から数え
た現在までの日数より少ない場合は、ユーザーはアカウントを使用する
前にパスワードを変更する必要があります。
パスワードが失効する前にユーザーに警告を発する日数を指定します。
-E date
-I days
-l
-m days
-M days
-W days
インタラクティブモードで chag e を使用して、複数のパスワードエージングおよびアカウントの詳細を修
正することもできます。以下のコマンドでインタラクティブモードに入ります。
chag e <username>
以下は、このコマンドを使用したインタラクティブセッションの例です。
~]# chag e juan
Changing the aging information for juan
Enter the new value, or press ENTER for the default
Minimum Password Age [0]: 10
Maximum Password Age [99999]: 9 0
Last Password Change (YYYY-MM-DD) [2006-08-18]:
Password Expiration Warning [7]:
Password Inactive [-1]:
Account Expiration Date (YYYY-MM-DD) [1969-12-31]:
33
Red Hat Ent erprise Linux 6 セキュリティガイド
ユーザーの初回ログイン時にパスワードが失効するように設定できます。これにより、ユーザーはパスワー
ドを直ちに変更するよう強制されます。
1. 初期パスワードを設定します。この手順には 2 つの一般的なアプローチがあります。デフォルトの
パスワードを割り当てる、もしくは null パスワードを使用します。
デフォルトのパスワードを割り当てるには、ro o t としてシェルプロンプトで以下を入力します。
passwd username
代わりに null パスワードを割り当てるには、次のコマンドを使用します。
passwd -d username
できる限り null パスワードは使用しないで下さい
null パスワードの使用は便利ですが、安全性は極めて低くなります。これは、いかなる第三
者でも、セキュアでないユーザー名を使用して最初にシステムにログインし、アクセスでき
るためです。null パスワードでアカウントのロック解除を行う前に、ユーザーがログインで
きる状態にあることを常に確かめてください。
2. パスワードを直ちに強制的に失効させるには、ro o t として以下のコマンドを実行します。
chag e -d 0 username
このコマンドは、パスワードが最後に変更された日付の値を 1970 年 1 月 1 日に設定します。パス
ワードエージングのポリシーが設定されていても、この値はパスワードを直ちに強制的に期限切れ
にします。
これで、ユーザーは初回ログイン時に新規パスワードを入力するよう要求されます。
グラフィカルの ユーザー管理 アプリケーションを使って、以下のようにパスワードエージングポリシーを
作成することもできます。注: この手順を行うには、管理者権限が必要です。
1. パネル上の システム メニューをクリックして 管理 から ユーザーとグループ をクリックして ユー
ザー管理 を表示させます。別の方法では、シェルプロンプトで system-co nfi g -users のコマ
ンドを入力します。
2. ユーザー タブをクリックして、ユーザーリストの中から必要なユーザーを選択します。
3. ツールバーの プロパティ をクリックして、ユーザー設定のダイアログボックスを表示させます
(または ファイル メニューで プロパティ を選択します) 。
4. パスワード情報 タブをクリックして、パスワード失効を有効にする のチェックボックスに
チェックマークを付けます。
5. 変更が要求されるまでの日数 フィールドに必要な値を入力し、O K をクリックします。
34
⁠第2 章 ネットワークのセキュリティ保護
図2.1 パスワードエージングオプションの指定
screenshot needs to be updated
2.1.5. 動きのないアカウントをロックする
pam_l astl o g PAM モジュールを使うと、しばらくログインしていないユーザーをロックアウトしたり、
最後のログイン試行についての情報を表示できます。このモジュールは root アカウントはチェックしない
ので、root アカウントがロックアウトされることはありません。
l astl o g コマンドは、ユーザーの最後のログインを表示します。一方、l ast コマンドは、すべての現行
および以前のログインセッションを表示します。これらのコマンドはそれぞれ、/var/l o g /l astl o g と
/var/l o g /wtmp ファイルからデータを読み込みます。データは、バイナリ形式で保存されています。
ユーザーが最後にログインした前に試行されたログイン失敗数を表示するには、root で以下の行を
/etc/pam. d /l o g i n ファイルの sessi o n セクションに追加します。
session
optional
pam_lastlog.so silent noupdate showfailed
アクティビティーがないことによるアカウントのロックは、コンソールもしくは GUI、またはこれら両方
に適用するよう設定することができます。
アクティビティーが 10 日間なかった場合にアカウントをロックするには、root で以下の行を
/etc/pam. d /l o g i n ファイルの auth セクションに追加します。
auth
required
pam_lastlog.so inactive=10
35
Red Hat Ent erprise Linux 6 セキュリティガイド
GNOME デスクトップ環境でアカウントをロックするには、root で以下の行を /etc/pam. d /g d m
ファイルの auth セクションに追加します。
auth
required
pam_lastlog.so inactive=10
注記
他のデスクトップ環境では、その環境における該当ファイルを編集してください。
2.1.6. アクセス制御のカスタマイズ
pam_access PAM モジュールを使用すると、管理者はログイン名、ホストもしくはドメイン名、または
IP アドバイスに基づいてアクセス制御をカスタマイズできます。デフォルトでは、他の指定がない場合、
モジュールがアクセスルールを /etc/securi ty/access. co nf ファイルから読み込みます。これら
ルールの形式についての完全な説明は、access. co nf(5) の man ページを参照してください。Red Hat
Enterprise Linux ではデフォルトで、pam_access が /etc/pam. d /cro nd および /etc/pam. d /atd
の各ファイルに含まれています。
ユーザー john がコンソールおよびグラフィックデスクトップ環境からシステムにアクセスできないように
するには、以下の手順を実行します。
1. 以下の行を /etc/pam. d /l o g i n および /etc/pam. d /g d m-* の各ファイルの acco unt セク
ションに追加します。
account
required
pam_access.so
2. /etc/securi ty/access. co nf ファイルで、以下のルールを指定します。
- : john : ALL
このルールでは、ユーザー john がどの場所からログインしようとしても、拒否されます。
ユーザー john が IP アドレス 1.2.3.4 からログインしようとする場合を除いて、SSH 経由ですべてのユー
ザーによるログインを許可するには、以下の手順を実行します。
1. 以下の行を /etc/pam. d /sshd ファイルの acco unt セクションに追加します。
account
required
pam_access.so
2. /etc/security/access.conf ファイルで以下の ルールを指定します。
+ : ALL EXCEPT john : 1.2.3.4
他のサービスからのアクセスを制限するには、/etc/pam. d ディレクトリー内の各ファイル内で
pam_access モジュールが必要になります。
システム全体の PAM 設定ファイル (/etc/pam. d ディレクトリー内の *-auth ファイル) を呼び出すすべ
てのサービス向けに pam_access モジュールを呼び出すには、以下のコマンドを使用します。
authco nfi g --enabl epamaccess --upd ate
36
⁠第2 章 ネットワークのセキュリティ保護
別の方法では、認証設定ユーティリティーを使って pam_access モジュールを有効にすることができま
す。このユーティリティーを起動するには、トップメニューから システム → 管理 → 認証 を選択しま
す。高度なオプション タブで、「ローカルアクセス制御を有効にする」にチェックを入れます。これ
で、pam_access モジュールがシステム全体の PAM 設定に追加されます。
2.1.7. 時間ベースのアクセス制限
pam_ti me PAM モジュールでは、一定の時間帯にアクセスを制限することができます。また、特定の曜日
やユーザー名、システムサービスの使用などに基づいてアクセスを制限するように設定することも可能で
す。デフォルトでは、モジュールはアクセスルールを /etc/securi ty/ti me. co nf ファイルから読み
取ります。これらルールの形式についての完全な説明は、ti me. co nf(5) の man ページを参照してくだ
さい。
root ユーザー以外の全ユーザーが月曜から金曜までの午後 5:30 から午前 8:00 までと土曜日および日曜日
にログインできないようにするには、以下の手順を実行します。
1. 以下の行を /etc/pam. d /l o g i n ファイルの account セクションに追加します。
account
required
pam_time.so
2. /etc/securi ty/ti me. co nf ファイルで、以下のルールを指定します。
login ; ALL ; !root ; tty* ; !Wk1730-0800
ユーザー john が (月曜始まりの) 営業日の営業時間中のみに SSH サービスを使用できるようにするには、
以下の手順を実行します。
1. 以下の行を /etc/pam. d /sshd ファイルに追加します。
account
required
pam_time.so
2. /etc/securi ty/ti me. co nf ファイルで、以下のルールを指定します。
sshd ; john ; tty* ; Wk0800-1730
注記
これらの設定がデスクトップで適用されるには、pam_ti me モジュールが /etc/pam. d ディレク
トリー内の対応ファイルに含まれている必要があります。
2.1.8. アカウント制限の適用
pam_l i mi ts PAM モジュールを使うと、以下のことができます。
ユーザーあたりの同時ログインセッションの最大数など、ユーザーログインセッションの制限を適用す
る。
u limit ユーティリティーで設定する制限を指定する。
n ice ユーティリティーで設定する優先順位を指定する。
デフォルトでは、ルールは /etc/securi ty/l i mi ts. co nf ファイルから読み取られます。これらルー
ルの形式についての完全な説明は、l i mi ts. co nf(5) の man ページを参照してください。さらに、特定
37
Red Hat Ent erprise Linux 6 セキュリティガイド
のアプリケーションやサービス向けに、/etc/securi ty/l i mi ts. d ディレクトリー内に個別の設定
ファイルを作成することもできます。デフォルトでは、pam_l i mi ts モジュールは、/etc/pam. d /
ディレクトリー内の多くのファイルに含まれています。ユーザープロセスのデフォルト制限は
/etc/securi ty/l i mi ts. d /9 0 -npro c. co nf ファイルで定義され、fork 爆弾のような悪意のある
サービス拒否攻撃を防ぎます。デフォルトのユーザープロセス制限を 50 に変更するに
は、/etc/securi ty/l i mi ts. d /9 0 -npro c. co nf 内の値をファイル内の形式にしたがって変更しま
す。
* soft nproc 50
例2.2 ユーザーあたりの最大ログイン数の指定
1. o ffi ce という名前のグループにおけるユーザーの同時ログイン最大数を設定するには、以下の
ルールを /etc/securi ty/l i mi ts. co nf ファイル内で指定します。
@ office - maxlogins 4
2. 以下の行は、デフォルトで /etc/pam. d /system-auth 内にあるはずです。ない場合は、手
動で追加します。
session
required
pam_limits.so
2.1.9. 管理者コントロール
ホームとなるマシンを管理する際には、ユーザーは root ユーザーとして、または sud o や su などの
setuid プログラムで有効な root 権限を取得してから実行する必要のあるタスクがあります。setuid プログ
ラムは、プログラムを実行しているユーザーではなく、プログラムの所有者のユーザー ID (UID) で実行さ
れるプログラムです。これらのプログラムは、以下の例のように、ロング形式の所有者セクションにある s
で示されます。
~]$ l s -l /bi n/su
-rwsr-xr-x. 1 root root 34904 Mar 10
2011 /bin/su
注記
s は大文字または小文字の場合があります。大文字の場合は、基になるパーミッションビットが設
定されていないことを示します。
しかし、組織のシステム管理者は、組織のユーザーが自身のマシンにどの程度の管理者アクセスを持つかを
決定しなくてはなりません。pam_co nso l e. so と呼ばれる PAM モジュールを使うと、再起動やリムー
バブルメディアのマウントなど通常は root ユーザーのみとなっているアクティビティーを、物理コンソー
ルに最初にログインしたユーザーが実行できるようになります (pam_co nso l e. so の詳細について
は、Managing Single Sign-On and Smart Cards を参照してください)。しかし、ネットワーク設定の変更や
新たなマウスの設定、ネットワークデバイスのマウントといったシステム管理者の他の重要なタスクは、管
理者権限なしでは実行できません。その結果、システム管理者はネットワーク上のユーザーにどの程度のア
クセスを許可するかを判断する必要があります。
2 .1 .9 .1 . Ro o t アクセスの許可
組織内のユーザーが信頼できてコンピューターの知識を持っているユーザーであれば、root アクセスを許可
38
⁠第2 章 ネットワークのセキュリティ保護
することに問題はありません。ユーザーに root アクセスを許可すれば、デバイスの追加やネットワークイ
ンターフェイスの設定といった重要性の低いアクティビティを個別のユーザーが処理できるので、システ
ム管理者はネットワークセキュリティや他の重要な問題に専念できます。
一方で、個別のユーザーに root アクセスを許可すると、以下のような問題も発生します。
マシンの誤った設定 — root アクセスを持つユーザーは自身のマシンを間違って設定する可能性があり、
この問題を解決するにはヘルプを必要とします。ひどい場合には、知らないうちにセキュリティに穴を
開けてしまう可能性もあります。
安全でないサービスの実行 — root アクセスを持つユーザーは、FTP や Telnet といった安全でないサー
ビスを自身のマシン上で実行して、ユーザー名やパスワードを危険にさらす可能性があります。これら
のサービスは、ユーザー名やパスワードをプレーンテキストでネットワーク上で送信します。
Email の添付ファイルを root として実行 — 滅多にないことですが、Linux に影響を及ぼす Email ウイル
スも存在します。しかしこれが脅威となるのは、root ユーザーとして実行された場合のみです。
監査証跡がそのままになる — root アカウントは通常複数のユーザーが共有し、複数のシステム管理者が
システムのメインテナンスをできるようになっているため、ある時点でこのうちのどのユーザーが root
だったかを見分けることは不可能です。別個のログインを使用すると、ユーザーがログインしたアカウ
ントとセッション追跡目的の一意の番号がタスク構造に組み込まれ、これはユーザーが開始するプロセ
スすべてで継承されます。同時ログインを使用すると、一意の番号は特定ログインのアクションの追跡
に使用できます。アクションが監査イベントを生成する際には、ログインアカウントとその一意の番号
に関連付けられているセッションとともに記録されます。これらのログインとセッションを表にするに
は、aul ast コマンドを使用します。aul ast の --pro o f オプションを使うと、特定のセッションで
生成された監査可能なイベントを切り離す特定の ausearch クエリの提示が可能になります。
2 .1 .9 .2 . Ro o t アクセスの拒否
上記またはその他の理由でユーザーが root でログインすることに管理者が不安に感じる場合、root パス
ワードは公開せず、ランレベル 1 へのアクセスやシングルユーザーモードへのアクセスをブートローダーパ
スワード保護で拒否してください (このトピックについての詳細は 「ブートローダーのパスワード」 を参照
してください)。
管理者は以下の 4 つの方法で、root ログインが拒否されるようにできます。
R o o t シェルの変更
ユーザーが直接 root としてログインしないように、システム管理者は /etc/passwd ファイル
で root アカウントのシェルを /sbi n/no l o g i n に設定できます。
表2.2 R o o t シェルの無効化
影響あり
影響なし
Root シェルへのアクセスを防ぎ、アクセスの
試みをすべてログに記録します。以下のプロ
グラムは root アカウントへのアクセスが止め
られます。
FTP クライアントや メールクライアント、多
くの setuid プログラムはシェルを必要としま
せん。以下のプログラムは root アカウントへ
のアクセスが 止められません。
login
gdm
kd m
xd m
su
ssh
scp
sftp
sud o
FTP クライアント
Email クライアント
39
Red Hat Ent erprise Linux 6 セキュリティガイド
影響あり
影響なし
どのコンソールデバイス ( t t y) からの ro o t アクセスも無効にする
Root アカウントへのアクセスをさらに制限するために、管理者は /etc/securetty ファイルを
編集してコンソールでの root ログインを無効にすることができます。このファイルは、root ユー
ザーがログイン可能なすべてのデバイスを一覧表示します。このファイル自体がない場合、コン
ソールからでも raw ネットワークインターフェイスからでも、システム上のいかなる通信デバイ
スからでも root ユーザーはログイン可能となってしまいます。ユーザーは Telnet 経由で root と
してマシンにログイン可能で、こうするとプレーンテキストのパスワードがネットワーク上で送
信されてしまうので、危険なことになります。
デフォルトでは、Red Hat Enterprise Linux の /etc/securetty ファイルは root ユーザーに
のみ、マシンに物理的につながれたコンソールでのログインを許可します。root ユーザーによる
ログインを拒否するには、root でシェルプロンプトから以下のコマンドを入力して、このファイ
ルのコンテンツ削除します。
echo > /etc/securetty
KD M、GD M、XD M のログインマネージャーでの securetty サポートを有効にするには、以下
の行を追加します。
auth [user_unknown=ignore success=ok ignore=ignore default=bad]
pam_securetty.so
追加対象のファイルは以下のとおりです。
/etc/pam. d /g d m
/etc/pam. d /g d m-auto l o g i n
/etc/pam. d /g d m-fi ng erpri nt
/etc/pam. d /g d m-passwo rd
/etc/pam. d /g d m-smartcard
/etc/pam. d /kd m
/etc/pam. d /kd m-np
/etc/pam. d /xd m
40
⁠第2 章 ネットワークのセキュリティ保護
警告
/etc/securetty ファイルを空白にしても、root ユーザーがリモートでツールの
OpenSSH スイートを使用してログインすることは 止められません。これは、コンソール
は認証が終わるまで開かれないためです。
表2.3 R o o t ログインの無効化
影響あり
影響なし
コンソールまたはネットワーク経由での root
アカウントへのアクセスを防ぎます。以下の
プログラムは root アカウントへのアクセスが
止められます。
Root としてはログインしませんが、setuid ま
たは別のメカニズムで管理タスクを実行する
プログラムです。以下のプログラムは root ア
カウントへのアクセスが 止められません。
login
gdm
kd m
xd m
tty を開くその他のネットワークサービス
su
sud o
ssh
scp
sftp
R o o t SSH ログインを無効にする
SSH プロトコル経由での root ログインを防ぐには、SSH デーモンの設定ファイルである
/etc/ssh/sshd _co nfi g を編集し、
#PermitRootLogin yes
の行を以下のように変更します。
PermitRootLogin no
表2.4 R o o t SSH ログインの無効化
影響あり
影響なし
ツールの OpenSSH スイート経由での root ア ツールの OpenSSH スイートの一部ではない
クセスを防ぎます。以下のプログラムは root プログラム
アカウントへのアクセスが止められます。
ssh
scp
sftp
PAM を使用してサービスへの ro o t アクセスを制限する
PAM は /l i b/securi ty/pam_l i stfi l e. so を使って、特定アカウントの拒否に大幅な柔
軟性を提供します。管理者はこのモジュールを使ってログインが許可されないユーザーリストを
引用できます。システムサービスへの root アクセスを制限するには、/etc/pam. d / ディレク
トリー内の対象サービスのファイルを編集して、pam_l i stfi l e. so モジュールが認証に必要
となるようにします。
以下の例では、/etc/pam. d /vsftpd PAM 設定ファイルの vsftpd FTP サーバーにこのモ
ジュールを使用しています (一行目の末にある \ の文字は、指示文が一行の場合は必要ありませ
ん)。
41
Red Hat Ent erprise Linux 6 セキュリティガイド
auth
required
/lib/security/pam_listfile.so
item=user \
sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
これにより、PAM が/etc/vsftpd . ftpusers ファイルを見て、リストに載っているユーザー
にサービスへのアクセスを拒否するように指示します。管理者はこのファイル名を変更し、各
サービスごとに別個のリストを維持したり、複数サービスへのアクセスを拒否する集中リストを
使用したりすることができます。
管理者が複数サービスへのアクセスを拒否したい場合、メールクライアントでは
/etc/pam. d /po p や /etc/pam. d /i map ファイルに、SSH クライアントでは
/etc/pam. d /ssh ファイルのような PAM 設定ファイルに同様の行を追加することができま
す。
PAM についての詳細は、Red Hat Enterprise Linux Managing Single Sign-On and Smart Cards ガ
イドの Using Pluggable Authentication Modules (PAM) の章を参照してください。
表2.5 PAM を使った ro o t の無効化
影響あり
影響なし
PAM 対応のネットワークサービスへの root
アクセスを防ぎます。以下のサービスは root
アカウントへのアクセスが止められます。
PAM 非対応のプログラムおよびサービス
login
gdm
kd m
xd m
ssh
scp
sftp
FTP クライアント
Email クライアント
すべての PAM 対応サービス
2 .1 .9 .3. 自動ログアウトの有効化
ユーザーが ro o t としてログインしている場合、このセッションを無人状態にしておくと、重大なセキュ
リティリスクをもたらす恐れがあります。このリスクを減らすために、一定期間が経過してからアイドル状
態のユーザーを自動的にログアウトするようにシステムを設定することができます。
1. screen パッケージがインストールされていることを確認して下さい。ro o t として以下のコマンド
を実行します。
~]# yum i nstal l screen
Red Hat Enterprise Linux にパッケージをインストールする方法についての詳細情報は、Red Hat
Enterprise Linux 6 導入ガイド の パッケージのインストール のセクションを参照してください。
2. ro o t として /etc/pro fi l e ファイルの先頭に以下の行を追加して、このファイルの処理が中断
されないようにします。
​t rap "" 1 2 3 15
42
⁠第2 章 ネットワークのセキュリティ保護
3. /etc/pro fi l e ファイルの最後に以下の行を追加して、ユーザーが仮想コンソールまたはリモー
トからログインする度に screen セッションが開始するようにします。
​S CREENEXEC="screen"
​i f [ -w $(tty) ]; then
​ trap "exec $SCREENEXEC" 1 2 3 15
​ echo -n 'Starting session in 10 seconds'
​ sleep 10
​ exec $SCREENEXEC
​fi
新規セッションが開始される度にメッセージが表示されるため、ユーザーは 10 秒間待たなければ
ならない点に注意して下さい。セッション開始までの待機時間を調節するには、sl eep コマンド
の後にある値を変更します。
4. アクティブでない状態が一定期間経過した後に、screen セッションを閉じるようにするには、以
下の行を /etc/screenrc 設定ファイルに追加します。
​i dle 120 quit
​a utodetach off
上記は、制限時間を 120 秒に設定しています。この制限を調節するには、i d l e 指示文の後にある
値を変更します。
別の方法として、以下の行を使用してセッションのロックだけが行われるようにシステムを設定す
ることも可能です。
​i dle 120 lockscreen
​a utodetach off
この方法では、セッションのロックを解除するためにパスワードが必要になります。
これらの変更は、ユーザーが次回システムにログインする時に反映されます。
2 .1 .9 .4 . Ro o t アクセスの制限
Root ユーザーへのアクセスを完全に拒否するのではなく、管理者が su や sud o といった setuid プログラ
ム経由のアクセスのみを許可したい場合もあるかもしれません。su および sud o についての詳細は
Red Hat Enterprise Linux 6 導入ガイド および su(1) と sud o (8) の man ページを参照してください。
2 .1 .9 .5 . アカウントのロック
Red Hat Enterprise Linux 6 では、pam_fai l l o ck PAM モジュールを使うとシステム管理者は特定回数
のログイン失敗の後にユーザーアカウントをロックアウトすることができます。ユーザーログインの試行回
数を制限する主な目的はセキュリティ措置であり、ユーザーアカウントのパスワード獲得を目的とする総当
たり攻撃を防ぐためのものです。
pam_fai l l o ck モジュールを使うと、ログイン失敗はユーザーごとに/var/run/fai l l o ck ディレク
トリー内の個別ファイルに保存されます。
43
Red Hat Ent erprise Linux 6 セキュリティガイド
注記
ログイン失敗のログファイルにおける行の順番は重要なものです。even_d eny_ro o t オプション
が使用されている場合、この順番が変更されると root アカウントを含むすべてのユーザーアカウン
トがロックされます。
アカウントのロックを設定するには、以下の手順を実行します。
1. root 以外のユーザーがログインに 3 回失敗した後にロックアウトし、その 10 分後にこのユーザー
のロックアウトを解除するようにするには、以下の行を /etc/pam. d /system-auth および
/etc/pam. d /passwo rd -auth の各ファイルの auth セクションに追加します。
auth
required
deny=3 unlock_time=600
auth
sufficient
auth
[default=die]
unlock_time=600
pam_faillock.so preauth silent audit
pam_unix.so nullok try_first_pass
pam_faillock.so authfail audit deny=3
2. 以下の行を上記の手順の両ファイルの acco unt セクションに追加します。
account
required
pam_faillock.so
3. アカウントのロックアウトを root ユーザーにも適用するには、/etc/pam. d /system-auth お
よび /etc/pam. d /passwo rd -auth の各ファイルの pam_fai l l o ck エントリーに
even_d eny_ro o t オプションを追加します。
auth
required
pam_faillock.so preauth silent audit
deny=3 even_deny_root unlock_time=600
auth
sufficient
pam_unix.so nullok try_first_pass
auth
[default=die] pam_faillock.so authfail audit deny=3
even_deny_root unlock_time=600
auth
sufficient
pam_faillock.so authsucc audit deny=3
even_deny_root unlock_time=600
ユーザー jo hn がログインに 3 回失敗した後に再度ログインしようとすると、このユーザーのアカウント
はこの 4 回目のログイン試行でロックされます。
[user@ localhost ~]$ su - john
Account locked due to 3 failed logins
su: incorrect password
複数回のログイン失敗の後でもユーザーがロックアウトされないようにするには、以下の行を
/etc/pam. d /system-auth および /etc/pam. d /passwo rd -auth の各ファイルで pam_faillock が
最初に呼び出される行のすぐ上に追加します。また、user1、user2、user3 を実際のユーザー名で置き
換えます。
auth [success=1 default=ignore] pam_succeed_if.so user in
user1:user2:user3
ユーザー別のログイン失敗数を表示するには、root で以下のコマンドを実行します。
[root@ localhost ~]# fai l l o ck
44
⁠第2 章 ネットワークのセキュリティ保護
john:
When
Type Source
Valid
2013-03-05 11:44:14 TTY
pts/0
V
ユーザーのアカウントのロックを解除するには、root で以下のコマンドを実行します。
fai l l o ck --user <username> --reset
au t h co n f ig ユーティリティーを使って認証設定を修正すると、system-auth および passwo rd -auth
の各ファイルは au t h co n f ig ユーティリティーからの設定で上書きされます。設定ファイルと
au t h co n f ig を同時に使うには、以下の手順でアカウントロックを設定する必要があります。
1. 以下のシンボリックリンクを作成します。
~]# l n -s /etc/pam. d /system-auth /etc/pam. d /system-auth-l o cal
~]# l n -s /etc/pam. d /passwo rd -auth /etc/pam. d /passwo rd -auth-l o cal
2. /etc/pam. d /system-auth-l o cal ファイルに以下の行を記載します。
auth
required
pam_faillock.so preauth silent audit
deny=3 unlock_time=600 include system-auth-ac
auth
[default=die] pam_faillock.so authfail silent audit
deny=3 unlock_time=600
account
account
required
include
pam_faillock.so
system-auth-ac
password
include
system-auth-ac
session
include
system-auth-ac
3. /etc/pam. d /passwo rd -auth-l o cal ファイルに以下の行を記載します。
auth
required
pam_faillock.so preauth silent audit
deny=3 unlock_time=600 include password-auth-ac
auth
[default=die] pam_faillock.so authfail silent audit
deny=3 unlock_time=600
account
account
required
include
pam_faillock.so
password-auth-ac
password
include
system-auth-ac
session
include
system-auth-ac
pam_fai l l o ck の設定オプションについての詳細情報は、pam_fai l l o ck(8) の man ページを参照し
てください。
2.1.10. セッションのロック
日常の業務中にユーザーがワークステーションから離れなければならない時もあります。こういう場合は、
特に十分な物理的セキュリティ対策がとられていない環境 (「物理的コントロール」 を参照) では、攻撃者
45
Red Hat Ent erprise Linux 6 セキュリティガイド
にマシンに物理的にアクセスする機会を与えてしまいます。ノートパソコンの場合は特に、持ち運びが便利
なので物理的な安全性が脅かされます。このリスクは、正しいパスワードが入力されないとシステムにアク
セスできないようにするセッションロッキング機能を使うことで緩和できます。
注記
画面のロックがログアウトよりも優れている点は、ロックの場合は (ファイル転送といった) ユー
ザーのプロセスを続行できるという点です。ログアウトしてしまうと、このようなプロセスは中断し
てしまいます。
2 .1 .1 0 .1 . GNOME スクリーンセーバーコマンドを使用して GNOME をロックする
Red Hat Enterprise Linux 6 のデフォルトのデスクトップ環境である GNOME には、ユーザーがいつでも
画面をロックできる機能が含まれています。このロックを実行するにはいくつかの方法があります。
システム → 設定 → キーボード・ショートカット → デスクトップ → 画面をロックする で指定されて
いるキーの組み合わせを押します。デフォルトでは、C trl +Al t+L となっています。
パネル上で システム → 画面のロック を選択します。
コマンドラインインターフェイスで以下のコマンドを実行します。
g no me-screensaver-co mmand -l
上記の方法はどれも、スクリーンセーバーが実行されて画面がロックされる、という同じ結果になります。
ユーザーがいずれかのキーを押すとスクリーンセーバーが解除され、パスワードを入力して作業を続けられ
ます。
この機能は g no me-screensaver プロセスの稼働を必要とすることに注意してください。これが稼働中
かどうかは、プロセスについての情報を提供するコマンドを使用してチェックします。例えば、以下のコマ
ンドを端末から実行します。
pi d o f g no me-screensaver
g no me-screensaver が実行中であれば、識別番号 (PID ) を示す番号がコマンド実行後に画面に表示され
ます。プロセスが実行中でなければ、出力がありません
詳細は g no me-screensaver-co mmand (1) man ページを参照してください。
重要
上記の画面をロックする方法は、手動でのアクティベーションに依存しています。そのため管理者
はユーザーに、短時間でもマシンから離れる場合は必ずコンピューターをロックすることアドバイ
スする必要があります。
2.1.10.1.1. スクリーンセーバーロックの自動アクティベーション
g no me-screensaver-co mmand の名前が示すように、ロック機能は GNOME のスクリーンセーバーと
連動しています。ロック機能をスクリーンセーバーのアクティベーションと連動させて、ワークステー
ションが一定時間無人となったらロックするようにできます。この機能はデフォルトで、5 分間のタイムア
ウトでアクティベートするようになっています。
46
⁠第2 章 ネットワークのセキュリティ保護
この自動ロック設定を変更するには、メインパネルから システム → 設定 → スクリーンセーバー を選択し
ます。これで、タイムアウトの時間設定をするウィンドウが開き (アイドル状態になるまでの時間 スライ
ダー) 自動ロックの有効/無効化ができます (スクリーンセーバーを起動したら画面をロックする チェッ
クボックス)。
図2.2 スクリーンセーバーの設定変更
注記
スクリーンセーバーの設定 ダイアログで アイドル状態になったらスクリーンセーバーを起動
する のオプションを無効にすると、スクリーンセーバーが自動で起動しなくなります。このため、
自動ロックも無効になりますが、「GNOME スクリーンセーバーコマンドを使用して GNOME を
ロックする」 にある手動作業でのワークステーションのロックはできます。
2.1.10.1.2. リモートでのセッションロック
ロック対象のワークステーションが ssh プロトコルでの接続を受け入れれば、これを使用して GNOME
セッションをリモートでロックすることもできます。アクセスしたマシンの画面をリモートでロックする
には、以下のコマンドを実行します。
47
Red Hat Ent erprise Linux 6 セキュリティガイド
ssh -X <username>@ <server> "expo rt D ISP LAY = : 0 ; g no me-screensaverco mmand -l "
<username> を自分のユーザー名で、<server> をロックするワークステーションの IP アドレスで置き換え
ます。
ssh に関する詳細は、「SSH (Secure Shell)」 を参照してください。
2 .1 .1 0 .2 . vlo ck を使った仮想コンソールのロック
仮想コンソールをロックする必要がある場合は、vl o ck というユーティリティーを使って実行できます。
このユーティリティーをインストールするには、以下のコマンドを root で実行します。
~]# yum i nstal l vl o ck
インストール後は、新たなパラメーターなしで vl o ck コマンドを使えば、コンソールセッションはすべて
ロックできます。このコマンドでは、アクティブな仮想コンソールをロックしますが、他のセッションへ
のアクセスは可能です。ワークステーション上のすべての仮想コンソールへのアクセスを防止するには、以
下のコマンドを実行します。
vl o ck -a
この場合、vl o ck がアクティブなコンソールをロックし、-a オプションが他の仮想コンソールへのス
イッチを防ぎます。
詳細は vl o ck(1) man ページを参照してください。
重要
Red Hat Enterprise Linux 6 で現在利用可能な vl o ck のバージョンに関する既知の問題がいくつか
あります。
このプログラムでは現在、root パスワードを使ったコンソールのロック解除ができません。詳細
は BZ #895066 を参照してください。
コンソールをロックしても、画面およびスクロールバックバッファを削除しないので、それまで
のコマンドやコンソールで表示された出力が、ワークステーションに物理的アクセスできれば誰
でも見れることになります。詳細については、BZ #807369 を参照してください。
2.1.11. 利用可能なネットワーク
組織内のシステム管理者にとっては管理機能へのユーザーアクセスは重要な問題ですが、どのネットワーク
サービスがアクティブかを監視することは、Linux システムのすべての管理・運営担当者にとって最重要事
項です。
Red Hat Enterprise Linux 6 における多くのサービスは、ネットワークサーバーとして動作します。マシン
上でネットワークサービスが稼働中であれば、( デーモン と呼ばれる) サーバーアプリケーションが 1 つ以
上のネットワークポート上での接続をリッスンします。これらの各サーバーは、潜在的な攻撃の接近手段と
して扱われる必要があります。
2 .1 .1 1 .1 . サービスへのリスク
48
⁠第2 章 ネットワークのセキュリティ保護
ネットワークサービスは Linux システムに多くのリスクを与える可能性があります。主な問題を以下に挙げ
ます。
サービス拒否攻撃 (DoS) — サービス拒否攻撃は、サービスに対して要求を大量に送信することでシステ
ムがすべての要求をログ記録・応答しようとし、使用不可能になります。
分散型サービス拒否攻撃 (DDoS) — これは D oS 攻撃の一種で、複数の脆弱なマシンを使用し (通常、数
千以上)、サービスに対して一斉攻撃を仕掛けます。大量の要求が送信され、サービスを使用不可能にし
てしまいます。
スクリプトの脆弱性への攻撃 — Web サーバーが通常行うように、サーバー全体のアクションにサー
バーがスクリプトを使用している場合、クラッカーは誤って書かれたスクリプトを攻撃することができ
ます。このスクリプトの脆弱性に対する攻撃により、バッファがオーバーフロー状態になるか、攻撃者
がシステム上のファイルを変更できる可能性があります。
バッファオーバーフロー攻撃 — ポート番号 0 から 1023 までに接続するサービスは、管理ユーザーと
して実行する必要があります。アプリケーションに利用可能なバッファオーバーフローがある場合、攻
撃者はデーモンを実行中のユーザーとしてシステムにアクセスすることができます。利用可能なバッ
ファオーバーフローが存在することから、クラッカーは自動ツールを使って脆弱性のあるシステムを特
定でき、アクセスを確保した後に自動ルートキットを使ってシステムへのアクセスを維持します。
注記
Red Hat Enterprise Linux では、ExecShield と呼ばれる x86 互換のシングルおよびマルチプロセッ
サのカーネルがサポートする実行可能メモリのセグメント化および保護技術により、バッファオー
バーフローの脆弱性における脅威は緩和されています。ExecShield は仮想メモリを実行可能なセグ
メントと非実行可能セグメントに分けることでバッファオーバーフローのリスクを下げます。(バッ
ファオーバーフローエクスプロイトから注入された悪意のあるコードなど) 実行可能セグメント外で
実行を試みるすべてのプログラムコードは、セグメント化の失敗を発生させ、終了します。
Execshield には AMD 64 プラットフォーム上の No eXecute (NX) と Itanium 上の eXecute Disable
(XD ) テクノロジー、Intel® 64 システムのサポートが含まれます。これらのテクノロジーが
ExecShield と組み合わさることで、4 KB の実行可能コードという粒度で仮想メモリの実行可能な部
分での悪意のあるコードの実行を防ぎます。これで、バッファオーバーフローエクスプロイトから
の攻撃リスクを減らします。
重要
ネットワーク上での攻撃への露出を限定するには、使用していないサービスをすべて無効にしてくだ
さい。
2 .1 .1 1 .2 . サービスの特定および設定
セキュリティを強化するために、Red Hat Enterprise Linux でインストールされているネットワークサー
ビスのほとんどはデフォルトでオフとなっています。ただし、以下のものは例外となります。
cupsd — Red Hat Enterprise Linux のデフォルトのプリントサーバー
l pd — 代替プリントサーバー
xi netd — g ssftp や tel net などの下位サーバーへの接続を管理するスーパーサーバー
49
Red Hat Ent erprise Linux 6 セキュリティガイド
send mai l — Sendmail メール転送エージェント (MTA) はデフォルトでは有効となっています
が、localhost からの接続のみをリッスンします。
sshd — Telnet の安全な代替となる OpenSSH サーバー
これらサービスの稼働を継続しておくかどうかを判断する際は、常識にしたがってリスクを避けるのが最善
策です。例えば、プリンターが利用できない場合は cupsd を無効にします。同じことは po rtmap につい
ても言えます。NFSv3 ボリュームをマウントしていなかったり、NIS (ypbi nd サービス) を使用しないの
であれば、po rtmap を無効にすべきです。
図2.3 サービス設定ツール
特定サービスの目的が明確でない場合は、図2.3「サービス設定ツール」 にあるように、サービス設定ツー
ル の説明フィールドで追加情報が提供されています。
起動時にどのネットワークサービスが開始されるかをチェックするだけでは十分ではありません。どのポー
トが開いていて、リッスンしているかをチェックすることも推奨されます。詳細は、「リッスンしている
ポートの確認」 を参照してください。
2 .1 .1 1 .3. 安全でないサービス
潜在的にはどのネットワークサービスも安全ではありません。未使用のサービスをオフにすることが重要な
のは、このためです。サービスのエクスプロイトは定期的に発見され修正プログラムが提供されているの
で、ネットワークサービスはどんなものでも関連するパッケージを定期的に更新することが非常に重要で
す。詳細は 「セキュリティの更新」 を参照してください。
ネットワークプロトコルの中にはもともと他のものよりも安全性が低いものがあります。以下の動作を実行
するサービスがそれに当たります。
50
⁠第2 章 ネットワークのセキュリティ保護
暗号化されていないネットワークでユーザー名やパスワードを送信する— Telnet や FTP など多くの古
いプロトコルは認証セッションを暗号化しないので、できるだけ避けてください。
暗号化されていないネットワークで機密性の高いデータを送信する— Telnet や FTP、HTTP、SMTP
など多くのプロトコルでは暗号化されていないネットワークでデータを送信します。また、NFS や
SMB などの多くのネットワークファイルシステムでも暗号化されていないネットワークで情報を送信
します。これらのプロトコルを使用する際に送信するデータの種類を制限することは、ユーザーの責任
になります。
netd ump といったリモートのメモリダンプサービスは、暗号化されていないネットワークでメモリの
コンテンツを送信します。メモリダンプにはパスワードや、さらに深刻な場合にはデータベースエント
リや他の機密性の高い情報が含まれている場合もあります。
fi ng er や rwho d といったサービスは、システムのユーザーについての情報を明らかにします。
もともと安全性が低いサービスには、rl o g i n、rsh、tel net、vsftpd などがあります。
リモートログインおよびシェルプログラム (rl o g i n、rsh、tel net) はすべて避けて、SSH を選択する
べきです。sshd についての詳細情報は、「セキュリティ強化の通信ツール」を参照してください。
FTP はリモートシェルと比べるとシステムの安全性にそれほど危険ではありませんが、問題を回避するに
は FTP サーバーは慎重に設定、監視する必要があります。FTP サーバーを安全にする詳細情報について
は、「FTP のセキュア化」 を参照してください。
実装時に注意が必要で、ファイアウォールの背後に配置する必要があるサービスは以下のものです。
fi ng er
authd (以前の Red Hat Enterprise Linux リリースでは i d entd と呼ばれていました)
netd ump
netd ump-server
nfs
rwho d
send mai l
smb (Samba)
yppasswd d
ypserv
ypxfrd
ネットワークサービスの安全性を高めるための詳細情報は、「サーバーのセキュリティ」 を参照してくだ
さい。
次のセクションでは、簡単なファイアウォールを設定するツールについて説明します。
2.1.12. 個人用ファイアウォール
必要な ネットワークサービスを設定した後は、ファイアウォールの設置が重要になります。
51
Red Hat Ent erprise Linux 6 セキュリティガイド
重要
インターネットや信頼できないネットワークに接続する 前 に、必要なサービスを設定し、ファイア
ウォールを設置してください。
ファイアウォールは、ネットワークパケットがシステムのネットワークインターフェイスにアクセスする
ことを防ぎます。ファイアウォールがブロックしているポートに要求がなされた場合、この要求は無視され
ます。サービスがブロックされているポートの一つをリッスンしている場合、パケットは受信されず、実質
的には無視されます。このため、ファイアウォールを設定する際は、設定済みサービスが使用しているポー
トへのアクセスをブロックしないようにする一方で、使用されていないポートへのアクセスを確実にブロッ
クするようにしてください。
ほとんどのユーザーにとって、簡単なファイアウォールを設定する最善のツールは、Red Hat
Enterprise Linux に同梱されているグラフィカルのファイアウォール設定ツールである Firewall
C o n f ig u rat io n T o o l (system-co nfi g -fi rewal l ) です。このツールは、コントロールパネルのイ
ンターフェイスを使って全般目的のファイアウォール用に幅広い i ptabl es ルールを作成します。
このアプリケーションと利用可能なオプションについての詳細情報は、「基本的なファイアウォールの設
定」 を参照してください。
上級ユーザーおよびサーバー管理者の場合は、i ptabl es を使って手動でファイアウォールを設定する方
法が望まれます。詳細は 「ファイアウォール」 を参照してください。i ptabl es コマンドに関する総合的
なガイドについては、「IPTables」 を参照してください。
2.1.13. セキュリティ強化の通信ツール
インターネットの規模と人気が拡大するにつれて、通信傍受の脅威も増大しています。通信はネットワーク
上で行われるため、長年にわたってこれを暗号化するツールが開発されてきました。
Red Hat Enterprise Linux 6 に同梱されている基本的ツールは 2 つあり、これらはネットワーク上を行き来
する情報を保護するために高レベルの公開キー暗号作成法に基づいた暗号化アルゴリズムを使います。
OpenSSH — ネットワーク通信暗号化のための SSH プロトコルの無料実装
Gnu Privacy Guard (GPG) — データ暗号化用の PGP (Pretty Good Privacy) 暗号化アプリケーション
の無料実装
OpenSSH はリモートマシンにアクセスする安全な方法で、tel net や rsh などの旧式かつ暗号化されて
いないサービスに代わるものです。OpenSSH には sshd と呼ばれるネットワークサービスのほか、以下
の 3 つのコマンドラインアプリケーションが含まれています。
ssh — 安全なコンソールアクセスクライアント
scp — 安全なリモートコピーコマンド
sftp — インタラクティブなファイル転送セッションを可能にする安全な擬似 ftp クライアント
OpenSSH に関する詳細は、「SSH (Secure Shell)」 を参照してください。
重要
sshd サービスはもともと安全なものですが、セキュリティ脅威を回避するにはサービスが最新のも
のである 必要があります。詳細は、「セキュリティの更新」 を参照してください。
52
⁠第2 章 ネットワークのセキュリティ保護
GPG は Email 通信の秘密性を確保する方法の一つです。公開ネットワークで機密性の高いデータを Email
で送るためと、ハードドライブ上の機密性の高いデータを保護するための両方に使用できます。
2.2. サーバーのセキュリティ
システムは、公開ネットワーク上のサーバーとして使われる際には攻撃対象となります。このため、システ
ム管理者にとってはシステムを堅牢にし、サービスをロックダウンすることは、最重要事項になります。
特定の問題を詳細に見る前に、以下に挙げるサーバーセキュリティを強化する一般的なヒントについて概説
します。
最新の脅威から保護するために、すべてのサービスを最新に保つ
できるだけ安全なプロトコルを使う
できるだけマシン 1 台あたり 1 種類のネットワークサービスのみを実行する
不審なアクティビティがないか、すべてのサーバーを注意深く監視する
2.2.1. T CP Wrapperおよび xinet d によるサービスのセキュア化
TCP Wrapper は、幅広いサービスにアクセス制御を提供します。SSH や Telnet、FTP といった現在の
ネットワークサービスのほとんどは TCP Wrapperを使用します。TCP Wrapperは、着信する要求と要求さ
れたサービスの間の防護機能を提供します。
TCP Wrapper の利点は、追加のアクセス、ロギング、リダイレクション、リソース使用制御を提供する
スーパーサーバーの xi netd と合わせて使うことで高まります。
注記
TCP Wrapper と xi netd を iptables ファイアウォールルールとともに使用して、サービスアクセ
ス制御内に冗長性を作成するとよいでしょう。iptables コマンドを使ってファイアウォールを実装
する方法の詳細情報は、「ファイアウォール」 を参照してください。
以下のサブセクションでは、各トピックについての基本的な情報があることを前提としており、特定のセ
キュリティオプションについてフォーカスしています。
2 .2 .1 .1 . T CP Wrappe r によるセキュリティ強化
TCP Wrapper では、単にサービスへのアクセスを拒否する以上のことができます。このセクションでは、
TCP Wrapperを使って接続バナーを送信し、特定ホストからの攻撃に対して警告し、ロギング機能を強化
する方法を説明します。TCP Wrapper の機能と制御言語についての情報は、ho sts_o pti o ns man ペー
ジを参照してください。サービスに適用可能なオプションとして機能する利用可能なフラグについては、オ
ンラインの http://linux.die.net/man/5/xinetd.conf にある xi netd . co nf man ページを参照してくださ
い。
2.2.1.1.1. T C P Wrap p er と接続バナー
システム管理者が警戒していることを潜在的な攻撃者に知らせるには、ユーザーがサービスに接続する際に
適切なバナーを表示させるのがよい方法です。また、ユーザーに対してシステムのどの情報を表示させるか
を制御することもできます。サービスに TCP Wrapper のバナーを実装するには、banner オプションを使
用します。
53
Red Hat Ent erprise Linux 6 セキュリティガイド
以下の例では、vsftpd にバナーを導入します。最初にバナーファイルを作成します。これはシステム上の
どこでも構いませんが、デーモンと同じ名前にする必要があります。例えば、ファイル名
/etc/banners/vsftpd には以下の行が含まれます。
220-Hello, %c
220-All activity on ftp.example.com is logged.
220-Inappropriate use will result in your access privileges
being removed.
%c トークンは、ユーザー名およびホスト名、またはユーザー名および IP アドレスなどの幅広いクライアン
ト情報を提供し、接続をより威圧的なものにします。
このバナーを受信接続に表示させるには、以下の行を /etc/ho sts. al l o w ファイルに追加します。
vsftpd : ALL : banners /etc/banners/
2.2.1.1.2. T C P Wrap p er と攻撃警告
特定のホストまたはネットワークによるサーバーへの攻撃が検出された場合、TCP Wrapper は spawn 指
示文を使ってそのホストまたはネットワークからのその後の攻撃について管理者に警告することができま
す。
以下の例では、206.182.68.0/24 ネットワークからのクラッカーがサーバーに攻撃を仕掛けようとしてい
ることが検出されたとします。/etc/ho sts. d eny ファイルに以下の行を挿入すると、そのネットワーク
からの接続の試みが拒否され、特別ファイルにログ記録されます。
ALL : 206.182.68.0 : spawn /bin/echo `date` %c %d >>
/var/log/intruder_alert
%d トークンは、攻撃者がアクセスを試みるサービス名を提供します。
接続とログインを許可するには、 spawn 指示文を /etc/ho sts. al l o w ファイル内に置きます。
注記
spawn 指示文はどんなシェルコマンドも実行するので、特定のクライアントがサーバーに接続しよ
うとする際に、管理者に通知したり一連のコマンドを実行したりする特別スクリプトを作成するとよ
いでしょう。
2.2.1.1.3. T C P Wrap p er とロギングの強化
特定の種類の接続が他のものよりも懸念される場合は、severi ty オプションを使うと該当サービスに対
するログレベルを高めることができます。
以下の例では、FTP サーバーのポート 23 (Telnet ポート) への接続はクラッカーによるものとします。こ
れを示すために、デフォルトのフラグである i nfo の代わりに emerg フラグをログファイルに置いて接続
を拒否します。
これを実行するには、以下の行を /etc/ho sts. d eny に挿入します。
in.telnetd : ALL : severity emerg
54
⁠第2 章 ネットワークのセキュリティ保護
これはデフォルトの authpri v ロギング機能を使用しますが、優先順位をデフォルト値のi nfo から
emerg に引き上げ、ログメッセージを直接コンソールに投稿します。
2 .2 .1 .2 . xine t d を使用したセキュリティの強化
このセクションでは、xi netd を使用してトラップサービスを設定し、特定の xi netd サービスで利用可
能なリソースレベルを制御する方法にフォーカスしています。サービスに対するリソースの制限設定
は、サービス拒否 (D oS) 攻撃の防止に役立ちます。利用可能なオプション一覧は、xi netd および
xi netd . co nf の man ページを参照してください。
2.2.1.2.1. トラップの設定
xi netd の重要な機能の一つは、ホストをグローバルのno _access リストに追加することです。このリ
スト上のホストは、xi netd が管理するサービスに特定の期間または xi netd が再起動するまで、接続が
拒否されます。SENSO R 属性を使うとこれを実行できます。サーバー上のポートをスキャンしようとする
ホストをブロックするには、これが簡単な方法です。
SENSO R の設定における最初のステップでは、使用しない予定のサービスを選択します。この例では、
Telnet を使います。
/etc/xi netd . d /tel net ファイルを編集して fl ag s 行を以下のように変更します。
flags
= SENSOR
以下の行を追加します。
deny_time
= 30
これにより、当該ホストによるポートへのさらなる接続の試みを 30 分間拒否します。d eny_ti me で利用
可能な別の属性には FOREVER があり、これは実際には xi netd が再起動するまで接続を禁止します。ま
た、NEVER は、接続を許可してログ記録します。
最後に、最終行は以下のようにします。
disable
= no
これでトラップ自体が有効になります。
SENSO R を使用して望ましくないホストからの接続を検出、停止することはよい方法ですが、マイナス面が
2 つあります。
ステルススキャンに対しては効果がありません。
SENSO R が実行中であることを攻撃者が認識している場合、特定ホストの IP アドレスを偽造し、禁止
されているポートに接続することで、このホストに対するサービス拒否攻撃を仕掛けることが可能で
す。
2.2.1.2.2. サービスリソースの制御
xi netd のもう一つの重要な機能は、制御下にあるサービスに対するリソース制限を設定することです。
以下の指示文でこれを実行します。
cps = <number_o f_co nnecti o ns> <wai t_peri o d > — 受信接続の割合を制限します。この指
示文は 2 つの引数を取ります。
55
Red Hat Ent erprise Linux 6 セキュリティガイド
<number_o f_co nnecti o ns> — 1 秒あたりに処理する接続数です。受信接続数がこの割合よりも
高い場合、このサービスは一時的に無効になります。デフォルト値は 50 です。
<wai t_peri o d > — サービスが無効になった後に再度有効になるまでの秒数です。デフォルトの間
隔は 10 秒です。
i nstances = <number_o f_co nnecti o ns> — サービスへ許可される接続数の合計を指定しま
す。この指示文は整数値もしくは UNLIMIT ED を受け付けます。
per_so urce = <number_o f_co nnecti o ns> — ホスト毎に許可される接続数を指定します。この
指示文は整数値もしくは UNLIMIT ED を受け付けます。
rl i mi t_as = <number[K| M]> — サービスが占有可能なメモリアドレス領域の量をキロバイトもし
くはメガバイトで指定します。この指示文は整数値もしくは UNLIMIT ED を受け付けます。
rl i mi t_cpu = <number_o f_seco nd s> — あるサービスが CPU を占有できる時間を秒数で指定
します。この指示文は整数値もしくは UNLIMIT ED を受け付けます。
これらの指示文を使用することで、 xi netd サービスの 1 つがシステムを圧倒し、サービス拒否になるこ
とを防ぐ手助けとなります。
2.2.2. ポートマップのセキュア化
po rtmap サービスは、NIS やNFS などの RPC サービス用の動的なポート割り当てデーモンです。この認
証メカニズムは脆弱なもので、制御対象のサービスに幅広いポートを割り当てる機能があります。このた
め、セキュア化は困難になります。
注記
NFSv4 は po rtmap を必要としなくなったので、portmap のセキュア化が影響するのは NFSv2 と
NFSv3 のみです。NFSv2 もしくは NFSv3 サーバーの導入を計画する場合は、po rtmap が必要と
なり、以下のセクションが適用されます。
RPC サービスを実行している場合は、以下の基本的なルールにしたがってください。
2 .2 .2 .1 . T CP Wrappe r でポートマップを保護する
ポートマップサービスにはビルトインの認証がないので、TCP Wrapper を使用して po rtmap サービスに
アクセスするネットワークやホストを制限することが重要です。
さらに、サービスへのアクセスを制限する際には、IP アドレス のみ を使用してください。ホスト名は
D NS ポイズニングやその他の方法で偽造される恐れがあるので、使用しないでください。
2 .2 .2 .2 . ipt able s でポートマップを保護する
po rtmap サービスへのアクセスをさらに制限するには、サーバーに iptables ルールを追加し、特定ネット
ワークへのアクセスを制限するとよいでしょう。
以下は、iptables コマンドの 2 つの例です。最初のコマンドは 192.168.0.0/24 ネットワークからポート
111 (po rtmap サービスが使用) への TCP 接続を許可します。2 つ目のコマンドは、ローカルホストからの
同一ポートへの接続を許可します。これは、N au t ilu s が使用する sg i _fam サービスに必要なものです。
他のパケットはすべて遮断されます。
~]# i ptabl es -A INP UT -p tcp -s ! 19 2. 16 8. 0 . 0 /24 --d po rt 111 -j D R O P
~]# i ptabl es -A INP UT -p tcp -s 127. 0 . 0 . 1 --d po rt 111 -j AC C EP T
56
⁠第2 章 ネットワークのセキュリティ保護
UD P トラフィックを同様に制限するには、以下のコマンドを使用します。
~]# i ptabl es -A INP UT -p ud p -s ! 19 2. 16 8. 0 . 0 /24 --d po rt 111 -j D R O P
注記
iptables コマンドによるファイアウォール実装についての詳細情報は、「ファイアウォール」 を参
照してください。
2.2.3. NIS のセキュア化
ネットワーク情報サービス (NIS) は ypserv と呼ばれる RPC サービスの一つで、po rtmap および他の関
連サービスと一緒に使用することで、ドメイン内にあると主張するすべてのコンピューターに、ユーザー名
やパスワード、他の機密性のある情報のマップを配布します。
NIS サーバーは、以下のものを含むいくつかのアプリケーションで構成されています。
/usr/sbi n/rpc. yppasswd d — yppasswd d サービスとも呼ばれます。このデーモンを使用するこ
とで、ユーザーは NIS パスワードを変更できます。
/usr/sbi n/rpc. ypxfrd — ypxfrd サービスとも呼ばれます。このデーモンは、ネットワーク上で
の NIS マップ転送を担当します。
/usr/sbi n/yppush — このアプリケーションは、変更された NIS データベースを複数の NIS サー
バーに伝達します。
/usr/sbi n/ypserv — これは NIS サーバーデーモンです。
NIS は今日の基準ではあまり安全なものではありません。ホスト認証メカニズムがなく、パスワードハッ
シュを含むすべての情報をネットワーク上で暗号化せずに送信します。このため、NIS を使用するネット
ワークの設定時には、非常に注意深い作業が必要になります。さらに、NIS のデフォルト設定がもともと安
全でないことで複雑性が増してしまいます。
NIS サーバーの実装を予定している場合は、「ポートマップのセキュア化」 に概説があるようにまず
po rtmap サービスのセキュア化を図ることが推奨されます。その後に、以下のようなネットワークプラニ
ングの問題などに対処してください。
2 .2 .3.1 . ネットワークの注意深いプラニング
NIS は機密性の高い情報を暗号化せずにネットワーク上で送信するので、ファイアウォールの背後で、また
セグメント化された安全なネットワーク上で実行することが重要です。NIS 情報が安全でないネットワーク
上で送信される際は、常に傍受される危険があります。ネットワークを注意深く設計することで、重大なセ
キュリティ侵害の防止に役立ちます。
2 .2 .3.2 . パスワードのような NIS ドメイン名およびホスト名を使用する
ユーザーが NIS サーバーの D NS ホスト名と NIS ドメイン名を知っていれば、NIS ドメイン内のマシンは
どれもコマンドを使用して認証なしにサーバーから情報を引き出すことができます。
例えば、だれかがノートパソコンをネットワークに接続するか、外部からネットワークに侵入すると (そし
て内部 IP アドレスにスプーフィングできたとすると)、以下のコマンドが /etc/passwd マップを公開し
ます。
57
Red Hat Ent erprise Linux 6 セキュリティガイド
ypcat -d <NIS_domain> -h <DNS_hostname> passwd
この攻撃者が root ユーザーであった場合、以下のコマンドを入力して /etc/shad o w ファイルを入手する
ことが可能です。
ypcat -d <NIS_domain> -h <DNS_hostname> shad o w
注記
Kerberos を使用していれば、/etc/shad o w ファイルは NIS マップ内に保存されません。
攻撃者による NIS マップへのアクセスをより困難にするには、o 7hfawtg mhwg . d o mai n. co m のような
ランダムの文字列を D NS ホスト名にします。同様に、 異なる ランダムな NIS ドメイン名を作成します。
これにより、攻撃者は NIS サーバーへのアクセスが非常に困難になります。
2 .2 .3.3. /var/yp/securenets ファイルを編集する
/var/yp/securenets ファイルが空白もしくは存在しない場合 (デフォルトインストールの後の場合のよ
うに)、NIS はすべてのネットワークをリッスンします。最初にすることのひとつは、ネットマスクとネッ
トワークのペアをファイルに置くことで、これにより ypserv は適正なネットワークからの要求のみに応
答するようになります。
以下は /var/yp/securenets ファイルからのエントリのサンプルです。
255.255.255.0
192.168.0.0
警告
/var/yp/securenets ファイルを作成せずに NIS サーバーを初回起動することは、絶対にしない
でください。
このテクニックは IP スプーフィングからの保護は提供しませんが、少なくとも NIS サーバーが対応する
ネットワークに対して制限をかけます。
2 .2 .3.4 . 静的ポートの割り当てと ipt able s ルールの使用
NIS に関連付けられているサーバーは、rpc. yppasswd d を除いて特定のポートの割り当てが可能です。
このデーモンを使うと、ユーザーは自身のログインパスワードを変更できるようになりま
す。rpc. ypxfrd と ypserv の 2 つの NIS サーバーデーモンにポートを割り当てると、NIS サーバー
デーモンをさらに侵入者から保護するためのファイアウォールルールが作成できます。
これを実行するには、以下の行を /etc/sysco nfi g /netwo rk に追加します。
YPSERV_ARGS="-p 834"
YPXFRD_ARGS="-p 835"
すると、以下の iptables ルールを使ってこれらのポートでサーバーがリッスンするネットワークを強制で
きます。
58
⁠第2 章 ネットワークのセキュリティ保護
~]# i ptabl es -A INP UT -p ALL -s ! 19 2. 16 8. 0 . 0 /24 --d po rt 834 -j D R O P
~]# i ptabl es -A INP UT -p ALL -s ! 19 2. 16 8. 0 . 0 /24 --d po rt 835 -j D R O P
つまり、プロトコルにかかわらず、192.168.0.0/24 ネットワークからの要求であれば、サーバーはポート
834 および 835 への接続のみを許可することになります。
注記
iptables コマンドによるファイアウォール実装についての詳細情報は、「ファイアウォール」 を参
照してください。
2 .2 .3.5 . Ke rbe ro s 認証を使用する
認証に NIS を使用する際に考慮すべきことの一つは、ユーザーがマシンにログインする際は常
に、/etc/shad o w マップからのパスワードハッシュがネットワーク上で送信されるということです。侵
入者が NIS ドメインへアクセスしてネットワークトラフィックを傍受した場合、ユーザー名とパスワード
ハッシュを取得できることになります。さらに時間があれば、攻撃者はパスワードクラッキングプログラム
で脆弱なパスワードを推測し、ネットワーク上の有効なアカウントへのアクセスを取得できるようになりま
す。
Kerberos は秘密鍵の暗号作成方法を使用するので、パスワードハッシュがネットワーク上で送信されるこ
とはなく、システムを大幅に安全なものとします。Kerberos についての詳細は、Managing Single Sign-On
and Smart Cards を参照してください。
2.2.4 . NFS のセキュア化
重要
Red Hat Enterprise Linux 6 に同梱されている NFS である NFSv4 では、「ポートマップのセキュ
ア化」 で説明したような po rtmap サービスは不要となりました。 NFS トラフィックは今や全バー
ジョンで UD P ではなく TCP を使用し、NFSv4 を使用の際はこれを必要とします。NFSv4 には
R P C SEC _G SS カーネルモジュールの一部として Kerberos ユーザーおよびグループ認証が含まれて
います。Red Hat Enterprise Linux 6 は NFSv2 と NFSv3 をサポートしており、この両方が
po rtmap を使用することから、po rtmap に関する情報も引き続き含まれています。
2 .2 .4 .1 . ネットワークの注意深いプラニング
NFSv2 と NFSv3 ではこれまで、データの受け渡しは安全に行われていませんでした。今では NFS の全
バージョンで Kerberos を使った通常のファイルシステム操作の認証 (およぴオプションで暗号化) ができ
ます。NFSv4 では、すべての操作で Kerberos の使用が可能です。v2 または v3 では、ファイルロックと
マウントにまだ Kerberos が使用されていません。NFSv4 使用時は、クライアントが NAT もしくはファイ
アウォールの背後にあるのであれば、委任はオフにすることができます。NFSv4.1 を使うことで NAT およ
びファイアウォールを通じた委任による操作を可能にする方法については、 ストレージ管理ガイドの pNFS
のセクションを参照してください。
2 .2 .4 .2 . NFS マウントオプションのセキュア化
/etc/fstab ファイル内での mo unt コマンド使用については、ストレージ管理ガイドで説明されていま
す。セクション管理の観点からは、NFS マウントオプションは /etc/nfsmo unt. co nf でも指定可能で
あることは注目に値します。これを使うと、カスタムのデフォルトオプションを設定することが可能です。
59
Red Hat Ent erprise Linux 6 セキュリティガイド
2.2.4 .2.1. N FS サーバーのレビュー
警告
ファイルシステムをエクスポートする際は、全体のエクスポートのみを行なってください。ファイ
ルシステムのサブディレクトリをエクスポートすると、セキュリティ問題につながる可能性があり
ます。場合によってはクライアントがファイルシステムのエクスポートされた部分から抜け出し、
エクスポートされていない部分に至ることもあります (expo rts(5) man ページのサブツリー
チェックのセクションを参照)。
マウント済みファイルシステムへの書き込み可能なユーザー数を減らすためには、可能な場合は常に ro オ
プションを使用してファイルシステムを読み取り専用としてエクスポートしてください。rw オプションの
使用は、明確に必要な場合のみとしてください。詳細は expo rts(5) man ページを参照してください。書
き込みアクセスを許可すると、シンボリックリンク攻撃などのリスクが高まります。これには、/tmp や
/usr/tmp などの一時ディレクトリーが含まれます。
ディレクトリーを rw オプションでマウントする必要がある場合は、リスク低減のためにできる限り全ユー
ザー書き込み可能としないようにします。アプリケーションのなかにはパスワードをクリアテキストで保存
したり暗号化が弱いものもあるので、ホームディレクトリーのエクスポートもリスクとみなされます。この
リスクは、アプリケーションコードがレビューされ、改善されることで軽減されてきています。SSH キー
にパスワードを設定しないユーザーもいるので、ホームディレクトリーがリスクをもたらすことになりま
す。パスワードや Kerberos の使用を強制することで、このリスクは緩和されます。
エクスポートはアクセスを必要とするクライアントのみに制限してください。NFS サーバーで
ho wmo unt -e コマンドを使用して、サーバーが何をエクスポートしているかを確認します。特に必要で
ないものはエクスポートしないでください。
no _ro o t_sq uash オプションを使用しないでください。また、既存のインストールのレビューを行い、
これが使用されていないことを確認してください。詳細は 「no _ro o t_sq uash オプションは使用しな
い」 を参照してください。
secure オプションはサーバー側のエクスポートオプションで、「予約済み」 ポートへのエクスポートを
制限する際に使用します。デフォルトでは、サーバーは 「予約済み」 ポート (ポート番号 1024 未満のも
の) からのクライアント通信のみを許可します。これは、クライアントが通常これらのポートの使用を許可
するのは 「信頼できる」 コード (カーネル内の NFS クライアントなど) のみだったためです。しかし、多
くのネットワークではクライアント上で root になるのは難しいことではないので、予約済みポートからの
通信が権限を伴うものであると仮定するのは安全ではありません。このため、予約済みポートへの制限は限
定的な価値しかありません。Kerberos やファイアウォール、エクスポートを特定のクライアントに制限す
るという方法を信頼する方がより安全です。
ほとんどのクライアントでは、可能な場合はまだ予約済みポートを使用しています。しかし、予約済みポー
トは限定的なリソースなので、クライアント (特に NFS マウント数が多いもの) はより高い番号のポートを
使う選択をする場合もあります。Linux クライアントは、「noresvport」 マウントオプションを使用して
これを行うことができます。エクスポートでこれを許可したい場合は、「insecure」 エクスポートオプ
ションで行うことができます。
ユーザーがサーバーにログインできないようにしておくのは、よい方法です。上記の NFS サーバー設定を
確認する間に、誰および何がサーバーにアクセス可能かを確認してください。
2.2.4 .2.2. N FS クライアントのレビュー
set u id プログラムを使用できないようにするには、no sui d オプションを使用します。no sui d オプ
ションは set-user-i d enti fi er または set-g ro up-i d enti fi er ビットを無効にします。これによ
り、リモートユーザーが setuid プログラムを実行してより高い権限を取得することを防ぎます。このオプ
ションは、クライアントおよびサーバー側で使用してください。
60
⁠第2 章 ネットワークのセキュリティ保護
no exec オプションはクライアント上のすべての実行可能ファイルを無効にします。共有しているファイ
ルシステムにあるファイルをユーザーが不注意で実行しないようにこのオプションを使用します。no sui d
および no exec オプションは、ほとんどのファイルシステムの標準オプションです。
no d ev オプションを使うと、クライアントが 「device-files」 をハードウェアデバイスとして処理するこ
とを防ぎます。
resvpo rt オプションはクライアント側のマウントオプションで、secure はこれに対応するサーバー側
のエクスポートオプションです (上記の説明を参照)。これは「予約済みポート」への通信を制限します。予
約済みまたは「よく知られた」ポートは、root ユーザーなどの権限のあるユーザーやプロセス用に確保され
ています。このオプションを設定すると、クライアントが予約済みソースのポートを使ってサーバーと通信
するようになります。
NFS の全バージョンですでに Kerberos 認証に対応しています。これを有効にするマウントオプション
は、次の通りです。sec= krb5
NFSv4 は、整合性には krb5i を、プライバシー保護には krb5p を使用して Kerberos によるマウントを
サポートします。これらは sec= krb5 でのマウント時に使用されますが、NFS サーバー上での設定が必要
です。詳細はエクスポートに関する man ページ (man 5 expo rts) を参照してください。
NFS man ページ (man 5 nfs) には 「SECURITY CONSID ERATIONS」 セクションがあり、ここでは
NFSv4 のセキュリティ強化の説明と NFS の特定のマウントオプションすべてが含まれています。
2 .2 .4 .3. 構文エラーに注意
NFS サーバーは /etc/expo rts ファイルを参照して、エクスポートするファイルシステムとこれらの
ディレクトリーをエクスポートするホストを決定します。このファイルを編集する際は、無関係な領域を追
加しないように注意してください。
例えば、/etc/expo rts ファイル内の以下の行は読み取り/書き込みパーミッションでディレクトリー
/tmp/nfs/ をホスト bo b. exampl e. co m と共有します。
/tmp/nfs/
bob.example.com(rw)
一方、/etc/expo rts ファイルは同じディレクトリーを読み取り専用パーミッションでホスト
bo b. exampl e. co m と共有し、ホスト名の後ろに一文字分の空白があるので読み取り/書き込みパーミッ
ションで world と共有します。
/tmp/nfs/
bob.example.com (rw)
sho wmo unt コマンドを使って何が共有されているかを検証するのは、設定済み NFS 共有をチェックする
よい方法です。
sho wmo unt -e <hostname>
2 .2 .4 .4 . no _ro o t_sq uash オプションは使用しない
デフォルトで NFS 共有は、root ユーザーを権限のないユーザーアカウントである nfsno bo d y ユーザー
に変更します。これにより、root で作成された全ファイルの所有者は nfsno bo d y に変更されます。この
変更で setuid ビットが設定されたプログラムのアップロードが防止されます。
no _ro o t_sq uash を使用すると、リモートの root ユーザーは共有ファイルシステム上のどのファイルも
変更できるようになり、トロイの木馬に感染したアプリケーションを他のユーザーが間違って実行できる状
態にしてしまいます。
2 .2 .4 .5 . NFS ファイアウォールの設定
61
Red Hat Ent erprise Linux 6 セキュリティガイド
2 .2 .4 .5 . NFS ファイアウォールの設定
NFS に使用されるポートは rpcbind が動的に割り当てますが、ファイアウォールルールの作成時に問題を
起こす恐れがあります。このプロセスを簡素化するには、/etc/sysconfig/nfs ファイルを使って使用するポー
トを特定します。
MO UNT D _P O R T — mountd (rpc.mountd) 用の TCP および UD P ポート
ST AT D _P O R T — status (rpc.statd) 用の TCP および UD P ポート
LO C KD _T C P P O R T — nlockmgr (rpc.lockd) 用 TCP ポート
LO C KD _UD P P O R T — nlockmgr (rpc.lockd) 用 UD P ポート
指定されたポート番号は、他のサービスが使用してはいけません。ポート番号の指定と TCP および UD P
ポート 2049 (NFS) を許可するようにファイアウォールを設定してください。
NFS サーバーで rpci nfo -p コマンドを実行し、どのポートと RPC プログラムが使用されているかを確
認します。
2.2.5. Apache HT T P サーバーのセキュア化
Apache HTTP サーバーは Red Hat Enterprise Linux に同梱されているサービスのなかで最も安定性があり
安全なものの一つです。Apache HTTP サーバーを安全にするには多くのオプションとテクニックがあり、
ここで詳述するには多すぎるほどです。以下のセクションでは、Apache HTTP サーバー稼働時に実行でき
る優れた方法を簡単に説明します。
スクリプトを実稼働環境で実行する 前に、常にそのシステムがシステム上で意図したとおりに稼働している
ことを確認してください。また、スクリプトもしくは CGI を含むディレクトリーに書き込みパーミッショ
ンを持っているのは root ユーザーのみであることを確認してください。これを行うには、root ユーザーで
以下のコマンドを実行します。
cho wn ro o t <directory_name>
chmo d 755 <directory_name>
以下の設定オプションを (/etc/httpd /co nf/httpd . co nf 内の設定で) 使用する際は、システム管理者
は注意してください。
Fo l l o wSymLi nks
この指示文はデフォルトで有効となっているので、Web サーバーのドキュメントルートへのシン
ボリックリンク作成時には注意してください。例えば、/ へのシンボリックリンクを提供するこ
とはよい方法ではありません。
Ind exes
この指示文はデフォルトで有効となっていますが、これが最適ではない可能性があります。ビジ
ターがサーバー上のファイル閲覧をできないようにするには、この指示文を削除します。
UserD i r
UserD i r はシステム上でのユーザーアカウントの有無を確認できるので、デフォルトでは無効
となっています。サーバー上のユーザーディレクトリーのブラウジングを有効にするには、以下
の指示文を使用します。
UserDir enabled
UserDir disabled root
62
⁠第2 章 ネットワークのセキュリティ保護
これらの指示文は、/ro o t/ 以外のすべてのユーザーディレクトリーのブラウジングを有効にし
ます。無効アカウントリストにユーザーを追加するには、UserD i r d i sabl ed 行に空白で区
切ったユーザーのリストを追加します。
サーバートークン
サーバートークン 指示文は、クライアントに返信されるサーバー応答ヘッダーフィールドを制
御します。これには、以下のパラメーターを使用してカスタマイズできる種々の情報が含まれま
す。
ServerT o kens Ful l (デフォルトのオプション) — (OS の種類や使用されるモジュールな
ど) 利用可能なすべての情報を提供します。例えば、
Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2
ServerT o kens P ro d または ServerT o kens P ro d uctO nl y — 以下の情報を提供しま
す。
Apache
ServerT o kens Majo r — 以下の情報を提供します。
Apache/2
ServerT o kens Mi no r — 以下の情報を提供します。
Apache/2.0
ServerT o kens Mi n または ServerT o kens Mi ni mal — 以下の情報を提供します。
Apache/2.0.41
ServerT o kens O S — 以下の情報を提供します。
Apache/2.0.41 (Unix)
潜在的な攻撃者がユーザーのシステムについて価値ある情報を取得できないないようにするに
は、ServerT o kens P ro d の使用が推奨されます。
重要
Incl ud esNo Exec 指示文は削除しないでください。デフォルトでは、Server-Side Includes (SSI)
モジュールはコマンドの実行ができません。絶対に必要な場合以外は、この設定を変更しないことが
推奨されます。変更すると、攻撃者がシステム上でコマンドを実行できるようになる可能性がありま
す。
ht t pd モジュールの削除
特定のシナリオでは、特定の httpd モジュールを削除して HTTP サーバーの機能を制限した方がよい場合
もあります。これを行うには、/etc/httpd /co nf/httpd . co nf ファイルで削除したいモジュールを読
み込み行全体をコメントアウトするだけです。例えば、プロキシモジュールを削除するには、以下の行の先
頭にハッシュ記号を加えてコメントアウトします。
63
Red Hat Ent erprise Linux 6 セキュリティガイド
#LoadModule proxy_module modules/mod_proxy.so
/etc/httpd /co nf. d / ディレクトリーにもモジュールの読み込みに使われる設定ファイルが含まれてい
ることに注意してください。
ht t pd および SELinux
Apache HTTP サーバーおよび SELinux に関する情報は、Managing Confined Services Guide を参照してく
ださい。
2.2.6. FT P のセキュア化
File Transfer Protocol (FTP) は旧式の TCP プロトコルで、ネットワーク上でファイル転送するために設計
されています。ユーザー認証を含むサーバーとのトランザクションがすべて暗号化されないので、安全でな
いプロトコルとみなされ、慎重に設定する必要があります。
Red Hat Enterprise Linux は以下の 3 つの FTP サーバーを提供します。
g ssftpd — Kerberos 対応の xi netd ベースの FTP デーモンで、ネットワーク上で認証情報を送信す
ることはしません。
R ed H at C o n t en t Accelerat o r (tux) — FTP 機能のあるカーネル空間の Web サーバーです。
vsftpd — スタンドアロンでセキュリティ重視の FTP サービス実装です。
以下のセキュリティガイドラインは vsftpd FTP サービス設定のためのものです。
2 .2 .6 .1 . FT P グリーティングバナー
ユーザー名とパスワードの送信前に、すべてのユーザーにグリーティングバナーが示されます。デフォルト
では、このバナーにはシステムの脆弱性を特定しようとしているクラッカーに有益なバージョン情報が含ま
れています。
vsftpd のグリーティングバナーを変更するには、以下の指示文を/etc/vsftpd /vsftpd . co nf ファ
イルに追加します。
ftpd_banner=<insert_greeting_here>
上記の指示文の <insert_greeting_here> をグリーティングメッセージのテキストで置き換えます。
複数行のバナーの場合、バナーファイルの使用が最善の方法となります。複数のバナーの管理を簡素化する
には、/etc/banners/ という新規ディレクトリにすべてのバナーを格納します。この例では、FTP 接続
のバナーファイルは、/etc/banners/ftp. msg となります。以下はこのファイルのサンプルになりま
す。
######### Hello, all activity on ftp.example.com is logged. #########
注記
「TCP Wrapper と接続バナー」 にあるように、各行を 220 で始める必要はありません。
vsftpd でこのバナーを参照するようにするには、以下の指示文を/etc/vsftpd /vsftpd . co nf ファ
イルに追加します。
64
⁠第2 章 ネットワークのセキュリティ保護
banner_file=/etc/banners/ftp.msg
「TCP Wrapper と接続バナー」 にあるように、 TCP Wrapper を使って着信接続に新たなバナーを送信す
ることも可能です。
2 .2 .6 .2 . 匿名のアクセス
/var/ftp/ ディレクトリーが存在すると、匿名アカウントがアクティベートされます。
このディレクトリーを作成する最も簡単な方法は、vsftpd パッケージをインストールすることです。この
パッケージは、匿名ユーザー向けのディレクトリーツリーを確立し、匿名ユーザーによる読み取り専用の
パーミッションをディレクトリーに設定します。
デフォルトでは、匿名ユーザーはどのディレクトリーにも書き込みできません。
警告
FTP サーバーへの匿名アクセスを有効にする場合は、機密性の高いデータの保存場所に注意してく
ださい。
手順2.1 匿名のアップロード
1. 匿名ユーザーによるファイルのアップロードを許可する場合は、/var/ftp/pub/ ディレクトリー
内に書き込み専用のディレクトリーを作成することが推奨されます。/upl o ad / という名前の
ディレクトリーを作成するには、以下のコマンドを root で実行します。
~]# mkd i r /var/ftp/pub/upl o ad
2. 次に、パーミッションを変更して、匿名ユーザーがディレクトリーのコンテンツを閲覧できないよ
うにします。
~]# chmo d 730 /var/ftp/pub/upl o ad
ディレクトリーのロング形式での一覧は以下のようなります。
~]# l s -l d /var/ftp/pub/upl o ad
drwx-wx---. 2 root ftp 4096 Nov 14 22:57 /var/ftp/pub/upload
注記
管理者が匿名ユーザーによるディレクトリー内での書き込みや読み取りを許可すると、その
サーバーが盗難ソフトウェアのレポジトリになってしまう場合が多くあります。
3. vsftpd で、以下の行を /etc/vsftpd /vsftpd . co nf ファイルに追加します。
anon_upload_enable=YES
4. Red Hat Enterprise Linux では、SELinux はデフォルトで強制モードで実行されます。このた
め、vsftpd でのファイルのアップロードを可能にするには、al l o w_ftpd _ano n_wri te ブー
ル値を有効にする必要があります。
65
Red Hat Ent erprise Linux 6 セキュリティガイド
~]# setsebo o l -P al l o w_ftpd _ano n_wri te= 1
5. /upl o ad / ディレクトリーおよびそのファイルを publ i c_co ntent_rw_t の SELinux コンテ
キストでラベル付けします。
~]# semanag e fco ntext -a -t publ i c_co ntent_rw_t
' /var/ftp/pub/upl o ad (/. *)'
注記
semanag e ユーティリティーは policycoreutils-python パッケージで提供されますが、これ
はデフォルトではインストールされません。これをインストールするには、root で以下のコ
マンドを実行します。
~]# yum i nstal l po l i cyco reuti l s-pytho n
6. resto reco n ユーティリティーを使って /upl o ad / およびそのファイルのタイプを変更しま
す。
~]# resto reco n -R -v /var/ftp/pub/upl o ad
これでディレクトリーが publ i c_co ntent_rw_t で適切にレベル付けされ、強制モードの
SELinux で匿名ユーザーがファイルをアップロードできるようになりました。
~]$ l s -d Z /var/ftp/pub/upl o ad
drwx-wx---. root root unconfined_u:object_r:public_content_t:s0
/var/ftp/pub/upload/
SELinux の使用に関する詳細情報は、Security-Enhanced Linux ユーザーガイド および 制限のあ
るサービスの管理 の各ガイドを参照してください。
2 .2 .6 .3. ユーザーアカウント
FTP は安全でないネットワーク上で認証用のユーザー名とパスワードを暗号化せずに送信するので、ユー
ザーアカウントからサーバーへのシステムユーザーアクセスを拒否することはよい方法です。
vsftpd のすべてのユーザーアカウントを無効にするには、以下の指示文を
/etc/vsftpd /vsftpd . co nf に追加します。
local_enable=NO
2.2.6 .3.1. ユーザーアカウントの制限
root ユーザーや sud o 権限を持つユーザーなど、特定のアカウントや特定のアカウントグループの FTP ア
クセスを無効にする最も簡単な方法は、「Root アクセスの拒否」 にあるように PAM リストファイルを使
用することです。vsftpd の PAM 設定ファイルは、/etc/pam. d /vsftpd です。
また、各サービス内で直接ユーザーアカウントを無効にすることもできます。
vsftpd で特定のユーザーアカウントを無効にするには、ユーザー名を/etc/vsftpd /ftpusers に追加
66
⁠第2 章 ネットワークのセキュリティ保護
します。
2 .2 .6 .4 . T CP Wrappe r を使用してアクセスを制御する
「TCP Wrapper によるセキュリティ強化」 にあるように、TCP Wrapper を使用して各 FTP デーモンへ
のアクセスを制御します。
2.2.7. Post fix のセキュア化
Postfix は メール転送エージェント (MTA) で、他の MTA や Email クライアント、配信エージェント間で電
子メッセージを配信するために Simple Mail Transfer Protocol (SMTP) を使用します。多くの MTA には
MTA 間のトラフィックを暗号化する機能がありますが、ほとんど使用されていないので、公開ネットワー
ク上での Email 送信はもともと安全でない通信方法とみなされています。
Postfix サーバーの実装を計画している場合は、以下の問題に対処することが推奨されます。
2 .2 .7 .1 . サービス拒否攻撃を制限する
Email の性質上、攻撃者が本気になるとサーバーに大量のメールを送信し、サービス拒否を発生させること
が簡単にできます。/etc/po stfi x/mai n. cf ファイル内の指示文に制限を設定すると、このような攻撃
の有効性が制限されます。既存の指示文の値を変更するか、以下の形式で希望する値の必要な指示文を追加
することもできます。
<directive> = <value>
サービス拒否攻撃の制限に使用できる指示文を以下に示します。
smtpd _cl i ent_co nnecti o n_rate_l i mi t — 一定の時間単位内 (下記を参照) にクライアントが当
該サーバーに接続を試みることができる最大回数。デフォルト値は 0 で、この場合クライアントは
Postfix が受付可能な回数内で時間単位当たり何回でも接続を試みることができます。デフォルトでは、
信頼できるネットワーク内のクライアントは除外されます。
anvi l _rate_ti me_uni t — この時間単位は割合制限の計算に使用されます。デフォルト値は 60 秒
です。
smtpd _cl i ent_event_l i mi t_excepti o ns — 接続および割合制限のコマンドから除外されるク
ライアントです。デフォルトでは、信頼できるネットワーク内のクライアントは除外されます。
smtpd _cl i ent_messag e_rate_l i mi t — 時間単位内でクライアントが要求可能な最大メッセージ
配信数です (Postfix が実際にこの数のメッセージを受け付けるかどうかは別問題です)。
d efaul t_pro cess_l i mi t — あるサービスを提供する Postfix の子プロセスの最大デフォルト数で
す。この制限は、master. cf ファイル内の特定サービスによって無効にされる場合があります。デ
フォルト値は 100 です。
q ueue_mi nfree — メール受信に必要なキューファイルシステム内での空き領域の最低バイト数で
す。これは現在、Postfix SMTP サーバーがメールを受信するかどうかを判断するために使用していま
す。デフォルトでは、Postfix SMTP サーバーは、空き領域が message_size_limit の 1.5 倍未満であれ
ば MAIL FR O M コマンドを拒否します。空き領域の最低限度をより大きくするように指定するには、
queue_minfree の値が少なくとも message_size_limit の 1.5 倍になるように指定します。デフォルト
の queue_minfree 値は 0 です。
head er_si ze_l i mi t — メッセージヘッダー保存に使用するメモリの最大バイト数です。ヘッダー
サイズがこの制限を超える場合は、超過分が廃棄されます。デフォルト値は 102400 です。
messag e_si ze_l i mi t — メッセージの最大バイト数で、これにはエンベロープ情報も含まれます。
デフォルト値は 10240000 です。
67
Red Hat Ent erprise Linux 6 セキュリティガイド
2 .2 .7 .2 . NFS と Po st fix
メールスプールディレクトリーの /var/spo o l /po stfi x/ を NFS 共有ボリュームに置くことは絶対に
しないでください。
NFSv2 と NFSv3 ではユーザー ID とグループ ID の制御を維持しないので、2 人以上のユーザーが同一
UID を持つ可能性があり、それぞれがお互いのメールを受信、閲覧してしまう可能性があります。
注記
Kerberos を使用する NFSv4 ではこういうことはありません。これは SEC R P C _G SS カーネルモ
ジュールが UID ベースの認証を使用しないためです。ただし、それでも NFS 共有ボリュームに
メールスプールディレクトリーを 置かない 方がよいと考えられます。
2 .2 .7 .3. メール専用ユーザー
ローカルユーザーによる Postfix サーバーの悪用を避けるには、メールユーザーが Email プログラムを使用
して Postfix サーバーにアクセスするだけにするのが最善の方法です。メールサーバー上のシェルアカウン
トを許可せず、/etc/passwd ファイル内のすべてのユーザーシェルを /sbi n/no l o g i n に設定します
(root ユーザーは例外とする場合もある)。
2 .2 .7 .4 . Po st fix ネットワークリスニングの無効化
デフォルトでは、Postfix はローカルのループバックアドレスのみをリッスンするように設定されていま
す。これは、/etc/po stfi x/mai n. cf ファイルを表示すると確認できます。
/etc/po stfi x/mai n. cf ファイルを閲覧して、以下の inet_interfaces 行のみが表示されること
を確認してください。
inet_interfaces = localhost
これにより、Postfix は ネットワークからではなく、(cron ジョブレポートなどの) ローカルシステムから
のメールメッセージのみを受信することが確認できます。これがデフォルト設定で、Postfix をネットワー
ク攻撃から守ります。
ローカルホストの制限を取り除き、Postfix がすべてのインターフェイスをリッスンできるようにするに
は、inet_interfaces = all と設定します。
2 .2 .7 .5 . Po st fix が SASL を使用する設定
Po st f ix の Red Hat Enterprise Linux バージョンは、SMTP 認証 (または SMTP AUTH) に D o veco t もし
くは C yru s SASL 実装を使用できます。SMTP 認証は、Si mpl e Mai l T ransfer P ro to co l の拡張
機能です。これを有効にすると、SMT P クライアントはサーバーとクライアントとの両方でサポートされ、
受け入れられている認証方法を使って SMT P サーバーを認証しなくてはなりません。本セクションで
は、D o veco t SASL 実装を利用するように Po st f ix を設定する方法を説明します。
D o veco t P O P /IMAP サーバーをインストールして、D o veco t SASL 実装を使用するシステム上で利用可
能とするには、ro o t で以下のコマンドを実行します。
~]# yum i nstal l d o veco t
68
⁠第2 章 ネットワークのセキュリティ保護
Po st f ix SMT P サーバーは、UNIX ドメインソケット か TCP ソケット のいずれかを使って D o veco t
SASL 実装と通信します。後者の方法は、Po st f ix と D o veco t アプリケーションが別個のマシンで実行中
の場合にのみ、必要となります。UNIX ドメインソケットの方がよりすぐれたプライバシーを提供するの
で、本ガイドではこちらを推奨しています。
Po st f ix が D o veco t SASL 実装を使用するように指示するには、両方のアプリケーションで多くの設定変
更が必要になります。以下の手順にしたがってください。
D o veco t のセットアップ
1. D o veco t のメインの設定ファイルである /etc/d o veco t/co nf. d /10 -master. co nf に以下
の行を含めます (デフォルトの設定ファイルには、ほとんどの関連セクションがすでに記載されて
おり、これらの行はコメント解除するだけです)。
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
上記の例では、Po st f ix と D o veco t の通信に UNIX ドメインソケットを使用することを仮定して
います。また、Po st f ix SMT P サーバーの設定はデフォルトとしています。この設定では、メール
キューが /var/spo o l /po stfi x/ ディレクトリーに配置され、アプリケーションは po stfi x
のユーザーおよびグループで実行されることになります。この方法では、読み取りおよび書き込み
許可は、po stfi x ユーザーおよびグループに限定されます。
別の方法では、以下の設定を使うと D o veco t は T C P 経由で Po st f ix 認証リクエストをリッスン
するようになります。
service auth {
inet_listener {
port = 12345
}
}
上記の例では、1234 5 を実際に使用するポート番号に置き換えます。
2. /etc/d o veco t/co nf. d /10 -auth. co nf 設定ファイルを編集して、D o veco t が Po st f ix
SMT P サーバーに pl ai n および l o g i n の認証メカニズムを提供するようにします。
auth_mechanisms = plain login
Po st f ix のセットアップ
Po st f ix の場合、メインの設定ファイルである /etc/po stfi x/mai n. cf を修正するだけです。以下の
設定指示文を追加もしくは編集します。
1. Po st f ix SMT P サーバーの SMTP 認証を有効にします。
smtpd_sasl_auth_enable = yes
2. Po st f ix が SMTP 認証に D o veco t SASL 実装を使用するように指示します。
69
Red Hat Ent erprise Linux 6 セキュリティガイド
smtpd_sasl_type = dovecot
3. Po st f ix キューディレクトリーの認証相対パスを提供します (相対パスを使用すること
で、Po st f ix サーバーが ch ro o t で稼働しているかどうかにかかわらず、この設定が確実に機能す
るようになります)。
smtpd_sasl_path = private/auth
この手順では、Po st f ix と D o veco t の通信に UNIX ドメインソケットを使用することを仮定して
います。通信に T C P ソケットを使用する場合で、Po st f ix が 別のマシンにある D o veco t を探す
ように設定するには、以下のような設定値を使用します。
smtpd_sasl_path = inet:127.0.0.1:12345
上記の例では、127. 0 . 0 . 1 を D o veco t マシンの IP アドレスに、1234 5 を D o veco t の
/etc/d o veco t/co nf. d /10 -master. co nf 設定ファイルで指定されているポート番号に置き
換えます。
4. Po st f ix SMT P サーバーがクライアントに対して利用可能とするSASL メカニズムを指定します。
暗号化セッションと非暗号化セッションでは、異なるメカニズムを設定できることに注意してくだ
さい。
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_tls_security_options = noanonymous
上記の例では、非暗号化セッション中は匿名認証が許可されず、また暗号化されていないユーザー
名やパスワードを送信するメカニズムも許可されません。(T LS を使った) 暗号化セッションでは、
匿名でない認証メカニズムのみが許可されます。
許可される SASL メカニズムを制限する対応ポリシー全一覧
は、http://www.postfix.org/SASL_READ ME.html#smtpd_sasl_security_options を参照してくだ
さい。
その他のリソース
以下のオンラインのリソースでは、SASL による Po st f ix SMTP 認証の設定に便利な追加情報が提供され
ています。
http://wiki2.dovecot.org/HowTo/PostfixAndD ovecotSASL — SMTP 認証に D o veco t SASL 実装を使
用するための Po st f ix の設定方法が説明されています。
http://www.postfix.org/SASL_READ ME.html#server_sasl — SMTP 認証に D o veco t または C yru s
SASL 実装を使用するための Po st f ix の設定方法が説明されています。
2.2.8. Sendmail のセキュア化
Sendmail は メール転送エージェント (MTA) で、他の MTA や Email クライアント、配信エージェント間
で電子メッセージを配信するために Simple Mail Transfer Protocol (SMTP) を使用します。多くの MTA
には MTA 間のトラフィックを暗号化する機能がありますが、ほとんど使用されていないので、公開ネット
ワーク上での Email 送信はもともと安全でない通信方法とみなされています。
Sendmail サーバーの実装を計画している場合は、以下の問題に対処することが推奨されます。
2 .2 .8 .1 . サービス拒否攻撃を制限する
70
⁠第2 章 ネットワークのセキュリティ保護
Email の性質上、攻撃者が本気になるとサーバーに大量のメールを送信し、サービス拒否を発生させること
が簡単にできます。/etc/mai l /send mai l . mc の以下の指示文に制限を設定すると、このような攻撃の
有効性が制限されます。
co nfC O NNEC T IO N_R AT E_T HR O T T LE — サーバーが 1 秒当たりに受信できる接続数です。デフォル
トでは、Sendmail は接続数を制限しません。制限が設定され、その数に達した場合は、新たな接続は
遅延します。
co nfMAX_D AEMO N_C HILD R EN — サーバーが生成する子プロセスの最大数です。デフォルトでは、
Sendmail は子プロセス数を制限しません。制限が設定され、その数に達した場合は、新たな接続は遅
延します。
co nfMIN_FR EE_BLO C KS — サーバーがメールを受信するために必要な利用可能空きブロックの最低
数です。デフォルトは 100 ブロックです。
co nfMAX_HEAD ER S_LENG T H — 受信可能なメッセージヘッダーの最大サイズ (バイト単位) です。
co nfMAX_MESSAG E_SIZE — 受信可能な単一メッセージの最大サイズ (バイト単位) です。
2 .2 .8 .2 . NFS と Se ndm ail
メールスプールディレクトリー /var/spo o l /mai l / を NFS 共有ボリュームに配置しないでください。
NFSv2 と NFSv3 ではユーザー ID とグループ ID の制御を維持しないので、2 人以上のユーザーが同一
UID を持つ可能性があり、それぞれがお互いのメールを受信、閲覧してしまう可能性があります。
注記
Kerberos を使用する NFSv4 ではこういうことはありません。これは SEC R P C _G SS カーネルモ
ジュールが UID ベースの認証を使用しないためです。ただし、それでも NFS 共有ボリュームに
メールスプールディレクトリーを 置かない 方がよいと考えられます。
2 .2 .8 .3. メール専用ユーザー
ローカルユーザーによる Sendmail サーバーの悪用を避けるには、メールユーザーが Email プログラムを使
用して Sendmail サーバーにアクセスするのみするのが最善の方法です。メールサーバー上のシェルアカウ
ントを許可せず、/etc/passwd ファイル内のすべてのユーザーシェルを /sbi n/no l o g i n に設定しま
す (root ユーザーは例外とする場合もある)。
2 .2 .8 .4 . Se ndm ail ネットワークリスニングの無効化
デフォルトでは、Sendmail はローカルのループバックアドレスのみをリッスンするように設定されていま
す。これは、/etc/mai l /send mai l . mc ファイルを表示して、以下の行が表示されることで確認できま
す。
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
これにより、Sendmail は ネットワークからではなく、(cron ジョブレポートなどの) ローカルシステムか
らのメールメッセージのみを受信することが確認できます。これがデフォルト設定で、Sendmail をネット
ワーク攻撃から守ります。
ローカルホストの制限を取り除くには、Addr=127.0.0.1 の文字列を削除する必要があります。Sendmail の
設定を変更するにはまず sendmail-cf パッケージをインストールし、次に . mc ファイルを編集して
/etc/mai l /make を実行します。最後に sen d mail を再起動します。. cf 設定ファイルが再生成されま
す。設定ファイルが自動的に再生成されるようにするには、システムクロックが正確で機能しており、これ
71
Red Hat Ent erprise Linux 6 セキュリティガイド
らのアクションの間にシステムクロックの時間のシフトがないようにする必要があります。
2.2.9. リッスンしているポートの確認
ポートを必要以上に開くとシステムの攻撃対象領域を増やすことになるので、避けるべきです。システムが
サービスを開始した後で予期しないポートがリスニング状態になっている場合は、侵入の形跡である可能性
があり、調査が必要になります。
root でコンソールから以下のコマンドを実行して、ネットワークからの接続をリッスンしているポートを
判断します。
~]# netstat
tcp
LISTEN
tcp
LISTEN
tcp
LISTEN
tcp
LISTEN
tcp
LISTEN
tcp
LISTEN
tcp
LISTEN
tcp
LISTEN
tcp
LISTEN
-tanp | g rep LIST EN
0
0 0.0.0.0:45876
1193/rpc.statd
0
0 192.168.122.1:53
1241/dnsmasq
0
0 127.0.0.1:631
1783/cupsd
0
0 127.0.0.1:25
7696/sendmail
0
0 0.0.0.0:111
1167/rpcbind
0
0 127.0.0.1:30003
1118/tcsd
0
0 :::631
1/init
0
0 :::35018
1193/rpc.statd
0
0 :::111
1167/rpcbind
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
:::*
:::*
:::*
システムで必要なサービスをコマンドの出力で確認して、特に必要でないものや権限が与えられていないも
のをオフにしてから、再度チェックを実行します。次に、ネットワーク経由で最初のシステムに接続してい
る別のシステムから n map を使用して、外部チェックを行います。これは、ip t ab les のルールの確認に
使用できます。外部システムから n et st at 出力で表示されているすべての IP アドレス (localhost
127.0.0.0 または ::1 レンジを除く) をスキャンします。IPv6 のスキャンには -6 オプションを使用しま
す。詳細は man nmap(1) を参照してください。
以下は、ネットワークからの TCP 接続をリッスンしているポートを判断するために、別のシステムのコン
ソールから発行するコマンドの例です。
~]# nmap -sT -O 19 2. 16 8. 122. 1
詳細情報は、netstat(8)、nmap(1)、および services(5) の man ページを参照してください。
2.2.10. ソースルーティングの無効化
ソースルーティングはインターネットプロトコルメカニズムで、IP パケットがアドレス一覧の情報を持ち
運べるようにします。このアドレスは、パケットが通過する必要のあるパスをルーターに知らせるもので
す。ルートが移動する際にホップを記録するオプションもあります。「ルート記録」と呼ばれるホップの記
録は、宛先にソースまでの帰りのパスを提供します。これによりソースは (つまり送信ホスト)、すべてもし
くは一部のルーターのルーティングテーブルを無視して、ルートを厳密もしくは緩やかに特定することがで
きます。これによりユーザーは、不正目的でネットワークトラフィックをリダイレクトすることが可能にな
ります。このため、ソースベースのルーティングは無効にする必要があります。
72
⁠第2 章 ネットワークのセキュリティ保護
accept_so urce_ro ute オプションを使用すると、ネットワークインターフェイスが 厳密なソースルー
ト (SSR) もしくは 緩やかなソースルーティング (LSR) オプションセットのあるパケットを受け付けるよ
うになります。ソースルーティングパケットの受け付けは sysct l 設定で制御します。以下のコマンドを
root で実行し、SSR または LSR オプションセットのあるパケットを遮断します。
~]# /sbin/sysctl -w net.ipv4.conf.all.accept_source_route=0
パケット転送の無効化は、可能な場合は上記のコマンドと合わせて行うべきです (転送の無効化は仮想化に
影響する場合があります)。以下のコマンドを root で発行します。
以下のコマンドはすべてのインターフェイスで IPv4 および IPv6 パケットの転送を無効にします。
~]# /sbin/sysctl -w net.ipv4.conf.all.forwarding=0
~]# /sbin/sysctl -w net.ipv6.conf.all.forwarding=0
以下のコマンドはすべてのインターフェイスですべてのマルチキャストパケットの転送を無効にします。
~]# /sbin/sysctl -w net.ipv4.conf.all.mc_forwarding=0
~]# /sbin/sysctl -w net.ipv6.conf.all.mc_forwarding=0
ICMP リダイレクトの受信が正当に使用される場合はほとんどありません。ICMP リダイレクトパケットは
特に必要でなければ、その受信と送信を無効にしてください。
以下のコマンドはすべてのインターフェイスですべてのICMP リダイレクトパケットの受信を無効にしま
す。
~]# /sbin/sysctl -w net.ipv4.conf.all.accept_redirects=0
~]# /sbin/sysctl -w net.ipv6.conf.all.accept_redirects=0
以下のコマンドはすべてのインターフェイスでセキュアなICMP リダイレクトパケットの受信を無効にしま
す。
~]# /sbin/sysctl -w net.ipv4.conf.all.secure_redirects=0
以下のコマンドはすべてのインターフェイスですべての IPv4 ICMP リダイレクトパケットの受信を無効に
します。
~]# /sbin/sysctl -w net.ipv4.conf.all.send_redirects=0
IPv4 リダイレクトパケットの送信を無効にできるのは指示文のみです。IPv4 と IPv6 の差異を生み出して
いる 「IPv6 Node Requirements」 の説明については、RFC4294 を参照してください。
設定を永続的なものにするには、/etc/sysctl . co nf に追加する必要があります。
詳細は sysctl(8) の man ページを参照してください。ソースベースのルーティングおよびそのバリエー
ションに関連するインターネットオプションの説明については、RFC791 を参照してください。
73
Red Hat Ent erprise Linux 6 セキュリティガイド
警告
イーサネットネットワークは、ARP や MAC アドレススプーフィング、権限のない D HCP サー
バー、IPv6 ルーターまたは近隣アドバタイズメントといったトラフィックをリダイレクトする新た
な方法を提供します。さらに、ユニキャストトラフィックはブロードキャストの場合もたまにあ
り、情報の漏洩を引き起こします。これらの脆弱性は、ネットワークオペレーター導入する特定の対
策によってのみ、対処可能になります。ホストベースの対応策の有効性は、完全なものではありませ
ん。
2.2.11. 逆方向パス転送
逆方向パス転送は、あるインターフェイスから着信したパケットが異なるインターフェイス経由で去ってし
まうことを防ぐために使用されます。送信ルートと着信ルートが異なる場合は、 非対称ルーティング と呼
ばれる場合もあります。ルーターがパケットをこの方法でルート設定することはよくありますが、ほとんど
のホストはこのようなことをする必要はないはずです。例外として挙げられるのは、トラフィックをあるリ
ンクで送信し、異なるサービスプロバイダーから別のリンクでトラフィックを受け取るアプリケーションで
す。例えば、xD SL との組み合わせで専用回線を使っている場合や、3G モデムを使ったサテライトリンク
などの場合です。このようなシナリオが該当する場合は、着信インターフェイスで逆方向パス転送をオフに
することが必要になります。つまり、これが必要だと分かっている場合を除いて、有効にしておくのが最善
の方法です。これは、ローカルサブネットからユーザーが IP アドレスをスプーフィングすることを防
ぎ、D D oS 攻撃の機会を減らすためです。
注記
(Red Hat Enterprise Linux 5 とは異なり) Red Hat Enterprise Linux 6 はデフォルトで 厳密な逆方向
パス転送 を使用します。Red Hat Enterprise Linux 6 は、RFC 3704 の Ingress Filtering for
Multihomed Networks からの厳密な逆方向パスに関する推奨事項にしたがっています。現在これが
適用されるのは、Red Hat Enterprise Linux 6 の IP v4 のみです。
警告
転送が有効になっていれば、(ip t ab les ルールなど) ソースアドレス確認に他の方法がある場合にの
み、逆方向パス転送を無効にしてください。
rp_fi l ter
逆方向パス転送は rp_fi l ter 指示文で有効にします。rp_fi l ter オプションは、3 つのモー
ドから 1 つを選択するようにカーネルに指示します。
デフォルト動作の設定時には以下の形式になります。
~]# /sbin/sysctl -w net.ipv4.conf.default.rp_filter=INTEGER
ここでの INTEGER は、以下のいずれかになります。
0 — ソース確認なし
1 — RFC 3704 で定義された厳密モード
2 — RFC 3704 で定義された緩やかなモード
74
⁠第2 章 ネットワークのセキュリティ保護
この設定はネットワークインターフェイスごとに net. i pv4 . interface. rp_fi l ter を
使って無効にすることが可能です。これらの設定を再起動後も維持するに
は、/etc/sysctl . co nf ファイルを修正します。
2 .2 .1 1 .1 . その他のリソース
以下のリソースでは、逆方向パス転送について詳細な説明が提供されています。
インストール済みドキュメンテーション
usr/share/d o c/kernel -d o c-version/D o cumentati o n/netwo rki ng /i p-sysctl . txt
— このファイルには /pro c/sys/net/i pv4 / ディレクトリーで使用可能なファイルおよびオプショ
ンの完全一覧が含まれています。
便利なウェブサイト
https://access.redhat.com/knowledge/solutions/53031 — rp_fi l terについての Red Hat ナレッジ
ベースの記事。
Ingress Filtering for Multihomed Networks の説明については、RFC 3704 を参照してください。
2.3. シングルサインオン (SSO)
Red Hat Enterprise Linux の SSO 機能は、Red Hat Enterprise Linux デスクトップのユーザーがパスワー
ドを入力する回数を減らします。複数の主要なアプリケーションで同一の基本的認証および承認メカニズム
を活用することで、ユーザーがログイン画面から Red Hat Enterprise Linux にログインし、パスワードを
再入力せずにすむようになっています。これらアプリケーションの詳細は、以下で説明しています。
プラグ可能な認証モジュールについての詳細情報は、Red Hat Enterprise Linux 6 Managing Single
Sign-On and Smart Cards ガイドを参照してください。
2.4 . PAM (プラグ可能な認証モジュール)
プラグ可能な認証モジュールは、認証とセキュリティ用の一般的なフレームワークです。Kerberos やス
マートカードなどの Red Hat Enterprise Linux のシングルサインオンの方法は、どちらもこの基本的な
PAM 設定に依存しています。
プラグ可能な認証モジュールについての詳細情報は、Red Hat Enterprise Linux 6 Managing Single
Sign-On and Smart Cards ガイドの該当する章を参照してください。
2.5. Kerberos
ネットワーク内でのシステムのセキュリティと完全性を維持することは非常に重要であり、この対象となる
のはすべてのユーザー、アプリケーション、サービスおよびサーバーです。このタスクを実行するには、
ネットワーク上で実行されているすべてのサービスやそれらのサービスがどのように使用されているかを把
握していることが必要です。このセキュリティ維持の中心的なタスクには、アプリケーションやサービスへ
のアクセスを維持し、そのアクセスを実行することが含まれます。
Kerberos は、ユーザーとマシンの両方がネットワークに対して自らを識別し、管理者が設定した領域と
サービスへのアクセス (定義済みの制限されたアクセス) を得られる仕組みを提供します。Kerberos はエン
ティティ (ユーザーおよびマシンなど) の ID を検証してそれらを認証するほか、外部の人間のアクセス、使
用または改ざんを防ぐための認証データの保護も行います。
プラグ可能な認証モジュールについての詳細情報は、Red Hat Enterprise Linux 6 Managing Single
Sign-On and Smart Cards ガイドの該当する章を参照してください。
75
Red Hat Ent erprise Linux 6 セキュリティガイド
2.6. T CP Wrapper と xinet d
ネットワークサービスへのアクセス制御は、サーバー管理者にとって最も重要なセキュリティ関連のタス
クのひとつです。Red Hat Enterprise Linux は、このためにいくつかのツールを提供しています。例え
ば、i ptabl es ベースのファイアウォールは、カーネルのネットワークスタック内の不要なネットワーク
パケットを除去します。それを利用するネットワークサービスについては、TCP Wrapper はどのホストが
「ラップされた」ネットワークサービスに接続許可または拒否されるかを定義することで、新たな保護層を
追加します。このようにラップされたネットワークサービスの 1 つが xi netd スーパーサーバーです。こ
のサービスは、ネットワークサービスのサブセットへの接続を制御し、アクセス制御を改善するので、スー
パーサーバーと呼ばれています。
図2.4「ネットワークサービスへのアクセス制御」は、ネットワークサービスを保護するためにこれらの
ツールがどのように連動するかを示す基本的な図です。
図2.4 ネットワークサービスへのアクセス制御
i ptabl es を使ったファイアウォールの使用についての詳細情報は、「IPTables」 を参照してください。
2.6.1. T CP Wrapper
76
⁠第2 章 ネットワークのセキュリティ保護
TCP Wrapper パッケージ (tcp_wrappers と tcp_wrappers-libs) はデフォルトでインストールされ、ネット
ワークサービスに対するホストベースのアクセス制御を提供します。パッケージ内の最も重要なコンポーネ
ントは /l i b/l i bwrap. so または /l i b6 4 /l i bwrap. so ライブラリです。一般的に言うと、TCP で
ラップしたサービスとは l i bwrap. so ライブラリに対してコンパイルされたものです。
TCP でラップされたサービスへの接続を試行する際には、クライアントが接続を許可されるかどうかを決
定するために、サービスはホストのアクセスファイル (/etc/ho sts. al l o w および
/etc/ho sts. d eny) をまず参照します。多くの場合、サービスは、要求しているクライアントと要求され
たサービスの名前を /var/l o g /secure または /var/l o g /messag es に書き込むために、syslog デー
モン (sysl o g d ) を使用します。
クライアントが接続を許可されると、TCP Wrapper は要求されたサービスへの接続制御を解放し、それ以
降はクライアントとサーバー間の通信に介入しません。
アクセス制御とロギング以外にも、TCP Wrapper は、要求されたネットワークサービスへの接続制御の拒
否や開放を行う前に、クライアントとやりとりするためのコマンドを実行できます。
TCP Wrapper はサーバー管理者の数多くのセキュリティツールに加わる重要なツールになるので、
Red Hat Enterprise Linux 内のほとんどのネットワークサービスは l i bwrap. so ライブラリにリンクさ
れています。これらのアプリケーションには、/usr/sbi n/sshd 、/usr/sbi n/send mai l 、および
/usr/sbi n/xi netd などがあります。
注記
ネットワークサービスのバイナリが l i bwrap. so にリンクされていることを確認するには、root
ユーザーとして以下のコマンドを入力します。
l d d <binary-name> | g rep l i bwrap
<binary-name> をネットワークサービスのバイナリの名前で置き換えます。コマンドが何も出力せず
にそのままプロンプトに戻る場合、ネットワークサービスは l i bwrap. so にリンクされていませ
ん。
以下の例は /usr/sbi n/sshd が l i bwrap. so にリンクしていることを示しています。
~]# l d d /usr/sbi n/sshd | g rep l i bwrap
libwrap.so.0 => /lib/libwrap.so.0 (0x00655000)
2 .6 .1 .1 . T CP Wrappe r の利点
TCP Wrapper は他のネットワークサービス制御にはない、以下の利点を提供します。
クライアントとラップされたネットワークサービス双方への透過性— 接続しているクライアントと
ラップされたネットワークサービスは共に TCP Wrapper が使用されていることを認識しません。正当
なユーザーはログに記録されて要求したサービスに接続される一方、禁止されたクライアントからの接
続は失敗します。
複数プロトコルの一元管理 — TCP Wrapper は、保護対象のネットワークサービスとは独立して動作
し、数多くのサーバーアプリケーションがアクセス制御設定ファイルの共通セットを共有してよりシン
プルな管理を行えるようにします。
2.6.2. T CP Wrapper の設定ファイル
77
Red Hat Ent erprise Linux 6 セキュリティガイド
クライアントがサービスへの接続を許可されるかを決定するために、TCP Wrapper は、一般的にホストア
クセス (hosts access) ファイルと呼ばれる、以下の 2 つのファイルを参照します。
/etc/ho sts. al l o w
/etc/ho sts. d eny
TCP でラップされたサービスがクライアントの要求を受け取ると、以下の手順が実行されます。
1. /etc/hosts.allow を参照します。 — TCP でラップされたサービスは /etc/ho sts. al l o w
ファイルを順番に解析し、そのサービスに指定された最初のルールを適用します。マッチするルー
ルを見つけると、接続を許可し、見つからなければ、次のステップに進みます。
2. /etc/hosts.deny を参照します。 — TCP でラップされたサービスは /etc/ho sts. d eny
ファイルを順番に解析します。マッチするルールを見つけると、接続を拒否し、見つからなけれ
ば、サービスへのアクセスを許可します。
TCP Wrapper を使ってネットワークサービスを保護する際に考慮する重要なポイントは以下の通りです。
ho sts. al l o w にあるアクセスルールが最初に適用されるので、それらのルールがho sts. d eny で指
定されたルールよりも優先されます。そのため、サービスへのアクセスが ho sts. al l o w で許可され
ると、ho sts. d eny にある同じサービスへのアクセス拒否ルールは無視されます。
各ファイルにあるルールは上から下に読み込まれ、指定されたサービスに最初にマッチするルールのみ
が適用されます。ルールの順序は極めて重要です。
サービスについてのルールがどのファイルにも見つからないか、またはいずれのファイルも存在しなけ
れば、サービスへのアクセスは許可されます。
TCP でラップされたサービスは、ホストのアクセスファイルからのルールをキャッシュしません。その
ため、ho sts. al l o w や ho sts. d eny のすべての変更は、ネットワークサービスを再起動しなくて
も直ちに有効になります。
警告
ホストのアクセスファイルの最後の行が改行文字 (Enter キーを押して作成される)でなければ、
ファイルにある最後のルールは失敗して、エラーが /var/l o g /messag es または
/var/l o g /secure のどちらかにログ記録されます。バックスラッシュ文字を使用しない、複数
行にわたるルールについても同様です。以下の例は、これらのいずれかの状況によるルールの失敗を
示す、ログメッセージの関連部分を示しています。
warning: /etc/hosts.allow, line 20: missing newline or line too long
2 .6 .2 .1 . アクセスルールのフォーマット
/etc/ho sts. al l o w と /etc/ho sts. d eny のフォーマットは同じです。 各ルールはそれぞれの行に
置かれる必要があります。空行またはハッシュ (#) で始まる行は無視されます。
各ルールは、ネットワークサービスへのアクセスを制御するために以下の基本的なフォーマットを使用しま
す。
<daemon list> : <client list> [: <option> : <option> : …]
78
⁠第2 章 ネットワークのセキュリティ保護
<daemon list> — コンマ区切りのプロセス名 (サービス名ではない) の一覧、または ALL ワイルドカー
ド。デーモンの一覧は、柔軟性を高めるために演算子 (「演算子」を参照) も受け付けます。
<client list> — ルールによって影響されるホストを特定するためのホスト名、ホスト IP アドレス、特別
なパターン、またはワイルドカードのコンマ区切りのリスト。クライアントリストは、柔軟性を高める
ために「演算子」にリストされた演算子も受け付けます。
<option> — ルールが起動されたときに実行されるオプションのアクション、またはアクションのコロン
区切りのリスト。オプションのフィールドは、拡張、シェルコマンドの起動、アクセスの許可または拒
否、および他のロギング動作をサポートします。
注記
上記の用語についての詳細は、このガイドの以下の箇所を参照してください。
「ワイルドカード」
「パターン」
「拡張機能」
「オプションフィールド」
以下は、ホストアクセス規則の基本的なサンプルです。
vsftpd : .example.com
このルールは、TCP Wrapper に対し、exampl e. co m ドメインにあるすべてのホストからの FTP デーモ
ン (vsftpd ) への接続を待つよう指示します。このルールがho sts. al l o w に表示される場合、接続は受
け付けられます。このルールが ho sts. d eny に表示される場合は、接続は拒否されます。
次のホストアクセスルールのサンプルはさらに複雑で、2 つのオプションフィールドを使用しています。
sshd : .example.com \
: spawn /bin/echo `/bin/date` access denied>>/var/log/sshd.log \
: deny
それぞれのオプションフィールドの前にはバックスラッシュ (\) が付けられることに注意してください。
バックスラッシュを使用すると、長さが原因となるルールの失敗を防ぐことができます。
このサンプルルールは、以下のことを記述しています。exampl e. co m ドメインにあるホストが SSH デー
モン (sshd ) への接続を試みると、echo コマンドが実行されて特殊なログファイルにこの試行が追加さ
れ、接続が拒否されます。オプションの d eny 指示文が使われているので、この行は ho sts. al l o w ファ
イルに表示されても、アクセスは拒否されます。利用可能なオプションについての詳細は、「オプション
フィールド」を参照してください。
2.6 .2.1.1. ワイルドカード
ワイルドカードは、TCP Wrapper がデーモンやホストのグループにより簡単にマッチできるようにしま
す。ワイルドカードはアクセスルールのクライアントリストフィールドで最も頻繁に使われます。
以下のワイルドカードを利用できます。
ALL — すべてにマッチします。デーモンリストとクライアントリストの両方に対して使用できます。
LO C AL — ローカルホストなどのピリオド (.) を含まないすべてのホストにマッチします。
79
Red Hat Ent erprise Linux 6 セキュリティガイド
KNO WN — ホスト名またはホストアドレスが既知であるか、またはユーザーが既知であるすべてのホス
トにマッチします。
UNKNO WN — ホスト名またはホストアドレスが未知であるかユーザーが未知であるか、またはユーザー
が未知であるすべてのホストにマッチします。
P AR ANO ID — ホスト名を取得するために逆 D NS ルックアップがソース IP アドレス上で実行されま
す。次に、D NS ルックアップが IP アドレスを解決するために実行されます。 2 つの IP アドレスが一
致しない場合、接続が切断され、ログが更新されます。
重要
KNO WN、UNKNO WN、および P AR ANO ID のワイルドカードが正常に動作ために D NS サーバーの機
能に依存しているので、注意して使用する必要があります。名前解決が中断されると、正当なユー
ザーによるサービスへのアクセスが妨害される可能性があります。
2.6 .2.1.2. パターン
パターンをアクセスルールのクライアントフィールドで使用すると、クライアントホストのグループをより
正確に指定することができます。
以下は、クライアントフィールドのエントリーについての一般的なパターンのリストです。
ピリオド (.) で始まるホスト名 —ホスト名の始めにピリオドを置くことにより、その名前についてリス
トされる構成部分を共有するすべてのホストにマッチします。以下の例は exampl e. co m ドメイン内
のすべてのホストに適用されます。
ALL : .example.com
ピリオド (.) で終わる IP アドレス— IP アドレスの終わりにピリオドを置くことにより、IP アドレスの
最初の数値のグループが同じのすべてのホストにマッチします。以下の例は 19 2. 16 8. x. x ネット
ワーク内のすべてのホストに適用されます。
ALL : 192.168.
IP アドレス/ネットマスクのペア — ネットマスク表現は、IP アドレスの特定のグループへのアクセスを
制御するためのパターンとしても使われます。19 2. 16 8. 0 . 0 から 19 2. 16 8. 1. 255 までのアドレ
ス範囲を持つすべてのホストに適用されます。
ALL : 192.168.0.0/255.255.254.0
重要
IPv4 アドレス空間で動作している際には、アドレス/プレフィックスの長さ (prefixlen) のペアの
宣言 (CID R 表記) はサポートされません。IPv6 ルールのみがこの形式を利用できます。
[IPv6 アドレス]/プレフィックス長のペア — [ネット]/プレフィックス長の組み合わせは IPv6 アドレスの
特定グループに対するアクセスを制御するためのパターンとして使用することができます。以下の例
は、3ffe: 50 5: 2: 1: : から3ffe: 50 5: 2: 1: ffff: ffff: ffff: ffff までのアドレス範囲を持
つすべてのホストに適用されます。
80
⁠第2 章 ネットワークのセキュリティ保護
ALL : [3ffe:505:2:1::]/64
アスタリスク (*) — アスタリスクは、他のタイプのパターンを含むクライアントリストと混在しない限
り、ホスト名または IP アドレスのグループ全体にマッチするために使用できます。以下の例は
exampl e. co m ドメイン内にあるすべてのホストに適用されます。
ALL : *.example.com
スラッシュ (/) — クライアントリストがスラッシュで始まる場合、それはファイル名として処理されま
す。これは、多数のホストを指定するルールが必要な場合に役立ちます。以下の例では、TCP Wrapper
がすべての Telnet 接続で /etc/tel net. ho sts ファイルを参照します。
in.telnetd : /etc/telnet.hosts
あまり使われない他のパターンも TCP Wrapper によって受け付けられます。詳細は、ho sts_access
man(5) ページを参照してください。
警告
ホスト名とドメイン名を使用するときは特に注意してください。正確な名前解決を防ぐために、攻撃
者は様々なトリックを仕掛けます。さらに、D NS サービスの中断により、許可されているユーザー
がネットワークサービスを使用することもできなくなります。そのため、可能な場合は常に IP アド
レスを使用するのが最善の策です。
2.6 .2.1.3. Po rt map と T C P Wrap p er
P o rtmap の TCP Wrapper の実装は、ホストの検索をサポートしません。このことは、po rtmap はホス
トの識別にホスト名を使用できないことを意味します。結果として、 ho sts. al l o w や ho sts. d eny に
おける portmap のアクセス制御ルールでは、ホストを指定するために IP アドレスを使用するか、または
キーワード ALL を使用する必要があります。
po rtmap アクセス制御ルールへの変更は直ちに反映されません。そのため、po rtmap サービスを再起動す
る必要があります。
NIS および NFS などの広く使われるサービスの動作は po rtmap に依存します。そのため、これらの制限
を把握しておいてください。
2.6 .2.1.4 . 演算子
現在、アクセス制御ルールは演算子 EXC EP T を受け付けます。これは、ルールのデーモンリストとクライ
アントリストの両方で使用することができます。
EXC EP T 演算子は、同じルール内でより幅広くマッチさせるために特定の例外を許可します。
ho sts. al l o w ファイルの以下の例では、すべての exampl e. co m ホスト
は、cracker. exampl e. co m を除くすべてのサービスに接続することが許可されます。
ALL : .example.com EXCEPT cracker.example.com
ho sts. al l o w ファイルの他の例では、19 2. 16 8. 0 . x ネットワークのクライアントは FTP を除くすべ
てのサービスを使用できます。
ALL EXCEPT vsftpd : 192.168.0.
81
Red Hat Ent erprise Linux 6 セキュリティガイド
注記
組織的には、EXC EP T 演算子を使用しない方が容易になる場合が多く、これにより、他の管理者は
EXC EP T 演算子をソートせずに、サービスへのアクセスを許可/拒否されるホストを判断するのに適
切なファイルを素早くスキャンすることができます。
2 .6 .2 .2 . オプションフィールド
アクセスを許可または拒否する基本的なルールに加えて、Red Hat Enterprise Linux の TCP Wrapper の実
装は、オプションフィールドによるアクセス制御言語への機能拡張をサポートします。ホストアクセスルー
ル内のオプションフィールドを使用することで、管理者はログ動作の変更、アクセス制御の統合、シェルコ
マンドの起動などの各種タスクを実行することができます。
2.6 .2.2.1. ロギング
オプションフィールドを使うと、管理者は severi ty 指示文を使用してログファシリティおよびルールの
優先レベルをより簡単に変更できます。
以下の例では、exampl e. co m ドメインのすべてのホストから SSH デーモンへの接続がemerg の優先度
でデフォルトの authpri v sysl o g ファシリティ(ファシリティ値が指定されていないため)に記録さ
れます。
sshd : .example.com : severity emerg
severi ty オプションを使用してファシリティを指定することも可能です。以下の例で
は、exampl e. co m ドメインのホストからの SSH 接続の試行がal ert の優先度で l o cal 0 ファシリ
ティに記録されます。
sshd : .example.com : severity local0.alert
注記
実際にはこの例は、syslog デーモン (sysl o g d ) が l o cal 0 ファシリティに記録されるように設
定されるまで機能しません。カスタムログファシリティ設定の詳細は、sysl o g . co nf man ペー
ジを参照してください。
2.6 .2.2.2. アクセス制御
オプションフィールドを使用すると、管理者は al l o w または d eny 指示文を最終オプションとして追加
し、1 つのルール内でホストを明示的に許可するか、または拒否することができるようになります。
例えば、以下の 2 つのルールは、cl i ent-1. exampl e. co m からの SSH 接続を許可します
が、cl i ent-2. exampl e. co m からの接続は拒否します。
sshd : client-1.example.com : allow
sshd : client-2.example.com : deny
82
⁠第2 章 ネットワークのセキュリティ保護
ルールごとにアクセス制御を許可することで、管理者はオプションフィールドを使って 1 つのファイル
ho sts. al l o w または ho sts. d eny にすべてのアクセスルールを統合できるようになります。一部の管
理者にとって、これはアクセスルールを構成する際のより簡単な方法になっています。
2.6 .2.2.3. シェルコマンド
オプションフィールドを使うと、アクセスルールは以下の 2 つの指示文でシェルコマンドを起動できるよ
うになります。
spawn — 子プロセスとしてシェルコマンドを起動します。要求しているクライアントについてのより
詳しい情報を得るために /usr/sbi n/safe_fi ng er の使用などのタスクを実行できます。または
echo コマンドを使用して特殊なログファイルを作成することもできます。
以下の例では、exampl e. co m ドメインから Telnet サービスにアクセスしようとしているクライアン
トが特殊ファイルのログに暗黙的に記録されます。
in.telnetd : .example.com \
: spawn /bin/echo `/bin/date` from %h>>/var/log/telnet.log \
: allow
twi st — 要求されたサービスを指定したコマンドに置き換えます。この指示文は、侵入者に対するト
ラップ (「ハニーポット」とも呼ばれる) をセットアップするために使用されることが多くあります。ま
た、接続しているクライアントにメッセージを送るためにも使用できます。 twi st 指示文は、ルール行
の末尾に置く必要があります。
以下の例では、exampl e. co m ドメインから FTP サービスへのアクセスを試みているクライアント
に、echo コマンドを使ってメッセージが送信されます。
vsftpd : .example.com \
: twist /bin/echo "421 This domain has been black-listed. Access
denied!"
シェルコマンドのオプションについての詳細情報は、 ho sts_o pti o ns man ページを参照してくださ
い。
2.6 .2.2.4 . 拡張機能
拡張機能は、spawn および twi st 指示文と一緒に使用される場合に、関連するクライアント、サーバーお
よびプロセスの情報を提供します。
以下は、サポートされている拡張機能のリストです。
%a — クライアントの IP アドレスを返します。
%A — サーバーの IP アドレスを返します。
%c — ユーザー名とホスト名、またはユーザー名と IP アドレスなどのさまざまなクライアント情報を返
します。
%d — デーモンのプロセス名を返します。
%h — クライアントのホスト名 (または、ホスト名が利用できない場合は IP アドレス) を返します。
%H — サーバーのホスト名 (または、ホスト名が利用できない場合は IP アドレス) を返します。
%n — クライアントのホスト名を返します。利用できない場合は、unkno wn が出力されます。クライア
ントのホスト名とホストのアドレスが一致しなければ、parano i d が出力されます。
83
Red Hat Ent erprise Linux 6 セキュリティガイド
%N — サーバーのホスト名を返します。利用できない場合は、unkno wn が出力されます。サーバーのホ
スト名とホストのアドレスが一致しなければ、 parano i d が出力されます。
%p — デーモンのプロセス ID を返します。
%s —デーモンプロセスおよびサーバーのホストまたは IP アドレスなどの、さまざまな種類のサーバー
情報を返します。
%u — クライアントのユーザー名を返します。これがない場合は、unkno wn がプリントされます。
以下のサンプルルールは、カスタマイズされたログファイルでクライアントホストを識別するため
に、spawn コマンドと共に拡張を使用します。
SSH デーモン (sshd ) への接続が exampl e. co m ドメインにあるホストから試行される際に、クライアン
トのホスト名 (%h 拡張を使用) を含む試行を特殊ファイルのログに記録するためにecho コマンドを実行し
ます。
sshd : .example.com \
: spawn /bin/echo `/bin/date` access denied to %h>>/var/log/sshd.log \
: deny
同様に、拡張機能はクライアントに返すメッセージをカスタマイズするために使用できます。以下の例で
は、exampl e. co m ドメインから FTP サービスにアクセスを試行しているクライアントは、それらがサー
バーに接続するのが禁止されていることを通知されます。
vsftpd : .example.com \
: twist /bin/echo "421 %h has been banned from this server!"
利用可能な拡張機能および追加のアクセス制御オプションについての総合的な説明は、ho sts_access
man ページのセクション 5 (man 5 ho sts_access) およびho sts_o pti o ns man ページを参照してく
ださい。
TCP Wrapper についての詳細は、「その他のリソース」を参照してください。
2.6.3. xinet d
xi netd デーモンは、FTP、IMAP および Telnet を含む一般的なネットワークサービスのサブセットへの
アクセスを制御する TCP でラップされた スーパーサービスです。アクセス制御、高度なロギング、バイン
ディング、リダイレクトおよびリソース使用の制御についてのサービス固有の設定オプションも提供しま
す。
クライアントが xi netd で制御されたネットワークサービスへの接続を試みると、スーパーサービスは要
求を受けて、すべての TCP Wrapper アクセス制御ルールをチェックします。
アクセスが許可されると、xi netd は接続がそのサービスについての自らのアクセスルール下で許可される
ことを確認し、さらにサービスがその割り当て以上のリソースを持てることや、定義されたルールに違反し
ていないことを確認します。
これらの条件がすべて満たされている場合 (つまり、サービスへのアクセスが許可され、サービスがそのリ
ソース制限に達しておらず、かつサービスが定義されたいずれのルールにも違反していない場合)、xi netd
は要求されたインスタンスを開始し、その接続の制御を通過させます。接続が確立されると、xi netd はこ
れ以上クライアントとサーバー間の通信には干渉しません。
2.6.4 . xinet d の設定ファイル
xi netd の設定ファイルは以下の通りです。
84
⁠第2 章 ネットワークのセキュリティ保護
/etc/xi netd . co nf — 全体の xi netd 設定ファイル。
/etc/xi netd . d / — サービス固有のファイルすべてを含むディレクトリー。
2 .6 .4 .1 . /e t c/xine t d.co nf ファイル
/etc/xi netd . co nf ファイルには、xi netd の制御下ですべてのサービスに影響する一般的な設定が含
まれます。その設定は、xi netd サービスの初回起動時に読み込まれます。そのため、設定の変更を反映す
るためには、xi netd サービスを再起動する必要があります。以下は/etc/xi netd . co nf ファイルのサ
ンプルです。
defaults
{
instances
log_type
log_on_success
log_on_failure
cps
}
includedir /etc/xinetd.d
=
=
=
=
=
60
SYSLOG authpriv
HOST PID
HOST
25 30
これらの行は xi netd の以下の側面を制御します。
i nstances — xi netd が処理できる同時要求の最大数を指定します。
l o g _type — xi netd が authpri v ログファシリティを使用するように設定し、ログエントリーを
/var/l o g /secure ファイルに書き込みます。FILE /var/l o g /xi netd l o g などの指示文を追加
することにより、/var/l o g / ディレクトリーに xi netd l o g というカスタムログファイルを作成し
ます。
l o g _o n_success — 成功した接続の試行をログに記録するよう xi netd を設定します。デフォルト
では、リモートホストの IP アドレスおよび要求を処理するサーバーのプロセス ID が記録されます。
l o g _o n_fai l ure — 失敗した接続試行をログに記録するように、または接続が拒否された場合に
xi netd を設定します。
cps — 所定のサービスに対して 1 秒に 25 接続のみを許可するようにxi netd を設定します。この制
限を超えた場合は、サービスの使用が 30 秒間停止します。
i ncl ud ed i r /etc/xi netd . d / — /etc/xi netd . d / ディレクトリーにあるサービス固有の設定
ファイルで宣言されたオプションが含まれます。詳細は、「/etc/xinetd.d/ ディレクトリー」を参照して
ください。
注記
多くの場合、/etc/xi netd . co nf にある l o g _o n_success および l o g _o n_fai l ure の設
定は、サービス固有の設定ファイルで追加で修正されます。そのため、/etc/xi netd . co nf ファ
イルが示すよりも多くの情報が所定サービスのログファイルに表示される可能性があります。詳細
は「ロギングのオプション」を参照してください。
2 .6 .4 .2 . /e t c/xine t d.d/ ディレクトリー
/etc/xi netd . d / ディレクトリーには xi netd によって管理される各サービスについての設定ファイル
が含まれ、ファイルの名前はサービスに関連付けられます。xi netd . co nf と同様に、このディレクト
リーは xi netd サービスの起動時にのみ読み込まれます。すべての変更を有効にするには、管理者は
85
Red Hat Ent erprise Linux 6 セキュリティガイド
xi netd サービスを再起動する必要があります。
/etc/xi netd . d / ディレクトリーにあるファイルのフォーマットは、/etc/xi netd . co nf と同じ規
則を使用します。各サービスの設定が別個のファイルに保存される理由には、主としてカスタマイズをより
簡単にし、他のサービスへの影響を少なくすることがあります。
これらのファイルの構造を把握するために、/etc/xi netd . d /krb5-tel net ファイルを検討します。
service telnet
{
flags
socket_type
wait
user
server
log_on_failure
disable
}
= REUSE
= stream
= no
= root
= /usr/kerberos/sbin/telnetd
+= USERID
= yes
これらの行は tel net サービスのさまざまな側面を制御します。
servi ce — サービス名を指定します、通常は /etc/servi ces ファイルでリストされるものの 1 つ
です。
fl ag s — 接続についての数多くの属性を設定します。R EUSE は Telnet 接続のソケットを再利用する
ように xi netd に指示します。
注記
R EUSE フラグは廃止されています。すべてのサービスは暗黙的にR EUSE フラグを使用します。
so cket_type — ネットワークソケットの種類を stream に設定します。
wai t — サービスがシングルスレッド (yes) かマルチスレッド (no ) のどちらかを指定します。
user — プロセスが実行されるユーザー ID を指定します。
server — 起動する実行可能バイナリを指定します。
l o g _o n_fai l ure — xi netd . co nf ですでに定義されているものに加えて、l o g _o n_fai l ure
に対するログのパラメーターを指定します。
d i sabl e — サービスを無効にする (yes) か有効にする (no ) かを指定します。
これらのオプションとその使用法についての詳細は、xi netd . co nf man ページを参照してください。
2 .6 .4 .3. xine t d 設定ファイルの変更
xi netd で保護されるサービスでは、多くの指示文が利用できます。本セクションでは、より一般的に使用
されるオプションのいくつかを説明しています。
2.6 .4 .3.1. ロギングのオプション
以下のロギングオプションは、/etc/xi netd . co nf および /etc/xi netd . d / ディレクトリーにある
サービス固有の設定ファイルで利用できます。
86
⁠第2 章 ネットワークのセキュリティ保護
以下は、より一般的に使われるロギングオプションのいくつかのリストです。
AT T EMP T — 試行が失敗した事実をログに記録します (l o g _o n_fai l ure)。
D UR AT IO N — サービスがリモートシステムによって使用された時間の長さをログに記録します
(l o g _o n_success)。
EXIT — 終了状態またはサービスの終了シグナルをログに記録します l
( o g _o n_success)。
HO ST — リモートホストの IP アドレスをログに記録します l
( o g _o n_fai l ure および
l o g _o n_success)。
P ID — 要求を受け取るサーバーのプロセス ID をログに記録します l
( o g _o n_success)。
USER ID — すべてのマルチスレッド化されたストリームサービスについて、RFC 1413 で定義された方
法でリモートユーザーをログ記録します (l o g _o n_fai l ure および l o g _o n_success)。
ロギングオプションの完全なリストは、xi netd . co nf man ページを参照してください。
2.6 .4 .3.2. アクセス制御オプション
xi netd サービスのユーザーは、TCP Wrapper のホストアクセスルールを使用するか、xi netd 設定ファ
イル経由のアクセス制御を提供するか、またはこれらの両方の組み合わせを選択することができます。TCP
Wrapper のホストアクセス制御ファイルについての詳細は、「TCP Wrapper の設定ファイル」を参照して
ください。
本セクションは、xi netd を使用したサービスへのアクセス制御を説明します。
注記
TCP Wrapper とは異なり、アクセス制御の変更は、xi netd 管理者がxi netd サービスを再起動す
る場合にのみ、反映されます。
また TCP Wrapper とは異なり、xi netd によるアクセス制御は xi netd が制御するサービスにの
み影響を与えます。
xi netd ホストアクセス制御は、TCP Wrapper で使われる方式とは異なります。TCP Wrapper で
は、/etc/ho sts. al l o w および /etc/ho sts. d eny の 2 つの設定ファイル内にすべてのアクセス設定
を置いていますが、xi netd のアクセス制御は /etc/xi netd . d / ディレクトリー内の各サービスの設定
ファイル内にあります。
以下のホストアクセスオプションは xi netd で対応しています。
o nl y_fro m — 指定されたホストによるサービスの使用のみを許可します。
no _access — リストされたホストによるサービスの使用をブロックします。
access_ti mes — 特定のサービスが使用可能な時間帯を指定します。時間帯は 24 時間表記の
HH:MM-HH:MM で記載する必要があります。
o nl y_fro m と no _access オプションは、IP アドレスまたはホスト名のリストを使用できるか、または
ネットワーク全体を指定できます。TCP Wrapper のように xi netd アクセス制御と高度なロギング設定を
組み合わせると、各接続の試行を詳細に記録しながら、禁止されたホストからの要求をブロックすることに
より、セキュリティを向上させることができます。
例えば、以下の /etc/xi netd . d /tel net ファイルを使用すると、特定のネットワークグループからの
Telnet アクセスをブロックし、許可されたユーザーがログインできる時間帯を制限できます。
87
Red Hat Ent erprise Linux 6 セキュリティガイド
service telnet
{
disable
flags
socket_type
wait
user
server
log_on_failure
no_access
log_on_success
access_times
}
= no
= REUSE
= stream
= no
= root
= /usr/kerberos/sbin/telnetd
+= USERID
= 172.16.45.0/24
+= PID HOST EXIT
= 09:45-16:15
この例では、172. 16 . 4 5. 2 などの 172. 16 . 4 5. 0 /24 ネットワークからのクライアントシステムが
Telnet サービスにアクセスを試みると、以下のメッセージが表示されます。
Connection closed by foreign host.
さらに、ログインの試行は /var/l o g /messag es のログに以下のように記録されます。
Sep 7 14:58:33 localhost xinetd[5285]: FAIL: telnet address
from=172.16.45.107
Sep 7 14:58:33 localhost xinetd[5283]: START: telnet pid=5285
from=172.16.45.107
Sep 7 14:58:33 localhost xinetd[5283]: EXIT: telnet status=0 pid=5285
duration=0(sec)
xi netd アクセス制御と共に TCP Wrapper を使用する際は、これら 2 つのアクセス制御メカニズムの関
係を理解することが重要です。
以下は、クライアントが接続を要求する際に、xi netd が実行する一連のイベントです。
1. xi netd デーモンが l i bwrap. so ライブラリコールを使用して TCP Wrapper のホストアクセス
ルールにアクセスします。拒否ルールがクライアントにマッチすると、接続は切断されます。許可
ルールがクライアントにマッチすると、接続は xi netd に渡されます。
2. xi netd デーモンが、xi netd サービスと要求されたサービスの両方に対して自らのアクセス制御
ルールをチェックします。拒否ルールがクライアントにマッチすると、接続は切断されます。マッ
チしないと、xi netd は要求されたサービスのインスタンスを起動し、そのサービスに接続の制御
を渡します。
重要
xi netd アクセス制御と共に TCP Wrapper を使用する場合には注意する必要があります。設定の
誤りが意図しない効果を引き起こす可能性があります。
2.6 .4 .3.3. バインドとリダイレクトのオプション
xi netd のサービス設定ファイルは、サービスの IP アドレスへのバインド、およびサービスの入力要求
の、他の IP アドレスやホスト名またはポートへのリダイレクトをサポートします。
88
⁠第2 章 ネットワークのセキュリティ保護
バインドは、サービス固有の設定ファイルで bi nd オプションを使って制御され、サービスをシステム上
の IP アドレス 1 つにリンクします。これが設定されて bi nd オプションを使用すると、正しい IP アドレ
スへの要求のみがサービスへのアクセスを許可されます。この方式を使うと、要求に基づいて異なるネット
ワークインタフェースに異なるサービスをバインドすることができます。
これは、複数のネットワークアダプタまたは複数の IP アドレスを持つシステムの場合に特に有用です。そ
のようなシステムでは、セキュアではないサービス (Telnet など)は、プライベートネットワークに接続さ
れたインタフェースのみをリッスンするようにし、インターネットに接続されたインタフェースはリッス
ンしないように設定できます。
red i rect オプションは、IP アドレスまたはホスト名とそれに続くポート番号を受け付けます。あるサー
ビスに対するすべての要求を、このサービスが指定されたホストとポート番号へリダイレクトするように設
定します。この機能は、同一システム上の別のポート番号をポイントしたり、要求を同じマシンにある別の
IP アドレスにリダイレクトしたり、この要求を全く異なるシステムとポート番号に移動したりする他、これ
らのオプションを組み合わせて使用することができます。このため、システム上の特定のサービスに接続し
ているユーザーは、接続が切断されることなく他のシステムに再接続することが可能です。
xi netd デーモンは、要求側のクライアントマシンと実際にサービス提供するホスト間の接続中に有効とな
るプロセスを発生させ、この 2 つのシステム間でデータを転送することで、このリダイレクトを達成できま
す。
bi nd および red i rect オプションの利点は、それらが一緒に使用される場合に最も明確になります。シ
ステム上の特定の IP アドレスにサービスをバインドした後、このサービスに対する要求を 最初のマシンの
みが見ることができる 2 番目のマシンへリダイレクトすることで、内部のシステムを使って全く異なるネッ
トワークに対してサービスを提供することができます。または、これらのオプションを使うと、複数ホーム
のマシン上の特定サービスが既知の IP アドレスへ露出することを制限したり、そのサービスに対するすべ
ての要求をその目的のみ特別設定された別のマシンにリダイレクトすることもできます。
例えば、以下の設定の Telnet サービスがある、ファイアウォールとして使用されるシステムについて考え
てみましょう。
service telnet
{
socket_type = stream
wait
= no
server
= /usr/kerberos/sbin/telnetd
log_on_success += DURATION USERID
log_on_failure += USERID
bind
= 123.123.123.123
redirect
= 10.0.1.13 23
}
このファイルにある bi nd および red i rect オプションは、マシン上の Telnet サービスをインターネッ
トに向いている外部 IP アドレス (123. 123. 123. 123) にバインドします。さらに、123. 123. 123. 123
に送信された Telnet サービスについてのすべての要求は、2 つ目のネットワークアダプターを経由して、
ファイアウォールと内部システムだけがアクセスできる内部 IP アドレス (10 . 0 . 1. 13) にリダイレクトさ
れます。その後、ファイアウォールは 2 つのシステム間に通信を送り、接続しているシステムは別のマシ
ンに接続されている際も、123. 123. 123. 123 に接続しているように見えます。
ブロードバンド接続で固定 IP アドレスが 1 つのみのユーザーにとって、この機能はとくに有用です。NAT
(Network Address Translation) を使用する際に、ゲートウェイマシンの後ろにあるシステムで内部専用の
IP アドレスを使用するものは、ゲートウェイシステムの外側から利用することはできません。ただ
し、xi netd が制御す特定のサービスを bi nd および red i rect のオプションを使って設定する場合は、
ゲートウェイマシンは外側システムと、そのサービスを提供するように設定された特定の内部マシンとの間
のプロキシとして作動することが可能です。さらに追加の保護目的で、様々な xi netd のアクセス制御お
よびロギングのオプションも利用可能です。
89
Red Hat Ent erprise Linux 6 セキュリティガイド
2.6 .4 .3.4 . リソース管理オプション
xi netd デーモンは、サービス妨害 (D oS) 攻撃に対する基本的なレベルの保護を追加することができま
す。以下は、それらの攻撃の有効性を限定するために役立つ指示文のリストです。
per_so urce — ソース IP アドレスあたりのサービス用のインスタンス最大数を定義します。引数とし
て整数のみを受け付け、xi netd . co nf と xi netd . d / ディレクトリー内のサービス固有の設定ファ
イルの両方で使用できます。
cps — 1 秒あたりの最大の接続数を定義します。この指示文は空白区切りの 2 つの整数を取ります。最
初の引数は、1 秒あたりにサービスに許可される接続の最大数です。2 つ目の引数は、xi netd がサー
ビスを再び有効にするまでに待機する秒数です。これは、引数として整数のみを受け付
け、xi netd . co nf ファイルまたは xi netd . d / ディレクトリ内のサービス固有の設定ファイルで使
用できます。
max_l o ad — サービスの CPU 利用率またはロードアベレージのしきい値を定義します。浮動小数点数
を受け付けます。
ロードアベレージは、ある時点でいくつのプロセスがアクティブであるかを大まかに測定する方法で
す。負荷平均についての詳細は、upti me、who 、および pro ci nfo コマンドを参照してください。
xi netd には、利用可能な多くのリソース管理オプションがあります。詳細は、xi netd . co nf man ペー
ジを参照してください。
2.6.5. その他のリソース
TCP Wrapper と xi netd に関する詳細は、システムのドキュメントとインターネットで入手できます。
2 .6 .5 .1 . インストール済みの T CP Wrappe r ドキュメント
TCP Wrapper、xi netd およびアクセス制御についての追加の設定オプションについて調べる際には、シ
ステムにあるドキュメントをまず参照することをお勧めします。
/usr/share/d o c/tcp_wrappers-<version>/ — このディクトリーには R EAD ME ファイルが含
まれています。このファイルでは、TCP Wrapper がどのように機能するか、また存在するさまざまな
ホスト名やホストアドレスのスプーフィングのリスクについて説明しています。
/usr/share/d o c/xi netd -<version>/ — このディレクトリーには R EAD ME ファイルが含まれて
おり、/etc/xi netd . d / ディレクトリー内のサービス固有の設定ファイルの編集に関する各種のアイ
ディアとともに、アクセス制御や sampl e. co nf ファイルについて説明しています。
TCP Wrapper および xi netd 関連の man ページ — TCP Wrapper および xi netd に関連するさまざ
まなアプリケーションや設定ファイルについて、数多くの man ページがあります。以下はより重要な
man ページです。
サーバーアプリケーション
man xi netd — xi netd の man ページ
設定ファイル
man 5 ho sts_access — TCP Wrapper のホストアクセス制御ファイルの man ペー
ジ。
man ho sts_o pti o ns — TCP Wrapper オプションフィールドの man ページ。
man xi netd . co nf — xi netd 設定オプションをリストしている man ページ。
2 .6 .5 .2 . 有用な T CP Wrappe r の We b サイト
90
⁠第2 章 ネットワークのセキュリティ保護
http://www.docstoc.com/docs/2133633/An-Unofficial-Xinetd-Tutorial — 具体的なセキュリティ目標
を達成するために、デフォルトのxi netd 設定ファイルを最適化するための数多くの異なる方法を扱っ
た詳細なチュートリアルです。
2 .6 .5 .3. 関連書籍
Hacking Linux Exposed; Osbourne/McGraw-Hill (Brian Hatch、James Lee、および George Kurtz )—
TCP Wrapper および xi netd についての情報を含む優れたセキュリティリソースです。
2.7. 仮想プライベートネットワーク (VPN)
複数のサテライトオフィスを持つ組織は、機密データの送信における効率性と保護のために専用回線で相互
接続しています。例えば、多くの企業はオフィスとオフィスをつなぐためにエンドツーエンドのネットワー
クソリューションとして、フレームリレーまたは 非同期転送モード (ATM) 回線を使用しています。しかし
これは、企業レベルの専用デジタル回線に多くの費用をかけずに拡張を望む中小企業にとっては、コストの
かかる方法となる可能性があります。
こうしたニーズに対応するために、仮想プライベートネットワーク (VPN) が開発されました。VPN は、専
用回線と同じ機能原理にしたがい、2 つの関係者間 (またはネットワーク) でのセキュリティ保護されたデ
ジタル通信を可能にし、既存の ローカルエリアネットワーク (LAN) からワイドエリアネットワーク (WAN)
を作成します。VPN とフレームリレーや ATM との違いは、そのトランスポートメディアにあります。VPN
はデータグラムをトランスポート層として使用して IP 上で送信を行い、インターネット経由で送信先まで
をセキュアな状態にします。ハードウェアおよびソフトウェアの VPN 実装は通常、VPN 接続の確立と認証
に IETF IP sec 標準を実行します。データの暗号化も IETF IP sec 標準となっていますが、FIPS 規定は使
用可能なオプションを制限します。
組織の中にはセキュリティ強化のためにハードウェア VPN ソリューションを使用するところもあります
が、ソフトウェアまたはプロトコルベースの実装を活用しているところもあります。Cisco、Nortel、IBM
および Checkpoint などの複数のベンダーは、ハードウェアの VPN ソリューションを提供しています。ま
た、Openswan のようなフリーソフトウェアベースの VPN ソリューションは、標準化された Internet
Protocol Security (IPsec) 実装を利用しています。これらの VPN ソリューションは、ハードウェアかソフ
トウェアベースかに関わらず、1 つのオフィスから別のオフィスへの IP 接続間における専用ルーターとし
て機能します。
重要
O p en swan が実施する IP sec は、Red Hat Enterprise Linux 6 での使用が推奨される唯一の
VPN 技術です。リスクを理解せずに他の VPN を使用しないでください。
2.7.1. VPN の機能
パケットはクライアントから送信されると、VPN ルーターまたはゲートウェイを経由して送信されます。
これらは、認証とオプションでデータを暗号化するものです。IPsec にはいくつものモードがあります。最
も一般的に使用される設定では、 カプセル化セキュリティペイロード (ESP: Encapsulating Security
Payload) による トンネルモード が使用されます。商用 VPN クライアントのなかにはESP による トラン
スポートモード を使用するものもありますが、このモードを NAT で導入する際には困難を伴います。
認証
ヘッダー (AH) の導入は、最近では珍しいものとなっています。これは通常、ESP のオーバーヘッドが望ま
しくなく、暗号化が不要なコアルーター間で使用されます。Red Hat Enterprise Linux で導入される ESP
には常に、認証済みのヘッダーが含まれています。ただし、古いバージョンや racoon ソフトウェアベース
の実装は、時折間違って ESP + AH と一緒に導入されて、認証層が二重になることがあります。
受信 VPN ルーターはヘッダー情報を分離してデータの暗号化解読を行い、目的の宛先 (ワークステーショ
91
Red Hat Ent erprise Linux 6 セキュリティガイド
ンまたはネットワークにある他のノード) までのルートを決定します。ローカルネットワーク上の受信ノー
ドは、ネットワーク間の接続を使用して、暗号解読された処理可能な状態のパケットを受け取ります。ネッ
トワーク間の VPN 接続では、暗号化および暗号化解除プロセスはローカルノードに対して透過的に実行さ
れます。
このようにセキュリティレベルが強化されていると、攻撃者はパケットの傍受だけでなく、暗号解読も可能
である必要があります。サーバーとクライアント間に中間者攻撃を仕掛ける侵入者は、少なくとも認証セッ
ション用の秘密鍵 1 つにアクセスする必要もあります。また、このような秘密鍵を獲得しても、危険にさら
されるのは過去に暗号化されて送信されたトラフィックではなく、現在のトラフィックのみです。VPN は
複数層の認証と暗号化を用いるため、複数のリモートノードを連結させて単一のイントラネットとして動作
させるセキュアで効率的な手段になります。
2.7.2. Openswan
O p en swan は、Red Hat Enterprise Linux 6 で利用可能なオープンソースのユーザースペースIP sec 実
装です。ユーザーレベルのデーモンとして実装される、鍵を確立するプロトコルである IKE (インターネッ
ト鍵交換) v1 および v2 を使用します。i p xfrm コマンドで手動の鍵の確立も可能ですが、これは推奨さ
れません。O p en swan は、netlink を使って Linux カーネルとインターフェイス接続し、暗号化鍵を送信
します。パケットの暗号化と暗号解読は、Linux カーネルで行われます。
暗号化サポート
O p en swan は、FIPS セキュリティのコンプライアンスに必要な NSS (Network Security Services: ネッ
トワークセキュリティサービス) の暗号化ライブラリを使用します。FIPS (Federal Information
Processing Standard: 連邦情報処理規格) については、「連邦情報処理標準 (FIPS: Federal Information
Processing Standard)」を参照してください。
インストール
O p en swan をインストールするには、yum i nstal l o penswan コマンドを実行します。
2 .7 .2 .1 . 設定
場所
このセクションでは、O p en swan の設定に使用される重要なディレクトリーとファイルについて説明し
ます。
/etc/i psec. d - O p en swan 関連のファイルを保存するメインディレクトリーです。
/etc/i psec. co nf - マスター設定ファイル。個々の設定用に、追加の *. co nf 設定ファイルを
/etc/i psec. d に作成できます。
/etc/i psec. secrets - マスター secrets ファイル。個々の設定用に、追加の *. secrets ファイル
を /etc/i psec. d に作成できます。
/etc/i psec. d /cert*. d b - 証明書データベースファイル。古いデフォルトの NSS データベース
ファイルは cert8. d b です。Red Hat Enterprise Linux 6 以降、NSS SQLite データベースは
cert9 . d b ファイルで使用されています。
/etc/i psec. d /key*. d b - 鍵データベースファイル。古いデフォルトの NSS データベースファイ
ルは key3. d b です。Red Hat Enterprise Linux 6 以降、NSS SQLite データベースは key4 . d b ファ
イルで使用されています。
/etc/i psec. d /cacerts - 認証局 (CA) の証明書の以前の場所です。CA 証明書は、NSS データベー
スファイルにインポートすることが推奨されます。この場所は、Red Hat Enterprise Linux の次のバー
ジョンでは廃止となります。
92
⁠第2 章 ネットワークのセキュリティ保護
/etc/i psec. d /certs - マシンの証明書の以前の場所です。マシン証明書は、NSS データベース
ファイルにインポートすることが推奨されます。この場所は、Red Hat Enterprise Linux の次のバー
ジョンでは廃止となります。
/etc/i psec. d /po l i ci es - 日和見暗号化グループポリシーです。Red Hat Enterprise Linux 6 で
は使用されていません。
/etc/i psec. d /nsspasswo rd - NSS パスワードファイル。このファイルはデフォルトでは存在せ
ず、使用中の NSS データベースがパスワードを使って作成されると必要になります。
グローバル設定のパラメーター
本セクションでは、/etc/i psec. co nf の グローバル co nfi g setup セクションで利用可能な設定オ
プションをいくつか説明します。
pro to stack - どのプロトコルスタックを使用するかを定義します。Red Hat Enterprise Linux 6 のデ
フォルトオプションは netkey です。他の有効な値は klips および mast です。これら代替の IP sec
カーネルスタックは、Red Hat Enterprise Linux が対応していないサードパーティーのカーネルモ
ジュールを必要とします。代替スタックは通常、埋め込み Linux デバイスと使用されます。
nat_traversal - NAT-トラバーサル (RFC 3947) が接続に使用可能かどうかを定義します。デフォル
トでは、使用可能です。
d umpd i r - コアダンプファイルの場所を定義します。これを変更する場合は、SELinux ポリシーを新
たな場所に適合するように変更する必要があります。
nhel pers - 暗号化操作に使用されるヘルパースレッドの数を定義します。
vi rtual _pri vate - クライアント接続を可能にするサブネットです。クライアントが接続する NAT
ルーターの後ろまで範囲が及ぶ可能生があります。サーバーが使用する LAN 範囲を除いて、RFC 1918
アドレススペースを含めます。
pl uto restarto ncrash - デフォルトでは Yes に設定されています。
pl uto std errl o g - これが有効にすると、syslog 機能の代わりにログファイル名が使用されます。
接続固有のパラメーター
本セクションでは、co nn セクションで接続ごとに利用可能な設定オプションのいくつかを説明します。
auto - 接続の startup プロファイルを定義します。デフォルトは ignore です。他の有効な値は、start
(起動)、add (反応のみ) および route (オンデマンドの起動) になります。
type - 使用されるトンネルポリシーを定義します。デフォルトは、トンネルモード用のtunnel です。他
の有効な値は、トランスポートモード用 (L2TP と使用) の transport と、IP sec を完全に迂回する
passthrough になります。
authby - 使用される認証タイプを定義します。デフォルトは、生 RSA 鍵用のrsasig です。他の有効な
値は、事前共有鍵 (PSK) 用の secret とパススルー接続用の never です。
rekey - 接続の有効期限が切れる際に、鍵を更新するかどうかを定義します。デフォルトはyes で、通
常静的 VPN に使用されます。no の値は通常、サポートの動的 VPN クライアントに使用されます。
O p en swan の設定に関する詳細は、i psec. co nf(5) および i psec. secrets(5) の man ページを参
照してください。
2 .7 .2 .2 . コマンド
93
Red Hat Ent erprise Linux 6 セキュリティガイド
本セクションでは、O p en swan で使用されるコマンド例を紹介します。サービスステータスのチェック以
外は、コマンドは root で実行する必要があることに注意してください。
O p en swan のサービスコマンド
servi ce i psec start
servi ce i psec sto p
servi ce i psec status
接続のロードおよびアンロード
i psec auto --ad d connection_name
i psec auto --d el ete connection_name
接続の起動、オンデマンド、および終了
i psec auto --up connection_name
i psec auto --ro ute connection_name
i psec auto --d o wn connection_name
IPsec カーネルサブシステムのチェック
i p xfrm po l i cy
i p xfrm state
i p -s xfrm mo ni to r
IPsec ユーザースペースサブシステムのチェック
i psec auto --status
i psec veri fy
IPsec 用の生 R SA
94
⁠第2 章 ネットワークのセキュリティ保護
注記
生 RSA 鍵を生成するコマンドは、システムのエントロピーに依存しています。システムアクティビ
ティーおよび鍵のサイズによっては、これらのコマンドは実行終了までに数分かかる場合がありま
す。
生 RSA 鍵の生成:
i psec newho stkey --co nfi g d i r /etc/i psec. d --o utput
/etc/i psec. d /name-of-file.secret
IP sec 設定ファイルに使用する生 RSA 鍵の一覧表示
i psec sho who stkey --left | --right
D NS で公開する生 RSA 鍵の一覧表示
i psec sho who stkey --i pseckey
IPsec での証明書の設定
証明書エージェンシーの作成および維持は、別個のマシンで行う必要があります。このマシンから IP sec
サーバーに移動する必要があるのは、作成済みの PKCS #12 ファイルのみです。PKCS #12 (. p12) ファイ
ルのエクスポートには、CA 管理者がパスワードを使って . p12 ファイルを暗号化する必要があります。こ
れらのファイルをインポートするには、システム管理者がこのパスワードを知っている必要があります。こ
のため、このパスワードが電話など Email 以外の方法で共有されていれば、. p12 ファイル自体は Email
で安全に送信できます。
(自己署名) CA 証明書を作成します。
certuti l -S -k rsa -n ca.example.com -s \ "C N= ca. exampl e. co m" -w 12 t "C ,C ,C " -x -d ~/CAstore
この CA で署名されたホスト証明書を作成します。
certuti l -S -k rsa -c ca.example.com -n west.example.com -s
"C N= west. exampl e. co m" -w 12 -t "u,u,u" -d ~/CAstore
ターゲットマシンに移動するエクスポートファイルを PKCS #12 形式で作成します。
pk12uti l -o west.p12 -n west.example.com -d ~/CAstore
エクスポートされたマシン証明書を IP sec NSS データベースにインポートします。
pk12uti l -i west.example.com.p12 -d /etc/i psec. d
NSS データベース (IP sec ゲートウェイまたは CA) のコンテンツを一覧表示します。
certuti l -L -d /etc/i psec. d
95
Red Hat Ent erprise Linux 6 セキュリティガイド
certuti l -L -d ~ /C Asto re
2.7.3. Openswan を使った IPsec VPN
Ope nswan のインストール
O p en swan をインストールするには、root で以下のコマンドを実行します。
~]# yum i nstal l o penswan
パッケージに加えて、2 つの鍵のインストールを許可するよう尋ねられます。
root で以下のコマンドを実行して、network security services (NSS) データベースを初期化します。
~]# certuti l -N -d /etc/i psec. d /
Enter a password which will be used to encrypt your keys.
The password should be at least 8 characters long,
and should contain at least one non-alphabetic character.
Enter new password:
Re-enter password:
NSS にパスワードを使用しない場合は、パスワードのプロンプトで Enter を 2 回押します。パスワードを
入力した場合は、システム起動時など、O p en swan の起動ごとに毎回パスワードの入力が必要になりま
す。
デフォルトの SELinux セキュリティコンテンツを復元します。
~]# resto reco n -R v /etc/i psec. d
O p en swan が提供する i psec デーモンを起動するには、root で以下のコマンドを実行します。
~]# servi ce i psec start
ipsec_setup: Starting Openswan IPsec U2.6.32/K2.6.32-358.el6.x86_64...
システム起動時に O p en swan も起動するようにするには、root で以下のコマンドを実行します。
~]# chkco nfi g i psec o n
中間およびホストベースのファイアウォールが i psec サービスを許可するように設定します。ファイア
ウォールおよび特定サービスの通過を許可することについての詳細情報は、「Netfilter と IPTables」 を参
照してください。O p en swan の使用には、以下のパケットがファイアウォールを通過できるようにして
おく必要があります。
Internet Key Exchang e (IKE) プロトコル用に UD P ポート 500
IKE NAT -T raversal 用に UD P ポート 4500
Encapsul ated Securi ty P ayl o ad (ESP) IP sec パケット用に プロトコル 50
Authenti cated Head er (AH) IP sec パケット用にプロトコル 51 (まれ)
96
⁠第2 章 ネットワークのセキュリティ保護
O p en swan を使って IP sec VPN を設定する例を 3 つ紹介します。ひとつ目は、2 つのホストを接続し
てセキュアな通信ができるようにします。2 つ目は、2 つのサイトを接続して 1 つのネットワークを形成し
ます。3 つ目は、このコンテキストでは ロードウォリアー と呼ばれるローミングユーザーをサポートしま
す。
2.7.4 . Openswan を使った VPN 設定
O p en swan では、「ソース」 や 「宛先」 といった用語を使用しません。代わりに、エンドポイント (ホ
スト) に向かって 「左」 および 「右」 という用語を使用します。これにより、ほとんどのケースで両方の
エンドポイントで同じ設定が使えるようになります。ただし、ほとんどの管理者はローカルホスト
に「左」を、リモートホストに「右」を使用します。キーワードに 「左」や「右」といった言葉が含まれ
るものは任意のものです。これは文字通り、左は使用するネットワーク図の左にあるホスト、と解釈するこ
とができます。O p en swan は、「左」または「右」を自動で検出します。例では、O p en swan コマンド
が 「左」 と呼んでいるホストに、合致するホスト名が与えられます。通常、「左」および「右」に合致す
るよう、それぞれ「西」および「東」がホスト名に使用されます。本ガイドでは、west. exampl e. co m
を「左」に、east. exampl e. co m を「右」に使用します。
エンドポイントの認証には、3 つの一般的な方法が使用されます。
事前共有鍵 (PSK) は、最もシンプルな認証方法です。PSK は任意の 20 以上の文字で構成されます。
PSK が任意でなくかつ短いものになる危険があることから、システムが FIPS モードで稼働している際
は、この方法は利用できません。
生 RSA 鍵は、静的なホスト間またはサブネット間で一般的に使用される IP sec 設定です。ホストは、
それぞれの公開 RSA 鍵で手動で設定されます。この方法は、12 以上のホストで相互に IP sec トンネ
ルを設定する必要がある場合には、うまく拡張できません。
X. 50 9 certi fi cates は、共通の IP sec ゲートウェイに接続する必要のあるホストが多くある、
大型の導入案件でよく使用されます。ホストまたはユーザーの RSA 証明書の署名には、中央 認証機関
(CA) が使用されます。この中央 CA は、個別ホストまたはユーザーの取り消しを含む信頼の中継を担当
します。
2.7.5. Openswan を使用したホスト間の VPN
O p en swan が 「左」 および 「右」 と呼ばれる 2 つのホスト間で IP sec VPN を作成するよう設定する
には、「left」のホスト上で root で以下のコマンドを実行して新たな生 RSA 鍵のペアを作成します。
~]# i psec newho stkey --co nfi g d i r /etc/i psec. d \
--o utput /etc/i psec. d /i psec. secrets --bi ts 4 0 9 6
Generated RSA key pair using the NSS database
これで ホストの RSA 鍵ペアが生成されます。エントロピーが低い仮想マシンでは特に、RSA 鍵の生成プロ
セスは時間が長くかかります。
公開鍵を表示するには、「左」 と呼ばれるホスト上で root で以下のコマンドを実行します。
~]# i psec sho who stkey --l eft
ipsec showhostkey nss directory showhostkey: /etc/ipsec.d
# rsakey AQO+NIez4
leftrsasigkey=0sAQO+NIez4bxcib5FPjT3jF3S6Mrz9NACaD5B4wPXFuhxQmy6c8GNX1A9y
B0vvLWon [...] W8rQIf4NrL6eGd5r9HwIPT7
以下で説明するように、この鍵を設定ファイルに追加する必要があります。
「右」 と呼ばれるホスト上で root で以下のコマンドを実行します。
97
Red Hat Ent erprise Linux 6 セキュリティガイド
~]# i psec newho stkey --co nfi g d i r /etc/i psec. d \
--o utput /etc/i psec. d /i psec. secrets --bi ts 4 0 9 6
Generated RSA key pair using the NSS database
公開鍵を表示するには、「右」 と呼ばれるホスト上で root で以下のコマンドを実行します。
~]# i psec sho who stkey --ri g ht
# rsakey AQO3fwC6n
rightrsasigkey=0sAQO3fwC6nSSGgt64DWiYZzuHbc4 [...] D/v8t5YTQ==
この鍵を設定ファイルに追加する必要があります。
このホスト間のトンネル用に設定ファイルを作成するには、上記の l eftrsasi g key= と
ri g htrsasi g key= の各行を /etc/i psec. d / ディレクトリー内のカスタム設定ファイルに記載しま
す。O p en swan がカスタム設定ファイルを読み取るようにするには、root でエディターを実行し、メイ
ン設定ファイルである /etc/i psec. co nf で以下の行の # 文字を削除します。これで、以下の行が有効
になります。
include /etc/ipsec.d/*.conf
root でエディターを使用して以下の形式で適切な名前のファイルを作成します。
/etc/ipsec.d/my_host-to-host.conf
以下のようにファイルを編集します。
conn mytunnel
leftid=@ west.example.com
left=192.1.2.23
leftrsasigkey=0sAQOrlo+hOafUZDlCQmXFrje/oZm [...]
W2n417C/4urYHQkCvuIQ==
rightid=@ east.example.com
right=192.1.2.45
rightrsasigkey=0sAQO3fwC6nSSGgt64DWiYZzuHbc4 [...] D/v8t5YTQ==
authby=rsasig
# load and initiate automatically
auto=start
左右両方のホストに同一の設定ファイルを使用することができます。ホストは「左」か「右」かを自動検出
します。l eftrsasi g key の値を「左」のホストから、ri g htrsasi g key の値を「右」のホストから取
得していることを確認してください。
i psec が起動していることを確認します。
~]# servi ce i psec start
ipsec_setup: Starting Openswan IPsec U2.6.32/K2.6.32-412.el6.x86_64...
ipsec_setup: /usr/libexec/ipsec/addconn Non-fips mode set in
/proc/sys/crypto/fips_enabled
root で以下のコマンドを実行して、IP sec トンネルを読み込みます。
~]# i psec auto --ad d mytunnel
/usr/libexec/ipsec/addconn Non-fips mode set in
/proc/sys/crypto/fips_enabled
98
⁠第2 章 ネットワークのセキュリティ保護
左右両方のホストのトンネルを表示するには、root で以下のコマンドを実行します。
~]# i psec auto --up mytunnel
104 "mytunnel" #1: STATE_MAIN_I1: initiate
003 "mytunnel" #1: received Vendor ID payload [Dead Peer Detection]
106 "mytunnel" #1: STATE_MAIN_I2: sent MI2, expecting MR2
108 "mytunnel" #1: STATE_MAIN_I3: sent MI3, expecting MR3
003 "mytunnel" #1: received Vendor ID payload [CAN-IKEv2]
004 "mytunnel" #1: STATE_MAIN_I4: ISAKMP SA established
{auth=OAKLEY_RSA_SIG cipher=aes_128 prf=oakley_sha group=modp2048}
117 "mytunnel" #2: STATE_QUICK_I1: initiate
004 "mytunnel" #2: STATE_QUICK_I2: sent QI2, IPsec SA established tunnel
mode {ESP=>0x63ad7e17 <0x4841b647 xfrm=AES_128-HMAC_SHA1 NATOA=none
NATD=none DPD=none}
2 .7 .5 .1 . Ope nswan を使ったホスト間 VPN の検証
IKE 交渉は、UD P ポート 500 で行われます。IP sec パケットは、Encapsul ated Securi ty
P ayl o ad (ESP) パケットとして現れます。VPN 接続が NAT ルーターを通過する必要がある場合は、ESP
パケットはポート 4500 上の UD P パケットにカプセル化されます。
パケットが VPN トンネル経由で送信されていることを確認するには、root で以下の形式のコマンドを実行
します。
~]# tcpd ump -n -i interface esp and ud p po rt 50 0 and ud p po rt 4 50 0
00:32:32.632165 IP 192.1.2.45 > 192.1.2.23: ESP(spi=0x63ad7e17,seq=0x1a),
length 132
00:32:32.632592 IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x4841b647,seq=0x1a),
length 132
00:32:32.632592 IP 192.0.2.254 > 192.0.1.254: ICMP echo reply, id 2489,
seq 7, length 64
00:32:33.632221 IP 192.1.2.45 > 192.1.2.23: ESP(spi=0x63ad7e17,seq=0x1b),
length 132
00:32:33.632731 IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x4841b647,seq=0x1b),
length 132
00:32:33.632731 IP 192.0.2.254 > 192.0.1.254: ICMP echo reply, id 2489,
seq 8, length 64
00:32:34.632183 IP 192.1.2.45 > 192.1.2.23: ESP(spi=0x63ad7e17,seq=0x1c),
length 132
00:32:34.632607 IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x4841b647,seq=0x1c),
length 132
00:32:34.632607 IP 192.0.2.254 > 192.0.1.254: ICMP echo reply, id 2489,
seq 9, length 64
00:32:35.632233 IP 192.1.2.45 > 192.1.2.23: ESP(spi=0x63ad7e17,seq=0x1d),
length 132
00:32:35.632685 IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x4841b647,seq=0x1d),
length 132
00:32:35.632685 IP 192.0.2.254 > 192.0.1.254: ICMP echo reply, id 2489,
seq 10, length 64
ここでの interface は、監視するインターフェイスになります。t cp d u mp での表示を終了するに
は、C trl +C を押します。
99
Red Hat Ent erprise Linux 6 セキュリティガイド
注記
t cp d u mp コマンドと IP sec のインタラクションはやや予想外のものになります。見えるのは暗号
化された送信パケットのみで、プレーンテキストの送信パケットは見えません。受信パケットは、
暗号化および暗号解読された両方を表示します。可能であれば、t cp d u mp コマンドはどちらかの
エンドポイント上ではなく、2 つのマシン間にあるルーター上で実行してください。
2.7.6. Openswan を使ったサイト間の VPN
O p en swan が 2 つのネットワークを結合させるサイト間のIP sec VPN を作成するようにするには、2
つのホスト間に IP sec トンネルを作成します。これらのホストは、1 つ以上のサブネットからのトラ
フィック通過を許可します。このため、これらはネットワークのリモート箇所にはゲートウェイのようにみ
られます。サイト間 VPN とホスト間 VPN の唯一の違いは、前者では 1 つ以上のネットワークまたはサブ
ネット (アドレス) の範囲を設定ファイルで指定する必要があるという点です。
サイト間 IP sec VPN を作成するように O p en swan を設定するには、まず 「Openswan を使用したホス
ト間の VPN」 にあるようにホスト間の IP sec VPN を設定し、その設定ファイルを
/etc/i psec. d /my_si te-to -si te. co nf などの適切なファイル名にコピーまたは移動します。root
としてエディターを使用して、カスタム設定ファイルである /etc/i psec. d /my_si te-to si te. co nf を以下のように編集します。
conn mysubnet
also=mytunnel
leftsubnet=192.0.1.0/24
rightsubnet=192.0.2.0/24
conn mysubnet6
also=mytunnel
connaddrfamily=ipv6
leftsubnet=2001:db8:0:1::/64
rightsubnet=2001:db8:0:2::/64
conn mytunnel
auto=start
leftid=@ west.example.com
left=192.1.2.23
leftrsasigkey=0sAQOrlo+hOafUZDlCQmXFrje/oZm [...]
W2n417C/4urYHQkCvuIQ==
rightid=@ east.example.com
right=192.1.2.45
rightrsasigkey=0sAQO3fwC6nSSGgt64DWiYZzuHbc4 [...] D/v8t5YTQ==
authby=rsasig
トンネルを表示するには、O p en swan を再起動するか、root で以下のコマンドを実行して手動ですべての
接続を読み込み、開始します。
~]# i psec auto --ad d mysubnet
/usr/libexec/ipsec/addconn Non-fips mode set in
/proc/sys/crypto/fips_enabled
~]# i psec auto --ad d mysubnet6
/usr/libexec/ipsec/addconn Non-fips mode set in
/proc/sys/crypto/fips_enabled
100
⁠第2 章 ネットワークのセキュリティ保護
~]# i psec auto --ad d mytunnel
/usr/libexec/ipsec/addconn Non-fips mode set in
/proc/sys/crypto/fips_enabled
~]# i psec auto --up mysubnet
104 "mysubnet" #1: STATE_MAIN_I1: initiate
003 "mysubnet" #1: received Vendor ID payload [Dead Peer Detection]
106 "mysubnet" #1: STATE_MAIN_I2: sent MI2, expecting MR2
108 "mysubnet" #1: STATE_MAIN_I3: sent MI3, expecting MR3
003 "mysubnet" #1: received Vendor ID payload [CAN-IKEv2]
004 "mysubnet" #1: STATE_MAIN_I4: ISAKMP SA established
{auth=OAKLEY_RSA_SIG cipher=aes_128 prf=oakley_sha group=modp2048}
117 "mysubnet" #2: STATE_QUICK_I1: initiate
004 "mysubnet" #2: STATE_QUICK_I2: sent QI2, IPsec SA established tunnel
mode {ESP=>0x9414a615 <0x1a8eb4ef xfrm=AES_128-HMAC_SHA1 NATOA=none
NATD=none DPD=none}
~]# i psec auto --up mysubnet6
117 "mysubnet" #2: STATE_QUICK_I1: initiate
004 "mysubnet" #2: STATE_QUICK_I2: sent QI2, IPsec SA established tunnel
mode {ESP=>0x06fe2099 <0x75eaa862 xfrm=AES_128-HMAC_SHA1 NATOA=none
NATD=none DPD=none}
~]# i psec auto --up mytunnel
117 "mysubnet" #2: STATE_QUICK_I1: initiate
004 "mysubnet" #2: STATE_QUICK_I2: sent QI2, IPsec SA established tunnel
mode {ESP=>0x06fe209a <0x75eaa863 xfrm=AES_128-HMAC_SHA1 NATOA=none
NATD=none DPD=none}
2 .7 .6 .1 . Ope nswan を使ったサイト間 VPN の検証
パケットが VPN トンネル経由で送信されていることを確認する方法は、「Openswan を使ったホスト間
VPN の検証」 で説明されている手順と同じになります。
2.7.7. Openswan を使ったサイト間の単一トンネル VPN
サイト間のトンネルを構築する際には、ゲートウェイは公開 IP アドレスではなく、内部の IP アドレスを
使って相互に通信する必要が多くあります。これは、単一トンネルを使用することで実行できます。ホスト
名が west の左のホストの内部 IP アドレスが 19 2. 0 . 1. 254 で、ホスト名が east の右のホストの IP
アドレスが 19 2. 0 . 2. 254 の場合、以下の設定で単一トンネルが使用できます。
conn mysubnet
leftid=@ west.example.com
leftrsasigkey=0sAQOrlo+hOafUZDlCQmXFrje/oZm [...]
W2n417C/4urYHQkCvuIQ==
left=192.1.2.23
leftsourceip=192.0.1.254
leftsubnet=192.0.1.0/24
rightid=@ east.example.com
rightrsasigkey=0sAQO3fwC6nSSGgt64DWiYZzuHbc4 [...] D/v8t5YTQ==
right=192.1.2.45
101
Red Hat Ent erprise Linux 6 セキュリティガイド
rightsourceip=192.0.2.254
rightsubnet=192.0.2.0/24
auto=start
authby=rsasig
2.7.8. Openswan を使ったサブネット押し出し
IP sec は、ハブおよびスポークのアーキテクチャーで導入されることがよくあります。各リーフノードに
は、広い範囲の一部である IP 範囲があります。各リーフはハブ経由で相互に通信します。これは、サブ
ネット押し出しと呼ばれます。下記の例では、ヘッドオフィスを 10 . 0 . 0 . 0 /8 で設定し、2 つのブラン
チでは小型の /24 サブネットを使用します。
ヘッドオフィスでは以下のようになります。
conn branch1
left=1.2.3.4
leftid=@ headoffice
leftsubnet=0.0.0.0/0
leftrsasigkey=0sA[...]
#
right=5.6.7.8
rightid=@ branch1
righsubnet=10.0.1.0/24
rightrsasigkey=0sAXXXX[...]
#
auto=start
authby=rsasigkey
conn branch2
left=1.2.3.4
leftid=@ headoffice
leftsubnet=0.0.0.0/0
leftrsasigkey=0sA[...]
#
right=10.11.12.13
rightid=@ branch2
righsubnet=10.0.2.0/24
rightrsasigkey=0sAYYYY[...]
#
auto=start
authby=rsasigkey
「branch1」 オフィスでは、同一の接続を使用します。さらに、パススルー (pass-through) 接続を使用し
て、ローカル LAN トラフィックをトンネル経由の送信から除外します。
conn branch1
left=1.2.3.4
leftid=@ headoffice
leftsubnet=0.0.0.0/0
leftrsasigkey=0sA[...]
#
right=10.11.12.13
rightid=@ branch2
righsubnet=10.0.1.0/24
rightrsasigkey=0sAYYYY[...]
102
⁠第2 章 ネットワークのセキュリティ保護
#
auto=start
authby=rsasigkey
conn passthrough
left=1.2.3.4
right=0.0.0.0
leftsubnet=10.0.1.0/24
rightsubnet=10.0.1.0/24
authby=never
type=passthrough
auto=route
2.7.9. Openswan を使ったロードウォリアーアプリケーション
ロードウォリアーとは、ノート PC などのモバイルクライアントを使用する移動ユーザーのことで、これら
のクライアントには動的に IP アドレスが割り当てられます。これは、証明書を使って認証します。
サーバー上で次を行います。
conn roadwarriors
left=1.2.3.4
# if access to the LAN is given, enable this
#leftsubnet=10.10.0.0/16
leftcert=gw.example.com
leftid=%fromcert
right=%any
# trust our own Certificate Agency
rightca=%same
# allow clients to be behind a NAT router
rightsubnet=vhost:%priv,%no
authby=rsasigkey
# load connection, don't initiate
auto=add
# kill vanished roadwarriors
dpddelay=30
dpdtimeout=120
dpdaction=%clear
ロードウォリアーのデバイスであるモバイルクライアント上では、上記の接続に多少変更を加えて使用しま
す。
conn roadwarriors
# pick up our dynamic IP
left=%defaultroute
leftcert=myname.example.com
leftid=%fromcert
# right can also be a DNS hostname
right=1.2.3.4
# if access to the remote LAN is required, enable this
#rightsubnet=10.10.0.0/16
# trust our own Certificate Agency
103
Red Hat Ent erprise Linux 6 セキュリティガイド
rightca=%same
authby=rsasigkey
# Initiate connection
auto=start
2.7.10. その他のリソース
以下のソースでは、O p en swan および i psec デーモンに関する追加リソースが提供されています。
2 .7 .1 0 .1 . インストールされているドキュメント
i psec(8) man ページ — i psec のコマンドオプションを説明しています。
i psec. co nf(5) man ページ — i psec の設定情報が含まれています。
i psec. secrets(5) man ページ — i psec. secrets ファイルの形式を説明しています。
i psec_auto (8) man ページ — 鍵の自動交換を使用して確立された O p en swan IP sec 接続を操作
する au t o コマンドラインクライアントの使用方法を説明しています。
i psec_rsasi g key(8) man ページ — RSA 署名鍵の生成に使用するツールを説明しています。
openswan-doc パッケージからの /usr/share/d o c/o penswan-version/R EAD ME. nss —
O p en swan pl uto デーモンの NSS 暗号化ライブラリーで使用する生 RSA 鍵と証明書の使用に関す
るコマンドを説明しています。
yu m in st all で o penswan-d o c パッケージをインストールすると、追加資料が利用可能になりま
す。
2 .7 .1 0 .2 . 役に立つ We b サイト
h t t p ://www.o p en swan .o rg
アップストリームプロジェクトの Web サイトです。
h t t p ://www.mo z illa.o rg /p ro ject s/secu rit y/p ki/n ss/
Network Security Services (NSS) プロジェクトです。
2.8. ファイアウォール
情報セキュリティは、製品ではなくプロセスであると一般的に考えられています。通常、標準的なセキュリ
ティ実装ではある種の専用メカニズムが用いられており、これでアクセス権限の制御や、識別/追跡可能な
権限のあるユーザーへのネットワークリソースの制限が行われます。Red Hat Enterprise Linux には、管理
者とセキュリティエンジニアを支援する、ネットワークレベルのアクセス制御問題に対処するいくつかの
ツールが含まれています。
ファイアウォールは、ネットワークセキュリティ実装の中心となるコンポーネントです。ホームユーザー
向けの PC 1 台の保護から、重要な企業情報を安全に保護するデータセンターソリューションまでの市場の
あらゆるレベルにファイアウォールソリューションを提供しているベンダーがいくつかあります。ファイ
アウォールには、Cisco、Nokia、Sonicwall などが提供しているファイアウォールアプライアンスなど、
スタンドアロンのハードウェアソリューションもあります。また、Checkpoint、McAfee、Symantec など
のベンダーが提供する家庭用やビジネス用に開発された専用ソフトウェアのファイアウォールソリュー
ションもあります。
104
⁠第2 章 ネットワークのセキュリティ保護
ファイアウォールがハードウェアかソフトウェアであるかに加えて、ファイアウォールの機能方法の違い
もソリューションを区別するものとなります。表2.6「ファイアウォールの種類」は、一般的な 3 つのファ
イアウォールのタイプとその機能について説明しています。
表2.6 ファイアウォールの種類
方法
説明
利点
欠点
NAT
Network Address Translation
(NAT) は、プライベート IP サ
ブネットワークを、1 つまた
は小規模のパブリック IP ア
ドレスの集合の後ろに置き、
すべての要求をいくつかの
ソースではなく 1 つのソース
にマスカレード (変換) しま
す。Linux カーネルには
Netfilter カーネルサブシステ
ムによる組み込み NAT 機能が
あります。
LAN 上のマシンに透過的に設
定可能。
ユーザーがファイアウォール
の外側にあるサービスに接続
すると悪意あるアクティビ
ティを防ぐことができない。
パケットフィルタリングファ
イアウォールは、LAN を通過
する各データパケットを読み
込みます。ヘッダー情報に基
づいてパケットを読み込んで
から処理を行い、ファイア
ウォール管理者により実装さ
れたプログラム可能なルール
セットに基づいてパケットを
フィルターします。Linux
カーネルには Netfilter カーネ
ルサブシステムによる組み込
みパケットフィルタリング機
能があります。
i ptabl es フロントエンド
ユーティリティーでカスタマ
イズ可能。
パケッ
トフィ
ルター
多くのマシンとサービスを 1
つ以上の外部 IP アドレスの後
方に置いて保護することで、
管理業務が簡素化されます。
LAN までの/からのユーザーア
クセス制限が、NAT ファイア
ウォール/ゲートウェイ上の
ポート開閉により設定できま
す。
すべてのネットワーク活動が
アプリケーションレベルでは
なく、ルーターレベルでフィ
ルターされるため、クライア
ント側でのカスタマイズが不
要。
パケットがプロキシ経由で送
信されないため、クライアン
トからリモートホストへのダ
イレクト接続によりネット
ワークのパフォーマンスが高
速になります。
プロキシファイアウォールの
ようなコンテンツに対するパ
ケットをフィルターできな
い。
プロトコル層でパケット処理
をするが、アプリケーション
層ではパケットをフィルター
できない。
IP マスカレードまたはローカ
ルサブネットおよび D MZ
ネットワークと使用されてい
る場合、複雑なネットワーク
アーキテクチャーのためにパ
ケットフィルタリングのルー
ル設定が難しくなる可能性が
ある。
105
Red Hat Ent erprise Linux 6 セキュリティガイド
方法
説明
利点
欠点
プロキ
シ
プロキシファイアウォール
は、LAN クライアントからプ
ロキシマシンへの特定のプロ
トコルまたは種類の要求をす
べてフィルターします。次
に、その要求をローカルクラ
イアントに代わってインター
ネットに送ります。プロキシ
マシンは、悪意あるリモート
ユーザーと内部ネットワーク
クライアントマシン間のバッ
ファとして機能します。
LAN の外側で機能するアプリ
ケーションとプロトコルを管
理者が制御できる。
プロキシはアプリケーション
固有 (HTTP、Telnet など) ま
たはプロトコル制限された場
合が多い (多くのプロキシは
TCP 接続のサービスでのみ機
能)。
プロキシサーバーの中には、
頻繁にアクセスするデータを
要求するのにインターネット
接続を使うのではなく、ロー
カルにキャッシュできるもの
もあります。これにより、帯
域の消費量を低減できます。
プロキシサービスはログ記録
を取り、厳重に監視すること
ができるので、ネットワーク
上のリソース利用を厳しく制
御することができる。
アプリケーションサービスは
プロキシの後方で実行できな
いため、アプリケーション
サーバーには別の形態のネッ
トワークセキュリティを使用
する必要がある。
すべての要求と送信が、クラ
イアントからリモートサービ
スに直接実行されるのではな
く、1 つのソースからやりと
りされるため、プロキシが
ネットワークのボトルネック
になる可能性がある。
2.8.1. Net filt er と IPT ables
Linux カーネルは、Netfilter と呼ばれる強力なネットワークサブシステムを特長としています。Netfilter サ
ブシステムは、NAT および IP マスカレードのサービスのほかにも、ステートフルまたはステートレスのパ
ケットフィルタリング機能を提供します。また、Netfilter には、高ルーティングや接続状態の高度な管理の
ために IP ヘッダー情報を 分割 ( マングル: mangle) する機能もあります。Netfilter は i ptabl es ツールを
使って制御されます。
2 .8 .1 .1 . IPT able s の概要
Netfilter の強力な機能と柔軟性は、i ptabl es 管理ツールを使って実行されます。このコマンドラインツー
ルは、その前身である i pchai ns (Linux カーネル 2.4 以上で Netfilter/iptables に置き換えられる) の構文
と似ています。
i ptabl es は、Netfilter サブシステムを使用してネットワークの接続、検査および処理などを強化しま
す。i ptabl es は、高度なロギング、プレルーティングとポストルーティングの動作、ネットワークアド
レス変換およびポート転送機能すべてをオールインワンの 1 つのコマンドラインインターフェースで実現し
ます。
本セクションでは、i ptabl es の概要を説明します。詳細は、「IPTables」を参照してください。
2.8.2. 基本的なファイアウォールの設定
ビルの防火壁 (ファイアウォール) が火が拡散するのを防ぐのと同様に、コンピューターのファイアウォー
ルは悪意のあるソフトウェアがコンピューターに拡散することを防ぐためのものです。また、許可されてい
ないユーザーによるコンピューターへのアクセスの防止にも役立ちます。
デフォルトの Red Hat Enterprise Linux インストールでは、ファイアウォールはコンピューターまたは
ネットワークと、信頼できないネットワーク (インターネットなど) との間に置かれます。ファイアウォー
ルは、リモートユーザーがコンピューター上でアクセス可能なサービスを決定します。ファイアウォールを
適切に設定すると、システムのセキュリティが大幅に向上します。インターネットに接続する Red Hat
Enterprise Linux システムすべてに対してファイアウォールを設定することが推奨されます。
106
⁠第2 章 ネットワークのセキュリティ保護
2 .8 .2 .1 . Fire wall Co nfigurat io n T o o l
Red Hat Enterprise Linux インストールの ファイアウォールの設定 画面には、基本的なファイアウォー
ルを有効にするオプションのほかにも、特定のデバイス、受信サービスおよびポートを許可するオプション
が提供されています。
この設定は、インストール後に Firewall C o n f ig u rat io n T o o l を使用して変更することができます。
このアプリケーションを起動するには、パネルから システム → 管理 → ファイアーウォール を選択する
か、シェルプロンプトに system-co nfi g -fi rewal l を入力します。
図2.5 Firewall C o n f ig u rat io n T o o l
107
Red Hat Ent erprise Linux 6 セキュリティガイド
注記
Firewall C o n f ig u rat io n T o o l では、基本的なファイアウォールのみが設定されます。システム
でより複雑なルールが必要となる場合は、i ptabl es の特定ルールの設定方法について
「IPTables」を参照してください。
R ed H at En t erp rise Lin u x 6 .5 では、デフォルトの設定が適用できない場合、i ptabl es サー
ビスや i p6 tabl es サービスがフォールバックのファイアウォール設定を提供しま
す。/etc/sysco nfi g /i ptabl es にあるファイアウォールルールの適用が失敗した場合、
フォールバックファイルが存在していればそのファイルが適用されます。このフォールバックファ
イルの名前は /etc/sysco nfi g /i ptabl es. fal l back とな
り、/etc/sysco nfi g /i ptabl es と同じファイル形式になります。フォールバックファイルの
適用も失敗する場合は、 それ以上のフォールバックはありません。フォールバックファイルを作成
するには、標準のファイアウォール設定ツールを使用し、そのファイルの名前を変更してフォール
バックファイルとするか、ファイルをコピーしてフォールバックファイルとします。
i p6 tabl es サービスでは、上記の例で i ptabl es をすべて i p6 tabl es に置き換えます。
警告
すでに (「IPTables」 にあるように) 直接 i ptabl es ユーティリティーを使用してカスタムのパ
ケットフィルタリングルールを設定してある場合は、system-co nfi g -fi rewal l ユーティリ
ティーを実行すると、これら既存のカスタムルールが即座に消去されます。
2 .8 .2 .2 . ファイアウォールの有効化および無効化
ファイアウォールで以下のいずれかのオプションを選択します。
無効 — ファイアウォールを無効にしてシステムへの完全なアクセスを提供し、セキュリティチェック
を行いません。これは、(インターネットではなく) 信頼されたネットワーク上で稼働している
か、i ptabl es コマンドラインツールを使用してカスタム化したファイアウォールを設定する必要があ
る場合にのみ選択してください。
警告
ファイアウォールの設定とカスタマイズされたファイアウォールのルールは
/etc/sysco nfi g /i ptabl es ファイルに保存されます。無効 を選択して O K を選択する
と、これらの設定とファイアウォールのルールは失われます。
有効 — このオプションを設定すると、システムは、D NS 応答や D HCP 要求などのアウトバウンド要
求への応答ではない受信接続を拒否します。該当マシンで実行されているサービスへのアクセスが必要
な場合は、特定のサービスがファイアウォールを通過できるように選択することが可能です。
使用中のシステムがインターネットに接続されていて、サーバーを実行する予定がない場合、これが最
も安全なオプションになります。
2 .8 .2 .3. 信頼できるサービス
108
⁠第2 章 ネットワークのセキュリティ保護
信頼できるサービス の一覧にあるオプションを有効にすると、指定されたサービスがファイアウォールを
通過できるようになります。
WWW (HT T P )
HTTP プロトコルは、Web ページに対応するために Apache (およびその他の Web サーバー) が
使用します。Web サーバーを一般利用可能とする予定であれば、このチェックボックスを選択し
ます。このオプションは、ページをローカルに表示したり、Web ページを開発したりする場合に
は不要です。このサービスでは、httpd パッケージがインストールされていることが前提になり
ます。
WWW (HT T P ) を有効にしても、HTTPS (SSL バージョンの HTTP) 用のポートは開きません。
このサービスが必要な場合は、Secure WWW (HT T P S) チェックボックスを選択します。
FT P
FTP プロトコルは、ネットワーク上のマシン間でファイルを転送するために使用されます。FTP
サーバーを一般利用可能とする予定であれば、このチェックボックスを選択します。このサービ
スでは vsftpd パッケージがインストールされていることが前提になります。
SSH
Secure Shell (SSH) は、リモートマシンにログインしてコマンドを実行するためのツールです。
SSH を使ったマシンへのリモートアクセスを許可するには、このチェックボックスを選択しま
す。このサービスでは、o penssh-server パッケージがインストールされている必要がありま
す。
T el net
Telnet はリモートマシンにログインするためのプロトコルです。Telnet 通信は暗号化されず、
ネットワーク上のなりすましに対するセキュリティ対策は提供されません。着信 Telnet アクセス
を許可することは推奨されません。Telnet によるマシンへのリモートアクセスを許可するには、
このチェックボックスを選択します。このサービスでは、tel net-server パッケージがインス
トールされていることが前提になります。
Mai l (SMT P )
SMTP は、メール配信のためにリモートホストがマシンに直接接続することを許可するプロトコ
ルです。POP3 や IMAP を使って ISP のサーバーからメールを収集しているか、fetchmai l の
ようなツールを使用している場合には、このサービスを有効にする必要はありません。マシンへ
のメール配信を許可するには、このチェックボックスを選択します。SMTP サーバーが適切に設
定されていないと、リモートマシンがご利用のサーバーを使用してスパムを送る可能性があるこ
とに注意してください。
NFS4
Network File System (NFS) は *NIX システムで一般的に使われているファイル共有プロトコルで
す。このプロトコルのバージョン 4 は、それ以前のバージョンよりも安全です。システムにある
ファイルやディレクトリーを他のネットワークユーザーと共有する場合に、このチェックボック
スを選択します。
Samba
Samba は Microsoft の専用 SMB ネットワークプロトコルの実装です。ファイル、ディレクト
リーまたはローカル接続プリンターを Microsoft Windows マシンと共有する必要がある場合は、
このチェックボックスを選択します。
2 .8 .2 .4 . 他のポート
109
Red Hat Ent erprise Linux 6 セキュリティガイド
Firewall C o n f ig u rat io n T o o l には、i ptabl es によって信頼される個別 IP ポートを指定するための
O ther po rts (他のポート ) セクションがあります。例えば、IRC と Internet printing protocol (IPP)
がファイアウォールを通過できるようにするには、O ther po rts (他のポート ) セクションに以下を追
加します。
19 4 : tcp,6 31: tcp
2 .8 .2 .5 . 設定の保存
変更を保存するには O K をクリックして、ファイアウォールを有効または無効にします。ファイアウォー
ルを有効にする が選択されている場合、選択されたオプションが i ptabl es コマンドに変換され、
/etc/sysco nfi g /i ptabl es ファイルに書き込まれます。選択されたオプションの保存後すぐにファ
イアウォールが有効になるように、i ptabl es サービスも開始されます。ファイアウォールを無効化す
る が選択されると、 /etc/sysco nfi g /i ptabl es ファイルが削除され、 i ptabl es サービスは直ち
に停止されます。
選択されたオプションは、アプリケーションの次回起動時に設定を復元できるように
/etc/sysco nfi g /system-co nfi g -fi rewal l ファイルにも書き込まれます。このファイルは手動
では編集しないでください。
ファイアウォールを即座に有効にしても、 i ptabl es サービスはブート時に自動的に開始するようには設
定されません。詳細は、「IPTables サービスの有効化」を参照してください。
2 .8 .2 .6 . IPT able s サービスの有効化
ファイアウォールのルールは、i ptabl es サービスが実行されている場合にのみ有効です。サービスを手
動で開始するには、以下のコマンドを root ユーザーとして実行します。
~]# servi ce i ptabl es restart
iptables: Applying firewall rules:
[
OK
]
i ptabl es がシステムのブート時に確実に開始されるようにするには、以下のコマンドを使用します。
~]# chkco nfi g --l evel 34 5 i ptabl es o n
2.8.3. IPT ables の使用
i ptabl es を使用する最初にステップとして、i ptabl es サービスを開始します。i ptabl es サービス
を開始するには、以下のコマンドを root ユーザーとして実行します。
~]# servi ce i ptabl es restart
iptables: Applying firewall rules:
[
OK
]
注記
i ptabl es サービスのみを使用する場合には、i p6 tabl es をオフにすることができま
す。i p6 tabl es サービスを無効にする場合には、必ず IPv6 ネットワークも無効にするようにして
ください。対応するファイアウォールがない状態でネットワークデバイスを有効にしないでくださ
い。
システムのブート時に i ptabl es の起動をデフォルトで強制するには、以下のコマンドを root ユーザーと
して実行します。
110
⁠第2 章 ネットワークのセキュリティ保護
~]# chkco nfi g --l evel 34 5 i ptabl es o n
これにより、システムがランレベル 3、4、または 5 にブートされる際には常に i ptabl es が強制的に起
動します。
2 .8 .3.1 . IPT able s コマンド構文
以下のサンプルの i ptabl es コマンドは、基本的なコマンド構文を示しています。
i ptabl es -A <chain> -j <target>
-A オプションは、<chain> に追加されるルールを指定します。それぞれのチェーンは 1 つ以上のルールか
ら構成されているため、ルールセットとも呼ばれます。
INPUT、OUTPUT、および FORWARD という 3 つの組み込みチェーンがあります。これらのチェーンは
永続するもので、削除することはできません。チェーンはパケットを処理するポイントを指定します。
-j <target> オプションは、ルールのターゲット、つまりパケットがルールに一致した場合に何が実行
されるかを指定します。組み込まれたターゲットの例には、ACCEPT、 D ROP および REJECT がありま
す。
利用可能なチェーン、オプションおよびターゲットに関する詳細は、 i ptabl es man ページを参照して
ください。
2 .8 .3.2 . 基本的なファイアウォールポリシー
基本的なファイアウォールポリシーを確立すると、より詳細なユーザー定義ルールを作成する基礎が形成さ
れます。
各 i ptabl es チェーンは、ファイアウォールのルールセット全体を定義するための、デフォルトポリシー
とデフォルトポリシーと連動するルール (ルールなしの場合もあり) で構成されています。
チェーンのデフォルトポリシーは、D ROP または ACCEPT のいずれかです。セキュリティ志向の管理者
はデフォルトポリシーに D ROP を実装するのが一般的であり、またケースバイケースで特定のパケットの
みを許可します。例えば、以下のポリシーは、ネットワークゲートウェイですべての着信パケットと発信パ
ケットをブロックします。
~]# i ptabl es -P INP UT D R O P
~]# i ptabl es -P O UT P UT D R O P
さらに、不注意による内部クライアントのインターネット接続を制限するには、すべての転送パケッ
ト(ファイアウォールから宛先ノードにルーティングされるネットワークトラフィック) を拒否することも
推奨されます。
~]# i ptabl es -P FO R WAR D D R O P
それぞれのチェーンのデフォルトポリシーを設定した後に、特定のネットワークについてのルールやセ
キュリティ要件を追加で作成し、保存することができます。
以下のセクションでは、i ptabl es ルールを保存する方法を説明し、i ptabl es ファイアウォールを構築
する過程で実装する可能性のあるいくつかのルールの概要を示します。
2 .8 .3.3. IPT able s ルールの保存と復元
111
Red Hat Ent erprise Linux 6 セキュリティガイド
i ptabl es への変更は一時的な変更です。システムが再起動するか、またはi ptabl es サービスが再起動
する場合に、ルールは自動的にフラッシュされ、リセットされます。ルールを保存して i ptabl es サービ
スの起動時にルールが読み込まれるようにするには、以下のコマンドを root ユーザーとして実行します。
~]# servi ce i ptabl es save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[
OK
]
ルールはファイル /etc/sysco nfi g /i ptabl es に保存され、サービスの起動時またはマシンの再起動
時に常に適用されます。
2.8.4 . 一般的な IPT ables によるフィルタリング
リモート攻撃者による LAN へのアクセスを防ぐことは、ネットワークセキュリティの最も重要な側面で
す。厳しいファイアウォールルールで、悪意のあるリモートユーザーから LAN の完全性を保護する必要が
あります。
しかし、デフォルトポリシーですべての着信パケット、発信パケットおよび転送パケットをブロックする
ように設定すると、ファイアウォール/ゲートウェイと内部 LAN ユーザーが相互に通信したり、外部リソー
スと通信することができなくなります。
ユーザーがネットワーク関連の機能を実行し、ネットワークアプリケーションを使用できるようにするに
は、管理者は通信用に特定のポートを開く必要があります。
例えば、 ファイアウォール上でポート80 へのアクセスを許可するには、以下のルールを追加します。
~]# i ptabl es -A INP UT -p tcp -m tcp --d po rt 80 -j AC C EP T
これにより、標準的なポート 80 を使用して通信する Web サイトをブラウズできるようになります。セ
キュアな Web サイト (https://www.example.com/など) へのアクセスを許可するには、 以下のようにポー
ト 443 へのアクセスも提供する必要があります。
~]# i ptabl es -A INP UT -p tcp -m tcp --d po rt 4 4 3 -j AC C EP T
重要
i ptabl es ルールセットを作成する際、その順序は重要になります。
例えば、ルールが 192.168.100.0/24 サブネットからのパケットをすべて破棄することを指定してお
り、192.168.100.13 (破棄したサブネットに含まれる) からのパケットを許可するルールがこれに続
く場合、この 2 番目のルールは無視されます。
そのため、192.168.100.13 からのパケットを許可するルールを設定してから、サブネットの残りを
破棄するルールを設定する必要があります。
既存のチェーンで特定の位置にルールを挿入するには、-I オプションを使用します。例えば、以下
のようになります。
~]# i ptabl es -I INP UT 1 -i l o -p al l -j AC C EP T
このルールは、ローカルのループバックデバイスのトラフィックを許可するために INPUT チェーン
の最初のルールとして挿入されます。
112
⁠第2 章 ネットワークのセキュリティ保護
LAN へのリモートアクセスが必要になることも時にあるでしょう。SSH などのセキュアなサービスを使用
して、LAN サービスへの暗号化されたリモート接続を確立することができます。
PPP ベースのリソース (モデムバンクまたは大量の ISP アカウントなど)がある管理者の場合、ダイアル
アップアクセスを使用して、ファイアウォールのバリアを安全に回避することができます。モデムは直接接
続されているので、これは一般的にはファイアウォール/ゲートウェイの後ろで行われます。
しかし、ブロードバンド接続を使用しているリモートユーザーの場合には、特殊な方法が適用できます。リ
モート SSH クライアントからの接続を受け入れるように i ptabl es を設定できます。例えば、以下の
ルールを使用してリモート SSH のアクセスを許可できます。
~]# i ptabl es -A INP UT -p tcp --d po rt 22 -j AC C EP T
~]# i ptabl es -A O UT P UT -p tcp --spo rt 22 -j AC C EP T
これらのルールは、インターネットまたはファイアウォール/ゲートウェイに直接接続されている単一 PC
などの個別システムへの受信アクセスと送信アクセスを許可します。しかしこれらのルールは、ファイア
ウォール/ゲートウェイの後ろにあるノードがこれらのサービスにアクセスすることを許可しません。これ
らのサービスへの LAN アクセスを許可するには、i ptabl es のフィルタリングルールと共に Network
Address Translation (NAT) を使用することができます。
2.8.5. FO R WAR D および NAT ルール
ほとんどの ISP では、取引先の組織に提供する一般に迂回可能な IP アドレスの数は制限しています。
そのため、LAN 上のすべてのノードにパブリック IP アドレスを与えずに、インターネットサービスへのア
クセスを共有する代替方法を管理者が見つける必要があります。最も一般的な方法はプライベート IP アド
レスの 使用で、LAN 上のすべてのノードが内外のネットワークサービスに適切にアクセスできるようにな
ります。
エッジルーター (ファイアウォールなど) はインターネットからの着信通信を受け取り、パケットを目的の
LAN ノードに送ります。同時に、ファイアウォール/ゲートウェイは LAN ノードからの発信要求をリモート
インターネットサービスに送ります。
このネットワークトラフィックの転送は時に危険を伴うことがあり、特に最新のクラッキングツールを利用
できる場合には危険性が高まります。このツールを使うと、内部 IP アドレスになりすますことができ、リ
モート攻撃者のマシンを LAN 上のノードとして動作させることができます。
これを防ぐために、i ptabl es はネットワークリソースの変則的使用を防ぐために実装されるルーティン
グポリシーと転送ポリシーを提供します。
FO R WAR D チェーンを使うと、管理者は LAN 内でパケットのルーティングを制御できるようになります。
例えば、LAN 全体を対象にした転送を許可するには、以下のルールを使用します (ファイアウォール/ゲート
ウェイに eth1 の内部 IP アドレスが割り当てられていると仮定します)。
~]# i ptabl es -A FO R WAR D -i eth1 -j AC C EP T
~]# i ptabl es -A FO R WAR D -o eth1 -j AC C EP T
このルールにより、ファイアウォール/ゲートウェイの外側にあるシステムが内部ネットワークにアクセス
できるようになります。また、ゲートウェイは、eth1 デバイスを経由するすべてのパケットを通過させ、
パケットを LAN ノードから目的の宛先ノードにルーティングします。
113
Red Hat Ent erprise Linux 6 セキュリティガイド
注記
Red Hat Enterprise Linux カーネルにおける IPv4 ポリシーは、IP 転送のサポートをデフォルトで無
効にします。これは、Red Hat Enterprise Linux を稼働するマシンが専用のエッジルーターとして
機能することを防ぎます。IP 転送を有効にするには、以下のコマンドを root で実行します。
~]# sysctl -w net. i pv4 . i p_fo rward = 1
net.ipv4.ip_forward = 1
この設定変更は、現行セッションにおいてのみ有効です。再起動やネットワークサービスの再起動
の後には永続しません。IP 転送を永続的に設定するには、以下のように /etc/sysctl . co nf
ファイルを編集します。
以下の行を見つけます。
net.ipv4.ip_forward = 0
以下のように編集します。
net.ipv4.ip_forward = 1
sysctl . co nf ファイルへの変更を有効にするには、以下のコマンドを root ユーザーとして実行し
ます。
~]# sysctl -p /etc/sysctl . co nf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0[ 出力は省略されています]
2 .8 .5 .1 . ポストルーティングと IP マスカレード
ファイアウォールの内部 IP デバイスを経由して転送されたパケットが受け入れられると、LAN ノードの相
互通信が可能になります。ただし、インターネットへの外部通信はできません。
プライベート IP アドレスを持つ LAN ノードに外部のパブリックネットワークとの通信を許可するには、IP
マスカレード用にファイアウォールを設定します。IP マスカレードは、LAN ノードからの要求をファイア
ウォールの外部デバイス (この場合は eth0) の IP アドレスでマスクします。
~]# i ptabl es -t nat -A P O ST R O UT ING -o eth0 -j MASQ UER AD E
上記のルールでは、NAT パケットのマッチングテーブル (-t nat) を使用して、ファイアウォールの外部
ネットワークデバイス (-o eth0 ) に NAT 用の組み込み POSTROUTING チェーン (-A P O ST R O UT ING )
を指定しています。
POSTROUTING は、パケットがファイアウォールの外部デバイスを離れる際にパケットが変更されること
を許可します。
-j MASQ UER AD E のターゲットは、ノードのプライベート IP アドレスを、ファイアウォール/ゲートウェ
イの外部 IP アドレスでマスクするために指定されます。
2 .8 .5 .2 . プレルーティング
114
⁠第2 章 ネットワークのセキュリティ保護
内部ネットワーク上にサーバーがあり、このサーバーを外部から利用可能としたい場合、NAT の
PREROUTING チェーンの -j D NAT ターゲットを使用して、内部サービスへの接続を要求する着信パ
ケットを転送する宛先 IP アドレスとポートを指定することができます。
例えば、着信 HTTP 要求を 172.31.0.23 の専用 Apache HTTP Server に転送する場合は、以下のコマンド
を使用します。
~]# i ptabl es -t nat -A P R ER O UT ING -i eth0 -p tcp --d po rt 80 -j D NAT -to 172. 31. 0 . 23: 80
このルールは、NAT テーブルが組み込み PREROUTING チェーンを使って、リストされている宛先 IP アド
レス 172.31.0.23 にのみ着信 HTTP 要求を転送することを指定します。
注記
FORWARD チェーンに D ROP のデフォルトポリシーが設定されている場合、宛先の NAT ルーティ
ングが可能になるように、すべての着信 HTTP 要求を転送するルールを追加しなければなりませ
ん。これを実行するには、以下のコマンドを root ユーザーとして実行します。
~]# i ptabl es -A FO R WAR D -i eth0 -p tcp --d po rt 80 -d 172. 31. 0 . 23 j AC C EP T
このルールは、すべての着信 HTTP 要求を、ファイアウォールから目的の宛先 (ファイアウォール
の後ろにある Apache HTTP Server) に転送します。
2 .8 .5 .3. DMZ と IPT able s
i ptabl es ルールを作成して、非武装地帯 (D MZ ) にある専用の HTTP や FTP サーバーなどの特定マシン
にトラフィックを送信できます。D MZ は、インターネットなどの一般のキャリアのネットワーク上でサー
ビスを提供することに特化した特殊なローカルサブネットワークです。
例えば、10.0.4.2 (LAN の 192.168.1.0/24 範囲外) にある専用の HTTP サーバーに着信 HTTP 要求をルー
ティングするためのルールを設定するため、NAT は P R ER O UT ING テーブルを使って、パケットを適切な
宛先に転送します。
~]# i ptabl es -t nat -A P R ER O UT ING -i eth0 -p tcp --d po rt 80 -j D NAT \
--to -d esti nati o n 10 . 0 . 4 . 2: 80
このコマンドを使うと、LAN 外からのポート 80 へのすべての HTTP 接続が、内部ネットワークの他の部
分から分離されたネットワーク上の HTTP サーバーにルート指定されます。ネットワークセグメントのこ
の形態は、ネットワーク上のマシンへの HTTP 接続を許可するよりも安全であることが明らかになってい
ます。
HTTP サーバーがセキュアな接続を受け付けるよう設定されている場合、ポート443 も転送する必要があり
ます。
2.8.6. 悪意のあるソフトウェアと偽装された IP アドレス
詳細なルールを作成すると、LAN 内の特定のサブネットまたは特定のノードへのアクセスを制御することが
できます。また、トロイの木馬、ワーム、およびクライアント/サーバーのウイルスなどの特定の疑わしいア
プリケーションやプログラムがサーバーに接触することを制限することもできます。
115
Red Hat Ent erprise Linux 6 セキュリティガイド
例えば、一部のトロイの木馬は 31337 から 31340 までのポート (クラッキング用語で elite ポートと呼ばれ
る) にあるサービスについてネットワークをスキャンします。
これらの非標準的なポート経由で通信することが許可されたサービスはないため、それらをブロックしてし
まうことで、ネットワーク上の感染の恐れのあるノードがリモートマスターサーバーと独自に通信するリス
クを軽減することができます。
以下のルールは、ポート 31337 を使用しようとするすべての TCP トラフィックを接続します。
~]# i ptabl es -A O UT P UT -o eth0 -p tcp --d po rt 31337 --spo rt 31337 -j
DROP
~]# i ptabl es -A FO R WAR D -o eth0 -p tcp --d po rt 31337 --spo rt 31337 -j
DROP
また、LAN に潜入するためにプライベート IP アドレス範囲になりすましを試みる外部接続をブロックする
こともできます。
例えば、LAN が 192.168.1.0/24 範囲を使用している場合、インターネットにつながっているネットワーク
デバイス (eth0 など) に対し、LAN の IP 範囲にあるアドレスを持つ、そのデバイスへのパケットすべてを
破棄するように指示するルールを設計できます。
デフォルトポリシーでは転送パケットを拒否することが推奨されているため、外部につながっているデバイ
ス (eht0) へのいずれの偽装された IP アドレスも自動的に拒否されます。
~]# i ptabl es -A FO R WAR D -s 19 2. 16 8. 1. 0 /24 -i eth0 -j D R O P
注記
appended ルールを扱う際には、D R O P とR EJEC T ターゲットを区別する必要があります。
R EJEC T ターゲットは、アクセスを拒否し、サービスに接続するユーザーにco nnecti o n
refused エラーを返します。D R O P ターゲットは、名前が示すように、警告なしにパケットを破棄
します。
管理者は、各自の裁量でこれらのターゲットを使用できます。
2.8.7. IPT ables と接続追跡 (Connect ion T racking)
サービスへの接続の検査と制限は、接続状態に基づいて行うことができます。i ptabl es 内のモジュール
は、接続追跡 (connection tracking) と呼ばれる方法を使用して、着信接続についての情報を保存します。以
下の接続状態に基づいてアクセスを許可または拒否することができます。
NEW — HTTP 要求などの新規接続を要求するパケット
EST ABLISHED — 既存の接続の一部であるパケット
R ELAT ED — 新規接続を要求しているが、既存の接続の一部であるパケット。例えば、FTP は接続を確
立するためにポート 21 を使用しますが、データは異なるポート (通常はポート 20) で転送されます。
INVALID — 接続追跡テーブルの接続の一部ではないパケット
プロトコル自体がステートレスな場合でも (UD P など)、 i ptabl es の接続追跡のステートフルな機能を任
意のネットワークプロトコルと共に使用することができます。以下の例は、既存の接続と関連付けられたパ
ケットのみを転送するために接続追跡を使用するルールを示しています。
116
⁠第2 章 ネットワークのセキュリティ保護
~]# i ptabl es -A FO R WAR D -m state --state EST ABLISHED ,R ELAT ED -j AC C EP T
2.8.8. IPv6
IPv6 と呼ばれる次世代インターネットプロトコルの導入により、IPv4 (または IP) の 32 ビットアドレスの
限界を超えるようになりました。IPv6 は 128 ビットアドレスをサポートするため、IPv6 対応のキャリア
のネットワークは IPv4 よりも多くのルート可能なアドレスを割り当てることができます。
Red Hat Enterprise Linux は、Netfilter 6 サブシステムと i p6 tabl es コマンドを使用する IPv6 ファイア
ウォールのルールをサポートしています。Red Hat Enterprise Linux 6 では、IPv4 と IPv6 のサービスがど
ちらもデフォルトで有効になっています。
i p6 tabl es コマンドの構文は、128 ビットアドレスをサポートする点を別にすれば、すべての点で
i ptabl es と同じです。例えば、IPv6 対応のネットワークサーバーで SSH 接続を有効にするには、以下
のコマンドを実行します。
~]# i p6 tabl es -A INP UT -i eth0 -p tcp -s 3ffe: ffff: 10 0 : : 1/128 --d po rt
22 -j AC C EP T
IPv6 ネットワークの詳細については、http://www.ipv6.org/ にある IPv6 情報ページを参照してください。
2.8.9. IPT ables
Red Hat Enterprise Linux には、ネットワーク パケットフィルタリングの高度なツールが含まれていま
す。パケットフィルタリングとは、ネットワークパケットがカーネル内のネットワークスタックに入る、
移動する、または出るときに、これらを制御するプロセスです。カーネルの 2.4 より前のバージョンはパ
ケットフィルタリングに i pchai ns を使用して、パケットに適用されるルールのリストがフィルタリング
プロセスの各ステップで使われていました i ptabl es (netfilter とも呼ばれる) は、カーネル 2.4 から導入さ
れました。これは、i pchai ns と似ていますが、ネットワークパケットのフィルタリングに利用できる範
囲と制御が大幅に拡大されました。
本章は、パケットフィルタリングの基礎に焦点を当て、 i ptabl es コマンドで選択できるさまざまなオプ
ションや、フィルタリングルールがシステム再起動時にどのように保持存されるかを説明します。
重要
カーネル 2.4 以降におけるデフォルトのファイアウォールメカニズムは i ptabl es です。しかし、
i pchai ns がすでに実行されている場合は i ptabl es を使用できません。 i pchai ns が起動時に
存在していると、カーネルがエラーを起こし、i ptabl es を起動することができません。
i pchai ns の機能自体には、これらのエラーによる影響はありません。
2 .8 .9 .1 . パケットフィルタリング
Linux カーネルは、パケットのフィルタリングに N et f ilt er 機能を使用します。この機能を使うことで、一
部のパケットをシステムから受け取ったり、通過させたりする一方で、他のパケットを停止させます。この
機能は Linux カーネルに組み込まれ、以下の 5 つの組み込みテーブルまたはルールリストで構成されてい
ます。
fi l ter — ネットワークパケットを処理するためのデフォルトテーブルです。
117
Red Hat Ent erprise Linux 6 セキュリティガイド
nat — 新規の接続を作成するパケット変換に使用され、ネットワークアドレス変換 (NAT: Network
Address Translation) で使用されます。
mang l e — 特定の種類のパケット変換に使用されます。
raw — NOTRACK ターゲットと組み合わせた接続追跡の適用除外を設定するために主に使用されます。
securi ty — SECMARK や CONNSECMARK ターゲットで有効とされる強制アクセス制御 (MAC) の
ネットワークルールに使用されます。
各テーブルには、組み込み チェーン がグループ化されており、これらのチェーンはnetfi l ter がパケッ
トに実行するアクションに対応しています。
fi l ter テーブルの組み込みチェーンは以下の通りです。
INPUT — ホスト宛のネットワークパケットに適用されます。
OUTPUT — ローカルに生成されたネットワークパケットに適用されます。
FORWARD — ホスト経由でルーティングされるネットワークパケットに適用されます。
nat テーブルの組み込みチェーンは以下の通りです。
PREROUTING — ネットワークパケットが入ってくる際に適用されます。
OUTPUT — ローカルで生成されたネットワークパケットが出ていく前に適用されます。
POSTROUTING — ネットワークパケットが出ていく前に適用されます。
mang l e テーブルの組み込みチェーンは以下の通りです。
INPUT — ホスト宛のネットワークパケットに適用されます。
OUTPUT — ローカルで生成されたネットワークパケットが出ていく前に適用されます。
FORWARD — ホスト経由でルーティングされるネットワークパケットに適用されます。
PREROUTING — 着信ネットワークパケットがルーティングされる前に適用されます。
POSTROUTING — ネットワークパケットが出ていく前に適用されます。
raw テーブルの組み込みチェーンは以下の通りです。
OUTPUT — ローカルで生成されたネットワークパケットが出ていく前に適用されます。
PREROUTING — 着信ネットワークパケットがルーティングされる前に適用されます。
securi ty テーブルの組み込みチェーンは以下の通りです。
INPUT — ホスト宛のネットワークパケットに適用されます。
OUTPUT — ローカルで生成されたネットワークパケットが出ていく前に適用されます。
FORWARD — ホスト経由でルーティングされるネットワークパケットに適用されます。
Linux システムが受信する、またはそこから送信されるネットワークパケットはすべて、少なくとも 1 つの
テーブルの対象となります。しかし、パケットはチェーンの最後に達する前に各テーブル内の複数のルール
に従うことになります。これらルールの構造と目的は異なる場合がありますが、通常、それらのルールは、
特定のプロトコルおよびネットワークサービスを使用する際に、特定の IP アドレスまたはアドレスのセッ
トから着信する、またはそこに送信されるパケットを特定することを目的としています。以下の図
は、i ptabl es サブシステムがパケットのフローを検査するプロセスの概要を示しています。
118
⁠第2 章 ネットワークのセキュリティ保護
図2.6 IPT ab les におけるパケットのフィルタリング
重要
ファイアウォールのルールは、デフォルトで /etc/sysco nfi g /i ptabl es または
/etc/sysco nfi g /i p6 tabl es ファイルに保存されます。
Linux システムのブート時に、i ptabl es サービスは D NS 関連サービスの前に起動します。これ
は、ファイアウォールのルールが数値 IP アドレス (例: 192.168.0.1) のみを参照できることを意味
しています。このようなルールにドメイン名 (例: host.example.com) が含まれると、エラーが発生
します。
パケットがいずれかのテーブルにある特定のルールにマッチする場合、その宛先に関わらず、 ターゲット
またはアクションがそれらのパケットに適用されます。マッチしたパケットに対して AC C EP T ターゲット
がルールで指定されていると、パケットの残りのルールチェックは省略され、宛先への送信が続行されま
す。ルールが D R O P ターゲットを指定していると、パケットのシステムへのアクセスは拒否され、パケッ
トを送ったホストには何も通知されません。ルールが Q UEUE ターゲットを指定していると、パケットは
ユーザースペースに渡されます。ルールがオプションの R EJEC T ターゲットを指定していると、パケット
は破棄されますが、エラーパケットがパケットの送信者に送られます。
すべてのチェーンには、AC C EP T 、 D R O P 、R EJEC T または Q UEUE のデフォルトポリシーが設定されま
す。チェーン内のいずれのルールもパケットに適用されない場合、パケットはデフォルトポリシーに従っ
て処理されます。
i ptabl es コマンドは前述のテーブルを設定し、必要に応じて新規のテーブルをセットアップします。
119
Red Hat Ent erprise Linux 6 セキュリティガイド
注記
デフォルトでは、netfilter モジュールは読み込まれません。このため、ユーザーは /pro c/ ディレ
クトリーでは、これらのモジュールすべては確認できません。使用中のものまたは既に読み込み済み
のものだけが表示されます。つまり、netfilter の使用前には、どの機能が利用可能かを確認する方法
はないということになります。
2 .8 .9 .2 . IPT able s のコマンドオプション
パケットのフィルタリングに使用されるルールは、i ptabl es コマンドを使用して作成されます。多くの
場合、パケットの以下の要素が条件として使用されます。
Packet Type — コマンドがフィルターするパケットの種類を指定します。
Packet Source/Destination — パケットの送信元または宛先に基づいてコマンドがフィルターするパケッ
トを指定します。
Target — 上記の条件にマッチするパケットに対して取られるアクションを指定します。
上記のパケットの要素に関連する具体的なオプションについての詳細は、「 IPTables マッチオプショ
ン」および「ターゲットオプション」を参照してください。
特定の i ptabl es ルールと共に使用されるオプションは、ルールを有効にするためにルール全体の目的と
条件に基づいて論理的にグループ化される必要があります。本セクションの残りの部分では、 i ptabl es
コマンドで一般的に使われる各種オプションを説明します。
2.8.9 .2.1. IPT ab les コマンドオプションの構造
以下は、多くの i ptabl es コマンドが持つ構造です。
i ptabl es [-t <table-name>] <command> <chain-name> \
<parameter-1> <option-1> \
<parameter-n> <option-n>
<table-name> — ルールが適用されるテーブルを指定します。省略時は、fi l ter テーブルが使用されま
す。
<command> — ルールの追加または削除などの、実行するアクションを指定します。
<chain-name> — 編集、作成または削除するチェーンを指定します。
<parameter>-<option> のペア — ルールにマッチするパケットをどのように処理するかを指定するパラメー
ターおよび関連するオプションです。
i ptabl es コマンドの長さと複雑度は、目的によって大きく変わります。
例えば、チェーンからルールを削除するコマンドは非常に短くなります。
i ptabl es -D <chain-name> <line-number>
これとは対照的に、各種の特定のパラメーターとオプションを使って特定のサブネットからパケットを
フィルターするルールを追加するコマンドの場合は、かなり長くなる可能性があります。i ptabl es コマ
ンドを構築する際には、一部のパラメーターとオプションにおいて、有効なルールを構築するためにさらな
るパラメーターとオプションが必要になることに注意してください。これにより、追加されるパラメーター
120
⁠第2 章 ネットワークのセキュリティ保護
でさらに多くのパラメーターが必要になるというカスケード効果が生じる可能性があります。追加のオプ
ションセットを必要とするパラメーターとオプションがなくなるまで、ルールは有効になりません。
i ptabl es コマンド構造の完全なリストを表示するには、i ptabl es -h を入力します。
2.8.9 .2.2. コマンドオプション
コマンドオプションは、特定のアクションを実行するよう i ptabl es に指示します。 1 つの i ptabl es
コマンドあたりコマンドオプション 1 つのみが許可されます。help コマンドを除いて、すべてのコマンド
は大文字で書かれます。
i ptabl es コマンドのオプションは以下のようになります。
-A — 指定されたチェーンの最後にルールを追加します。以下で説明される-I オプションとは異な
り、整数の引数を取りません。常に指定されたチェーンの最後にルールを追加します。
-D <i nteg er> | <rul e> — 数値 (チェーンにある 5 番目のルールは 5 など) か、またはルールの
指定により特定チェーンにあるルールを削除します。ルールを指定する場合は、既存のルールと完全に
一致するものでなければなりません。
-E — ユーザー定義のチェーンの名前を変更します。ユーザー定義のチェーンはデフォルトの既存
チェーン以外のすべてのチェーンです。(ユーザー定義のチェーンを作成する方法についての詳細は、以
下の -N オプションを参照してください。) これは表面的な変更であり、テーブルの構造には影響を与え
ません。
注記
デフォルトのチェーンのいずれかの名前を変更しようとする場合、システムは Match no t
fo und エラーを報告します。デフォルトのチェーン名を変更することはできません。
-F — 選択されたチェーンをフラッシュします。これにより、チェーンにあるすべてのルールが効率的
に削除されます。チェーンが指定されていない場合は、このコマンドはすべてのチェーンからすべての
ルールをフラッシュします。
-h —コマンド構造の一覧、およびコマンドパラメーターとオプションの要約を提供します。
-I [<i nteg er>] — ユーザー定義の整数引数で指定される位置に、指定されたチェーンのルールを挿
入します。引数が指定されていない場合は、ルールはチェーンの一番上に挿入されます。
重要
前述のようにチェーン内のルールの順序は、どのルールがどのパケットに適用されるかを決定し
ます。これは、-A または -I オプションのいずれかを使用してルールを追加する際に覚えておく
べき重要な点です。
これは、整数の引数と共に -I を使用してルールを追加する場合に、特に重要な点になります。
ルールをチェーンに追加する際に既存の数値を指定する場合、i ptabl es は既存のルールの 前
(または上) に新しいルールを追加します。
-L — コマンドの後ろに指定するチェーン内のすべてのルールを表示します。デフォルトのfi l ter
テーブルにあるすべてのチェーンのすべてのルールを表示するには、チェーンまたはテーブルを指定し
ないでください。それ以外の場合は、以下の構文を使用して、特定のテーブルの指定したチェーン内の
ルールを表示します。
121
Red Hat Ent erprise Linux 6 セキュリティガイド
i ptabl es -L <chain-name> -t <table-name>
ルール番号を提供し、より詳細なルールの説明を提供する -L コマンドオプションの追加のオプション
については、「リストのオプション」に説明されています。
-N — ユーザー指定の名前を用いて新しいチェーンを作成します。チェーン名は一意である必要があ
り、そうでない場合はエラーメッセージが表示されます。
-P — 指定したチェーンに対するデフォルトのポリシーを設定します。これにより、パケットがルール
にマッチせずにチェーン全体をトラバースする際に、パケットは ACCEPT または D ROP などの指定さ
れたターゲットに送られます。
-R — 指定されたチェーン内のルールを置き換えます。ルールの番号は必ずチェーン名の後ろに指定し
ます。チェーン内の最初のルールはルール番号 1 に対応します。
-X — ユーザー指定のチェーンを削除します。組み込みチェーンは削除できません。
-Z — テーブルについてのすべてのチェーンのバイトカウンターとパケットカウンターをゼロに設定し
ます。
2.8.9 .2.3. IPT ab les パラメーターのオプション
特定のチェーン内でのルールの追加、削除、挿入また置換に使われるコマンドを含む、特定の i ptabl es
コマンドでは、パケットフィルタリングルールを作成するためにさまざまなパラメーターが必要になりま
す。
-c — 特定のルールについてのカウンターをリセットします。このパラメーターはどのカウンターをリ
セットするかを指定するために P KT S および BY T ES オプションを受け付けます。
-d — ルールにマッチするパケットの宛先ホスト名、IP アドレスまたはネットワークを設定します。
ネットワークにマッチする際には、以下の IP アドレス/ネットマスクの形式がサポートされています。
N.N.N.N/M.M.M.M — ここでの N.N.N.N は IP アドレスの範囲で、 M.M.M.M はネットマスクで
す。
N.N.N.N/M — ここでの N.N.N.N は IP アドレスの範囲で、 M はビットマスクです。
-f — このルールは断片化されたパケットにのみ適用されます。
このパラメーターの後ろに感嘆符記号 (! ) オプションを使用すると、断片化されていないパケットにの
みマッチするよう指定できます。
注記
断片化されたパケットは IP プロトコルの標準的な一部になっていますが、断片化されたパケッ
トを断片化されていないパケットと区別するのは望ましいことです。
断片化は、元々は異なるフレームサイズの IP パケットをネットワーク経由で送信できるように
設計されましたが、最近では、不正な形式のパケットを使用した D oS 攻撃を生成する目的で使
用されることが以前よりも多くなっています。また、IPv6 は断片的を全く許可しないことにも注
意してください。
122
⁠第2 章 ネットワークのセキュリティ保護
-i — eth0 や ppp0 などの入力ネットワークインターフェースを設定します。i ptabl es では、この
オプションのパラメーターは fi l ter テーブルと共に使用される場合は INPUT と FORWARD チェー
ンでのみ使用でき、nat および mang l e テーブルと共に使用される場合は PREROUTING チェーンで
のみ使用できます。
このパラメーターは以下の特別なオプションもサポートしています。
感嘆符記号 (! ) — 指示文を無効にします。つまり、指定されたインターフェースがこのルールから
除外されます。
プラス記号 (+ ) — 指定した文字列にマッチするすべてのインターフェースにマッチさせるように使
用するワイルドカード文字です。例えば、パラメーター -i eth+ は、このルールをすべてのイーサ
ネットインターフェースに適用しますが、 ppp0 などのそれ以外のインターフェースには適用され
ません。
-i パラメーターが使われていても、インターフェースが指定されていなければ、すべてのインター
フェースがこのルールによって影響を受けます。
-j —パケットが特定のルールにマッチすると、指定されたターゲットにジャンプします。
標準的なターゲットは AC C EP T 、 D R O P 、Q UEUE、および R ET UR N です。
拡張されたオプションは、 Red Hat Enterprise Linux i ptabl es RPM パッケージと共にデフォルトで
ダウンロードされるモジュールからも選択できます。これらのモジュールで有効なターゲットに
は、LO G 、MAR K、および R EJEC T が含まれます。これらのターゲットと他のターゲットについての詳
細は、i ptabl es man ページを参照してください。
また、このオプションを選択すると、現在のチェーン以外のユーザー定義チェーンに特定のルールに
マッチするパケットを送ることができ、他のルールをそのパケットに適用できます。
ターゲットが指定されていないと、パケットはいずれのアクションも取られないままルールを通過して
いきます。ただし、このルールのカウンターは 1 つ加算されます。
-o — ルールについての出力ネットワークインターフェースを設定します。このオプションは、
fi l ter テーブルの OUTPUT および FORWARD チェーン、および nat と mang l e テーブルの
POSTROUTING チェーンにのみ有効です。このパラメーターは、入力インターフェースパラメーター
(-i ) と同じオプションを受け付けます。
-p <pro to co l > — ルールによって影響を受けるプロトコルを設定します。これはi cmp、
tcp、ud p、または al l のいずれかであるか、またはこれらの 1 つまたは他のプロトコルを表す数値で
ある場合があります。/etc/pro to co l s ファイルにリストされているすべてのプロトコルを使用でき
ます。
" al l " プロトコルは、ルールがすべてのサポートされたプロトコルに適用されることを意味します。こ
のルールと共にプロトコルがリストされていない場合、" al l " にデフォルト設定されます。
-s — 宛先 (-d ) パラメーターと同じ構文を使用して、特定のパケットの送信元を設定します。
2.8.9 .2.4 . IPT ab les マッチオプション
異なるネットワークプロトコルは、そのプロトコルを使って特定パケットにマッチするように設定可能な専
用のマッチオプションがあります。しかし、プロトコルは最初に i ptabl es コマンドで指定する必要があ
ります。例えば、-p <protocol-name> は、指定したプロトコルのオプションを有効にします。プロト
コル名の代わりにプロトコル ID も使用できることに注意してください。同じ効果を持つ以下の例を参照し
てください。
~]# i ptabl es -A INP UT -p i cmp --i cmp-type any -j AC C EP T
~]# i ptabl es -A INP UT -p 5813 --i cmp-type any -j AC C EP T
123
Red Hat Ent erprise Linux 6 セキュリティガイド
サービス定義は /etc/servi ces ファイル内で提供されています。読みやすくするために、ポート番号よ
りもサービス名を使用することが推奨されます。
警告
未承認の編集を防ぐために /etc/servi cesファイルをセキュアにしてください。このファイルが
編集可能だと、クラッカーはこのファイルを使用して、マシン上の本来は閉じているはずのポート
を有効にすることができます。このファイルをセキュアにするには、root で以下のコマンドを実行
します。
~]# cho wn ro o t. ro o t /etc/servi ces
~]# chmo d 0 6 4 4 /etc/servi ces
~]# chattr + i /etc/servi ces
これでファイルの名前変更、ファイル削除、またはファイルへのリンク作成を防ぐことができま
す。
2.8.9 .2.4 .1. T C P プロトコル
以下のマッチオプションが TCP プロトコル (-p tcp) で利用可能です。
--d po rt — パケットの宛先ポートを設定します。
このオプションを設定するには、(www や smtp などの) ネットワークサービス名、ポート番号または
ポート番号の範囲を使用します。
ポート番号の範囲を指定するには、2 つの数をコロン (: ) で区切ります。例: -p tcp --d po rt
30 0 0 : 320 0 。最大の有効範囲は 0 : 6 5535 です。
該当するネットワークサービスやポートを使用 しないすべてのパケットにマッチさせるには、 -d po rt オプションの後ろに感嘆符記号 (! ) を使用します。
使用するネットワークサービスとポート番号の名前とエイリアスをブラウズするに
は、/etc/servi ces ファイルを表示します。
--d esti nati o n-po rt マッチオプションは --d po rt と同義です。
--spo rt — --d po rt と同じオプションを用いてパケットのソースポートを設定します。--so urcepo rt マッチオプションは --spo rt と同義です。
--syn — 通信を初期化するために設計されたすべての TCP パケット (一般的にSYN パケット と呼ば
れる) に適用されます。データペイロードを運ぶパケットには影響がありません。
SYN 以外のパケットすべてとマッチさせるには、--syn オプションの前に感嘆符記号 (! ) を使用しま
す。
--tcp-fl ag s <tested fl ag l i st> <set fl ag l i st> — ルールにマッチさせるために設定
された特定のビット (フラグ) を持つ TCP パケットを許可します。
--tcp-fl ag s マッチオプションは 2 つのパラメーターを受け取ります。1 つ目のパラメーターはマス
クで、パケットで検査されるフラグのコンマ区切りのリストです。2 つ目のパラメーターは、ルールを
マッチさせるために設定する必要のあるフラグのコンマ区切りのリストです。
利用可能なフラグは以下の通りです。
AC K
124
⁠第2 章 ネットワークのセキュリティ保護
FIN
P SH
R ST
SY N
UR G
ALL
NO NE
例えば、以下の指定を含む i ptabl esルールは、SYN フラグが設定されていて、ACK と FIN フラグが
設定されていない TCP パケットにのみマッチします。
--tcp-fl ag s AC K,FIN,SY N SY N
マッチオプションの効果を逆にするには、--tcp-fl ag s の後ろに感嘆符記号 (! ) を使用します。
--tcp-o pti o n — 特定のパケット内で設定可能な TCP 固有のオプションにマッチさせるよう試行し
ます。また、このマッチオプションを逆にするには、このオプションの後ろに感嘆符記号 (! ) を使用す
ることができます。
2.8.9 .2.4 .2. U D P プロトコル
以下のマッチオプションが UD P プロトコル (-p ud p) で利用可能です。
--d po rt — サービス名、ポート番号およびポート番号の範囲を使用して、UD P パケットの宛先ポート
を指定します。 --d esti nati o n-po rt マッチオプションは --d po rt と同義です。
--spo rt — サービス名、ポート番号およびポート番号の範囲を使用して、UD P パケットの送信元ポー
トを指定します。 --so urce-po rt マッチオプションは --spo rt と同義です。
--d po rt および --spo rt オプションの場合、ポート番号の範囲を指定するには、2 つの数をコロン (:) で
区切ります。例: -p tcp --d po rt 30 0 0 : 320 0 。最大の有効範囲は 0 : 6 5535 です。
2.8.9 .2.4 .3. IC MP プロトコル
以下のマッチオプションは、インターネット制御メッセージプロトコル (ICMP)(-p i cmp) で利用可能で
す。
--i cmp-type —ルールにマッチさせるための ICMP タイプの名前または番号を設定しま
す。i ptabl es -p i cmp -h コマンドを入力すると、有効な ICMP 名のリストを取得できます。
2.8.9 .2.4 .4 . 追加のマッチオプションのモジュール
追加のマッチオプションは、i ptabl es コマンドが読み込んだモジュールから利用できます。
マッチオプションのモジュールを使用するには、-m <module-name> を使用して名前でモジュールを読
み込みます。ここでの <module-name> は、モジュール名です。
多くのモジュールはデフォルトで利用可能です。追加機能を提供するためにモジュールを作成することもで
きます。
以下は、最も一般的に使われるモジュール一覧の一部です。
l i mi t モジュール — 特定のルールにマッチするパケット数を制限します。
LO G ターゲットと共に使用される場合、l i mi t モジュールは、マッチする大量のパケットが反復メッ
125
Red Hat Ent erprise Linux 6 セキュリティガイド
セージでシステムログを満たしてしまう状況や、システムリソースを使い切ってしまうことを防ぎま
す。
LO G ターゲットについての詳細は、「ターゲットオプション」 を参照してください。
l i mi t モジュールは以下のオプションを有効にします。
--l i mi t — <value>/<period> のペアで指定された、特定の期間におけるマッチ件数の最大数
を設定します。例えば、--l i mi t 5/ho ur を使用すると、1 時間に 5 回のルールマッチが許可さ
れます。
期間は、秒、分、時間または日で指定できます。
回数および時間の修飾子が使用されていない場合は、デフォルト値の 3/ho ur になります。
--l i mi t-burst — ルールに一度にマッチ可能なパケット数の制限を設定します。
このオプションは、整数で指定し、--l i mi t オプションと併用する必要があります。
値が指定されない場合は、デフォルト値の 5 が使用されます。
state モジュール — state マッチングを有効にします。
state モジュールは以下のオプションを有効にします。
--state — 以下の接続状態のパケットにマッチします。
EST ABLISHED — マッチするパケットが、確立された接続で他のパケットに関連付けられてい
ます。クライアントとサーバー間の接続を維持する場合、この状態を受け付ける必要がありま
す。
INVALID — マッチするパケットが既知の接続に結び付けられません。
NEW — マッチするパケットが新しい接続を作成しているか、または以前に表示されなかった双
方向の接続の一部であるかのいずれかです。サービスへの新規接続を許可する場合、この状態を
受け付ける必要があります。
R ELAT ED — マッチするパケットが、既存の接続に何らかの形で関連している新規接続を開始し
ます。この例は FTP で、FTP は制御トラフィック (ポート21) にある接続を使用し、データ転送
(ポート20) に別の接続を使用します。
これらの接続状態は、-m state --state INVALID ,NEW のように、それぞれをコンマで区切っ
て組み合わせて使用できます。
mac モジュール — ハードウェア MAC アドレスのマッチングを有効にします。
mac モジュールは以下のオプションを有効にします。
--mac-so urce — パケットを送るネットワークインターフェースカードの MAC アドレスにマッ
チします。ルールから MAC アドレスを除外するには、--mac-so urce マッチオプションの後ろに
感嘆符記号 (! ) を置きます。
モジュールで利用可能なマッチオプションについての詳細は、i ptabl es man ページを参照してくださ
い。
2.8.9 .2.5. ターゲットオプション
パケットが特定のルールにマッチした場合、そのルールは、適切なアクションを決定する多数の異なるター
ゲットにパケットを送ることができます。各チェーンにはデフォルトのターゲットがあります。デフォル
トのターゲットは、チェーン内のいずれのルールもパケットにマッチしない場合や、パケットにマッチす
るルールがどれもターゲットを指定していない場合に使用されます。
126
⁠第2 章 ネットワークのセキュリティ保護
以下は一般的なターゲットです。
<user-defined-chain> — テーブル内のユーザー定義のチェーンです。ユーザー定義のチェーン名
は一意である必要があります。このターゲットは指定されたチェーンにパケットを渡します。
AC C EP T — 宛先または他のチェーンにパケットを送ることを許可します。
D R O P — 要求側に応答を返すことなくパケットを破棄します。パケットを送ったシステムには、失敗は
通知されません。
Q UEUE — ユーザー空間アプリケーションで処理されるように、パケットはキューに入れられます。
R ET UR N — 現在のチェーン内のルールに対するパケットのチェックを停止します。R ET UR N ターゲッ
トを持つパケットが、他のチェーンから呼び出されたチェーン内のルールにマッチする場合、パケット
は最初のチェーンに戻され、停止したところからルールチェックが再開されます。R ET UR N ルールが組
み込みチェーンで使用されており、かつパケットを直前のチェーンに戻すことができない場合、現在の
チェーンのデフォルトターゲットが使用されます。
さらに、拡張を利用して、他のターゲットを指定することもできます。これらの拡張は、ターゲットモ
ジュールまたはマッチオプションモジュールと呼ばれ、そのほとんどは特定のテーブルおよび状況にのみ
適用されます。マッチオプションモジュールについての詳細は、「追加のマッチオプションのモジュー
ル」を参照してください。
拡張されたターゲットモジュールは多数存在します。それらのほとんどは特定のテーブルまたは状況のみに
適用されます。Red Hat Enterprise Linux にデフォルトで含まれる最も一般的なターゲットモジュールを
いくつか紹介します。
LO G — このルールにマッチするすべてのパケットのログを記録します。パケットのログはカーネルが
記録するので、/etc/sysl o g . co nf ファイルがこれらのログエントリーが書き込まれる場所を決め
ます。デフォルトでは、ログエントリーは /var/l o g /messag es ファイルに置かれます。
追加のオプションを LO G ターゲットの後に使用すると、ロギングの方法を指定できます。
--l o g -l evel — ロギングイベントの優先レベルを設定します。優先レベルの一覧は
sysl o g . co nf man ページを参照してください。
--l o g -i p-o pti o ns — IP パケットのヘッダーに設定されているすべてのオプションをログに記
録します。
--l o g -prefi x — ログ行が書き込まれる際に、ログ行の前に最大 29文字の文字列を置きます。こ
れはパケットのロギングと共に syslog フィルターを作成する際に役立ちます。
注記
このオプションに関する問題のために、上記のオプションでは log-prefix 値に行末のスペース
を追加してください。
--l o g -tcp-o pti o ns — TCP パケットのヘッダーに設定されたオプションをログ記録します。
--l o g -tcp-seq uence — パケットの TCP シーケンス番号をログに書き込みます。
R EJEC T — リモートシステムにエラーパケットを送り返して、パケットを破棄します。
R EJEC T ターゲットは --reject-wi th <type> (<type> は拒否のタイプ) を受け付け、エラーパ
ケットがより詳細な情報と送り返されるようにします。メッセージ po rt-unreachabl e は、それ以
外のオプションが使用されない場合に指定されるデフォルトのエラータイプです。<type> オプション
の完全な一覧については、i ptabl es man ページを参照してください。
127
Red Hat Ent erprise Linux 6 セキュリティガイド
他のターゲット拡張についての情報も i ptabl es man ページにあります。これには、nat テーブルを使用
する IP マスカレードや、mang l e テーブルを使用するパケット変更などに役立つ関連情報が含まれます。
2.8.9 .2.6 . リストのオプション
デフォルトのリストコマンド i ptabl es -L [<chai n-name>] は、デフォルトのフィルターテーブル
の現在のチェーンに関するごく基本的な概要を提供します。
-v — 各チェーンが処理したパケット数やバイト数、各ルールがマッチしたパケット数やバイト数、お
よび特定のルールに適用されるインターフェースなどの、詳細な出力を表示します。
-x — 数値をその正確な値で詳述します。負荷の多いシステムでは、特定のチェーンやルールによって
処理されたパケット数やバイト数は、キロバイト 、 メガバイト 、または ギガバイト に短縮される場
合があります。このオプションは、完全な数字が表示されるように強制します。
-n — IP アドレスとポート番号を、デフォルトのホスト名やネットワークサービス形式ではなく、数値
形式で表示します。
--l i ne-numbers — チェーンにおける数値順に続いて各チェーンのルールを表示します。チェーン
内の特定のルールを削除したり、チェーン内のルールを挿入する位置を見つける際に、このオプション
は有用です。
-t <tabl e-name> — テーブル名を指定します。省略すると、デフォルトはフィルターテーブルにな
ります。
2 .8 .9 .3. IPT able s ルールの保存
i ptabl es コマンドを使って作成したルールは、メモリーに保存されます。i ptabl es ルールセットを保
存する前にシステムを再起動すると、すべてのルールが失われます。netfilter ルールをシステムの再起動後
も持続するには、それらのルールを保存する必要があります。netfilter ルールを保存するには、root で以下
のコマンドを入力します。
~]# /sbi n/servi ce i ptabl es save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[
OK
]
これは /sbi n/i ptabl es-save プログラムを実行し、現在の i ptabl es 設定を
/etc/sysco nfi g /i ptabl es に書き込む i ptabl es init スクリプトを実行します。既存の
/etc/sysco nfi g /i ptabl es ファイルは /etc/sysco nfi g /i ptabl es. save として保存されま
す。
次回のシステムブート時に、i ptabl es init スクリプトは /sbi n/i ptabl es-resto re コマンドを使用
して、/etc/sysco nfi g /i ptabl es に保存されたルールを再び適用します。
新規の i ptabl es ルールを /etc/sysco nfi g /i ptabl es ファイルに記載する前にテストすることはよ
いアイデアですが、このファイルの別のシステムのバージョンから i ptabl es ルールをこのファイルにコ
ピーすることもできます。この方法だと、i ptabl es ルールのセットを複数マシンに素早く分配できま
す。
また、i ptabl es ルールを配布やバックアップまたは他の目的のために別個のファイルに保存することも
できます。これを実行するには、root で以下のコマンドを実行します。
i ptabl es-save > <filename>
ここでの <filename> は、ルールセットにユーザーが定義する名前です。
128
⁠第2 章 ネットワークのセキュリティ保護
重要
/etc/sysco nfi g /i ptabl es ファイルを他のマシンに配布している場合、/sbi n/servi ce
i ptabl es rel o ad または /sbi n/servi ce i ptabl es restart と入力すると新しいルール
が有効になります。rel o ad コマンドはファイアウォールがない時間帯を作らないので、こちらの
方が推奨されます。「IPTables 制御スクリプト」 の rel o ad コマンドの説明を参照してくださ
い。IP v6 の場合は、上記 /sbi n/servi ce コマンドの i ptabl es を i p6 tabl es に置き換えま
す。IP v6 および netfilter についての詳細情報は、「IPTables および IPv6」 を参照してくださ
い。
注記
i ptabl es 機能を構成するテーブルおよびチェーンの操作に使用されるi ptabl es コマンド
(/sbi n/i ptabl es) と、i ptabl es サービス自体を有効および無効にする i ptabl es サービス
(/sbi n/servi ce i ptabl es) の違いに注意してください。
2 .8 .9 .4 . IPT able s 制御スクリプト
Red Hat Enterprise Linux の i ptabl es を制御するには 2 つの基本的な方法があります。
Firewall C o n f ig u rat io n T o o l (system-co nfi g -fi rewal l ) — 基本的なファイアウォールの
ルールを作成し、有効化し、保存するためのグラフィカルツールです。詳細は、「基本的なファイア
ウォールの設定」 を参照してください。
/sbi n/servi ce i ptabl es < オプション > — intscript を使用する i ptabl es のさまざまな機能
を操作するために使われます。以下のオプションが利用可能です。
start — ファイアウォールが設定されていると (つまり、/etc/sysco nfi g /i ptabl es が存在
すると)、実行中のすべての i ptabl es は完全に停止した後に、/sbi n/i ptabl es-resto re コ
マンドを使用して開始されます。このオプションは、i pchai ns カーネルモジュールがロードされ
ていない場合にのみ動作します。このモジュールが読み込まれているかを確認するには、root で以
下のコマンドを入力します。
~]# l smo d | g rep i pchai ns
このコマンドで何の出力も返されない場合は、モジュールが読み込まれていないことを意味します。
必要な場合は、/sbi n/rmmo d コマンドを使用してモジュールを削除します。
sto p — ファイアウォールが実行中であれば、メモリーにあるファイアウォールルールがフラッ
シュされ、すべての i ptabl es モジュールとヘルパーがアンロードされます。
/etc/sysco nfi g /i ptabl es-co nfi g 設定ファイルにある IP T ABLES_SAVE_O N_ST O P 指
示文がそのデフォルト値から yes に変更されると、現在のルールが
/etc/sysco nfi g /i ptabl es に保存され、既存のルールすべては
/etc/sysco nfi g /i ptabl es. save ファイルに移動します。
i ptabl es-co nfi g ファイルについての詳細は、「IPTables 制御スクリプト設定ファイル」 を参
照してください。
rel o ad — ファイアウォールが実行されていれば、ファイアウォールルールが設定ファイルからリ
ロードされます。 rel o ad コマンドは以前に使用されたヘルパーをアンロードしませんが、
IPTABLES_MOD ULES (IP v4 の場合) および IP6TABLES_MOD ULES (IP v6 の場合) に追加され
た新たなヘルパーを追加します。現行のファイアウォールルールをフラッシュしないので、新規
129
Red Hat Ent erprise Linux 6 セキュリティガイド
ルールにエラーがあって適用できない場合に以前のルールがまだ残っているという利点があります。
restart —ファイアウォールが実行されていると、メモリーにあるファイアウォールルールがフ
ラッシュされ、ファイアウォールが /etc/sysco nfi g /i ptabl es に設定されていれば、再起動
されます。このオプションは、 i pchai ns カーネルモジュールが読み込まれていない場合にのみ動
作します。
/etc/sysco nfi g /i ptabl es-co nfi g 設定ファイルにある IP T ABLES_SAVE_O N_R EST AR T
指示文がデフォルト値から yes に変更されると、現在のルールが /etc/sysco nfi g /i ptabl es
に保存され、既存のすべてのルールは /etc/sysco nfi g /i ptabl es. save に移動します。
i ptabl es-co nfi g ファイルについての詳細は、「IPTables 制御スクリプト設定ファイル」 を参
照してください。
status — ファイアウォールのステータスを表示し、すべてのアクティブなルールを一覧表示しま
す。
このオプションのデフォルト設定では、各ルールの IP アドレスが表示されます。ドメインやホスト
名の情報を表示するには、/etc/sysco nfi g /i ptabl es-co nfi g ファイルを編集して、
IP T ABLES_ST AT US_NUMER IC の値を no に変更します。i ptabl es-co nfi g ファイルについ
ての詳細は、「IPTables 制御スクリプト設定ファイル」を参照してください。
pani c — すべてのファイアウォールのルールをフラッシュします。設定されたすべてのテーブルの
ポリシーは D R O P に設定されます。
このオプションは、サーバーが危険にさらされいることが判明した場合に有用です。ネットワークか
ら物理的に切断したり、システムをシャットダウンしたりする代わりに、このオプションを使って、
分析や他のフォレンジックのためにマシンを稼動状態に保ったままで、すべてのネットワークトラ
フィックを停止することができます。
save — i ptabl es-save を使用して、ファイアウォールのルールを
/etc/sysco nfi g /i ptabl es に保存します。詳細は、「 IPTables ルールの保存」を参照してく
ださい。
注記
IPv6 の netfilter を制御するために同一の initscript コマンドを使用するには、本セクションにある
/sbi n/servi ce コマンドの i ptabl es を i p6 tabl es に置き換えます。IPv6 と netfilter につ
いての詳細情報は、「IPTables および IPv6」 を参照してください。
2.8.9 .4 .1. IPT ab les 制御スクリプト設定ファイル
i ptabl es intscript の動作は、/etc/sysco nfi g /i ptabl es-co nfi g 設定ファイルで制御します。
以下は、このファイルに含まれる指示文の一覧です。
IP T ABLES_MO D ULES — ファイアウォールがアクティブ化された際に読み込む追加 i ptabl es モ
ジュールのスペース区切りのリストを指定します。これらには、接続追跡や NAT ヘルパーなどを含める
ことができます。
IP T ABLES_MO D ULES_UNLO AD — 再起動および停止時にモジュールをアンロードします。この指示
文は、以下の値を受け付けます。
yes — デフォルト値。ファイアウォールの再起動または停止に必要な正しい状態を達成するには、
このオプションを設定する必要があります。
no — このオプションは、netfilter モジュールのアンロードに問題がある場合にのみ設定してくださ
い。
130
⁠第2 章 ネットワークのセキュリティ保護
IP T ABLES_SAVE_O N_ST O P — ファイアウォールが停止する場合に、現在のファイアウォールの
ルールを /etc/sysco nfi g /i ptabl es に保存します。この指示文は以下の値を受け付けます。
yes — ファイアウォールが停止する際に、既存のルールを /etc/sysco nfi g /i ptabl es に保存
します。以前のバージョンは /etc/sysco nfi g /i ptabl es. save ファイルに移動されます。
no — デフォルト値。ファイアウォールが停止する際に既存のルールを保存しません。
IP T ABLES_SAVE_O N_R EST AR T — ファイアウォールが再起動するときに、ファイアウォールの現
在のルールを保存します。この指示文は以下の値を受け付けます。
yes — ファイアウォールを再起動する際に、既存のルールを /etc/sysco nfi g /i ptabl es に保
存します。以前のバージョンは /etc/sysco nfi g /i ptabl es. save ファイルに移動されます。
no — デフォルト値。ファイアウォールを再起動する際に既存のルールを保存しません。
IP T ABLES_SAVE_C O UNT ER — すべてのチェーンとルールにあるすべてのパケットとバイトのカウン
ターを保存し、復元します。この指示文は以下の値を受け付けます。
yes — カウンターの値を保存します。
no — デフォルト値。カウンターの値を保存しません。
IP T ABLES_ST AT US_NUMER IC — ドメインまたはホスト名の代わりに数値形式で IP アドレスを出力
します。この指示文は以下の値を受け付けます。
yes — デフォルト値。status 出力にある IP アドレスのみを返します。
no — status 出力にあるドメインまたはホスト名を返します。
2 .8 .9 .5 . IPT able s および IPv6
i ptabl es-i pv6 パッケージがインストールされている場合、Red Hat Enterprise Linux の netfilter は、
次世代の IPv6 インターネットプロトコルをフィルターできます。IPv6 netfilter の操作に使用するコマンド
は i p6 tabl es です。
このコマンドの指示文の多くは、 i ptabl es に使用されるものと同じです。ただし、nat テーブルはまだ
サポートされていません。つまり、現時点ではマスカレードやポート転送のような IPv6 ネットワークアド
レス変換のタスクを実行することはできません。
i p6 tabl es についてのルールは /etc/sysco nfi g /i p6 tabl es ファイルに保存されま
す。i p6 tabl es initscript が保存した以前のルールは、/etc/sysco nfi g /i p6 tabl es. save ファイ
ルに保存されます。
i p6 tabl es init スクリプトについての設定オプションは/etc/sysco nfi g /i p6 tabl es-co nfi g に
保存されます。また、各指示文の名前は i ptabl es の指示文の名前とは若干異なります。
たとえば、i ptabl es-co nfi g の指示文 IP T ABLES_MO D ULES の場合、i p6 tabl es-co nfi g ファイ
ル内で同等のものは IP 6 T ABLES_MO D ULES になります。
2 .8 .9 .6 . その他のリソース
本章でカバーできなかったファイアウォールと Linux Netfilter サブシステムの側面がいくつかあります。詳
細情報は、以下のリソースを参照してください。
2.8.9 .6 .1. 有用なファイアウォールの Web サイト
http://www.netfilter.org/ — netfilter/iptables プロジェクトのホーム。i ptabl es に関連する情報が含ま
れます。これには、Linux IP ファイアウォールのメンテナーの Rusty Russell による、特定の問題を
131
Red Hat Ent erprise Linux 6 セキュリティガイド
扱った FAQ や各種の役に立つガイドが含まれます。このサイトにある HOWTO ドキュメントは、基本
的なネットワークの概念や、カーネルパケットフィルタリング、および NAT 設定などのトピックを
扱っています。
http://www.tldp.org/ — Linux ドキュメンテーションプロジェクトには、ファイアウォールの構築およ
び管理に関する有用なガイドがいくつか含まれます。
http://www.iana.org/assignments/port-numbers — Internet Assigned Numbers Authority が割り当て
た登録済みまたは共通のサービスポートの公式リストです。
2.8.9 .6 .2. 関連ドキュメント
Red Hat Linux Firewalls、Bill McCarty 著、Red Hat Press — Netfilter および i ptabl es などのオープ
ンソースパケットフィルタリング技術を使用してネットワークやサーバーのファイアウォールを構築す
るための総合的な参考情報です。これには、ファイアウォールのログの解析、ファイアウォールルール
の作成、および各種のグラフィックツールを使用したファイアウォールのカスタマイズなどを扱うト
ピックが含まれます。
Linux Firewalls、Robert Z iegler 著、New Riders Press — 2.2 カーネル i pchai ns と Netfilter および
i ptabl es の両方を使用してファイアウォールを構築する方法についての豊富な情報が含まれます。リ
モートアクセスの問題や侵入検知システムなどの追加のセキュリティ関連のトピックも扱われます。
2.8.9 .6 .3. インストールされている IP T ab les ドキュメント
man i ptabl es — i ptabl es の説明と、ターゲット、オプションおよびマッチ拡張の総合的なリス
トが含まれます。
[3] 。システム BIO S はメーカーによって異なるため、パスワード保護をサポートしないものもあれば、あるタイプ
のパスワード保護のみをサポートするものもあります。
[4] G RUB は暗号化されていないパスワードも使用できますが、より高い安全性のために MD5 を使用することが推
奨されます。
132
⁠第3章 暗号化
第3章 暗号化
保護する必要のあるデータには、静止しているデータと移動中のデータの主に 2 種類があります。これらの
異なる種類のデータは同じ技術を用いて同じ方法で保護されますが、セキュリティの実装方法は完全に異な
る場合があります。同じ情報でもさまざまな時点で静止中になったり移動中になったりする場合があるの
で、単一のセキュリティ実装で、すべての起こりうる危険を防ぐことはできません。
3.1. 静止しているデータ
静止しているデータとは、ハードディスク、テープ、CD 、D VD 、ディスクおよびその他のメディアに保存
されているデータのことです。この情報に対する最大の脅威は、物理的な盗難です。空港で使用されるノー
トパソコン、郵便物内の CD および安全でない場所に残されたバックアップテープなどは、盗難によって
データが侵害される可能性のある例です。ただし、それらのメディア上でデータが暗号化されている場合
は、データがアクセスされる可能性は低くなります。
3.1.1. ディスク全体の暗号化
ディスク全体の暗号化またはパーティションの暗号化は、データを保護する最良の方法の 1 つです。それ
ぞれのファイルが保護されるだけでなく、これらのファイルの一部を含んでいる可能性のある一時的なスト
レージも保護されます。ディスク全体の暗号化によってすべてのファイルが保護されるので、保護する部分
を選択したりファイルを見落とす可能性について心配する必要がありません。
Red Hat Enterprise Linux 6 は、LUKS 暗号化をネイティブにサポートします。LUKS は、コンピューター
がオフの間にデータを保護するように、ハードディスクのパーティションをバルク暗号化します。これによ
り、攻撃者がコンピューターにシングルユーザーモードを使用してログインしようとしたり、その他の方法
でアクセス権を得ようとしたりすることからコンピューターを保護します。
LUKS のようなディスク全体の暗号化ソリューションは、コンピューターがオフの時にのみデータを保護し
ます。コンピューターがオンになり、LUKS がディスクの暗号化を解除すると、ディスクにあるファイルは
それらに普通にアクセスできるすべての人が利用できるようになります。コンピューターがオンの時にファ
イルを保護するには、ファイルベースの暗号化などの他のソリューションと組み合わせてディスク全体の
暗号化を使用します。また、コンピューターから離れる際はロックすることを忘れないようにしてくださ
い。コンピューターを数分間使用しないとパスフレーズ付きのスクリーンセーバーがアクティブになるよう
に設定するのも、侵入者を防ぐ上で優れた方法です。LUKS についての詳細は、「LUKS のディスク暗号
化」を参照してください。
3.1.2. ファイルベースの暗号化
ファイルベースの暗号化は、CD やフラッシュドライブ、外付けハードドライブなどのモバイルのストレー
ジデバイスにあるファイルのコンテンツを保護するために使用します。ファイルベースの暗号化ソリュー
ションの中には暗号化されたファイルの残りをコンピューターにそのまま残すものがあり、この場合は攻撃
者がコンピューターに物理的にアクセスし、これらのファイルを復元する可能性があります。コンピュー
ターにアクセスする可能性のある攻撃者からそれらのファイルのコンテンツを保護するには、ディスク全体
の暗号化などの他のソリューションと組み合わせてファイルベースの暗号化を使用してください。
3.1.3. LUKS のディスク暗号化
Linux Unified Key Setup-on-disk-format (または LUKS) を使うと、Linux コンピューター上のパーティ
ションを暗号化できます。これは特に、モバイルコンピューターやリムーバブルメディアを使う際に重要で
す。LUKS は、複数のユーザーキーを使って、パーティションのバルク暗号化に使用されるマスターキーの
暗号化解除をできるようにします。
LUKS の概要
133
Red Hat Ent erprise Linux 6 セキュリティガイド
LU K S の機能
LUKS はブロックデバイス全体を暗号化するため、脱着可能なストレージメディアやノート
PC のディスクドライブといった、モバイルデバイスのコンテンツ保護に適しています。
暗号化されたブロックデバイスにあるのは任意のコンテンツです。これは、スワップ デバイ
スの暗号化に役立ちます。また、とりわけデータストレージ用にフォーマットしたブロック
デバイスを使用する特定のデータベースに関しても有用です。
LUKS は、既存のデバイスマッパーカーネルサブシステムを使用します。
LUKS はパラフレーズの強化を提供し、辞書攻撃から保護します。
LUKS デバイスには複数のキースロットが含まれ、ユーザーはこれを使ってバックアップ
キー/パスフレーズを追加できます。
LU K S でできない こと:
LUKS は、多くのユーザー (9 人以上) が同一デバイスに対して別々のアクセスを持つことが必
要となるアプリケーションには適していません。
LUKS は、ファイルレベルの暗号化を必要とするアプリケーションには適していません。
3.1 .3.1 . Re d Hat Ent e rprise Linux での LUKS 実装
Red Hat Enterprise Linux 6 は、LUKS を使ってファイルシステムの暗号化を実行します。デフォルトでは
インストール時に、ファイルシステムを暗号化するオプションのチェックが外されています。ハードディ
スクを暗号化するオプションを選択すると、コンピューターを起動するたびにパスフレーズを尋ねられま
す。このパスフレーズは、パーティションの暗号化を解読するために用いられるバルク暗号化鍵を「ロック
解除」します。デフォルトのパーティションテーブルの変更を選択すると、暗号化するパーティションを
選択できます。この設定は、パーティションテーブル設定で行われます。
LUKS に使用されるデフォルトの暗号 (cryptsetup --hel p を参照) は aes-cbc-essiv:sha256 です。
インストールプログラムの Anaconda は、デフォルトでは XTS モード (aes-xts-plain64) で AES 暗号を
使用することに注意してください。LUKS のデフォルトの鍵のサイズは 256 ビット です。Anaconda
(XTS モード) と併用する場合の LUKS のデフォルトの鍵のサイズは 512 ビット です。
警告
デフォルトの暗号化属性を変更すると、システムパフォーマンスに影響を及ぼし、システムを様々
なセキュリティリスクにさらす可能性があります。暗号作成に関して十分な知識がなく、使用され
る暗号法の組み合わせについての機能を理解していない場合は、システムのデフォルトの暗号化属性
を変更しないでください。
Red Hat では、デフォルトの暗号の使用を強く推奨しています。デフォルトの暗号以外を使う必要がある場
合は、--ci pher および --key-si ze のオプションでパーティションを初期化できます。このコマンド
の構文は、以下のようになります。
cryptsetup --veri fy-passphrase --ci pher <cipher>-<mode>-<iv> --key-si ze
<key-size> l uksFo rmat <device>
ここでの <cipher>-<mode>-<iv> は、使用されている暗号法を示す文字列になります。この文字列は、ブ
ロック暗号、ブロック暗号モード、初期ベクトル(IV) の 3 つで構成されます。
ブロック暗号は、データブロック上で作動してバルクデータの暗号化と暗号化解除を可能にする、決定性ア
ルゴリズムです。Red Hat Enterprise Linux で使用可能なブロック暗号は、以下のとおりです。
134
⁠第3章 暗号化
AES — Advanced Encryption Standard (高度暗号化標準) は、128、192、および 256 ビットの暗号
化鍵を使用する 128 ビットの対称ブロック暗号です。詳細は、FIPS PUB 197 を参照してください。
Twofish — 128 から 256 ビットまでの暗号化鍵で作動する 128 ビットのブロック暗号です。
Serpent — 128、192、および 256 ビットの暗号化鍵を使用する 128 ビットのブロック暗号です。
cast5 — 40 から 128 ビットまでの暗号化鍵をサポートする 64 ビットの Feistel 暗号です。詳細
は、RFC 2144 を参照してください。
cast6 — 128、160、192、224、または 256 ビットのいずれかの暗号化鍵を使用する 128 ビットの
Feistel 暗号です。詳細は、RFC 2612。を参照してください。
ブロック暗号モードは、データを確実に暗号化または暗号解除するためにバルクデータにブロック暗号を繰
り返し適用する方法を記述します。以下のモードが使用できます。
CBC — Cipher Block Chaining。詳細は、NIST SP 800-38A。を参照してください。
XTS — XEX Tweakable Block Cipher with Ciphertext Stealing。詳細は、 IEEE 1619 または NIST SP
800-38E。を参照してください。
CTR — Counter。詳細は、NIST SP 800-38A を参照してください。
ECB — Electronic Codebook。詳細は、NIST SP 800-38A を参照してください。
CFB — Cipher Feedback。詳細は、NIST SP 800-38A を参照してください。
OFB — Output Feedback。詳細は、NIST SP 800-38A を参照してください。
初期ベクトルは、暗号文の無作為化に使用されるデータのブロックです。IV により、同一のプレーンテキス
トを繰り返し暗号化しても異なる暗号文の出力が保証されます。IV は、同一の暗号鍵と再利用しないでくだ
さい。CBC モードの暗号では、IV は 予測不可能である必要があります。そうでない場合は、システムは電
子透かしに対する特定の攻撃に弱くなってしまいます (詳細は LUKS/cryptsetup FAQ を参照)。Red Hat で
は、AES と以下の IV を使用することを推奨しています。
ESSIV — Encrypted Salt-Sector Initialization Vector - この IV は、CBC モードの暗号に使用してくだ
さい。デフォルトのハッシュである sha256 を使用すべきです。
plain64 (または plain) — IV sector offset - この IV は、XTS モードの暗号に使用してください。
使用される暗号鍵の長さを指定することもできます。鍵のサイズは、使用されるブロック暗号とブロック暗
号モードの組み合わせによって異なります。鍵の長さが指定されないと、LUKS は決まった組み合わせでデ
フォルト値を使用します。たとえば、CBC モードで AES に 128 ビットの鍵を使用することにすると、
LUKS は AES-128 実装を使用してパーティションを暗号化します。一方、XTS モードで AES に 512 ビッ
トを指定すると、AES-256 実装が使用されます。XTS モードでは 2 つの鍵が使用されることに注意してく
ださい。ひとつ目は調整可能な暗号化に、2 つ目は通常の暗号化用に決められます。
3.1 .3.2 . 手動によるディレクトリーの暗号化
警告
以下の手順を実行すると、暗号化しているパーティションの既存データがすべて削除されます。す
べての情報が失われてしまうので、この手順を開始する前に、外部ソースへのデータのバックアッ
プを必ず行なってください。
1. root としてシェルプロンプトに以下を入力し、ランレベル 1 に入ります。
135
Red Hat Ent erprise Linux 6 セキュリティガイド
tel i ni t 1
2. 既存の /ho me のマウントを解除します。
umo unt /ho me
3. 直前の手順のコマンドが失敗した場合は、fuser を使用し、/ho me を独占しているプロセスを見
つけてこれらを止めます。
fuser -mvk /ho me
4. /ho me がもはやマウントされていないことを確認します。
g rep ho me /pro c/mo unts
5. パーティションをランダムなデータで埋めます。
shred -v --i terati o ns= 1 /d ev/VG 0 0 /LV_ho me
このコマンドは、デバイスの連続書き込み速度で実行され、完了までに時間がかかる場合がありま
す。使用デバイスに暗号化されていないデータが残っていないことを確認した上で、デバイスの暗
号化されたデータを含む部分を難読化するのは重要なステップです。
6. パーティションを初期化します。
cryptsetup --verbo se --veri fy-passphrase l uksFo rmat
/d ev/VG 0 0 /LV_ho me
7. 新たに暗号化したデバイスを開きます。
cryptsetup l uksO pen /d ev/VG 0 0 /LV_ho me ho me
8. デバイスがあることを確認します。
l s -l /d ev/mapper | g rep ho me
9. ファイルシステムを作成します。
mkfs. ext3 /d ev/mapper/ho me
10. ファイルシステムをマウントします。
mo unt /d ev/mapper/ho me /ho me
11. ファイルシステムが表示されていることを確認します。
d f -h | g rep ho me
12. 以下を /etc/crypttab ファイルに追加します。
home /dev/VG00/LV_home none
136
⁠第3章 暗号化
13. /etc/fstab ファイルを編集して、/ho me の古いエントリを削除し、以下の行を追加します。
/dev/mapper/home /home ext3 defaults 1 2
14. デフォルトの SELinux セキュリティコンテンツを復元します。
/sbi n/resto reco n -v -R /ho me
15. マシンを再起動します。
shutd o wn -r no w
16. /etc/crypttab にあるエントリにより、コンピューターのブート時にl uks パスフレーズが尋ね
られます。
17. root としてログインし、バックアップを復元します。
これですべてのデータ用に暗号化されたパーティションを設定できたので、コンピューターをオフにしてい
る間もデータを安全に保管できます。
3.1 .3.3. 既存デバイスへの新規パスフレーズの追加
既存デバイスに新規パスフレーズを追加するには、以下のコマンドを使用します。
cryptsetup l uksAd d Key <d evi ce>
認証のために既存のパスフレーズが尋ねられると、新規パスフレーズの入力を求めるプロンプトが出されま
す。
3.1 .3.4 . 既存のデバイスからのパスフレーズ削除
既存のデバイスからパスフレーズを削除するには、以下のコマンドを使用します。
cryptsetup l uksR emo veKey <d evi ce>
削除したいパスフレーズについて尋ねれ、認証に必要な残りのパスフレーズを求めるプロンプトが出されま
す。
3.1 .3.5 . Anaco nda での暗号化したブロックデバイスの作成
システムのインストール時に、暗号化されたデバイスを作成することができます。これにより、 暗号化パー
ティションを含むシステムを簡単に設定することができます。
ブロックデバイスの暗号化を有効にするには、自動パーティション設定を選択している場合は システムの
暗号化 チェックボックスに、個別パーティション、ソフトウェア RAID アレイまたは論理ボリュームを作
成している場合は 暗号化 チェックボックスにチェックを入れます。パーティション設定が終了したら、暗
号化のパスフレーズが尋ねられます。このパスフレーズは暗号化したデバイスにアクセスするために必要に
なります。LUKS デバイスが事前に存在しており、インストールプロセスの当初にそれらの正しいパスフ
レーズを指定している場合には、チェックボックスのあるパスフレーズ入力ダイアログが表示されます。こ
のチェックボックスにチェックを入れると、既存の暗号化ブロックデバイスの利用可能なスロットに新規
パスフレーズを追加することになります。
137
Red Hat Ent erprise Linux 6 セキュリティガイド
注記
自動パーティション設定 画面の システムの暗号化 チェックボックスにチェックを入れた後に
カスタムレイアウトの作成 を選択しても、ブロックデバイスは自動的に暗号化されません。
注記
ki ckstart ファイルを使うと、暗号化した新規ブロックデバイスごとに個別のパスフレーズを設定
することができます。また、Anaconda のデフォルトの暗号法である aes-xts-plain64 が適切でな
い場合、kickstart では別のタイプの暗号法を指定することもできます。暗号化するデバイスの依存
関係で、auto part、part、parti ti o n、l o g vo l 、および rai d 指示文などとともに、-ci pher= <cipher-string> を指定することができます。このオプションを有効にするには、-encrypted オプションと合わせて使う必要があります。<cipher-string> の形式および暗号法の組み
合わせに関する詳細情報は、「Red Hat Enterprise Linux での LUKS 実装」 を参照してください。
kickstart の設定に関する詳細は、Red Hat Enterprise Linux 6 インストールガイド を参照してくだ
さい。
3.1 .3.6 . その他のリソース
Red Hat Enterprise Linux における LUKS や暗号化ハードディスクについての詳細は、以下のリンクにア
クセスしてください。
LUKS home page
LUKS/cryptsetup FAQ
LUKS - Linux Unified Key Setup Wikipedia Article
HOWTO: Creating an encrypted Physical Volume (PV) using a second hard drive and pvmove
3.2. 移動中のデータ
移動中のデータとは、ネットワークで送信中のデータのことです。移動中のデータに対する最大の脅威は傍
受と改ざんです。他人に傍受されると、なりすましに使用されたり機密情報へのアクセスを許してしまうた
め、ユーザー名とパスワードを保護せずにネットワーク上で送信することは決してすべきではありません。
ネットワークセッションを暗号化すると、移動中のデータのセキュリティレベルが確実に高めるられま
す。
移動中のデータは、とりわけ攻撃者に対して脆弱です。攻撃者はコンピューターの近くにいる必要がなく、
単に通信パスのどこかにさえいればよいためです。暗号化トンネルを使用すると、通信パスに沿ってデータ
を保護することができます。
3.2.1. 仮想プライベートネットワーク (VPN)
仮想プライベートネットワーク(VPN) は、すべてのポートを対象に、コンピューター間またはコンピュー
ターのネットワーク間で暗号化されたトンネルを提供します。VPN を設定していると、クライアントから
のすべてのネットワークトラフィックは暗号化トンネルを経由してサーバーに転送されます。つまり、クラ
イアントは VPN 経由で接続するサーバーと論理的に同じネットワーク上にあることを意味します。VPN は
かなり一般的になっており、そのセットアップと利用は簡単です。
3.2.2. SSH (Secure Shell)
138
⁠第3章 暗号化
Secure Shell (SSH) は、セキュアなチャネル上で別のシステムと通信するために使用される強力なネット
ワークプロトコルです。SSH 上の送信は暗号化され、傍受から保護されます。暗号化ログインを使用して、
従来のユーザー名とパスワードよりも優れた認証方法を提供することもできます。「暗号化ログイン」 を参
照してください。
SSH のアクティベーションはとても簡単です。sshd デーモンを開始すると、システムは接続の受け付けを
開始し、接続プロセス時に正しいユーザー名とパスワードが指定されると、システムへのアクセスが許可さ
れます。SSH サービスの標準的な T C P ポートは 22 ですが、設定ファイル /etc/ssh/sshd _co nfi g
を修正してサービスを再起動すると、これを変更することができます。このファイルには SSH の他の設定
オプションも含まれています。
sshd サービスはデフォルトで、ブート時に自動的に開始します。デーモンのステータスを調べるに
は、ro o t で以下のコマンドを実行します。
~]# servi ce sshd status
sshd サービスを再起動するには、ro o t で以下のコマンドを実行します。
~]# servi ce sshd restart
システムサービスの管理に関する詳細情報は、Red Hat Enterprise Linux 6 導入ガイド の サービスとデー
モン の章を参照してください。
Secure Shell (SSH) はコンピューター間に暗号化されたトンネルを提供しますが、単一ポートしか使用し
ません。ポート転送は SSH トンネルで実行可能で、トラフィックはこのトンネルを通過するので暗号化さ
れます。ただし、ポート転送は、VPN (「仮想プライベートネットワーク (VPN)」) ほど流動的ではありま
せん。
3.2 .2 .1 . 暗号化ログイン
SSH は、コンピューターにログインするための暗号化鍵の使用をサポートしています。これはパスワードの
みの使用よりもはるかに安全です。この方法を他の認証方法と組み合わせると、マルチファクター認証
(multifactor authentication) と見なすことができます。マルチ認証方法についての詳細は、「複数の認証方
法」 を参照してください。
認証における暗号鍵の使用を有効にするには、/etc/ssh/sshd _co nfi g ファイルの
P ubkeyAuthenti cati o n 設定指示文を yes に設定する必要があります。これは、デフォルト設定にな
ることに注意してください。P asswo rd Authenti cati o n 指示文を no に設定すると、ログインでのパ
スワード使用が無効になります。
SSH 鍵は ssh-keyg en コマンドを使って生成できます。引数なしでこれを実行すると、2048 ビットの
RSA 鍵のセットが作成されます。デフォルトでは、この鍵は ~ /. ssh ディレクトリーに保存されます。b スイッチを使うと、鍵のビット強度を修正することができます。通常は、2048 ビット鍵で十分な強度が
提供されます。SSH 鍵の生成に関する詳細情報は、Red Hat Enterprise Linux 6 導入ガイド の 鍵ペアの生
成 の章を参照してください。
~ /. ssh ディレクトリーに、2 つの鍵が見つかるはずです。ssh-keyg en コマンドの実行時にデフォルト
を受け入れると、生成されるファイル名は i d _rsa と i d _rsa. pub になり、それぞれに秘密鍵と公開鍵
が含まれます。秘密鍵はファイルの所有者のみが読み取り可能として、公開されないように常に保護してく
ださい。ただし公開鍵は、ログインするシステムに送信する必要があります。ssh-co py-i d コマンドを
使用すると、サーバーにこの鍵を移動することができます。
~]$ ssh-copy-id -i [user@]server
このコマンドは、server 上の ~ /. ssh/autho ri zed _key ファイルに自動で公開鍵を追加します。ユー
ザーがサーバーへのログインを試みる際には、sshd デーモンがこのファイルをチェックします。
139
Red Hat Ent erprise Linux 6 セキュリティガイド
パスワードやその他の認証メカニズムと同様に、SSH 鍵は定期的に変更する必要があります。この
際、autho ri zed _key ファイルから使用されていない鍵を必ず消去してください。
3.2 .2 .2 . 複数の認証方法
マルチファクター認証とも呼ばれる複数の認証方式を使用すると、権限のないアクセスに対する保護のレベ
ルが高まります。このため、システムのセキュリティを強化する際には、マルチファクター認証を検討して
ください。マルチファクター認証を使用するシステムにログインしようとすると、ユーザーは指定されたす
べての認証方式で成功しないと、アクセスが認められません。
使用する認証方式を指定するには、/etc/ssh/sshd _co nfi g ファイル内の
Authenti cati o nMetho d s 設定指示文を使用します。この指示文では、必要となる認証方式の複数のリ
ストを定義できることに注意してください。複数を定義する場合は、各方式を少なくとも 1 つのリストで定
義する必要があります。各リストは空白で区切ります。リスト内の各認証方式の名前はコンマ区切りとしま
す。例を示します。
AuthenticationMethods publickey,gssapi-with-mic publickey,keyboardinteractive
上記の Authenti cati o nMetho d s 指示文を使って設定された sshd デーモンは、ユーザーが
publ i ckey 認証の後に g ssapi -wi th-mi c または keybo ard -i nteracti ve 認証でログインを完了
した場合にのみ、アクセスを許可します。必要とされる認証方式はそれぞれ、/etc/ssh/sshd _co nfi g
ファイル内の対応する設定指示文 (P ubkeyAuthenti cati o n など) で明示的に有効となっている必要が
あることに注意してください。利用可能な認証方式の全般的なリストは、ssh(1) man ページの
AUTHENTICATION セクションを参照してください。
3.2 .2 .3. SSH の他のセキュア化
プロトコルバージョン
Red Hat Enterprise Linux で提供される SSH プロトコルは SSH-1 と SSH-2 の両バージョンをサポートし
ますが、可能な場合は常に後者のみを使用してください。SSH-2 バージョンには、旧式の SSH-1 の多くの
改善点が含まれており、高度な設定オプションの多くは SSH-2 でのみ使用可能となっています。
SSH プロトコルによる認証と対象となる通信の保護を最大限まで活用するために、ユーザーは SSH-2 を使
用することが推奨されます。sshd デーモンがサポートするプロトコルのバージョン
は、/etc/ssh/sshd _co nfi g ファイル内で P ro to co l 設定指示文を使って指定できます。デフォル
ト設定は 2 になります。
鍵のタイプ
ssh-keyg en コマンドはデフォルトで SSH-2 RSA 鍵のペアを生成しますが、-t オプションを使う
と、D SA または ECD SA 鍵を生成するように指示することもできます。ECD SA (Elliptic Curve D igital
Signature Algorithm) は、同じ対称鍵の長さでより優れたパフォーマンスを提供します。また、より短い鍵
も生成します。
デフォルト以外のポート
デフォルトでは、sshd デーモンは 22 ネットワークポートをリッスンします。ポートを変更すると、自動
ネットワークスキャンをベースとする攻撃に対するシステムの露出を減らすことになるので、曖昧さによっ
てセキュリティが増します。ポートは、/etc/ssh/sshd _co nfi g ファイルの P o rt 指示文で指定でき
ます。デフォルト以外のポート使用を可能にするには、デフォルトの SELinux ポリシーの変更も必要にな
ることに注意してください。これは、ro o t で以下のコマンドを実行して ssh_po rt_t SELinux タイプを
修正することで可能になります。
~]# semanag e -a -t ssh_po rt_t -p tcp port_number
14 0
⁠第3章 暗号化
上記のコマンドでは、port_number を P o rt 指示文で指定する新たなポート番号に置き換えます。
R o o t 以外のログイン
特定のユースケースで ro o t ユーザーとしてのログインが必要ない場合は、/etc/ssh/sshd _co nfi g
ファイルで P ermi tR o o tLo g i n 設定指示文を no に設定することを検討してください。ro o t ユーザー
としてのログインの可能性をなくすことで、どのユーザーが通常のユーザーとしてログインした後に ro o t
権限を獲得し、権限のあるコマンドを実行したかを管理者が監査できるようになります。
重要
本セクションでは、SSH 設定のセキュア化における最も一般的な方法にフォーカスしてきました。
ただし、ここで提案された方法が網羅的または決定的であるというわけではありません。sshd デー
モンの動作修正に利用可能な設定指示文すべてについての説明は sshd _co nfi g (5) の man ペー
ジを、基本的な SSH の概念については ssh(1) の man ページを参照してください。
3.3. OpenSSL インテル AES-NI エンジン
一部の Intel プロセッサーには、Intel Advanced Encryption Standard (AES) New Instructions (AES-NI)
エンジンが実装されています。このエンジンは、ハードウェアの暗号化/暗号化解除を極めて高速に処理す
ることができます。
注記
AES-NI エンジンをサポートする Intel プロセッサーのリストについては、Intel の ARK を参照してく
ださい。
検出されたプロセッサーがサポート対象の場合、AES-NI エンジンは自動的に有効になります。プロセッ
サーがサポート対象可動化を確認するには、以下の手順にしたがってください。
1. プロセッサーに AES 指示セットがあることを確認します。
~]# g rep -m1 -o aes /pro c/cpui nfo
aes
2. root で以下のコマンドを実行し、出力を比較します。後者のコマンドでのパフォーマンスが大幅に
優れていれば、AES-NI が有効になっていることを意味します。下記の出力は短縮してあることに
注意してください。
~]# o penssl speed aes-128-cbc
The 'numbers' are in 1000s of bytes per second processed.
type
16 bytes
64 bytes
256 bytes
1024 bytes
8192 bytes
aes-128 cbc
99696.17k
107792.98k
109961.22k
110559.91k
110742.19k
~]# o penssl speed -evp aes-128-cbc
The 'numbers' are in 1000s of bytes per second processed.
type
16 bytes
64 bytes
256 bytes
1024 bytes
14 1
Red Hat Ent erprise Linux 6 セキュリティガイド
8192 bytes
aes-128-cbc
902752.94k
800450.23k
873269.82k
896864.85k
903446.19k
OpenSSH の速度をテストするには、以下のようなコマンドを実行することができます。
~]# d d i f= /d ev/zero co unt= 10 0 bs= 1M | ssh -c aes128-cbc l o cal ho st "cat
>/d ev/nul l "
root@ localhost's password:
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 4.81868 s, 21.8 MB/s
AES-NI エンジンの詳細については、Intel® Advanced Encryption Standard Instructions (AES-NI) を参
照してください。
3.4 . 乱数ジェネレーターの使用
簡単に解読されない安全な暗号鍵を生成するには、乱数のソースが必要になります。一般的に、番号がより
ランダムであればあるほど、一意の鍵を得られる可能性が高まります。乱数生成の エントロピー は通常、コ
ンピューティング環境の「ノイズ」または 乱数ジェネレーター のハードウェアを使用することで獲得され
ます。
rng-tools パッケージの一部である rng d デーモンは、エントロピーを引き出すために環境ノイズと乱数
ジェネレーターの両方が使えます。このデーモンは、乱数度のソースが提供したデータがランダムかどうか
をチェックし、その後にカーネルの乱数エントロピープールに保存します。これが生成した乱数
は、/d ev/rand o m および /d ev/urand o m の各キャラクターデバイスから利用できます。
/d ev/rand o m と /d ev/urand o m の違いは、前者はブロックデバイスであり、適切な乱数出力の生成に
エントロピーが不十分だと判断すると、乱数の提供が停止される一方で、/d ev/urand o m は非ブロック
ソースであり、カーネルのエントロピープールを再利用して無制限の仮の乱数を提供できる、という点で
す。ただし、この場合のエントロピーは低くなります。このため、長期の暗号鍵の作成に
は、/d ev/urand o m は使用しないでください。
rng-tools パッケージをインストールするには、ro o t で以下のコマンドを実行します。
~]# yum i nstal l rng -to o l s
rng d デーモンを起動するには、ro o t で以下のコマンドを実行します。
~]# servi ce rng d start
デーモンのステータスを確認するには、以下のコマンドを実行します。
~]# servi ce rng d status
オプションのパラメーターを使って rng d デーモンを起動するには、直接これを実行します。たとえば、乱
数入力の代替ソース (/d ev/hwrand o m 以外) を指定するには、以下のコマンドを実行します。
~]# rng d --rng -d evi ce= /dev/hwrng
上記のコマンドは、/d ev/hwrng を乱数読み取り先のデバイスとして rng d デーモンを起動します。同様
に、-o (または --rand o m-d evi ce) オプションを使うと、乱数の出力に (デフォルトの /d ev/rand o m
ではなく) カーネルデバイスを選択します。利用可能なオプションについては、rngd(8) の man ページを参
14 2
⁠第3章 暗号化
照してください。
rng-tools パッケージには rn g t est ユーティリティーも含まれており、これはデータの乱数度のチェックに
使用できます。/d ev/rand o m の出力の乱数度をテストするには、以下のようにrn g t est ツールを使用し
ます。
~]$ cat /d ev/rand o m |
rngtest 2
Copyright (c) 2004 by
This is free software;
NO warranty; not even
PURPOSE.
rng test -c 10 0 0
Henrique de Moraes Holschuh
see the source for copying conditions. There is
for MERCHANTABILITY or FITNESS FOR A PARTICULAR
rngtest: starting FIPS tests...
rngtest: bits received from input: 20000032
rngtest: FIPS 140-2 successes: 1000
rngtest: FIPS 140-2 failures: 0
rngtest: FIPS 140-2(2001-10-10) Monobit: 0
rngtest: FIPS 140-2(2001-10-10) Poker: 0
rngtest: FIPS 140-2(2001-10-10) Runs: 0
rngtest: FIPS 140-2(2001-10-10) Long run: 1
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
rngtest: input channel speed: (min=308.697; avg=623.670;
max=730.823)Kibits/s
rngtest: FIPS tests speed: (min=51.971; avg=137.737; max=167.311)Mibits/s
rngtest: Program run time: 31461595 microseconds
rn g t est ツールの出力で failures の数字が大きいと、テストされたデータの乱数度が不十分で信頼すべき
でないことを意味します。rn g t est ユーティリティーで利用可能なオプションのリストについて
は、rngtest(1) の man ページを参照してください。
3.5. GNU Privacy Guard (GPG)
GnuPG (GPG) は、ファイルや電子メールメッセージの署名および暗号化を可能にする PGP のオープン
ソースバージョンです。これはメッセージやファイルの整合性を維持するのに役立ち、ファイルや電子
メールに含まれる情報の機密性も保護します。電子メールの場合、GPG は二重の保護を提供します。メッ
セージがネットワークを介して送信されると、静止しているデータだけでなく移動中のデータも保護しま
す。これらの概念に関する詳細は、「静止しているデータ」 および 「移動中のデータ」 を参照してくださ
い。
GnuPG (GPG) は、ユーザーを識別し、通信 (確認できない人々との通信も含む) を認証するために使われ
ます。GPG は GPG 署名のある電子メールを読む人がその真正性を検証できるようにします。つまり、
GPG は、あなたが署名した通信が実際にあなたからのものであることをかなりの精度で確認できるように
します。GPG は、第三者がコードを変更したり、会話を傍受したり、メッセージを改ざんしたりするのを
防ぐ助けになるので有用です。
3.5.1. GNOME での GPG 鍵の生成
GNOME で GPG 鍵を作成するには、以下の手順にしたがいます。
1. Seah o rse ユーティリティーをインストールします。これにより GPG 鍵の管理が容易になりま
す。
~]# yum i nstal l seaho rse
14 3
Red Hat Ent erprise Linux 6 セキュリティガイド
2. 鍵を作成するには、アプリケーション → アクセサリメニューから、パスワードと暗号鍵を選択し
ます。これでアプリケーション Seah o rse が起動します。
3. ファイルメニューから新規を選択し、P G P 鍵 を選択した後に続行 をクリックします。
4. 氏名、電子メールアドレスおよび自身についての説明のオプションのコメント (例: John C. Smith,
[email protected], Software Engineer) を入力します。生成 をクリックします。鍵のパスフ
レーズを問い合わせるダイアログが表示されます。パスフレーズは強いだけでなく覚えやすいもの
を選択してください。O K をクリックすると鍵が作成されます。
警告
パスフレーズを忘れると、データの暗号解除ができなくなります。
GPG 鍵 の ID を見つけるには、新規に作成された鍵の横にある 鍵の ID コラムを確認します。多くの場
合、鍵 の ID を求められたら、0 x6 789 ABC D などのように鍵のID の前に 0 x を付けます。秘密鍵のバッ
クアップを取り、安全な場所に保管してください。
3.5.2. KDE での GPG 鍵の作成
KD E で GPG 鍵を作成するには、以下の手順にしたがいます。
1. メインメニューからアプリケーション → ユーティリティ → 暗号ツールを選択して KGpg プログ
ラムを起動します。これまで KGpg を使用したことがなければ、プログラムが独自の GPG 鍵ペア
を生成するプロセスを詳しく説明します。
2. ダイアログボックスで、新しい鍵ペアを生成するよう求められます。名前、電子メールアドレス、
およびオプションのコメントを入力します。鍵の長さ (ビット数) とアルゴリズムに加え、鍵の有効
期限も選択できます。
3. 次のダイアログでパスフレーズを入力します。この時点で、鍵が KG pg のメインウィンドウに表示
されます。
警告
パスフレーズを忘れると、データの暗号解除ができなくなります。
GPG 鍵 の ID を見つけるには、新規に作成された鍵の横にある 鍵の ID コラムを確認します。多くの場
合、鍵 の ID を求められたら、0 x6 789 ABC D などのように鍵のID の前に 0 x を付けます。秘密鍵のバッ
クアップを取り、安全な場所に保管してください。
3.5.3. コマンドラインを用いた GPG 鍵の生成
1. 次のシェルコマンドを使用します。
~]$ g pg 2 --g en-key
このコマンドは、公開鍵と秘密鍵で構成される鍵ペアを生成します。受信側の人々は、ユーザーか
らの通信の認証や暗号化解除を行うためにこのユーザーの公開鍵を使用します。そのため、とりわ
けメーリングリストのように、送信者からの認証済みの通信を受け取ることを希望すると思われる
人々に向けて、できる限り幅広く公開鍵を配布してください。
14 4
⁠第3章 暗号化
2. 一連のプロンプトにしたがってプロセスを進めます。デフォルト値を割り当てる場合は Enter
キーを押します。最初のプロンプトは、使用を希望する鍵の種類を選択するよう尋ねます。
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection?
ほとんど多くの場合、デフォルトが適切な選択になります。RSA/RSA 鍵を選択すると、通信に署
名するだけでなく、ファイルを暗号化することができます。
3. 鍵のサイズを選択します。
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
ここでも、デフォルトの 2048 はほとんどすべてのユーザーに適しており、これは極めて強いレベ
ルのセキュリティになります。
4. 鍵の有効期限を選択します。デフォルトの no ne を使用するのではなく、失効日を選択する方がよ
いでしょう。例えば、鍵にある電子メールアドレスが無効になると、失効日が設定されているため
に、他の人々はその公開鍵を使用するのを止めるように通知されます。
Please specify how long the key should be valid.
0 = key does not expire
d = key expires in n days
w = key expires in n weeks
m = key expires in n months
y = key expires in n years
key is valid for? (0)
例えば、1y の値を入力すると、鍵の有効期間は 1 年間になります (鍵の生成後にこの失効日を変更
することができます。)
5. g p g 2 プログラムが署名情報を尋ねる前に、以下のプロンプトが表示されます。
Is this correct (y/N)?
プロセスを終了するには y を入力します。
6. GPG 鍵用に氏名と電子メールアドレスを入力します。このプロセスは、ユーザーを個人として認証
するためのものです。このため、本当の名前を入力してください。偽の電子メールアドレスを選択
すると、他の人があなたの公開鍵を見つけにくくなります。これにより、通信の認証が困難になり
ます。例えば、メーリングリストの自己紹介にこの GPG 鍵を使用する場合、そのリストで使用し
ている電子メールアドレスを入力します。
コメントフィールドには、エイリアスやその他の情報を記載します。(一部の人は、目的別に複数の
鍵を使用しており、「オフィス」または「オープンソースプロジェクト」などのコメントを付けて
それぞれの鍵を識別しています。)
7. すべてのエントリが正しければ、確認プロンプトで O と入力して続行するか、または問題がある場
合はそれを修正するために他のオプションを使用します。最後に、秘密鍵のパスフレーズを入力し
ます。g p g 2 プログラムは、入力エラーがないことを確認するためにパスフレーズを 2 回入力する
ように指示します。
14 5
Red Hat Ent erprise Linux 6 セキュリティガイド
8. 最後に、g pg 2 はランダムなデータを生成して鍵を可能な限り一意なものにします。このプロセス
をスピードアップするには、この手順の実行中にマウスを動かし、ランダムなキーを入力するか、
またはシステム上で他のタスクを実行します。この手順が完了すると、鍵が完成して使用可能な状
態になります。
pub 1024D/1B2AFA1C 2005-03-31 John Q. Doe <jqdoe@ example.com>
Key fingerprint = 117C FE83 22EA B843 3E86 6486 4320 545E 1B2A
FA1C
sub 1024g/CEA4B22E 2005-03-31 [expires: 2006-03-31]
9. 鍵のフィンガープリントは、あなたの鍵の「署名」の短縮版です。これを使って、他の人々があな
たの実際の公開鍵を (改ざんされない状態で) 受け取ったことを確認することができます。このフィ
ンガープリントを書き留めておく必要はありません。フィンガープリントを表示するには、以下の
コマンドをあなたの電子メールアドレスに置き換えて使用します。
~]$ g pg 2 --fi ng erpri nt jq d o e@ exampl e. co m
「GPG 鍵 の ID 」は、公開鍵を識別する 16 進法の 8 文字で構成されます。上記の例では、GPG
鍵 ID は 1B2AFA1C です。多くの場合、鍵 ID を求められる際には、0 x6 789 ABC D などのよう
に、鍵 ID の前に 0 x を付けます。
警告
パスフレーズを忘れると、鍵を使うことができなくなり、その鍵で暗号化されたすべてのデータが失
われます。
3.5.4 . 公開鍵の暗号化について
1. Wikipedia - Public Key Cryptography
2. HowStuffWorks - Encryption
3.6. st unnel の使用
st u n n el プログラムは、クライアントとサーバー間の暗号化ラッパーです。設定ファイルで指定された
ポートをリッスンし、クライアントとの通信を暗号化し、通常のポートでリッスンしているオリジナルの
デーモンにデータを転送します。こうすることで、それ自体で暗号化をサポートしていないサービスをセ
キュアにすることができます。また、SSL バージョン 2 や 3 など、POOD LE SSL 脆弱性 (CVE-20143566) の影響を受け、安全上に理由から使用を避けたい暗号化サービスのセキュリティを改善することも
できます。詳細は、https://access.redhat.com/solutions/1234773 を参照してください。(Red Hat
Enterprise Linux 6.6 以前の) 2.4.39 以前の O p en LD AP および C U PS は、自身の設定で SSL を無効に
する方法がないコンポーネントの例です。
3.6.1. st unnel のインストール
stunnel パッケージをインストールするには、ro o t で以下のコマンドを実行します。
~]# yum i nstal l stunnel
3.6.2. st unnel を T LS ラッパーとして設定する
14 6
⁠第3章 暗号化
st u n n el の設定は、以下の手順にしたがいます。
1. st u n n el とどのサービスを使うにしても、有効な証明書が必要になります。適切な証明書がない場
合は、認証機関 に申し込むか、自己署名の証明書を自身で作成することもできます。
警告
実稼働環境で稼働しているサーバーには、常に認証機関で署名された証明書を使用してくだ
さい。自己署名証明書は、テスト目的またはプライベートネットワークのみで使用すること
をお勧めします
st u n n el 用に自己署名証明書を作成するには、ro o t で /etc/pki /tl s/certs/ ディレクト
リーに移動し、以下のコマンドを実行します。
certs]# make stunnel . pem
すべての質問に回答して、プロセスを完了します。
2. 証明書ができたら、st u n n el 用の設定ファイルを作成します。これはテキストファイルで、各行
でオプションまたはサービス定義の開始を指定します。また、コメントや空の行使って、読みやす
くすることもできます。コメントはセミコロンで開始します。
stunnel RPM パッケージには /etc/stunnel / ディレクトリーが含まれ、設定ファイルはここで
保存します。st u n n el ではファイル名で特定の形式や拡張子は必要ありません
が、/etc/stunnel /stunnel . co nf としてください。以下のコンテンツでは、st u n n el を
TLS ラッパーとして設定します。
cert = /etc/pki/tls/certs/stunnel.pem
; Allow only TLS, thus avoiding SSL
sslVersion = TLSv1
chroot = /var/run/stunnel
setuid = nobody
setgid = nobody
pid = /stunnel.pid
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
[service_name]
accept = port
connect = port
TIMEOUTclose = 0
別の方法では、ssl Versi o n = T LSv1 の行を以下の行で置き換えると SSL を避けられます。
options = NO_SSLv2
options = NO_SSLv3
オプションの目的は、以下のとおりです。
cert — 証明書へのパスです。
ssl Versi o n — SSL のバージョンです。SSL と TLS は別個の暗号化プロトコルですが、こ
こでは T LS が使えることに注意してください。
14 7
Red Hat Ent erprise Linux 6 セキュリティガイド
chro o t — 変更後の root ディレクトリーです。ここでは、stunnel プロセスがより安全に実行
できます。
setui d , setg i d — st u n n el プロセスを実行するユーザーおよびグループ。no bo d y は制限
されたシステムアカウントになります。
pi d — st u n n el がプロセス ID を保存するファイルで、chro o t に相対的になります。
so cket — ローカルおよびリモートのソケットオプション。このケースでは、ネーグルのアル
ゴリズムを無効にして、ネットワーク遅延を改善します。
[service_name] — サービ定義の開始点。この下に続く行で使用されるオプションは、該当
サービのみに適用されます。この上にあるオプションは、 st u n n el でグローバルに適用されま
す。
accept — リッスンするポートです。
co nnect — 接続先のポートです。このポートは、セキュアにしているサービスが使用するもの
である必要があります。
T IMEO UT cl o se — クライアントから close_notify 警告が出されるまでの待ち時間です。これ
が 0 の場合は、st u n n el はまったく待機しません。
o pti o ns — OpenSSL ライブラリーのオプション。
例3.1 O p en LD AP のセキュア化
2.4.39 以前の O p en LD AP で stunnel を TLS ラッパーとして設定するには、以下の値を使用し
ます。
[openldap]
accept = 636
connect = 389
6 36 は、セキュアな LD AP の標準ポートです。389 は、O p en LD AP デーモンがリッスンする
ポートです。
例3.2 C U PS のセキュア化
同様に、C U PS 用に stunnel を TLS ラッパーとして設定するには、以下の値を使用します。
[cups]
accept = 632
connect = 631
6 32 の代わりに使用されていないポートを使うこともできます。6 31 は C U PS が通常使用する
ポートです。
3. chro o t ディレクトリーを作成し、setui d オプションで指定されているユーザーにこのディレク
トリーへの書き込みアクセスを与えます。これを行うには、ro o t で以下のコマンドを実行しま
す。
~]# mkd i r /var/run/stunnel
~]# cho wn no bo d y: no bo d y /var/run/stunnel
14 8
⁠第3章 暗号化
これで、st u n n el が PID ファイルを作成できるようになります。
4. 使用中のシステムでファイアウォールが新たなポートへのアクセスを許可しない設定となっている
場合は、この設定を許可するように変更します。詳細は、「ファイアウォール」 の 「他のポー
ト」 を参照してください。
5. 設定ファイルと chro o t ディレクトリーを作成し、指定されたポートがアクセス可能なことを確認
したら、st u n n el を開始することができます。
3.6.3. st unnel の起動、停止、再起動
st u n n el を起動するには、ro o t で以下のコマンドを実行します。
~]# stunnel /etc/stunnel /stunnel . co nf
デフォルトでは、st u n n el は出力のログに /var/l o g /secure を使用します。
st u n n el を停止するには、ro o t で以下のコマンドを実行してプロセスを強制終了させます。
~]# ki l l `cat /var/run/stunnel /stunnel . pi d `
st u n n el の実行中に設定ファイルを編集した場合は、st u n n el を停止して再起動すると、変更が反映され
ます。
3.7. T LS 設定の強化
T LS (トランスポート層セキュリティ ) は、ネットワーク通信をセキュアにするために使用する暗号化プ
ロトコルです。優先する鍵交換プロトコル、認証方法、および暗号化アルゴリズムを設定することでシステ
ムのセキュリティ設定を強化する際には、サポートするクライアントの範囲が広ければ広いほど、セキュリ
ティのレベルが低くなることを認識しておく必要があります。反対に、セキュリティ設定を厳密にすると、
クライアントとの互換性が制限され、システムからロックアウトされるユーザーが出てくる可能性もありま
す。可能な限り厳密な設定を目指し、互換性のために必要な場合にのみ、これを緩めるようにしてくださ
い。
Red Hat Enterprise Linux に含まれるライブラリーが提供するデフォルト設定は、ほとんどの導入において
十分に安全なものです。T LS 実装は、可能な場合はセキュアなアルゴリズムを使用する一方で、レガシー
クライアントまたはサーバーとの接続を妨げません。セキュアなアルゴリズムやプロトコルをサポートして
いないレガシーのクライアントやサーバーの接続が期待できない場合やそれらの接続が許可されない場合
に、厳密なセキュリティ要件の環境で本セクションで説明されている強化設定を適用してください。
3.7.1. 有効にするアルゴリズムの選択
いくつかのコンポーネントを選択して設定する必要があります。以下で説明するものはすべて、その設定結
果 (つまり、クライアントにおけるサポートレベル) やシステム上でソリューションが持つコンピューター
のデマンドに直接影響します。
プロトコルのバージョン
最新バージョンの T LS は、すぐれたセキュリティメカニズムを提供します。古いバージョンのT LS (さら
に SSL) のサポートを含める切実な理由がなければ、最新バージョンのT LS のみを使ってシステムが接続
するようにしてください。
14 9
Red Hat Ent erprise Linux 6 セキュリティガイド
SSL のバージョン 2 または 3 を使った処理を許可しないでください。これらのバージョンには、セキュリ
ティに関する重大な脆弱性があります。T LS のバージョン 1.0 以上を使った処理のみを許可してくださ
い。現行の T LS バージョン 1.2 を常に優先するようにしてください。
注記
T LS の全バージョンのセキュリティは現在、T LS 拡張機能、特定の暗号 (下記参照)、および他の回
避策に依存していることに注意してください。T LS の接続ピアはすべてセキュアな再交渉記号
(RFC 5746) を実装する必要があり、圧縮をサポートしていない必要があります。また、C BC モード
の暗号 (Lucky Thirteen 攻撃) に対するタイミング攻撃を緩和する方法を実装する必要がありま
す。T LS v1. 0 クライアントはさらに、レコード分割 (BEAST 攻撃に対する回避策) を実装する必
要があります。T LS v1. 2 は、AES-G C M、AES-C C M、または C amel l i a-G C M といった既知の
問題のない 認証付き暗号 (Authenticated Encryption with Associated D ata : AEAD ) モードの暗号
をサポートしています。ここに記載された緩和策はすべて、Red Hat Enterprise Linux に含まれる暗
号ライブラリーに実装されています。
プロトコルのバージョンおよび推奨される使用方法についての概要は、表3.1「プロトコルのバージョン」
を参照してください。
表3.1 プロトコルのバージョン
プロトコルの
バージョン
推奨される使用方法
SSL v2
SSL v3
T LS v1. 0
使用しないでください。重大なセキュリティ上の脆弱性があります。
使用しないでください。重大なセキュリティ上の脆弱性があります。
必要な場合は、相互運用性目的で使用します。相互運用性を保証する方法では緩和でき
ない既知の問題があります。このため、緩和策はデフォルトでは有効になっていませ
ん。最新の暗号化スイートには対応していません。
必要な場合は、相互運用性目的で使用します。既知の問題はありませんが、Red Hat
Enterprise Linux の T LS 実装すべてに含まれるプロトコル修正に依存します。最新の
暗号化スイートには対応していません。
推奨されるバージョンです。最新の AEAD 暗号化スイートに対応しています。
T LS v1. 1
T LS v1. 2
Red Hat Enterprise Linux のコンポーネントのなかには、T LS v1. 1 や v1. 2 に対応しているのに
T LS v1. 0 を使用する設定になっているものもあります。これは、最新バージョンのT LS に対応してい
ない可能性のある外部サービスとの最高レベルの相互運用性を達成する目的でこのようになっています。相
互運用性の要件に対応して、利用可能な最高レベルの T LS バージョンを有効にしてください。
重要
SSL v3 の使用は推奨されません。これはセキュアではなく一般の使用には適していません
が、SSL v3 をどうしても有効にする必要がある場合は、「stunnel の使用」 を参照してください。
暗号化に対応していない、または旧式でセキュアでない暗号化モードの使用しかできないサービスを
使用する場合でも、st u n n el を使用して安全に通信を暗号化する方法が説明されています。
128 ビット未満のセキュリティしか提供しない暗号化スイートは直ちに不安というわけではありません
が、これらは短期間の使用に考慮すべきではありません。128 ビット以上のセキュリティを使用するアル
ゴリズムは少なくとも数年間は解読不可能であることが期待されているので、強く推奨されます。3D ES 暗
号は 168 ビットの使用を提供しますが、実際に提供されているのは 112 ビットのセキュリティであること
に注意してください。
150
⁠第3章 暗号化
(perfect) forward secrecy (PFS) をサポートしている暗号化スイートを常に優先させてください。PFS は、
サーバー鍵が漏れたとしても、暗号化されたデータの秘密性は確保されます。これにより、すばやい R SA
鍵の交換がなくなる一方、EC D HE および D HE の使用が可能になります。これら 2 つのうちでは、EC D HE
の方がより速いため、優先される選択肢となります。
また、EC D SA 証明書を使って EC D HE 鍵交換を使用する際は、純粋な R SA 鍵交換よりも速くなります。レ
ガシークライアント用のサポートを提供するには、サーバー上に証明書と鍵のペアを 2 つインストールしま
す。ひとつは EC D SA 鍵 (新規クライアント用) で、もうひとつはR SA 鍵 (レガシークライアント用) です。
公開鍵の長さ
R SA 鍵を使用する際は常に、少なくとも SHA-256 で署名された 最低 3072 ビットの鍵の長さを優先させ
ます。これは、真の 128 ビットのセキュリティでは十分な大きさです。
警告
システムのセキュリティ強度は、チェーンの中の最も弱いリンクが示すものと同じであるというこ
とを念頭に置いてください。たとえば、強力な暗号化だけではすぐれたセキュリティは保証されま
せん。鍵と証明書も同様に重要で、 認証機関 (CA) が鍵の署名に使用するハッシュ機能と鍵もまた重
要になります。
3.7.2. T LS 実装の使用
Red Hat Enterprise Linux には、完全機能の T LS 実装が同梱されています。本セクションで
は、O p en SSL および G n u T LS の設定を説明します。個別アプリケーションでの T LS サポートの設定方
法については、「特定アプリケーションの設定」 を参照してください。
利用可能な T LS 実装は、各種の 暗号化スイートをサポートします。これらのスイートは、T LS でセキュア
化された通信の確立および使用時に一緒に送られる全要素を定義します。
「有効にするアルゴリズムの選択」 で示された推奨事項と検討するとともに、各種の実装で含まれている
ツールを使って、ご自分のユースケースにとって最善のセキュリティを提供する暗号化スイートを一覧表
示、指定してください。そこでできた暗号化スイートを使うと、各アプリケーションが接続を処理してセ
キュア化することができます。
重要
使用する TLS 実装またはその実装を利用するアプリケーションが更新またはアップグレードされた
後は、必ず使用中の設定をチェックしてください。新しいバージョンは、ユーザーが有効化を希望
せずかつ使用中の設定が無効にしない新たな暗号化スイートを導入する場合があります。
3.7 .2 .1 . Ope nSSL での暗号化スイートの使用
O p en SSL は、SSL および T LS プロトコルをサポートするツールキットおよび暗号化ライブラリーです。
Red Hat Enterprise Linux では、設定ファイルは /etc/pki /tl s/o penssl . cnf にあります。その形式
は、config(1) で確認できます。
インストール済みの O p en SSL でサポートされている暗号化スイートすべてを一覧表示するには、以下の
ように o penssl コマンドで ci phers サブコマンドを実行します。
~]$ o penssl ci phers -v ' ALL: C O MP LEMENT O FALL'
151
Red Hat Ent erprise Linux 6 セキュリティガイド
(O p en SSL ドキュメンテーションでは cipher strings および keywords と呼ばれる) 他のパラメーターを
ci phers コマンドに渡して出力を絞ります。特別なキーワードを使うと、特定の条件を満たすスイートの
みを一覧表示することができます。たとえば、HIG H グループに属するスイートのみを一覧表示するには、
以下のコマンドを実行します。
~]$ o penssl ci phers -v ' HIG H'
利用可能なキーワードおよび暗号化文字列の一覧は、ciphers(1) の man ページを参照してください。
「有効にするアルゴリズムの選択」 の推奨事項を満たす暗号化スイートを一覧表示するには、以下のような
コマンドを実行します。
~]$ o penssl ci phers -v
' kEEC D H+ aEC D SA+ AES: kEEC D H+ AES+ aR SA: kED H+ aR SA+ AES' | co l umn -t
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA
Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-AES256-SHA384
TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256)
Mac=SHA384
ECDHE-ECDSA-AES256-SHA
SSLv3
Kx=ECDH Au=ECDSA Enc=AES(256)
Mac=SHA1
ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA
Enc=AESGCM(128) Mac=AEAD
ECDHE-ECDSA-AES128-SHA256
TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128)
Mac=SHA256
ECDHE-ECDSA-AES128-SHA
SSLv3
Kx=ECDH Au=ECDSA Enc=AES(128)
Mac=SHA1
ECDHE-RSA-AES256-GCM-SHA384
TLSv1.2 Kx=ECDH Au=RSA
Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-SHA384
TLSv1.2 Kx=ECDH Au=RSA
Enc=AES(256)
Mac=SHA384
ECDHE-RSA-AES256-SHA
SSLv3
Kx=ECDH Au=RSA
Enc=AES(256)
Mac=SHA1
ECDHE-RSA-AES128-GCM-SHA256
TLSv1.2 Kx=ECDH Au=RSA
Enc=AESGCM(128) Mac=AEAD
ECDHE-RSA-AES128-SHA256
TLSv1.2 Kx=ECDH Au=RSA
Enc=AES(128)
Mac=SHA256
ECDHE-RSA-AES128-SHA
SSLv3
Kx=ECDH Au=RSA
Enc=AES(128)
Mac=SHA1
DHE-RSA-AES256-GCM-SHA384
TLSv1.2 Kx=DH
Au=RSA
Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-SHA256
TLSv1.2 Kx=DH
Au=RSA
Enc=AES(256)
Mac=SHA256
DHE-RSA-AES256-SHA
SSLv3
Kx=DH
Au=RSA
Enc=AES(256)
Mac=SHA1
DHE-RSA-AES128-GCM-SHA256
TLSv1.2 Kx=DH
Au=RSA
Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-SHA256
TLSv1.2 Kx=DH
Au=RSA
Enc=AES(128)
Mac=SHA256
DHE-RSA-AES128-SHA
SSLv3
Kx=DH
Au=RSA
Enc=AES(128)
Mac=SHA1
上記のコマンドはセキュアでない暗号をすべて省略し、ephemeral el l i pti c curve D i ffi eHel l man 鍵交換と EC D SA 暗号を優先します。また、R SA 鍵交換も省略します (perfect forward secrecy
が保証されます)。
152
⁠第3章 暗号化
これはやや厳密な設定であることに注意してください。現実には条件を多少緩和して、より広い範囲のクラ
イアントとの互換性を可能にする必要があるかもしれません。
3.7 .2 .2 . GnuT LS での暗号化スイートの使用
G n u T LS は、SSL および T LS の各プロトコルとそれに関連する技術を実装する通信ライブラリーです。
注記
Red Hat Enterprise Linux 上の G n u T LS は、ほとんどのユースケースに十分なセキュリティをも
たらす、最適なデフォルト設定値を提供します。特別なセキュリティ要件がない限り、提供された
デフォルト値の使用が推奨されます。
g nutl s-cl i コマンドを -l (または --l i st) オプションと実行すると、サポート対象の暗号化スイート
すべてが一覧表示されます。
~]$ g nutl s-cl i -l
-l オプションで表示された暗号化スイート一覧を絞り込むには、ひとつ以上のパラメーター G
( n u T LS ド
キュメンテーションでは priority strings および keywords と呼ばれる) を --pri o ri ty オプションに渡し
ます。利用可能な priority strings の全一覧は、http://www.gnutls.org/manual/gnutls.html#PriorityStrings にある G n u T LS ドキュメンテーションを参照してください。たとえば、少なくとも 128 ビット
のセキュリティを提供する暗号化スイート一覧を表示するには、以下のコマンドを実行します。
~]$ g nutl s-cl i --pri o ri ty SEC UR E128 -l
「有効にするアルゴリズムの選択」 の推奨事項を満たす暗号化スイートを一覧表示するには、以下のような
コマンドを実行します。
~]$ g nutl s-cl i --pri o ri ty SEC UR E256 : + SEC UR E128: -VER S-T LS-ALL: + VER ST LS1. 2: -R SA: -D HE-D SS: -C AMELLIA-128-C BC : -C AMELLIA-256 -C BC -l
Cipher suites for SECURE256:+SECURE128:-VERS-TLS-ALL:+VERS-TLS1.2:-RSA:DHE-DSS:-CAMELLIA-128-CBC:-CAMELLIA-256-CBC
TLS_ECDHE_ECDSA_AES_256_GCM_SHA384
0xc0, 0x2c
TLS1.2
TLS_ECDHE_ECDSA_AES_256_CBC_SHA384
0xc0, 0x24
TLS1.2
TLS_ECDHE_ECDSA_AES_256_CBC_SHA1
0xc0, 0x0a
SSL3.0
TLS_ECDHE_ECDSA_AES_128_GCM_SHA256
0xc0, 0x2b
TLS1.2
TLS_ECDHE_ECDSA_AES_128_CBC_SHA256
0xc0, 0x23
TLS1.2
TLS_ECDHE_ECDSA_AES_128_CBC_SHA1
0xc0, 0x09
SSL3.0
TLS_ECDHE_RSA_AES_256_GCM_SHA384
0xc0, 0x30
TLS1.2
TLS_ECDHE_RSA_AES_256_CBC_SHA1
0xc0, 0x14
SSL3.0
TLS_ECDHE_RSA_AES_128_GCM_SHA256
0xc0, 0x2f
TLS1.2
TLS_ECDHE_RSA_AES_128_CBC_SHA256
0xc0, 0x27
TLS1.2
153
Red Hat Ent erprise Linux 6 セキュリティガイド
TLS_ECDHE_RSA_AES_128_CBC_SHA1
SSL3.0
TLS_DHE_RSA_AES_256_CBC_SHA256
TLS1.2
TLS_DHE_RSA_AES_256_CBC_SHA1
SSL3.0
TLS_DHE_RSA_AES_128_GCM_SHA256
TLS1.2
TLS_DHE_RSA_AES_128_CBC_SHA256
TLS1.2
TLS_DHE_RSA_AES_128_CBC_SHA1
SSL3.0
0xc0, 0x13
0x00, 0x6b
0x00, 0x39
0x00, 0x9e
0x00, 0x67
0x00, 0x33
Certificate types: CTYPE-X.509
Protocols: VERS-TLS1.2
Compression: COMP-NULL
Elliptic curves: CURVE-SECP384R1, CURVE-SECP521R1, CURVE-SECP256R1
PK-signatures: SIGN-RSA-SHA384, SIGN-ECDSA-SHA384, SIGN-RSA-SHA512,
SIGN-ECDSA-SHA512, SIGN-RSA-SHA256, SIGN-DSA-SHA256, SIGN-ECDSA-SHA256
上記のコマンドは、出力を 128 ビット以上のセキュリティがある暗号に絞り込み、より強力なものを優先
しています。また、R SA 鍵交換と D SS 認証を禁止しています。
これはやや厳密な設定であることに注意してください。現実には条件を多少緩和して、より広い範囲のクラ
イアントとの互換性を可能にする必要があるかもしれません。
3.7.3. 特定アプリケーションの設定
アプリケーションはそれぞれ、T LS 用に個別の設定メカニズムを提供します。本セクションでは、最も一
般的に使用されているサーバーアプリケーションが使用する T LS 関連の設定ファイルについて説明し、よ
くある説明例を示します。
いずれの設定を選択しても、サーバーアプリケーションが サーバー側の暗号命令 を強制し、使用される暗
号化スイートが必ずユーザー設定の命令で決定されるようにしてください。
3.7 .3.1 . Apache HT T P サーバーの設定
Ap ach e H T T P Server は、T LS に O p en SSL と N SS の両方のライブラリーを使用することができま
す。選択した T LS ライブラリーによって、mo d _ssl か mo d _n ss のモジュールをインストールする必要
があります (その名前の付いたパッケージが提供)。たとえば、O p en SSL mo d _ssl モジュールを提供す
るパッケージをインストールするには、root で以下のコマンドを実行します。
~]# yum i nstal l mo d _ssl
mod_ssl パッケージは /etc/httpd /co nf. d /ssl . co nf 設定ファイルをインストールし、これを使う
と Ap ach e H T T P Server の T LS 関連の設定を修正できます。同様に、mod_nss パッケージは
/etc/httpd /co nf. d /nss. co nf 設定ファイルをインストールします。
httpd-manual パッケージをインストールして Ap ach e H T T P Server の完全なドキュメンテーションを取
得します。これには、T LS 設定が含まれます。/etc/httpd /co nf. d /ssl . co nf 設定ファイルで利用
可能な指示文の詳細は、/usr/share/httpd /manual /mo d /mo d _ssl . html で説明されています。各
種設定の例は、/usr/share/httpd /manual /ssl /ssl _ho wto . html で確認できます。
/etc/httpd /co nf. d /ssl . co nf 設定ファイルの設定を修正する場合は、少なくとも下記の 3 つの指
示文を確認してください。
154
⁠第3章 暗号化
SSLP ro to co l
許可する T LS (または SSL) のバージョンを指定する指示文です。
SSLC i pherSui te
優先する暗号化スイートを指定する、もしくは許可しないスイートを無効にする指示文です。
SSLHo no rC i pherO rd er
コメントを解除して、この指示文を o n に設定すると、接続先のクライアントが指定された暗号
化の命令に従います。
例を示します。
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!aNULL:!MD5
SSLHonorCipherOrder on
上記の設定は最小限のものであり、「有効にするアルゴリズムの選択」 にある推奨事項にしたがうことでさ
らに強化できることに注意してください。
mo d _n ss モジュールを設定、使用するには、/etc/httpd /co nf. d /nss. co nf 設定ファイルを修正
します。mo d _n ss モジュールは mo d _ssl から派生しているため、後者と多くの機能を共有していま
す。設定ファイルの構成だけでなく、利用可能な指示文も同様です。mo d _n ss 指示文には、SSL ではな
く NSS の接頭辞が付くことに注意してください。mo d _n ss に適用できない mo d _ssl 設定指示文の一覧
を含む mo d _n ss についての概要
は、https://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html を参照してください。
3.7.4 . その他の情報
T LS の設定および関連トピックについての詳細情報は、以下に挙げるリソースを参照してください。
インストールされているドキュメント
config(1) — /etc/ssl /o penssl . co nf 設定ファイルの形式を説明しています。
ciphers(1) — 利用可能な O p en SSL キーワードおよび暗号化文字列の一覧が含まれています。
/usr/share/httpd /manual /mo d /mo d _ssl . html — Ap ach e H T T P Server 用に mo d _ssl
が使用する /etc/httpd /co nf. d /ssl . co nf 設定ファイルで利用可能な指示文を詳細に説明してい
ます。
/usr/share/httpd /manual /ssl /ssl _ho wto . html — Ap ach e H T T P Server 用に mo d _ssl
が使用する /etc/httpd /co nf. d /ssl . co nf 設定ファイルでの現実的な設定例が含まれています。
オンラインのドキュメント
Red Hat Enterprise Linux 6 Security-Enhanced Linux — Red Hat Enterprise Linux 6 の SecurityEnhanced Linux ガイドでは、SELin u x の基本的原則を説明しています。
http://tools.ietf.org/html/draft-ietf-uta-tls-bcp-00 — T LS および D T LS のセキュアな使用における推奨
事項です。
155
Red Hat Ent erprise Linux 6 セキュリティガイド
第4章 情報セキュリティの一般原則
以下の一般原則は、優れたセキュリティプラクティスの概要を示すものです。
中間者攻撃や盗聴を防ぐために、ネットワークで転送されるすべてのデータを暗号化します。パスワー
ドなどの認証情報を暗号化することは重要です。
インストールされているソフトウェアと実行するサービスの量を最小限にします。
セキュリティを強化するソフトウェアとツールを使用します。たとえば、強制アクセス制御 (MAC) 用の
Security-Enhanced Linux (SELinux)、パケットフィルタリング (ファイアウォール) 用の Netfilter
iptables、およびファイル暗号化用の GNU Privacy Guard (GPG) などがあります。
可能な場合は、1 つの攻撃されたサービスが他のサービスの攻撃に使用されるリスクを最小限にするた
めに、それぞれのネットワークサービスを別個のシステムで実行します。
ユーザーアカウントのメンテナンスを行います。 強力なパスワードポリシーを作成し、これを適用しま
す。使用されていないユーザーアカウントを削除します。
システムとアプリケーションのログのレビューを定期的に行います。デフォルトでは、セキュリティ関
連のシステムログは /var/l o g /secure と /var/l o g /aud i t/aud i t. l o g に書き込まれます。専
用のログサーバーにログを送ると、攻撃者がローカルのログを簡単に修正して検知を逃れようとするの
を防ぐことができます。
本当に必要な場合を除いて、root ユーザーとしてログインしないようにします。管理者は root としてコ
マンドを実行するために随時 sud o を使用することが推奨されます。sud o を実行できるユーザー
は、/etc/sud o ers で指定されています。/etc/sud o ers の編集は vi sud o ユーティリティを使用
します。
156
⁠第5章 セキュアなインストール
第5章 セキュアなインストール
セキュリティは、Red Hat Enterprise Linux をインストールするために CD や D VD をディスクドライブに
入れたときから始まります。最初からシステムを安全に設定することで、追加のセキュリティ設定を後で実
装することがより簡単になります。
5.1. ディスクパーティション
Red Hat では、/boot、/、/home、/tmp、および /var/tmp のそれぞれに個別のパーティションを作成するこ
とを推奨しています。root パーティション (/) が破損すると、ユーザーのデータは完全に失われてしまいま
す。個別のパーティションを使うことで、データ損失に対する保護が少しは高まります。また、このパー
ティションを頻繁にバックアップすることもできます。各パーティションの目的はそれぞれに異なり、こ
れについて説明していきます。
/boot - このパーティションは、ブート時にシステムによって読み込まれる最初のパーティションです。シ
ステムを Red Hat Enterprise Linux にブートするために使われるブートローダーとカーネルイメージはこ
のパーティションに保存されます。このパーティションは暗号化すべきではありません。このパーティ
ションが / に含まれていて、そのパーティションが暗号化されているかまたは他の理由で利用不可能になる
場合、システムをブートすることができなくなります。
/home - ユーザーデータ (/home) が別個のパーティションではなく / に保存されていると、このパーティ
ションが一杯になり、オペレーティングシステムが不安定になる可能性があります。さらに、システムを次
のバージョンの Red Hat Enterprise Linux にアップグレードする際には、/home パーティションでデータ
を保存できると、このデータはインストール時に上書きされないので、アップグレードが非常に簡単になり
ます。
/tmp および /var/tmp - /tmp と /var/tmp ディレクトリーはどちらも長期保存の必要がないデータを保存する
ために使われます。しかし、これらのディレクトリーのいずれかが多くのデータであふれると、ストレージ
スペースがすべて消費されてしまう可能性があります。こうした状態が発生して、かつこれらのディレクト
リーが / に保管されていると、システムが不安定になり、クラッシュする可能性があります。そのため、こ
れらのディレクトリーを個別のパーティションに移動するとよいでしょう。
5.2. LUKS パーティション暗号化の利用
インストールのプロセス中には、パーティションを暗号化するオプションがユーザーに示されます。ユー
ザーは、パスフレーズを提供する必要があります。これは、パーティションのデータを保護するために使わ
れるバルク暗号鍵を解除する鍵として使用されます。
157
Red Hat Ent erprise Linux 6 セキュリティガイド
第6章 ソフトウェアのメンテナンス
ソフトウェアのメンテナンスは、セキュアなシステムを維持するために非常に重要です。攻撃者が既知の
ホールを使用してシステムに侵入することを防ぐためには、ソフトウェアのパッチが利用可能になり次第す
ぐに適用することが必須になります。
6.1. 最小限のソフトウェアインストール
コンピューター上の各ソフトウェアには脆弱性が潜んでいる可能性があるので、実際に使用するパッケージ
のみをインストールすることが推奨されます。インストールを D VD から行う場合は、インストールしたい
パッケージのみを選択するようにします。他のパッケージが必要になる場合は、いつでも後でシステムに追
加することができます。
最小限のインストールについての詳細は、Red Hat Enterprise Linux 6 インストールガイドのパッケージグ
ループの選択のセクションを参照してください。最小限のインストールは、--no base オプションを使用
して kickstart ファイルから実行することもできます。詳細については、Red Hat Enterprise Linux 6 インス
トールガイドのパッケージの選択 のセクションを参照してください。
6.2. セキュリティ更新の計画と設定
すべてのソフトウェアにはバグが含まれます。これらのバグはシステムを悪意のあるユーザーにさらす脆弱
性をもたらす可能性があります。パッチを当てていないシステムは、コンピューターへの侵入を招く一般的
な原因となります。脆弱性の悪用を防ぐには、セキュリティパッチをタイミングよくインストールする計画
が必要です。
家庭用ユーザーにとって、セキュリティ更新はできる限り早くインストールする必要があります。セキュ
リティ更新を自動インストールの設定にすると、更新時期を覚えておくことが不要になりますが、システム
の設定や他のソフトウェアとの競合の発生リスクの可能性が若干残ります。
ビジネスユーザーや上級の家庭用ユーザーの場合、セキュリティ更新のインストールに向けて、そのテスト
とスケジューリングを行う必要があります。パッチのリリースからシステムへのインストールまでの間にシ
ステムを保護するには、新たな制御が必要になります。これらの制御は脆弱性の種類によって異なります
が、ファイアウォールの追加ルールや、外部ファイアウォールの使用、またはソフトウェア設定の変更な
どがこれらに含まれることがあります。
6.3. 自動更新の調整
Red Hat Enterprise Linux は日次ベースですべての更新を適用するように設定されています。システムから
の更新のインストール方法を変更したい場合は、ソフトウェア更新の詳細設定 から変更する必要がありま
す。スケジュールや適用する更新の種類、または利用可能な更新の通知方法などを変更することができま
す。
GNOME では、システム → 設定 → ソフトウェア更新 の順に選択して更新を制御できます。 KD E では、ア
プリケーション → 設定 → ソフトウェアの更新の順に選択します。
6.4 . 一般的なリポジトリからの署名パッケージのインストール
ソフトウェアパッケージはリポジトリで公開されます。一般的なリポジトリは、すべてパッケージの署名を
サポートしています。パッケージの署名では、リポジトリから公開されているパッケージが署名時から変更
されていないことを証明するために、公開鍵の技術が使用されます。これにより、パッケージの作成からダ
ウンロードまでの間に悪意を持って改ざんされた可能性のあるソフトウェアをインストールしてしまうこと
から保護されます。
158
⁠第6 章 ソフトウェアのメンテナンス
多数のリポジトリを使用したり、信頼できないリポジトリまたは署名のないパッケージを含むリポジトリを
使用すると、悪意のあるコードや脆弱性のあるコードをシステムに取り込むリスクが高まります。リポジト
リを yum またはソフトウェア更新に追加する際は注意してください。
159
Red Hat Ent erprise Linux 6 セキュリティガイド
第7章 システム監査
Linux Audit システムは、システム上のセキュリティ関連情報を追跡する方法を提供します。事前設定ルー
ルに基づき、Audit はシステム上で発生しているイベントについての情報をできるだけ多く記録するための
ログエントリーを生成します。この情報は、セキュリティポリシーの違反者と違反者によるアクションを判
断する上でミッションクリティカルな環境で必須のものです。Audit は新たなセキュリティをシステムに追
加するわけではありません。システム上で使われているセキュリティポリシーの侵害を発見するために使用
されます。これらの侵害は、SELinux などの追加のセキュリティ対策でさらに防ぐことができます。
Audit がログファイルに記録できる情報のいくつかを、以下のリストで要約しています。
イベントの日付と時間、タイプ、結果。
サブジェクトとオブジェクトの機密性のラベル。
イベントを開始したユーザーの ID とイベントの関連性。
Audit 設定の全修正および Audit ログファイルへのアクセス試行。
SSH、Kerberos、およびその他の認証メカニズムのすべての使用。
/etc/passwd のような、信頼できるデータベースへの変更。
システムとの情報のインポートおよびエクスポートの試行。
ユーザー ID 、サブジェクトおよびオブジェクトラベル、その他の属性に基づく include または exclude
イベント。
Audit システムの使用は、多くのセキュリティ関連の証明書における要件でもあります。Audit は、以下の
証明書またはコンプライアンスガイドの要件に合致するかそれらを超えるように設計されています。
Controlled Access Protection Profile (CAPP)
Labeled Security Protection Profile (LSPP)
Rule Set Base Access Control (RSBAC)
NISPOM (National Industrial Security Program Operating Manual)
Federal Information Security Management Act (FISMA)
Payment Card Industry — D ata Security Standard (PCI-D SS)
セキュリティ技術実装ガイド (STIG: Security Technical Implementation Guide)
Audit は以下でも認定されています。
National Information Assurance Partnership (NIAP) および Best Security Industries (BSI) による評
価。
Red Hat Enterprise Linux 5 上での LSPP/CAPP/RSBAC/EAL4+ の認定。
Red Hat Enterprise Linux 6 上での Operating System Protection Profile / Evaluation Assurance
Level 4+ (OSPP/EAL4+) の認定。
使用例
ファイルアクセスの監視
Audit は、ファイルやディレクトリーがアクセス、修正、実行されたか、またはファイル属性が
変更されたかを追跡することができます。これはたとえば、重要なファイルへのアクセスを検出
160
⁠第7 章 システム監査
変更されたかを追跡することができます。これはたとえば、重要なファイルへのアクセスを検出
し、これらのファイルが破損した場合に監査証跡を入手可能とする際に便利なものです。
システムコールの監視
Audit は、特定のシステムコールが使用されるたびにログエントリーを生成するように設定できま
す。これを使用すると、setti meo fd ay や cl o ck_ad jti me、その他の時間関連のシステム
コールを監視することで、システム時間への変更を追跡できます。
ユーザーが実行したコマンドの記録
Audit はファイルが実行されたかどうかを追跡できるので、特定のコマンドの実行を毎回記録す
るようにいくつものルールを定義することができます。たとえば、/bi n ディレクトリー内の実
行可能ファイルすべてについてルールを定義することができます。その結果できるログエント
リーをユーザー ID で検索すると、ユーザーごとに実行されたコマンドの監査証跡を生成すること
ができます。
セキュリティイベントの記録
pam_fai l l o ck 認証モジュールは、失敗したログイン試行を記録することができます。Audit
で失敗したログイン試行も記録するように設定すると、ログインを試みたユーザーについての追
加情報が提供されます。
イベントの検索
Audit は au search ユーティリティーを提供します。これを使うと、ログエントリーをフィル
ターにかけ、いくつもの条件に基づく完全な監査証跡を提供することができます。
サマリーレポートの実行
au rep o rt ユーティリティーを使うと、記録されたイベントのデイリーレポートを生成すること
ができます。システム管理者は、このレポートを分析し、疑わしいアクティビティーをさらに調
べることができます。
ネットワークアクセスの監視
ip t ab les と eb t ab les ユーティリティーは Audit イベントを開始するように設定でき、これで
システム管理者はネットワークアクセスを監視できるようになります。
注記
システムのパフォーマンスは、Audit が収集する情報量によって影響される可能性があります。
7.1. Audit システムのアーキテクチャー
Audit システムは、ユーザースペースアプリケーションおよびユーティリティーと、カーネル側のシステム
コール処理という 2 つの主要パートで構成されます。カーネルコンポーネントは、ユーザースペースアプリ
ケーションからシステムコールを受け、これを user、task、または exit のいずれかのフィルターで振り分
けます。システムコールがフィルターのどれかを通過すると、exclude フィルターに掛けられます。この
フィルターは Audit ルール設定に基づいて、システムコールを Audit デーモンに送信してさらに処理しま
す。図7.1「Audit システムのアーキテクチャー」 では、このプロセスを示しています。
161
Red Hat Ent erprise Linux 6 セキュリティガイド
図7.1 Au d it システムのアーキテクチャー
ユーザースペースの Audit デーモンはカーネルから情報を収集し、ログファイルにログファイルエントリー
を作成します。他のユーザースペースユーティリティーは、Audit デーモン、カーネル Audit コンポーネン
ト、または Audit ログファイルと対話します。
au d isp — Audit ディスパッチャーデーモンは Audit デーモンと対話し、イベントを他のアプリケー
ションに送信してさらに処理します。このデーモンの目的は、プラグインメカニズムを提供して、リア
ルタイムの分析プログラムが Audit イベントと対話できるようにすることです。
au d it ct l — Audit 制御ユーティリティーはカーネル Audit コンポーネントと対話し、イベント生成プ
ロセスの多くの設定やパラメーターを制御します。
残りの Audit ユーティリティーは Audit ログファイルのコンテンツを入力として受け取り、ユーザーの
要件に基づいて出力を生成します。たとえば、au rep o rt ユーティリティーは記録された全イベントの
レポートを生成します。
7.2. audit パッケージのインストール
Audit システムを使用するには、audit パッケージがシステムにインストールされている必要がありま
す。audit パッケージ (audit および audit-libs) は、デフォルトで Red Hat Enterprise Linux 6 にインストー
ルされています。これらのパッケージがインストールされていない場合は、root で以下のコマンド実行して
インストールします。
~]# yum i nstal l aud i t
7.3. aud i t サービスの設定
Audit デーモンは、/etc/aud i t/aud i td . co nf 設定ファイルで設定できます。このファイルは、Audit
デーモンの動作を修正する設定パラメーターで構成されています。空の行やハッシュ記号 (#) の後に続くテ
キストは無視されます。設定パラメーターの全一覧とそれらの説明は、audit.conf(5) man ページで確認で
きます。
162
⁠第7 章 システム監査
7.3.1. CAPP 環境用の aud i td 設定
デフォルトの aud i td 設定は、ほとんどの環境で適切なものです。ただし、使用中の環境が、Common
Criteria 認証の一部である Controlled Access Protection Profile (CAPP) で設定された基準に適合する必要が
ある場合は、以下のように Audit デーモンを設定する必要があります。
Audit ログファイルを格納するディレクトリー (通常 /var/l o g /aud i t/) を、別個のパーティション
に置きます。これにより、他のプロセスがこのディレクトリーのスペースを使うことを防ぎます。ま
た、Audit デーモン用に残りのスペースがどれだけあるか、正確に分かるようになります。
単一 Audit ログファイルの最大サイズを指定する max_log_file パラメーターは、Audit ログファイ
ルを格納するパーティション上で利用可能なスペースを最大活用するように設定する必要があります。
max_log_file_action パラメーターは、max_log_file で設定された上限に達した際に取られる
アクションを決定します。これは、keep_l o g s に設定して、Audit ログファイルが上書きされないよ
うにすべきです。
space_left パラメーターは、ここで指定した値にディスク上の残りの空きスペースが達する
と、space_left_action パラメーターで定義したアクションが起動します。space_left で指定する
ディスクの残り空きスペースの値は大きなものに設定し、これがなくなる前に管理者が対応してスペー
スを利用可能にできるようにすべきです。space_left の値は、Audit ログファイルが生成されるレー
トによって異なります。
space_left_action パラメーターは、emai l または exec に設定して適切な通知方法にすること
が推奨されます。
admin_space_left パラメーターは、ここで指定した値にディスク上の残りの空きスペースが達する
と、admin_space_left_action パラメーターで定義したアクションが起動します。
admin_space_left の値は大きなものに設定し、管理者が実行するアクションをログ記録できるようにす
る必要があります。
admin_space_left_action は si ng l e に設定して、システムをシングルユーザーモードにし、管
理者がディスクスペースを解放できるようにする必要があります。
disk_full_action パラメーターは、Audit ログファイルを格納するパーティションに空きスペース
が無くなった場合に起動するアクションを指定します。このパラメーターは、hal t または si ng l e の
どちらかに設定する必要があります。これにより、Audit がイベントをログ記録できなくなった際に、
システムがシャットダウンするか、シングルユーザーモードで稼働するようになります。
disk_error_action は、Audit ログファイルがあるパーティションでエラーが検出された場合に起
動するアクションを指定します。このパラメーターは、ハードウェアの機能不全処理に関するローカル
のセキュリティポリシーによって、sysl o g 、si ng l e、hal t のいずれかに設定する必要がありま
す。
flush 設定パラメーターは、sync または d ata に設定します。これにより、すべての Audit イベント
データがディスク上のログファイルと完全に同期されます。
残りの設定オプションは、ローカルのセキュリティポリシーにあわせて設定します。
7.4 . aud i t サービスの起動
aud i td を適切に設定したら、サービスを起動して Audit 情報を収集し、ログファイルに保存します。root
で以下のコマンドを実行して aud i td を起動します。
~]# servi ce aud i td start
163
Red Hat Ent erprise Linux 6 セキュリティガイド
オプションでは、root で以下のコマンドを実行すると、aud i td がブート時に起動するように設定できま
す。
~]# chkco nfi g aud i td o n
aud i td では、servi ce aud i td action コマンドを使用して、他のアクションが実行できます。ここ
での action は、以下のいずれかになります。
sto p — aud i td を停止します。
restart — aud i td を再起動します。
rel o ad または fo rce-rel o ad — au d it d の設定を /etc/aud i t/aud i td . co nf ファイルから
再読み込みします。
ro tate — /var/l o g /aud i t/ ディレクトリー内のログファイルを回転させます。
resume — Audit イベントのログが一旦停止された後、再開します。たとえば、Audit ログファイルが
あるディスクパーティションの未使用スペースが十分でない場合などです。
co nd restart または try-restart — au d it d がすでに実行中の場合にのみ、これを再起動します。
status — 実行中の au d it d のステータスを表示します。
7.5. Audit ルールの定義
Audit システムは、ログファイルにキャプチャーされるものを定義するルールセットで作動します。指定可
能な Audit ルールには、以下の 3 つのタイプがあります。
制御ルール — Audit システムの動作と設定のいくつかの修正が可能になります。
ファイルシステムルール — ファイルウォッチとも呼ばれ、特定のファイルまたはディレクトリーへの
アクセスの監査が可能になります。
システムコールルール — 特定のプログラムが実行するシステムコールのログ記録が可能になります。
Audit ルールは、au d it ct l ユーティリティーのコマンドラインで指定するか (このルールは再起動後は維持
されません)、/etc/aud i t/aud i t. rul es ファイルに書き込んで指定することができます。以下の 2 つ
のセクションでは、Audit ルール定義における両方のアプローチをまとめています。
7.5.1. audit ct l ユーティリティーを使った Audit ルールの定義
注記
Audit サービスおよび Audit ログファイルと対話するすべてのコマンドは、root 権限が必要になりま
す。これらのコマンドは、必ず root ユーザーとして実行してください。
aud i tctl コマンドを使うと、Audit システムの基本的な機能を制御し、どの Audit イベントをログ記録す
るかを決定するルールが定義できます。
制御ルールの定義
以下の制御ルールを使うと、Audit システムの動作が修正できます。
164
⁠第7 章 システム監査
-b
カーネルにおける 既存のAudit バッファの最大値を設定します。例を示します。
~]# aud i tctl -b 819 2
-f
重大なエラーが検出された際に実行されるアクションを設定します。例を示します。
~]# aud i tctl -f 2
上記の設定では、重大なエラーが発生した際にカーネルパニックが起動されます。
-e
Audit システムを有効または無効にする、もしくは設定をロックします。例を示します。
~]# aud i tctl -e 2
上記のコマンドは、Audit 設定をロックします。
-r
1 秒あたりに生成されるメッセージ数を設定します。例を示します。
~]# aud i tctl -r 0
上記の設定では、生成されるメッセージ数は制限されません。
-s
Audit システムのステータスをレポートします。例を示します。
~]# aud i tctl -s
AUDIT_STATUS: enabled=1 flag=2 pid=0 rate_limit=0
backlog_limit=8192 lost=259 backlog=0
-l
読み込まれている Audit ルールすべてを一覧表示します。例を示します。
~]# aud i tctl -l
LIST_RULES: exit,always
change
LIST_RULES: exit,always
LIST_RULES: exit,always
LIST_RULES: exit,always
⋮
watch=/etc/localtime perm=wa key=timewatch=/etc/group perm=wa key=identity
watch=/etc/passwd perm=wa key=identity
watch=/etc/gshadow perm=wa key=identity
-D
読み込まれている Audit ルールすべてを削除します。例を示します。
~]# aud i tctl -D
No rules
165
Red Hat Ent erprise Linux 6 セキュリティガイド
ファイルシステムルールの定義
ファイルシステムのルールを定義するには、以下の構文を使用します。
auditctl -w path_to_file -p permissions -k key_name
ここでは、
path_to_file は、監査対象のファイルもしくはディレクトリーになります。
permissions は、ログ記録されるパーミッションになります。
r — ファイルまたはディレクトリーの読み取りアクセスです。
w — ファイルまたはディレクトリーの書き込みアクセスです。
x — ファイルまたはディレクトリーの実行アクセスです。
a — ファイルまたはディレクトリーの属性を変更します。
key_name は、どのルールまたはルールセットが特定のログエントリーを生成したかを特定する際に役
立つオプションの文字列です。
例7.1 ファイルシステムルール
/etc/passwd ファイルへのすべての書き込みアクセスとこのファイルのすべての属性変更をログ記録
するルールを定義するには、以下のコマンドを実行します。
~]# aud i tctl -w /etc/passwd -p wa -k passwd _chang es
-k オプションに続く文字列は任意のものであることに注意してください。
/etc/sel i nux/ ディレクトリー内の全ファイルへのすべての書き込みアクセスとこれらファイルのす
べての属性変更をログ記録するルールを定義するには、以下のコマンドを実行します。
~]# aud i tctl -w /etc/sel i nux/ -p wa -k sel i nux_chang es
Linux カーネルにモジュールを挿入する /sbi n/i nsmo d コマンドの実行をログ記録するルールを定義
するには、以下のコマンドを実行します。
~]# aud i tctl -w /sbi n/i nsmo d -p x -k mo d ul e_i nserti o n
システムコールルールの定義
システムコールのルールを定義するには、以下の構文を使用します。
auditctl -a action,filter -S system_call -F field=value -k key_name
ここでは、
action および filter は、特定のイベントがいつログ記録されるかを指定します。action は、al ways また
は never になります。filter は、イベントにどのカーネルルール適合のフィルターを適用するかを指定
166
⁠第7 章 システム監査
します。ルール適合フィルターは、task、exi t、user、excl ud e のいずれかになります。これら
フィルターの詳細については、「Audit システムのアーキテクチャー」 の最初の部分を参照してくださ
い。
system_call は、名前でシステムコールを指定します。システムコールの全一覧
は、/usr/i ncl ud e/asm/uni std _6 4 . h ファイルで確認できます。複数のシステムコールをひとつ
のグループにまとめて、-S オプションの後にそれらを指定することも可能です。
field=value では、指定されたアーキテクチャー、グループ ID 、プロセス ID 、その他に基づいて、ルール
がイベントに合致するようさらに修正する追加オプションを指定します。利用可能なフィールドのタイ
プおよびそれらの値の全一覧は、auditctl(8) man ページで確認できます。
key_name は、どのルールまたはルールセットが特定のログエントリーを生成したかを特定する際に役
立つオプションの文字列です。
例7.2 システムコールのルール
システムが 64 ビットアーキテクチャーを使用していて、プログラムが ad jti mex または
setti meo fd ay システムコールを使用するたびにログエントリーを作成するルールを定義するには、以
下のコマンドを実行します。
~]# aud i tctl -a al ways,exi t -F arch= b6 4 -S ad jti mex -S setti meo fd ay k ti me_chang e
ユーザー ID が 500 以上 (-F aui d ! = 4 29 4 9 6 729 5 オプションを使用すると、ログイン UID が設定
されていないユーザーが除外されます) のシステムユーザーがファイルを削除またはファイルの名前を変
更するたびにログエントリーを作成するルールを定義するには、以下のコマンドを実行します。
~]# aud i tctl -a al ways,exi t -S unl i nk -S unl i nkat -S rename -S
renameat -F aui d >= 50 0 -F aui d ! = 4 29 4 9 6 729 5 -k d el ete
システムコールルールの構文を使って、ファイルシステムのルールを定義することもできます。以下の
コマンドでは、-w /etc/shad o w -p wa ファイルシステムルールに似たシステムコールのルールが
作成されます。
~]# aud i tctl -a al ways,exi t -F path= /etc/shad o w -F perm= wa
7.5.2. 永続的な Audit ルールの定義と /etc/aud i t/aud i t. rul es ファイルでの制御
再起動後も維持される Audit ルールを定義するには、そのルールを /etc/aud i t/aud i t. rul es ファイ
ルに含める必要があります。このファイルは、同じ aud i tctl コマンドライン構文を使ってルールを指定
します。空の行やハッシュ記号 (#) に続くテキストは無視されます。
aud i tctl コマンドで -R オプションを使うと、指定されたファイルからルールを読み取ることもできま
す。例を示します。
~]# aud i tctl -R /usr/share/d o c/aud i t-version/sti g . rul es
制御ルールの定義
167
Red Hat Ent erprise Linux 6 セキュリティガイド
ファイルに含めることができるのは、-b、-D 、-e、-f、および -r の制御ルールのみで、これらは Audit
の動作を修正します。これらのオプションに関する詳細は、7.5.1項「制御ルールの定義」 を参照してくだ
さい。
例7.3 aud i t. rul es での制御ルール
# Delete all previous rules
-D
# Set buffer size
-b 8192
# Make the configuration immutable -- reboot is required to change
audit rules
-e 2
# Panic when a failure occurs
-f 2
# Generate at most 100 audit messages per second
-r 100
ファイルシステムおよびシステムコールのルールの定義
ファイルシステムおよびシステムコールのルールは、aud i tctl 構文を使って定義します。「au d it ct l
ユーティリティーを使った Audit ルールの定義」 の例は、以下のルールファイルのようになります。
例7.4 aud i t. rul es でのファイルシステムおよびシステムコールのルール
-w /etc/passwd -p wa -k passwd_changes
-w /etc/selinux/ -p wa -k selinux_changes
-w /sbin/insmod -p x -k module_insertion
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
-a always,exit -S unlink -S unlinkat -S rename -S renameat -F
auid>=500 -F auid!=4294967295 -k delete
事前設定ルールのファイル
/usr/share/d o c/aud i t-version/ ディレクトリーでは、audit パッケージが各種の証明書基準にし
たがって事前設定ルールのファイル一式を提供しています。
ni spo m. rul es — NISPOM (National Industrial Security Program Operating Manual) の第 8 章で
指定されている要件に合致する、Audit ルール設定です。
capp. rul es — Common Criteria 認証の一部である Controlled Access Protection Profile (CAPP)
が設定している要件に合致する、Audit ルール設定です。
l spp. rul es — Common Criteria 認証の一部である Labeled Security Protection Profile (LSPP) が
設定している要件に合致する、Audit ルール設定です。
168
⁠第7 章 システム監査
sti g . rul es — セキュリティ技術実装ガイド (STIG: Security Technical Implementation Guide) で
設定している要件に合致する、Audit ルール設定です。
これらの設定ファイルを使用するには、オリジナルの /etc/aud i t/aud i t. rul es ファイルのバック
アップを作成し、選択する設定ファイルをこの /etc/aud i t/aud i t. rul es にコピーします。
~]# cp /etc/aud i t/aud i t. rul es /etc/aud i t/aud i t. rul es_backup
~]# cp /usr/share/d o c/aud i t-version/sti g . rul es /etc/aud i t/aud i t. rul es
7.6. Audit ログファイルについて
デフォルトでは、Audit システムはログエントリーを /var/l o g /aud i t/aud i t. l o g ファイルに保存
します。ログローテーションが有効になっていれば、ローテーションされた aud i t. l o g ファイルは同じ
ディレクトリーに保存されます。
下記の Audit ルールは、/etc/ssh/sshd _co nfi g ファイルの読み取りまたは修正の試行をすべてログ
記録します。
-w /etc/ssh/sshd_config -p warx -k sshd_config
aud i td デーモンが実行中の場合、以下のコマンドが Audit ログファイルに新規イベントを作成します。
~]# cat /etc/ssh/sshd _co nfi g
このイベントは aud i t. l o g ファイル内で以下のように見えます。
type=SYSCALL msg=audit(1364481363.243:24287): arch=c000003e syscall=2
success=no exit=-13 a0=7fffd19c5592 a1=0 a2=7fffd19c4b50 a3=a items=1
ppid=2686 pid=3538 auid=500 uid=500 gid=500 euid=500 suid=500 fsuid=500
egid=500 sgid=500 fsgid=500 tty=pts0 ses=1 comm="cat" exe="/bin/cat"
subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
key="sshd_config"
type=CWD msg=audit(1364481363.243:24287): cwd="/home/shadowman"
type=PATH msg=audit(1364481363.243:24287): item=0
name="/etc/ssh/sshd_config" inode=409248 dev=fd:00 mode=0100600 ouid=0
ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0
上記のイベントは、3 つの記録 (それぞれ type= キーワードで開始) で構成されており、これらは同じタイ
ムスタンプとシリアル番号を共有しています。各記録は、いくつかの name= value のペアで構成されてお
り、これらは空白またはコンマ区切りとなっています。以下で上記のイベントを詳しく分析します。
最初の記録
type= SY SC ALL
type フィールドには、記録のタイプが記載されます。この例では、この記録がカーネルへのシ
ステムコールで開始されたことを SY SC ALL の値が示しています。
タイプの値およびそれらの説明に関する全一覧は、「Audit 記録のタイプ」 を参照してくださ
い。
msg = aud i t(136 4 4 8136 3. 24 3: 24 287):
msg フィールドでは以下を記録しています。
169
Red Hat Ent erprise Linux 6 セキュリティガイド
aud i t(time_stamp: ID) の形式で、記録のタイムスタンプと一意の ID 。複数の記録は、
それらが同一の Audit イベントの一部として生成されている場合は、同じタイムスタンプと
ID を共有できます。
各種のイベント固有の name= value ペア。これは、カーネルもしくはユーザースペースアプ
リケーションが提供します。
arch= c0 0 0 0 0 3e
arch フィールドには、システムの CPU アーキテクチャーについての情報が含まれま
す。c0 0 0 0 0 3e という値は、十六進法でエンコードされています。ausearch コマンドで Audit
記録を検索する際は、-i または --i nterpret オプションを使うと自動的に十六進法の値が
ヒューマンリーダブルなものに変換されます。c0 0 0 0 0 3e の値は、x86 _6 4 として解釈されま
す。
syscal l = 2
syscal l フィールドは、カーネルに送信されたシステムコールのタイプを記録します。2 とい
う値は、/usr/i ncl ud e/asm/uni std _6 4 . h ファイル内の ヒューマンリーダブルに相当す
るものにマッチします。このケースでは、2 は o pen システムコールになります。au syscall
ユーティリティーを使うと、システムコール番号をヒューマンリーダブルなものに変換できるこ
とに注意してください。ausyscal l --d ump コマンドを実行すると、システムコールすべてと
それらの番号一覧が表示されます。詳細情報は、ausyscall(8) man ページを参照してください。
success= no
success フィールドは、その特定のイベントで記録されたシステムコールが成功したかどうか
を記録します。このケースでは、コールは成功しませんでした。
exi t= -13
exi t フィールドには、システムコールが返した終了コードを指定する値が含まれています。こ
の値は、システムコールによって異なります。以下のコマンドを使うと、この値をヒューマン
リーダブルなものに変換できます。 ausearch --i nterpret --exi t -13 (Audit ログに終
了コード -13 で失敗したイベントが含まれていることが前提)。
a0 = 7fffd 19 c559 2, a1= 0 , a2= 7fffd 19 c559 2, a3= a
a0 から a3 までのフィールドは、このイベントにおけるシステムコールの最初の 4 つの引数を十
六進法で記録します。これらの引数は、使用されているシステムコールによって異なりま
す。au search ユーティリティーでこれらを変換できます。
i tems= 1
i tems フィールドには、イベントのパス記録の数が含まれています。
ppi d = 26 86
ppi d フィールドは、親プロセス ID (PPID ) を記録します。このケースでは、26 86 は bash プ
ロセスの PPID でした。
pi d = 3538
pi d フィールドは、プロセス ID (PID ) を記録します。このケースでは、3538 は、cat プロセス
の PID でした。
aui d = 50 0
aui d は、loginuid である Audit ユーザー ID を記録します。この ID は、ログイン時にユーザー
に割り当てられ、ユーザーの ID が変更された後でもすべてのプロセスに引き継がれます (たとえ
ば、su - jo hn コマンドでユーザーアカウントを切り替えた場合)。
170
⁠第7 章 システム監査
ば、su - jo hn コマンドでユーザーアカウントを切り替えた場合)。
ui d = 50 0
ui d フィールドは、分析されているプロセスを開始したユーザーのユーザー ID を記録します。
ユーザー ID は、以下のコマンドでユーザー名に変換できます。ausearch -i --ui d UID。
このケースでは、50 0 は shad o wman のユーザー ID です。
g i d = 50 0
g i d フィールドは、分析されているプロセスを開始したユーザーのグループ ID を記録します。
eui d = 50 0
eui d フィールドは、分析されているプロセスを開始したユーザーの実効ユーザー ID を記録しま
す。
sui d = 50 0
sui d フィールドは、分析されているプロセスを開始したユーザーのセットユーザー ID を記録
します。
fsui d = 50 0
fsui d フィールドは、分析されているプロセスを開始したユーザーのファイルシステムユー
ザー ID を記録します。
eg i d = 50 0
eg i d フィールドは、分析されているプロセスを開始したユーザーの実効グループ ID を記録し
ます。
sg i d = 50 0
sg i d フィールドは、分析されているプロセスを開始したユーザーのセットグループ ID を記録
します。
fsg i d = 50 0
fsg i d フィールドは、分析されているプロセスを開始したユーザーのファイルシステムグルー
プ ID を記録します。
tty= pts0
tty フィールドは、分析されているプロセスが開始されたターミナルを記録します。
ses= 1
ses フィールドは、分析されているプロセスが開始されたセッションのセッション ID を記録し
ます。
co mm= "cat"
co mm フィールドは、分析されているプロセスを開始するために使用されたコマンドのコマンド
ライン名を記録します。このケースでは、cat コマンドを使ってこの Audit イベントが開始され
ました。
exe= "/bi n/cat"
exe フィールドは、分析されているプロセスを開始するために使用された実行可能ファイルへの
パスを記録します。
171
Red Hat Ent erprise Linux 6 セキュリティガイド
subj= unco nfi ned _u: unco nfi ned _r: unco nfi ned _t: s0 -s0 : c0 . c10 23
subj フィールドは、分析されているプロセスの実行時にラベル付けされた SELinux コンテンツ
を記録します。
key= "sshd _co nfi g "
key フィールドは、Audit ログでこのイベントを生成したルールに関連付けられている管理者に
よる定義の文字列を記録します。
2 番目の記録
type= C WD
2 番目の記録では、type フィールドの値は、現在の作業ディレクトリーである C WD になりま
す。このタイプは、最初の記録で指定されているシステムコールを開始したプロセスが実行され
ている作業ディレクトリーの記録に使われます。
この記録の目的は、相対パスが関連する PATH 記録に保存された場合に、現行プロセスの位置を
記録することにあります。この方法により、このプロセスの絶対パスが再構築可能になります。
msg = aud i t(136 4 4 8136 3. 24 3: 24 287)
msg フィールドは、最初の記録と同じタイムスタンプと ID の値になります。
cwd = "/ho me/shad o wman"
cwd フィールドは、システムコールが開始されたディレクトリーへのパスになります。
3 番目の記録
type= P AT H
3 番目の記録では、type フィールドの値は P AT H になります。Audit イベントには、システム
コールに引数として渡されたすべてのパスに P AT H タイプの記録が含まれます。この Audit イベ
ントでは、1 つのパス (/etc/ssh/sshd _co nfi g ) のみが引数として使われています。
msg = aud i t(136 4 4 8136 3. 24 3: 24 287):
msg フィールドは、最初と 2 番目の記録と同じタイムスタンプと ID の値になります。
i tem= 0
i tem フィールドは、SY SC ALL タイプの記録で参照されたアイテム総数のうち、どのアイテム
が現行の記録かを示します。この数字はゼロベースで、0 は最初のアイテムであることを示しま
す。
name= "/etc/ssh/sshd _co nfi g "
name フィールドは、システムコールに引数として渡されたファイルまたはディレクトリーへの
完全パスを記録します。このケースでは、/etc/ssh/sshd _co nfi g ファイルとなります。
i no d e= 4 0 9 24 8
i no d e フィールドには、このイベントで記録されたファイルまたはディレクトリーに関連する
inode 番号が含まれます。以下のコマンドを実行すると、4 0 9 24 8 inode 番目に関連するファイ
ルまたはディレクトリーが表示されます。
172
⁠第7 章 システム監査
~]# fi nd / -i num 4 0 9 24 8 -pri nt
/etc/ssh/sshd_config
d ev= fd : 0 0
d ev フィールドは、このイベントで記録されたファイルまたはディレクトリーを含むデバイスの
マイナーおよびメジャー ID を示します。このケースでは、値は /d ev/fd /0 デバイスを示して
います。
mo d e= 0 10 0 6 0 0
mo d e フィールドは、ファイルまたはディレクトリーパーミッションを数字表記でエンコードさ
れた形で記録します。このケースでは、0 10 0 6 0 0 は -rw------- に変換可能です。つまり、
root ユーザーにのみ、/etc/ssh/sshd _co nfi g ファイルへの読み取りおよび書き込みパー
ミッションがあることをなります。
o ui d = 0
o ui d フィールドは、オブジェクトの所有者のユーザー ID を記録します。
ogid=0
o g i d フィールドは、オブジェクトの所有者のグループ ID を記録します。
rd ev= 0 0 : 0 0
rd ev フィールドには、特定なファイルにのみ使われる、記録されたデバイス識別子が含まれま
す。このケースでは、記録されたファイルは通常のファイルなので、使われていません。
o bj= system_u: o bject_r: etc_t: s0
o bj フィールドは、実行時に記録されたファイルまたはディレクトリーにラベル付けされる
SELinux コンテキストを記録します。
上記で分析された Audit イベントには、イベントに含まれる可能性のあるフィールドのサブセットのみが含
まれています。イベントフィールドおよびそれらの説明の全一覧は、「Audit イベントフィールド」 を参照
してください。イベントのタイプおよびそれらの説明の全一覧は、「Audit 記録のタイプ」 を参照してくだ
さい。
例7.5 追加の aud i t. l o g イベント
以下の Audit イベントでは、aud i td デーモンが正常にスタートしたことを記録しています。ver
フィールドでは、開始された Audit デーモンのバージョンを示しています。
type=DAEMON_START msg=audit(1363713609.192:5426): auditd start, ver=2.2
format=raw kernel=2.6.32-358.2.1.el6.x86_64 auid=500 pid=4979
subj=unconfined_u:system_r:auditd_t:s0 res=success
以下の Audit イベントでは、UID が 500 のユーザーが root ユーザーとしてログインを試み、失敗したこ
とを記録しています。
type=USER_AUTH msg=audit(1364475353.159:24270): user pid=3280 uid=500
auid=500 ses=1 subj=unconfined_u:unconfined_r:unconfined_t:s0s0:c0.c1023 msg='op=PAM:authentication acct="root" exe="/bin/su"
hostname=? addr=? terminal=pts/0 res=failed'
173
Red Hat Ent erprise Linux 6 セキュリティガイド
7.7. Audit ログファイルの検索
au search ユーティリティーを使うと、Audit ログファイル内で特定のイベントを検索できます。デフォ
ルトでは、au search は /var/l o g /aud i t/aud i t. l o g ファイルを検索します。ausearch
options -i f file_name コマンドを使うと、別のファイルを指定できます。ausearch コマンドで複
数のオプションを渡すと、AND 演算子の使用に相当します。
例7.6 ausearch を使った Au d it ログファイルの検索
失敗したログイン試行を /var/l o g /aud i t/aud i t. l o g ファイル内で検索するには、以下のコマン
ドを実行します。
~]# ausearch --messag e USER _LO G IN --success no --i nterpret
すべてのアカウント、グループ、役割変更を検索するには、以下のコマンドを実行します。
~]# ausearch -m AD D _USER -m D EL_USER -m AD D _G R O UP -m USER _C HAUT HT O K
-m D EL_G R O UP -m C HG R P _ID -m R O LE_ASSIG N -m R O LE_R EMO VE -i
特定のユーザーがそのユーザーのログイン ID (aui d ) を使って実行したログインのアクションをすべて
検索するには、以下のコマンドを実行します。
~]# ausearch -ua 50 0 -i
昨日から現在までに失敗したすべてのシステムコールを検索するには、以下のコマンドを実行します。
~]# ausearch --start yesterd ay --end no w -m SY SC ALL -sv no -i
ausearch オプションの全一覧は、ausearch(8) man ページを参照してください。
7.8. Audit レポートの作成
au rep o rt ユーティリティーを使うと、Audit ログファイルに記録されたイベントについてのサマリーとレ
ポートが生成できます。デフォルトでは、レポート作成のために /var/l o g /aud i t/ 内のすべての
aud i t. l o g ファイルがクエリされます。aurepo rt options -i f file_name コマンドを使うと、
レポート作成に別のファイルをクエリするよう指定できます。
例7.7 aurepo rt を使った Au d it レポートの生成
今日を除いた過去 3 日間にログ記録されたイベントのレポートを生成するには、以下のコマンドを実行
します。
~]# aurepo rt --start 0 4 /0 8/20 13 0 0 : 0 0 : 0 0 --end 0 4 /11/20 13 0 0 : 0 0 : 0 0
実行可能ファイルのイベントすべてについてのレポートを生成するには、以下のコマンドを実行しま
す。
~]# aurepo rt -x
174
⁠第7 章 システム監査
上記の実行可能ファイルのレポートのサマリーを生成するには、以下のコマンドを実行します。
~]# aurepo rt -x --summary
全ユーザーの失敗したイベントのレポートサマリーを生成するには、以下のコマンドを実行します。
~]# aurepo rt -u --fai l ed --summary -i
システムユーザーごとのすべてのログイン試行失敗のレポートサマリーを生成するには、以下のコマンド
を実行します。
~]# aurepo rt --l o g i n --summary -i
ユーザー 50 0 のすべてのファイルアクセスイベントを検索するausearch クエリからレポートを生成
するには、以下のコマンドを実行します。
~]# ausearch --start to d ay --l o g i nui d 50 0 --raw | aurepo rt -f -summary
クエリされたすべての Audit ファイルおよびそれらに含まれるイベントの時間帯についてのレポートを
生成するには、以下のコマンドを実行します。
~]# aurepo rt -t
aurepo rt オプションの全一覧は、aureport(8) man ページを参照してください。
7.9. Audit 用の PAM 設定
7.9.1. pam_t t y_audit の設定
Red Hat Enterprise Linux の監査システムは、pam_tty_aud i t PAM モジュールを使って、ユーザーが指
定した TTY 入力の監査を有効/無効にします。監査対象のユーザーがログインすると、pam_tty_aud i t は
ユーザーが /var/l o g /aud i t/aud i t. l o g ファイルに行ったキー入力をそのまま記録します。このモ
ジュールは aud i td デーモンと動作するので、pam_tty_aud i t を設定する前にこれを有効にしてくださ
い。詳細情報は、「aud i t サービスの起動」 を参照してください。
TTY 監査でユーザー名を指定したい場合は、以下の形式で d i sabl e および enabl e オプションを使っ
て、/etc/pam. d /system-auth と /etc/pam. d /passwo rd -auth の各ファイルを修正します。
session required pam_tty_audit.so disable=username,username2
enable=username
オプションでは、ユーザー名はコンマ区切りにします。d i sabl e または enabl e のオプションは、同一
のユーザー名に合致するもので反対のオプションを上書きします。TTY 監査が有効になっていると、その
ユーザーが開始したプロセスすべてので引き継がれます。特に、あるユーザーが再起動したデーモンは TTY
監査が有効になったままになり、他のユーザーの監査が明示的に無効にされない限り、他のユーザーによる
TTY 入力も監査されます。このため、PAM を使用するほとんどのデーモンでは、d i sabl e= * を最初のオ
プションとして使用することが推奨されます。
175
Red Hat Ent erprise Linux 6 セキュリティガイド
重要
デフォルトでは、TTY がパスワード入力モードになっている時には、pam_tty_aud i t はキー入力
をログ記録 しません。ログ記録は、以下の方法で他のオプションと一緒に l o g _passwd オプショ
ンを追加することで、再度有効にできます。
session required pam_tty_audit.so disable=username,username2
enable=username log_passwd
このモジュールを有効にすると、aud i td デーモンが入力を /var/l o g /aud i t/aud i t. l o g ファイル
に書き込みます。TTY 監査では最初にキー入力がバッファに保存され、定期的に記録が書き込まれるか、
監査対象のユーザーがログアウトした後に書き込まれるので、入力が直ちにログ記録されるわけではないこ
とに注意してください。aud i t. l o g ファイルには、バックスペースや削除、リターンキー、コントロー
ルキーなど、指定されたユーザーによる すべての キー入力が含まれます。aud i t. l o g のコンテンツは
ヒューマンリーダブルですが、au rep o rt ユーティリティーを使うと読みやすい形式の TTY レポートが提
供されます。root で以下のコマンドを実行します。
~]# aurepo rt --tty
以下の例では、すべてのターミナルにわたる ro o t ユーザーのアクションを追跡するように
pam_tty_aud i t を設定し、その後に入力を見直します。
例7.8 ro o t のアクションをログ記録する p am_t t y_au d it の設定
以下の行を /etc/pam. d /system-auth および /etc/pam. d /passwo rd -auth の各ファイルの
sessi o n セクションに加えます。
session
required
pam_tty_audit.so disable=* enable=root
aurepo rt --tty コマンドを使ってログを確認します。ro o t ユーザーが 11 時ごろに TTY コンソール
にログインし、pwd コマンドを発行し、その後にそれを削除して代わりにl s を発行していると、レ
ポートは以下のようになります。
~]# aurepo rt --tty -ts to d ay | tai l
40. 08/28/2014 11:00:27 901 0 ? 76 bash "pwd",<backspace>,<backspace>
<backspace>,"ls",<ret>
41. 08/28/2014 11:00:29 903 0 ? 76 bash <^D>
詳細情報は、pam_tty_aud i t(8) man ページを参照してください。
7.10. その他のリソース
Audit システムについての詳細情報は、以下のリソースを参照してください。
オンラインのリソース
Linux Audit システムのプロジェクトページ: http://people.redhat.com/sgrubb/audit/
176
⁠第7 章 システム監査
Hack In the Box 誌の記事 Investigating kernel Return Codes with the Linux Audit System :
http://magazine.hackinthebox.org/issues/HITB-Ezine-Issue-005.pdf
インストールされているドキュメント
audit パッケージが提供するドキュメンテーションは、/usr/share/d o c/aud i t-version/ ディレク
トリーにあります。
man ページ
audispd.conf(5)
auditd.conf(5)
ausearch-expression(5)
audit.rules(7)
audispd(8)
auditctl(8)
auditd(8)
aulast(8)
aulastlog(8)
aureport(8)
ausearch(8)
ausyscall(8)
autrace(8)
auvirt(8)
177
Red Hat Ent erprise Linux 6 セキュリティガイド
第8章 コンプライアンスおよび OpenSCAP を使った脆弱性のスキャ
ン
8.1. Red Hat Ent erprise Linux におけるセキュリティコンプライアンス
コンプライアンス監査 は、あるオブジェクトがコンプライアンスポリシーのすべてのルールにしたがって
いるかどうかを判断するプロセスです。 コンプライアンスポリシー は、コンピューティング環境で使用さ
れる望ましい設定を指定するセキュリティ専門家が定義します。これは多くの場合、チェックリストの形式
を取ります。
コンプライアンスポリシーは組織によって大幅に異なることがよくあり、同一組織内でもシステムが異なる
と様々なものになります。システムの目的や組織におけるシステム重要性に基づいて、これらのポリシーは
異なってきます。カスタム化したソフトウェア設定や導入の特徴によっても、カスタム化したポリシーの
チェックリストが必要になってきます。
Red Hat Enterprise Linux は、完全に自動化されたコンプライアンス監査を可能にするツールを提供しま
す。これらのツールは SCAP (Security Content Automation Protocol) 標準に基づいており、コンプライ
アンスポリシーの自動化に合わせるように設計されています。
R ed H at En t erp rise Lin u x 7 でサポートされているセキュリティコンプライアンスツール
O p en SC AP — o scap コマンドラインユーティリティーは、ローカルシステムの上で設計スキャンと
脆弱性スキャンを実行するように設計されています。これにより、セキュリティコンプライアンスのコ
ンテンツを確認し、スキャンと評価に基づいてレポートとガイドを生成します。
Scrip t C h eck En g in e ( SC E) — SCE は SCAP プロトコルの拡張機能で、コンテンツ作成者が
Bash や Python、Ruby といったスクリプト言語を使ってセキュリティコンテンツを書けるようになり
ます。SCE 拡張機能は、openscap-engine-sce パッケージで提供されます。
SC AP Secu rit y G u id e ( SSG ) — scap-security-guide パッケージは、Linux システム用の最新セキュ
リティポリシーのコレクションを提供します。
複数のリモートのシステムで自動コンプライアンス監査を実行する必要がある場合は、Red Hat Satellite 用
の OpenSCAP ソリューションを利用することができます。詳細は、「Red Hat Satellite での OpenSCAP
の使用」 および 「その他のリソース」 を参照してください。
注記
Red Hat は、Red Hat Enterprise Linux 6 ディストリビューションではデフォルトでコンプライア
ンスポリシーを提供していないことに注意してください。この理由については、「コンプライアンス
ポリシーの定義」 で説明されています。
8.2. コンプライアンスポリシーの定義
セキュリティまたはコンプライアンスポリシーがまったくのゼロから書かれることはめったにありませ
ん。ISO 27000 標準シリーズやその派生物、他のソースなどがセキュリティポリシーのテンプレートや実
践上の推奨事項を提供するので、最初はこれらが便利です。しかし、情報セキュリティプログラムを構築し
ている組織では、個別のニーズに合わせるためにポリシーテンプレートを修正する必要があります。テンプ
178
⁠第8 章 コンプライアンスおよび O penSCAP を使った脆弱性のスキャン
レートは、企業環境への関連性に基づいて選択すべきです。テンプレートには組織に適用できない埋め込み
の前提が含まれていたり、テンプレートで特定の判断が明らかに必要であることなどから、テンプレート選
択後にこれを調整する必要があります。
Red Hat Enterprise Linux の監査機能は、Security Content Automation Protocol (SCAP) 標準をベースと
しています。SCAP は相互運用可能な使用を統合したもので、形式と命名を標準化します。これらの形式と
命名により、ソフトウェアの弱点およびセキュリティ設定の情報がマシンとユーザーの両方に通信されま
す。SCAP は、自動設定、脆弱性とパッチのチェック、技術的制御コンプライアンスアクティビティー、
およびセキュリティ措置などをサポートする仕様の複数目的のフレームワークです。
言い換えると、SCAP は、ベンダーにとらわれないセキュリティポリシーの表示方法です。このため、現代
の企業では幅広く使われています。SCAP 仕様は、セキュリティコンテンツの形式が周知かつ標準化された
エコシステムを作り出す一方で、スキャナーやポリシーエディターの導入は義務化されません。このような
状態では、企業がいくつものセキュリティベンダーを用いていても、組織がセキュリティポリシー (SCAP
コンテンツ) を構築するのは一度で済みます。
SCAP の最新バージョンには、いくつかの基礎的標準が含まれています。これらのコンポーネントは、
SCAP 内での機能により、以下のようにグループ化されています。
SC AP コンポーネント
言語 — このグループは、コンプライアンスポリシーを表現する標準的な語彙および慣習を定義する
SCAP 言語で構成されます。
eXtensible Configuration Checklist Description Format (XCCDF) — セキュリティガイダンスを表示、
組織、および管理するための言語です。
Open Vulnerability and Assessment Language (OVAL) — スキャンされたシステムの状態について論
理的アサーションを実行するための言語です。
Open Checklist Interactive Language (OCIL) — ユーザーにクエリを行い、その質問に対するユー
ザーの返答を解釈するための標準的な方法を提供する言語です。
Asset Identification (AI) — セキュリティアセットを特定するためのデータモデル、方法、およびガイ
ダンスを提供する言語です。
Asset Reporting Format (ARF) — 収集されたセキュリティアセットおよびアセットとセキュリティ
レポートとの関係についての情報の送信形式を表示する言語です。
列挙 — このグループには、命名形式および興味のある特定のセキュリティ関連の分野からのアイテムの
公式一覧または辞書を定義する、SCAP 基準が含まれています。
Common Configuration Enumeration (CCE) — アプリケーションおよびオペレーティングシステム用
のセキュリティ関連設定要素の列挙です。
Common Platform Enumeration (CPE) — 情報技術 (IT) システム、プラットホーム、およびソフト
ウェアパッケージの特定に使用される構造化命名スキームです。
Common Vulnerabilities and Exposures (CVE) — 周知のソフトウェア脆弱性および露出のコレクショ
ンへの参照方法です。
メトリクス — このグループは、セキュリティリスクを特定、評価するフレームワークで構成されていま
す。
Common Configuration Scoring System (CCSS) — セキュリティ関連の設定要素を評価し、それらを
スコアに割り当ててユーザーが適切な応答ステップの優先度を決定できるようにする、メトリクスシ
ステムです。
179
Red Hat Ent erprise Linux 6 セキュリティガイド
Common Vulnerability Scoring System (CVSS) — ソフトウェアの脆弱性を評価し、それらをスコアに
割り当ててユーザーがセキュリティリスクの優先度を決定できるようにするメトリクスシステムで
す。
整合性 — SCAP コンポーネントとスキャンの結果の整合性を維持するための SCAP 仕様です。
Trust Model for Security Automation Data (TMSAD) — セキュリティ自動化ドメイン内の XML ファイ
ルのコンテンツにおいて、署名、ハッシュ、鍵情報、および ID 情報を表示するための既存の仕様の
使い方を説明した推奨事項です。
各 SCAP コンポーネントには、XML ベースのドキュメント形式とその XML ネームスペースがあります。
SCAP で表示されているコンプライアンスポリシーは、単一の OVAL 定義 XML ファイル、データストリー
ムファイル、単一 zip アーカイブ、またはポリシーチェックリストを表示する XCCD F ファイルを含む別
個の XML ファイルセットのいずれかになります。
8.2.1. XCCDF ファイル形式
XCCD F 言語は、情報交換、ドキュメント生成、組織および状況に応じた調整、自動コンプライアンステス
ト、およびコンプライアンススコアリングをサポートするように設計されています。この言語は主に記述的
で、セキュリティスキャンを実行するコマンドは含まれていません。しかし XCCD F ドキュメントは他の
SCAP コンポーネントを参照できるため、関連する評価ドキュメント (OVAL, OCIL) を除くすべてのター
ゲットプラットホームのなかで移植可能なコンプライアンスポリシーの作成に使用することができます。
コンプライアンスポリシーを表示する一般的な方法は XML ファイルセットで、このうちのひとつが
XCCD F チェックリストになります。この XCCD F は通常、評価リソース、複数の OVAL、OCIL および
Script Check Engine (SCE) ファイルを参照しています。さらに、このファイルセットには、CPE 辞書
ファイルとこの辞書用のオブジェクトを定義する OVAL ファイルを含めることができます。
XCCD F は XML ベースの言語であることから、非常に多くの XML 要素と属性を定義、使用します。以下で
は、主要な XCCD F 要素を簡単に説明しています。XCCD F の詳細については、NIST Interagency Report
7275 Revision 4 を参照してください。
XC C D F ドキュメントの主要 XML 要素
<xccd f: Benchmark> — XCCD F ドキュメント全体を囲むルート要素です。これには、タイトル、説
明、作者一覧、最新の修正日、チェックリスト受け付けのステータスなどのチェックリストのメタデー
タが含まれる場合があります。
<xccd f: R ul e> — チェックリスト要件を表示し、その説明を保持する重要な要素です。これには、特
定のルールのコンプライアンスを確認または強制したり、ルール自体を修正するアクションを定義す
る、子要素が含まれる場合があります。
<xccd f: Val ue> — ベンチマーク内の他の XCCD F 要素の属性を表示するために使用される重要な要
素です。
<xccd f: G ro up> — この要素は、XCCD F ドキュメントを組織化して、要件と同じコンテキストまた
はタイプのグループや構造体を含みます。これは、<xccd f: R ul e>、<xccd f: Val ue>、および
<xccd f: G ro up> 要素を収集することでなされます。
<xccd f: P ro fi l e> — この要素は、XCCD F ベンチマークの名前付き調整に使われます。ベンチマー
クがいくつかの異なるテーラリングを持つことが可能になります。<xccd f: P ro fi l e>
は、<xccd f: sel ect> や <xccd f: refi ne-rul e> などのいくつかのセレクター要素を使って、ど
の要素が実行中に修正されたり処理されたりするかを決定します。
180
⁠第8 章 コンプライアンスおよび O penSCAP を使った脆弱性のスキャン
<xccd f: T ai l o ri ng > — この要素では、ベンチマーク外のベンチマークプロファイルの定義が可能
になります。これは、コンプライアンスポリシーの手動のテーラリングでは、妥当なものになる場合が
あります。
<xccd f: T estR esul t> — この要素は、ターゲットシステム上の特定のベンチマークのスキャン結果
を保持する役割を果たします。各 <xccd f: T estR esul t> は、特定のスキャンのコンプライアンスポ
リシーを定義する際に使用されたプロファイルを参照するようにしてください。また、スキャンに関連
するターゲットシステムについての重要情報も含めるようにしてください。
<xccd f: rul e-resul t> — <xccd f: T estR esul t> の子要素で、ベンチマークからターゲットシ
ステムに特定のルールを適用した結果を保持するために使用されます。
<xccd f: fi x> — <xccd f: R ul e> の子要素で、特定のルールに従っていないターゲットシステムの
改善に使われます。これにターゲットシステム上で実行するコマンドまたはスクリプトを含めると、シ
ステムをルールにしたがわせることができます。
<xccd f: check> — <xccd f: R ul e> の子要素で、特定ルールの評価方法を定義する外部ソースを参
照します。
<xccd f: sel ect> — ポリシーから特定のルールまたはルールのグループを除外もしくは含めるために
使われるセレクター要素です。
<xccd f: set-val ue> — <xccd f: Val ue> 要素の属性を変更せずに、この要素で指定された現在の
値の上書きに使われるセレクター要素です。
<xccd f: refi ne-val ue> — ポリシーテーラリング中に特定の <xccd f: Val ue> 要素の制限を指定
するために使われるセレクター要素です。
<xccd f: refi ne-rul e> — このセレクター要素は、選択されたルールの属性の上書きを可能にしま
す。
例8.1 XC C D F ドキュメントの例
​
​< ?xml version="1.0" encoding="UTF-8"?>
​< Benchmark xmlns="http://checklists.nist.gov/xccdf/1.2"
​
id="xccdf_com.example.www_benchmark_test">
​ <status>incomplete</status>
​ <version>0.1</version>
​ <Profile id="xccdf_com.example.www_profile_1">
​
<title>Profile title is compulsory</title>
​
<select idref="xccdf_com.example.www_group_1"
​
selected="true"/>
​
<select idref="xccdf_com.example.www_rule_1"
​
selected="true"/>
​
<refine-value idref="xccdf_com.example.www_value_1"
​
selector="telnet service"/>
​ </Profile>
​ <Group id="xccdf_com.example.www_group_1">
​
<Value id="xccdf_com.example.www_value_1">
​
<value selector="telnet_service">telnet-server</value>
​
<value selector="dhcp_servide">dhcpd</value>
​
<value selector="ftp_service">tftpd</value>
​
</Value>
​
<Rule id="xccdf_com.example.www_rule_1">
​
<title>The telnet-server Package Shall Not Be Installed </title>
181
Red Hat Ent erprise Linux 6 セキュリティガイド
​
<rationale>
Removing the telnet-server package decreases the risk
of the telnet service’s accidental (or intentional) activation
</rationale>
<fix platform="cpe:/o:redhat:enterprise_linux:6"
reboot="false"
disruption="low"
system="urn:xccdf:fix:script:sh">
yum -y remove
<sub idref="xccdf_com.example.www_value_1"/>
</fix>
<check system="http://oval.mitre.org/XMLSchema/oval-definitions​
​
​
​
​
​
​
​
​
​
​
5">
​
<check-export value-id="xccdf_com.example.www_value_1"
​
export-name="oval:com.example.www:var:1"/>
​
<check-content-ref href="examplary.oval.xml"
​
name="oval:com.example.www:def:1"/>
​
</check>
​
<check system="http://open-scap.org/page/SCE">
​
<check-import import-name="stdout"/>
​
<check-content-ref href="telnet_server.sh"/>
​
</check>
​
</Rule>
​ </Group>
​< /Benchmark>
​
8.2.2. OVAL ファイル形式
Open Vulnerability Assessment Language (OVAL) は、SCAP の必須かつ最も古いコンポーネントです。
OVAL 標準の主なゴールは、セキュリティ製品の間で相互運用性を確保することです。これは、以下の 3 つ
のドメインの標準化でなされます。
1. ターゲットシステム設定の表示。
2. ターゲットシステムが特定のマシン状態にあるかを分析。
3. 指定されたマシン状態と観察されたマシン状態の比較結果のレポーティング。
他のツールやカスタム化されたスクリプトとは異なり、OVAL 言語は宣言型でリソースの望ましい状態を記
述します。OVAL 言語コードは スキャナーと呼ばれる OVAL インタープリターツールを用いて実行されます
が、直接実行されることは決してありません。OVAL が宣言型であるために、評価されるシステムの状態が
偶然に修正されることはありません。セキュリティスキャナーは可能な限り高い権限で実行されることが多
いので、これは重要な点になります。
OVAL 仕様はコメントと貢献を公開で受け付けています。また、多くの IT 企業が米連邦政府の援助を受け
た NPO である MITRE Corporation と協力しています。OVAL 仕様は継続的に発展しており、バージョン
番号で改訂版を区別しています。最新バージョンは 2012 年にリリースされた 5.10.1 になります。
他のすべての SCAP コンポーネントと同様に、OVAL は XML に基づいています。OVAL 標準は、いくつか
のドキュメント形式を定義します。これらはそれぞれ異なる種類の情報を含み、異なる目的に使われます。
182
⁠第8 章 コンプライアンスおよび O penSCAP を使った脆弱性のスキャン
O VAL ドキュメント形式
OVAL Definitions 形式は、最も一般的な OVAL ファイル形式で、システムスキャンに直接使用されま
す。OVAL D efinitions のドキュメントは、ターゲットシステムの望ましい状態を記述します。
OVAL Variables 形式は、OVAL D efinitions ドキュメントの修正に使用される変数を定義します。OVAL
Variables ドキュメントは通常、OVAL D efinitions ドキュメントと一緒に使われ、ランタイム時にター
ゲットシステムのセキュリティコンテンツを調整します。
OVAL System Characteristics 形式は、評価対象のシステムについての情報を保持します。OVAL
System Characteristics ドキュメントは通常、実際のシステムの状態と、OVAL D efinitions ドキュメン
トが定義する期待された状態を比較するために使用されます。
OVAL Results は、最も包括的な OVAL 形式で、システム評価の結果を報告するために使われます。
OVAL Results ドキュメントには通常、評価された OVAL 定義のコピー、バインドされた OVAL 変数、
OVAL システムの特徴、システムの特徴と定義の比較に基づいて計算されたテスト結果が含まれます。
OVAL Directives 形式は、特定の詳細を除外または含めることで、OVAL Result ドキュメントの長さを
調整するために使われます。
OVAL Common Model 形式には、いくつかの他の OVAL スキームに使用される構造体と列挙の定義が含
まれます。これは、OVAL 定義を再利用して、複数のドキュメントでの重複を防ぐために使われます。
OVAL D efinitions ドキュメントは、設定要件一式で構成されます。各要件
は、definitions、tests、objects、states、および variables の 5 つの基本的なセクションで構成されます。
definitions セクション内における要素は、特定の定義を満たすためにどのテストが実行されるかを記述し
ます。test 要素は、objects と states をリンクさせます。システム評価中に、ある object 要素が示す評価
システムのリリースが特定の state 要素に対応すると、テストが成功したとみなされます。variables セク
ションでは、states セクションからの要素の調整に使用される可能性のある外部の変数を定義します。これ
らのセクションに加えて、OVAL D efinitions ドキュメントには通常、generator および signature の各セク
ションも含まれています。generator セクションには、ドキュメントの出所についての情報とそのコンテン
ツに関連する様々な追加情報が含まれます。
OVAL ドキュメントの基本的セクションからの各要素は、以下の形式の識別子で明確に特定されます。
oval:namespace:type:ID
ここでの namespace は、識別子を定義するネームスペースです。type は、definitions 要素の場合は def、
tests 要素の場合は tst、objects 要素の場合は obj、states 要素の場合は ste、variables 要素の場合は var
になります。ID は、識別子の整数値になります。
例8.2 O VAL D ef in it io n s ドキュメントの例
​
​< ?xml version="1.0" encoding="utf-8"?>
​< oval_definitions
​
xmlns:lin-def="http://oval.mitre.org/XMLSchema/oval-definitions5#linux"
​
xmlns:oval="http://oval.mitre.org/XMLSchema/oval-common-5"
​
xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5"
​
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
​ <generator>
​
<oval:product_name>vim</oval:product_name>
​
<oval:schema_version>5.10.1</oval:schema_version>
​
<oval:timestamp>2012-11-22T15:00:00+01:00</oval:timestamp>
183
Red Hat Ent erprise Linux 6 セキュリティガイド
​
</generator>
<definitions>
​
<definition class="inventory"
​
id="oval:org.open-scap.cpe.rhel:def:6"
​
version="1">
​
<metadata>
​
<title>Red Hat Enterprise Linux 6</title>
​
<affected family="unix">
​
<platform>Red Hat Enterprise Linux 6</platform>
​
</affected>
​
<reference ref_id="cpe:/o:redhat:enterprise_linux:6"
​
source="CPE"/>
​
<description>
​
The operating system installed on the system is Red Hat
Enterprise Linux 6
​
</description>
​
</metadata>
​
<criteria>
​
<criterion comment="Red Hat Enterprise Linux 6 is installed"
​
test_ref="oval:org.open-scap.cpe.rhel:tst:6"/>
​
</criteria>
​
</definition>
​ </definitions>
​ <tests>
​
<lin-def:rpminfo_test check_existence="at_least_one_exists"
​
id="oval:org.open-scap.cpe.rhel:tst:6"
​
version="1"
​
check="at least one"
​
comment="redhat-release is version 6">
​
<lin-def:object object_ref="oval:org.open-scap.cpe.redhatrelease:obj:1"/>
​
<lin-def:state state_ref="oval:org.open-scap.cpe.rhel:ste:6"/>
​
</lin-def:rpminfo_test>
​ </tests>
​ <objects>
​
<lin-def:rpmverifyfile_object id="oval:org.open-scap.cpe.redhatrelease:obj:1"
​
version="1">
​
<!-- This object represents rpm package which owns /etc/redhatrelease file -->
​
<lin-def:behaviors nolinkto='true'
​
nomd5='true'
​
nosize='true'
​
nouser='true'
​
nogroup='true'
​
nomtime='true'
​
nomode='true'
​
nordev='true'
​
noconfigfiles='true'
​
noghostfiles='true' />
​
<lin-def:name operation="pattern match"/>
​
<lin-def:epoch operation="pattern match"/>
​
<lin-def:version operation="pattern match"/>
​
<lin-def:release operation="pattern match"/>
​
<lin-def:arch operation="pattern match"/>
​
<lin-def:filepath>/etc/redhat-release</lin-def:filepath>
​
184
⁠第8 章 コンプライアンスおよび O penSCAP を使った脆弱性のスキャン
​
</lin-def:rpmverifyfile_object>
</objects>
​ <states>
​
<lin-def:rpminfo_state id="oval:org.open-scap.cpe.rhel:ste:6"
​
version="1">
​
<lin-def:name operation="pattern match">^redhat-release</lindef:name>
​
<lin-def:version operation="pattern match">^6[^\d]</lindef:version>
​
</lin-def:rpminfo_state>
​ </states>
​< /oval_definitions>
​
​
8.2.3. データストリームの形式
SCAP データストリームは、SCAP バージョン 1.2 から使用されているファイル形式で、XCCD F や
OVAL、その他のコンポーネントファイルなど、XCCD F チェックリストで表示されているコンプライアン
スポリシーの定義に使用可能なもののバンドルを表します。また、特定のデータストリームを SCAP コン
ポーネントにしたがってファイルに分割することを可能にするインデックスとカタログも含まれています
データストリームは XML 形式を使用し、これはコンテンツのテーブルで形成されたヘッダーと
<d s: co mpo nent> 要素の一覧で構成されています。これらの要素にはそれぞれ、XCCD F や OVAL、CPE
などの SCAP コンポーネントが含まれます。データストリームファイルには同じタイプの複数のコンポー
ネントが含まれている場合があり、組織で必要とされるセキュリティポリシーすべてがカバーされます。
例8.3 データストリームヘッダーの例
​
​< ds:data-stream-collection
xmlns:ds="http://scap.nist.gov/schema/scap/source/1.2"
​
xmlns:xlink="http://www.w3.org/1999/xlink"
​
xmlns:cat="urn:oasis:names:tc:entity:xmlns:xml:catalog"
​
id="scap_org.open-scap_collection_from_xccdf_ssg-rhel6-xccdf1.2.xml"
​
schematron-version="1.0">
​ <ds:data-stream id="scap_org.open-scap_datastream_from_xccdf_ssgrhel6-xccdf-1.2.xml"
​
scap-version="1.2" use-case="OTHER">
​ <ds:dictionaries>
​
<ds:component-ref id="scap_org.open-scap_cref_output--ssg-rhel6cpe-dictionary.xml"
​
xlink:href="#scap_org.open-scap_comp_output--ssg-rhel6-cpedictionary.xml">
​
<cat:catalog>
​
<cat:uri name="ssg-rhel6-cpe-oval.xml"
​
uri="#scap_org.open-scap_cref_output--ssg-rhel6-cpeoval.xml"/>
​
</cat:catalog>
​
</ds:component-ref>
​ </ds:dictionaries>
​ <ds:checklists>
​
<ds:component-ref id="scap_org.open-scap_cref_ssg-rhel6-xccdf-
185
Red Hat Ent erprise Linux 6 セキュリティガイド
1.2.xml"
​
xlink:href="#scap_org.open-scap_comp_ssg-rhel6-xccdf-1.2.xml">
​
<cat:catalog>
​
<cat:uri name="ssg-rhel6-oval.xml"
​
uri="#scap_org.open-scap_cref_ssg-rhel6-oval.xml"/>
​
</cat:catalog>
​
</ds:component-ref>
​ </ds:checklists>
​ <ds:checks>
​
<ds:component-ref id="scap_org.open-scap_cref_ssg-rhel6-oval.xml"
​
xlink:href="#scap_org.open-scap_comp_ssg-rhel6-oval.xml"/>
​
<ds:component-ref id="scap_org.open-scap_cref_output--ssg-rhel6cpe-oval.xml"
​
xlink:href="#scap_org.open-scap_comp_output--ssg-rhel6-cpeoval.xml"/>
​
<ds:component-ref id="scap_org.open-scap_cref_output--ssg-rhel6oval.xml"
​
xlink:href="#scap_org.open-scap_comp_output--ssg-rhel6oval.xml"/>
​ </ds:checks>
​< /ds:data-stream>
​< ds:component id="scap_org.open-scap_comp_ssg-rhel6-oval.xml"
​
timestamp="2014-03-14T16:21:59">
​ <oval_definitions xmlns="http://oval.mitre.org/XMLSchema/ovaldefinitions-5"
​
xmlns:oval="http://oval.mitre.org/XMLSchema/oval-common-5"
​
xmlns:ind="http://oval.mitre.org/XMLSchema/oval-definitions5#independent"
​
xmlns:unix="http://oval.mitre.org/XMLSchema/oval-definitions5#unix"
​
xmlns:linux="http://oval.mitre.org/XMLSchema/oval-definitions5#linux"
​
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
​
xsi:schemaLocation="http://oval.mitre.org/XMLSchema/oval-common-5
​
oval-common-schema.xsd
​
http://oval.mitre.org/XMLSchema/oval-definitions-5
​
oval-definitions-schema.xsd
​
http://oval.mitre.org/XMLSchema/oval-definitions5#independent
​
independent-definitions-schema.xsd
​
http://oval.mitre.org/XMLSchema/oval-definitions-5#unix
​
unix-definitions-schema.xsd
​
http://oval.mitre.org/XMLSchema/oval-definitions-5#linux
​
linux-definitions-schema.xsd">
​
8.3. oscap の使用
o scap コマンドラインユーティリティーを使うと、ローカルシステムのスキャン、セキュリティコンプラ
イアンスコンテンツの確認、これらのスキャンおよび評価を基にしたレポートとガイドの生成ができます。
このユーティリティーは OpenSCAP ライブラリーへのフロントエンドとしてのサービスを提供し、その機
能を処理する SCAP コンテンツのタイプに基づいてモジュール (サブコマンド) にグループ化します。
186
⁠第8 章 コンプライアンスおよび O penSCAP を使った脆弱性のスキャン
以下のセクションでは o scap のインストール方法、最も一般的な操作の実行方法、これらのタスクの関連
する例の表示方法を説明します。特定のサブコマンドの詳細を確認するには、o scap コマンドの --hel p
オプションを使用してください。
o scap [o pti o ns] module module_operation
[mo d ul e_o perati o n_o pti o ns_and _arg uments] --hel p
ここでの module は、処理されている SCAP コンテンツのタイプになります。また、module_operation は、
SCAP コンテンツにおける特定の操作のサブコマンドになります。
例8.4 特定の o scap 操作に関するヘルプ
~]$ o scap d s sd s-spl i t --hel p
oscap -> ds -> sds-split
Split given SourceDataStream into separate files
Usage: oscap [options] ds sds-split [options] SDS TARGET_DIRECTORY
SDS - Source data stream that will be split into multiple files.
TARGET_DIRECTORY - Directory of the resulting files.
Options:
--datastream-id <id>
collection to use.
--xccdf-id <id>
should be evaluated.
- ID of the datastream in the
- ID of XCCDF in the datastream that
o scap の全機能を学習し、オプションの完全一覧を確認するには、o scap(8) man ページを参照してく
ださい。
8.3.1. oscap のインストール
システムに o scap をインストールするには、ro o t で以下のコマンドを実行します。
~]# yum i nstal l o penscap-uti l s
このコマンドにより、ユーティリティー自体を提供する openscap パッケージを含む、o scap が正常に機
能するために必要な全パッケージがインストールされます。
独自のセキュリティコンテンツを書き込みたい場合は、Script Check Engine (SCE) を提供する openscapengine-sce パッケージをインストールします。SCE は SCAP プロトコルの拡張機能で、コンテンツ作者は
Bash、Python、Ruby などのスクリプト言語を使って独自のセキュリティコンテンツを記述することがで
きます。openscap-engine-sce パッケージは openscap-utils パッケージと同じ方法でインストールできます
が、Red Hat Enterprise Linux 用のオプションパッケージがあるリポジトリーまたはチャンネルにアクセ
スする必要があります。Red Hat Subscription Management にシステムが登録されている場合は、
Red Hat Enterprise Linux 6 導入ガイドの Yum の章で説明してある rhel -6 -variant-o pti o nal rpms リポジトリーを有効にします。ここでのvariant は、server や wo rkst at io n などの Red Hat
Enterprise Linux のバリアントになります。システムが RHN Classic に登録されている場合
は、https://access.redhat.com/site/solutions/9907 の説明にあるようにシステムを
rhel -architecture-variant-6 -o pti o nal チャンネルにサブスクライブさせます。
187
Red Hat Ent erprise Linux 6 セキュリティガイド
オプションとして、o scap のインストール後に使用する o scap のバージョンの機能やこのバージョンが
サポートする仕様、特定の o scap ファイルの保存場所、使用可能な SCAP オブジェクトの種類、他の役
立つ情報をチェックできます。これらの情報を表示するには、以下のコマンドを実行します。
~]$ o scap -V
OpenSCAP command line tool (oscap) 1.0.8
Copyright 2009--2014 Red Hat Inc., Durham, North Carolina.
==== Supported specifications ====
XCCDF Version: 1.2
OVAL Version: 5.10.1
CPE Version: 2.3
CVSS Version: 2.0
CVE Version: 2.0
Asset Identification Version: 1.1
Asset Reporting Format Version: 1.1
==== Capabilities added by auto-loaded plugins ====
SCE Version: 1.0 (from libopenscap_sce.so.8)
==== Paths ====
Schema files: /usr/share/openscap/schemas
Schematron files: /usr/share/openscap/xsl
Default CPE files: /usr/share/openscap/cpe
Probes: /usr/libexec/openscap
==== Inbuilt CPE names ====
Red Hat Enterprise Linux - cpe:/o:redhat:enterprise_linux
Red Hat Enterprise Linux 5 - cpe:/o:redhat:enterprise_linux:5
Red Hat Enterprise Linux 6 - cpe:/o:redhat:enterprise_linux:6
Red Hat Enterprise Linux 7 - cpe:/o:redhat:enterprise_linux:7
Fedora 16 - cpe:/o:fedoraproject:fedora:16
Fedora 17 - cpe:/o:fedoraproject:fedora:17
Fedora 18 - cpe:/o:fedoraproject:fedora:18
Fedora 19 - cpe:/o:fedoraproject:fedora:19
Fedora 20 - cpe:/o:fedoraproject:fedora:20
Fedora 21 - cpe:/o:fedoraproject:fedora:21
Red Hat Enterprise Linux Optional Productivity Applications cpe:/a:redhat:rhel_productivity
Red Hat Enterprise Linux Optional Productivity Applications 5 cpe:/a:redhat:rhel_productivity:5
==== Supported OVAL objects and associated OpenSCAP probes ====
system_info
probe_system_info
family
probe_family
filehash
probe_filehash
environmentvariable
probe_environmentvariable
textfilecontent54
probe_textfilecontent54
textfilecontent
probe_textfilecontent
variable
probe_variable
xmlfilecontent
probe_xmlfilecontent
environmentvariable58
probe_environmentvariable58
filehash58
probe_filehash58
inetlisteningservers
probe_inetlisteningservers
rpminfo
probe_rpminfo
partition
probe_partition
188
⁠第8 章 コンプライアンスおよび O penSCAP を使った脆弱性のスキャン
iflisteners
rpmverify
rpmverifyfile
rpmverifypackage
selinuxboolean
selinuxsecuritycontext
file
interface
password
process
runlevel
shadow
uname
xinetd
sysctl
process58
fileextendedattribute
routingtable
probe_iflisteners
probe_rpmverify
probe_rpmverifyfile
probe_rpmverifypackage
probe_selinuxboolean
probe_selinuxsecuritycontext
probe_file
probe_interface
probe_password
probe_process
probe_runlevel
probe_shadow
probe_uname
probe_xinetd
probe_sysctl
probe_process58
probe_fileextendedattribute
probe_routingtable
o scap ユーティリティーを効果的に使い始める前に、システムにいくつかのセキュリティコンテンツをイ
ンストールもしくはインポートする必要があります。SCAP コンテンツはそれぞれのウェブサイトからダウ
ンロードするか、RPM ファイルもしくはパッケージとして指定されている場合は、Yu m パッケージマネ
ジャーを使って指定された場所もしくは既知のリポジトリーからインストールすることができます。
たとえば、Linux システム用の最新のセキュリティポリシー一式を含む SCAP Security Guide (SSG) パッ
ケージをインストールするには、以下のコマンドを実行します。
~]# yum i nstal l scap-securi ty-g ui d e
システムに scap-security-guide パッケージをインストールした後は、特に指定されていなければ、SSG セ
キュリティコンテンツは /usr/share/xml /scap/ssg /co ntent/ ディレクトリーにあり、他のセキュ
リティコンプライアンス作業に進むことができます。
個別のニーズに合致する可能性のある既存の SCAP コンテンツの他のソースが必要な場合は、「その他の
リソース」 を参照してください。
システムに SCAP コンテンツをインストールした後は、コンテンツへのパスを指定することで o scap はコ
ンテンツを処理できます。o scap ユーティリティーは SCAP バージョン 1.2 をサポートしており、SCAP
バージョン 1.1 および 1.0 とも後方互換性があるので、特別な要件を必要とせずに以前のバージョンの
SCAP コンテンツを処理できます。
8.3.2. SCAP コンテンツの表示
SCAP 標準は、数多くのファイル形式を定義します。o scap ユーティリティーは、多くの形式に適合する
ファイルを処理したり、作成したりすることができます。SCAP コンテンツの特定ファイルをさらに処理す
るには、そのファイルタイプでの o scap の使い方を理解する必要があります。特定のファイルの使い方が
分からない場合は、ファイルを開いて読んでみるか、o scap の i nfo モジュールを使うことができます。
これはファイルを解析し、ヒューマンリーダブルな形式で関連情報を抽出します。
以下のコマンドを実行すると、SCAP ドキュメントの内部構造を調べることができます。また、ドキュメン
トタイプ、仕様バージョン、ドキュメントのステータス、ドキュメントの公開日、ドキュメントがファイ
ルシステムにコピーされて日付などの便利な情報が表示されます。
o scap i nfo file
189
Red Hat Ent erprise Linux 6 セキュリティガイド
ここでの file は、調べているセキュリティコンテンツファイルへの完全パスになります。以下の例で
o scap i nfo コマンドの使用方法を示します。
例8.5 SC AP コンテンツについて情報を表示する
~]$ o scap i nfo /usr/share/xml /scap/ssg /co ntent/ssg -rhel 6 -d s. xml
Document type: Source Data Stream
Imported: 2014-08-28T15:41:34
Stream: scap_org.open-scap_datastream_from_xccdf_ssg-rhel6-xccdf1.2.xml
Generated: (null)
Version: 1.2
Checklists:
Ref-Id: scap_org.open-scap_cref_ssg-rhel6-xccdf-1.2.xml
Profiles:
xccdf_org.ssgproject.content_profile_test
xccdf_org.ssgproject.content_profile_CS2
xccdf_org.ssgproject.content_profile_common
xccdf_org.ssgproject.content_profile_server
xccdf_org.ssgproject.content_profile_stigrhel6-server-upstream
xccdf_org.ssgproject.content_profile_usgcbrhel6-server
xccdf_org.ssgproject.content_profile_rht-ccp
xccdf_org.ssgproject.content_profile_CSCFRHEL6-MLS
xccdf_org.ssgproject.content_profile_C2S
Referenced check files:
ssg-rhel6-oval.xml
system:
http://oval.mitre.org/XMLSchema/oval-definitions-5
Checks:
Ref-Id: scap_org.open-scap_cref_ssg-rhel6-oval.xml
Ref-Id: scap_org.open-scap_cref_output--ssg-rhel6-cpe-oval.xml
Ref-Id: scap_org.open-scap_cref_output--ssg-rhel6-oval.xml
Dictionaries:
Ref-Id: scap_org.open-scap_cref_output--ssg-rhel6-cpedictionary.xml
8.3.3. システムのスキャン
o scap の最も重要な機能は、ローカルシステムの設定および脆弱性スキャンを実行することです。以下は
コマンドの一般的な構文になります。
o scap [o pti o ns] module eval [mo d ul e_o perati o n_o pti o ns_and _arg uments]
o scap ユーティリティーでは、XC C D F (eXtensible Configuration Checklist D escription Format) ベン
チマークと O VAL (Open Vulnerability and Assessment Language) 定義の両方で表示される SCAP コン
テンツに対してシステムのスキャンを行うことができます。セキュリティポリシーは単一の OVAL または
XCCD F ファイルの場合もあれば、複数の別個の XML ファイルの場合もあります。後者の場合は、各ファ
190
⁠第8 章 コンプライアンスおよび O penSCAP を使った脆弱性のスキャン
イルが異なるコンポーネントを表します (XCCD F、OVAL、CPE、CVE、その他)。スキャン結果は、標準
出力と XML ファイルの両方にプリントすることができます。この結果のファイルは o scap でさらに処理
され、ヒューマンリーダブル形式のレポートを生成することができます。以下は、このコマンドの最も一般
的な使用例になります。
例8.6 SSG O VAL 定義を使用したシステムのスキャン
すべての定義を評価しながら SSG OVAL 定義ファイルに対してシステムのスキャンを実行するには、以
下のコマンドを実行します。
~]$ o scap o val eval --resul ts scan-o val -resul ts. xml
/usr/share/xml /scap/ssg /co ntent/ssg -rhel 6 -d s. xml
スキャン結果は、scan-o val -resul ts. xml ファイルとして現行ディレクトリーに保存されます。
例8.7 SSG O VAL 定義を使用したシステムのスキャン
SSG データストリームファイルで表されるセキュリティポリシーから特定の OVAL 定義を評価するに
は、以下のコマンドを実行します。
~]$ o scap o val eval --i d oval:ssg:def:100 --resul ts scan-o val resul ts. xml /usr/share/xml /scap/ssg /co ntent/ssg -rhel 6 -d s. xml
スキャン結果は、scan-o val -resul ts. xml ファイルとして現行ディレクトリーに保存されます。
例8.8 SSG XC C D F ベンチマークを使用したシステムのスキャン
システム上の xccd f_o rg . ssg pro ject. co ntent_pro fi l e_rht-ccp プロファイルの SSG
XCCD F ベンチマークを実行するには、以下のコマンドを実行します。
~]$ o scap xccd f eval --pro fi l e
xccdf_org.ssgproject.content_profile_rht-ccp --resul ts scan-xccd fresul ts. xml scan-xccd f-resul ts. xml
/usr/share/xml /scap/ssg /co ntent/ssg -rhel 6 -d s. xml
スキャン結果は、scan-xccd f-resul ts. xml ファイルとして現行ディレクトリーに保存されます。
注記
--pro fi l e コマンドラインの引数は、特定の XCCD F またはデータストリームファイルからセ
キュリティプロファイルを選択します。利用可能なプロファイルの一覧は、o scap i nfo コマ
ンドを実行すると確認できます。--pro fi l e コマンドライン引数が省略されると、SCAP 標準
で必要とされるデフォルトの XCCD F プロファイルが使用されます。デフォルトの XCCD F プロ
ファイルは適切なセキュリティポリシーである場合もありますが、そうでない場合もあることに
注意してください。
8.3.4 . レポートおよびガイドの生成
o scap のもうひとつの便利な機能は、ヒューマンリーダブルな形式で SCAP コンテンツを生成することで
191
Red Hat Ent erprise Linux 6 セキュリティガイド
す。o scap ユーティリティーを使うと、XML ファイルを HTML またはプレーンテキスト形式に変換でき
ます。この機能は、セキュリティガイドやチェックリストの生成に使用できます。これらは、セキュアな
システム設定のガイドになるとともに、情報ソースの役割も果たします。システムスキャンの結果も、読み
やすい結果レポートに変換することができます。一般的なコマンド構文は以下のようになります。
o scap module g enerate sub-module [speci fi c_mo d ul e/submo d ul e_o pti o ns_and _arg uments] file
ここでの module は xccd f または o val に、sub-module は生成されたドキュメントのタイプに、file は
XCCD F または OVAL ファイルになります。
以下でこのコマンドの最も一般的な使用例を示します。
例8.9 チェックリスト付きガイドの生成
チェックリスト付きの SSG ガイドを xccd f_o rg . ssg pro ject. co ntent_pro fi l e_rht-ccp プ
ロファイル用に作成するには、以下のコマンドを実行します。
~]$ o scap xccd f g enerate g ui d e --pro fi l e
xccd f_o rg . ssg pro ject. co ntent_pro fi l e_rht-ccp
/usr/share/xml /scap/ssg /co ntent/ssg -rhel 6 -d s. xml > ssg -g ui d echeckl i st. html
ガイドは、ssg -g ui d e-checkl i st. html ファイルとして現行ディレクトリーに保存されます。
例8.10 SSG O VAL スキャン結果をレポートに変換する
SSG OVAL スキャンの結果を HTML ファイルに変換するには、以下のコマンドを実行します。
~]$ o scap o val g enerate repo rt scan-o val -resul ts. xml > ssg -scan-o val repo rt. html
結果のレポートは ssg -scan-o val -repo rt. html ファイルとして現行ディレクトリーに保存されま
す。この例では、scan-o val -resul ts. xml ファイルが保存されている場所からこのコマンドが実行
されることを想定しています。それ以外の場合は、スキャン結果を含んでいるファイルの完全修飾パス
を指定する必要があります。
例8.11 SSG XC C D F スキャン結果をレポートに変換する
SSG XCCD F スキャンの結果を HTML ファイルに変換するには、以下のコマンドを実行します。
~]$ o scap xccd f g enerate repo rt scan-xccd f-resul ts. xml > scan-xccd frepo rt. html
結果レポートは ssg -scan-xccd f-repo rt. html ファイルとして現行ディレクトリーに保存されま
す。別の方法では、--repo rt コマンドライン引数を使用すると、スキャン時にこのレポートが生成で
きます。
~]$ o scap xccd f eval --pro fi l e
xccd f_o rg . ssg pro ject. co ntent_pro fi l e_rht-ccp --resul tsscan-xccd fresul ts. xml --repo rt scan-xccd f-repo rt. html
/usr/share/xml /scap/ssg /co ntent/ssg -rhel 6 -d s. xml
192
⁠第8 章 コンプライアンスおよび O penSCAP を使った脆弱性のスキャン
8.3.5. SCAP コンテンツの検証
システム上でセキュリティポリシーを使い始める前に、ポリシーを検証してポリシー内の構文エラーやセマ
ンティックエラーを避けるようにしてください。o scap ユーティリティーを使うと、SCAP XML スキーマ
に対してセキュリティコンテンツを検証することができます。検証結果は、標準エラーストリーム (stderr)
にプリントされます。このような検証コマンドの一般的な構文は以下のようになります。
o scap module val i d ate [mo d ul e_o pti o ns_and _arg uments] file
ここでの file は、検証されているファイルへの完全パスになります。唯一の例外はデータストリームモ
ジュール (ds) で、これは val i d ate ではなく sd s-val i d ate 演算を使用します。以下の例で示されて
いるように、特定のデータストリーム内の SCAP コンポーネントは自動的に検証され、各コンポーネント
は別個に指定されないことに注意してください。
~]$ o scap d s sd s-val i d ate /usr/share/xml /scap/ssg /co ntent/ssg -rhel 6 d s. xml
OVAL 仕様のような特定の SCAP コンテンツの場合、スキマトロン検証も実行できます。スキマトロン検証
は標準の検証よりも遅いものの、より深い分析を提供するのでより多くのエラーを検出できます。以下の
SSG 例では、このコマンドの通常の使用方法を示しています。
~]$ o scap o val val i d ate --schematro n
/usr/share/xml /scap/ssg /co ntent/ssg -rhel 6 -d s. xml
8.4 . Red Hat Sat ellit e での OpenSCAP の使用
複数の Red Hat Enterprise Linux システムを稼働している際には、すべてのシステムがセキュリティポリ
シーにしたがっており、リモートの 1 カ所からスキャンと評価を実行することが重要になります。これは、
Satellite クライアントに spacewalk-oscap パッケージがインストールされている Red Hat Satellite 5.5 以
降を使用することで達成できます。このパッケージは、R ed H at N et wo rk T o o ls チャンネルから入手で
きます。
このソリューションは、2 つの方法でのセキュリティコンプライアンススキャンの実行、表示、およびス
キャン結果のさらなる処理をサポートしています。O penSC AP Satel l i te Web Interface を使うか
Satel l i te AP I からコマンドとスクリプトを実行することができます。このソリューションのセキュリ
ティコンプライアンス、要件、機能に関する詳細情報は、Red Hat Satellite 5.6 ユーザーガイド を参照し
てください。
8.5. 実用的な使用例
本セクションでは、Red Hat 製品用に提供されている特定のセキュリティコンテンツの実用的な使用例を
紹介します。
8.5.1. Red Hat 製品のセキュリティ脆弱性の監査
Red Hat は自社製品用に継続的に OVAL 定義を提供しています。これらの定義により、インストール済みソ
フトウェアにおける脆弱性の完全自動化された監査が可能になります。このプロジェクトに関する詳細情報
は、http://www.redhat.com/security/data/metrics/ を参照してください。これらの定義をダウンロードする
には、以下のコマンドを実行します。
193
Red Hat Ent erprise Linux 6 セキュリティガイド
~]$ wg et http: //www. red hat. co m/securi ty/d ata/o val /co m. red hat. rhsaal l . xml
Red Hat Satellite 5 のユーザーには、パッチ定義の XCCD F の部分が便利かもしれません。これらの定義を
ダウンロードするには、以下のコマンドを実行します。
~]$ wg et http: //www. red hat. co m/securi ty/d ata/metri cs/co m. red hat. rhsaal l . xccd f. xml
システムにインストール済みのソフトウェアに関するセキュリティ脆弱性を監査するには、以下のコマンド
を実行します。
~]$ o scap o val eval --resul ts rhsa-resul ts-o val . xml --repo rt o val repo rt. html co m. red hat. rhsa-al l . xml
o scap ユーティリティーは、National Vulnerability D atabase にリンクしている CVE に
Red Hat Security Advisories をマッピングします。そして、どのセキュリティアドバイザリーが適用され
ていないかを報告します。
注記
これらの OVAL 定義は、Red Hat がリリースしているソフトウェアや更新のみをカバーしているこ
とに注意してください。サードパーティーのソフトウェアのパッチステータスを検出するには、追
加の定義を提供する必要があります。
8.5.2. SCAP セキュリティガイドを使ったシステム設定の監査
SCAP Security Guide (SSG) プロジェクトのパッケージである scap-security-guide には、Linux システム
用の最新のセキュリティポリシー一式が含まれています。scap-security-guide の一部は、
Red Hat Enterprise Linux 6 設定のガイドにもなっています。scap-security-guide で利用可能なセキュリ
ティコンテンツを確認するには、o scap i nfo モジュールを使用します。
~]$ o scap i nfo /usr/share/xml /scap/ssg /co ntent/ssg -rhel 6 -d s. xml
このコマンドの出力は SSG ドキュメントの概要で、利用可能な設定プロファイルが含まれています。ご使
用のシステム設定を監査するには、適切なプロファイルを選択して適切な評価コマンドを実行します。たと
えば、以下のコマンドは、Red Hat Certified Cloud Providers 用のドラフト SCAP プロファイルに対し特
定のシステムを評価するために使われます。
~]$ o scap xccd f eval --pro fi l e
xccd f_o rg . ssg pro ject. co ntent_pro fi l e_rht-ccp --resul ts ssg -rhel 6 -xccd fresul t. xml --repo rt ssg -rhel 6 -repo rt. html
/usr/share/xml /scap/ssg /co ntent/ssg -rhel 6 -d s. xml
8.6. その他のリソース
関心のある様々なセキュリティコンプライアンスの分野に関する詳細情報は、以下のリソースを参照してく
ださい。
194
⁠第8 章 コンプライアンスおよび O penSCAP を使った脆弱性のスキャン
インストールされているドキュメント
o scap(8) — o scap コマンドラインユーティリティーの man ページでは、利用可能なオプション全一
覧とその使用方法が説明されています。
Guide to the Secure Configuration of Red Hat Enterprise Linux 6 — /usr/share/d o c/scapsecuri ty-g ui d e-0 . 1. 18/ ディレクトリーにある HTML ドキュメントです。XCCD F チェックリ
ストという形式でシステムのセキュリティ設定の詳細なガイドを提供しています。
オンラインのドキュメント
The OpenSCAP project page — OpenSCAP プロジェクトのホームページでは、o scap ユーティリ
ティーと SCAP に関連する他のコンポーネントおよびプロジェクトの詳細情報が提供されています。
The SCAP Workbench project page — SCAP Workbench プロジェクトのホームページでは、scap wo rkb en ch アプリケーションの詳細情報が提供されています。
The SCAP Security Guide (SSG) project page — SSG プロジェクトのホームページでは、Red Hat
Enterprise Linux 向けの最新セキュリティコンテンツが提供されています。
National Institute of Standards and Technology (NIST) SCAP page — このページには SCAP 関連
の大量の資料があります。SCAP の出版物や仕様、SCAP 検出プログラムもあります。
National Vulnerability D atabase (NVD ) — このページは、SCAP コンテンツおよび他の SCAP 標準
ベースの脆弱性管理データの最大のリポジトリーです。
Red Hat OVAL content repository — Red Hat Enterprise Linux システム向けの OVAL 定義を含むリポ
ジトリーです。
MITRE CVE — これは、MITRE corporationが提供する既知のセキュリティ脆弱性に関するデータベー
スです。
MITRE OVAL — このページは、MITRE corporation が提供する OVAL 関連のプロジェクトを紹介して
います。OVAL 関連の他の情報に加え、OVAL 言語の最新バージョンや 2 万 2 千を越える OVAL 定義を
数える巨大な OVAL コンテンツのリポジトリーがあります。
Red Hat Satellite 5.6 ユーザーガイド — 本書では、OpenSCAP を使って複数のシステム上でシステム
セキュリティを維持する方法が説明されています。
195
Red Hat Ent erprise Linux 6 セキュリティガイド
第9章 米連邦政府の標準および規制
9.1. はじめに
どの組織も、米連邦政府または業界のセキュリティ仕様、標準および規制の遵守に取り組むことで一定のセ
キュリティレベルを維持することができます。本章では、これらの標準および規制のいくつかについて説明
します。
9.2. 連邦情報処理標準 (FIPS: Federal Informat ion Processing St andard)
連邦情報処理標準 (FIPS) のパブリケーションである 140-2 は、暗号モジュールの品質を検証するために連
邦政府と業界の作業部会によって開発されたコンピューターセキュリティ標準です。FIPS のパブリケー
ション (140-2 を含む) は以下の URL にあります。http://csrc.nist.gov/publications/PubsFIPS.html。本
書の作成時点で 140-3 のパブリケーションは草稿状態にあるため、これが完成版の標準として使用できな
い可能性があることに注意してください。FIPS 標準は、さまざまな業界や暗号モジュールの各種の実装お
よびさまざな組織規模や要件に対応すべく、4 つのセキュリティ レベルを規定しています。これらのレベル
については、以下で説明します。
レベル 1 – セキュリティレベル 1 はセキュリティの最も低いレベルです。暗号モジュールについての基
本的なセキュリティ要件が規定されます (例: 1 つ以上の承認済みのアルゴリズムか、承認済みのセキュ
リティ機能を使用するものとする)。セキュリティレベル 1 の暗号モジュールでは、本番稼働レベルの
コンポーネントの基本要件を超える具体的な物理セキュリティのメカニズムは必要とされません。セ
キュリティレベル 1 の暗号モジュールの例には、パソコン (PC) 用の暗号化ボードがあります。
レベル 2 – セキュリティレベル 2 は、セキュリティレベル 1 の暗号モジュールについての物理セキュ
リティのメカニズムを強化します。レベル 2 では、耐タンパー性のあるコーティングまたはシールを使
用することや、モジュールの除去可能なカバーやドアにこじあけ耐性のある錠をかけることをはじめと
する物理的改ざんの痕跡を残すという要件が加わります。耐タンパー性のあるコーティングやシールは
暗号モジュールに付けられ、コーティングやシールを破らない限り、モジュール内のテキスト形式の暗
号鍵とクリティカルセキュリティパラメーター (CSP) に物理的にアクセスできないようにします。耐テ
ンパー性のあるシールまたはこじあけ耐性のある錠をカバーまたはドアに取り付けて、許可されない物
理的なアクセスからモジュールを保護します。
レベル 3 – セキュリティレベル 2 で要求される改ざん跡を残す物理セキュリティのメカニズムに加え
て、セキュリティレベル 3 は、暗号モジュール内で保持される CSP に侵入者がアクセスすることを防
ぐことを目的とします。セキュリティレベル 3 で要求される物理セキュリティのメカニズムは、物理的
なアクセスの試行や暗号モジュールの使用または変更を高い確率で検出し、これらに対応することを意
図しています。この物理セキュリティのメカニズムには、頑丈な囲い (enclosure) の使用、および暗号
モジュールの除去可能なカバー/ドアが開かれたときにテキスト形式の CSP をすべてゼロ化するタン
パー検出/タンパー応答を持つ回路の使用が含まれることがあります。
レベル 4 – セキュリティレベル 4 は、この標準で定義される最も高いセキュリティレベルです。このセ
キュリティレベルでは、すべての許可されていない物理的なアクセスを検出し、これに応答することを
目的として、物理セキュリティのメカニズムが暗号モジュール全体に保護用の遮蔽 (envelope) を提供
します。 あらゆる方向からの暗号モジュールの囲いへの侵入が非常に高い確率で検出され、その結果、
テキスト形式のすべての CSP が即座にゼロ化されます。セキュリティレベル 4 の暗号モジュールは、
物理的に保護されていない環境下での使用に役立ちます。
FIPS 標準の上記の各レベルや他の仕様についての詳細は、FIPS 140-2 標準の全体
(http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf を参照してください。
9.2.1. FIPS モードの有効化
196
⁠第9 章 米連邦政府の標準および規制
Red Hat Enterprise Linux 6 を連邦情報処理標準 (FIPS) パブリケーション 140-2 準拠とするには、いくつ
かの変更を加えて認定済み暗号モジュールを使用することが必要です。お使いのシステム (カーネルおよび
ユーザースペース) を FIPS モードに切り替えるには、以下のステップを実行します。
1. モジュール内の整合性検証の適切な実行にあたり、prelink を無効にする必要がありま
す。/etc/sysco nfi g /prel i nk 設定ファイルで P R ELINKING = no を設定してください。既
存の事前リンク (prelinking) がある場合は、 prel i nk -u -a コマンドを使用してすべてのシス
テムファイル上でこれを元に戻す必要があります。
2. 次に、dracut-fips パッケージをインストールします。
~]# yum i nstal l d racut-fi ps
注記
FIPS 整合性の検証は、システムが FIPS モードで稼働中かどうかにかかわらず、dracut-fips
パッケージがシステム上にあれば実行されます。ただし、dracut-fips パッケージがあったと
しても、システムもしくは共有ライブラリーが FIPS モードでなければ、整合性の検証結果
は無視 (またはログ記録されるだけ) されます。
3. i ni tramfs ファイルを再作成します。
~]# d racut -f
警告
この操作により、既存の i ni tramfs ファイルが上書きされます。
4. 以下のオプションを追加して、/bo o t/g rub/g rub. co nf ファイルにある現在のカーネルのカー
ネルコマンドラインを変更します。
fips=1
197
Red Hat Ent erprise Linux 6 セキュリティガイド
注記
/bo o t または /bo o t/efi が別のパーティションにある場合、カーネルパラメーターの
boot=</boot または /boot/efi のパーティション > のカーネルパラメーター を
カーネルコマンドラインに追加する必要があります。パーティションは、それぞれ d f
/bo o t または d f /bo o t/efi コマンドでそれぞれ識別されます。以下は例になります。
~]$ d f /bo o t
Filesystem
Mounted on
/dev/sda1
1K-blocks
495844
Used Available Use%
53780
416464
12% /boot
上記の例では、/boot パーティションは /d ev/sd a1 にあります。従って、以下の文字列を
カーネルコマンドラインに追加する必要があります。
boot=/dev/sda1
5. システムを再起動します。
注記
暗号とメッセージ認証コード (MACs) は、デフォルトで /etc/ssh/sshd _co nfi g ファイル内で
FIPS モードに設定されています。sshd _co nfi g に他の暗号と MACs が含まれている場合は、
FIPS モードでサポートされているアルゴリズムのみを使用するように修正します。以下がその例に
なります。
Protocol 2
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192cbc,aes256-cbc
Macs hmac-sha1,hmac-sha2-256,hmac-sha2-512
FIPS へのより厳格なコンプライアンスが求められる場合は、システムのインストール時に fi ps= 1 カーネ
ルオプションをカーネルコマンドラインに追加する必要があります。これにより、FIPS で承認されている
アルゴリズムを使って鍵を生成し、継続的なモニタリングテストを実施することができます。また、ユー
ザーは、インストールプロセス時にマウスを動かすか、またはマウスを使用できない場合は多数のキー入力
を行うことにより、システムに十分なエントロピーを確保する必要があります。推奨されるキー入力の回数
は 256 回以上です。 255 回以下の場合は、一意でない鍵が生成される可能性があります。
198
⁠第9 章 米連邦政府の標準および規制
警告
Red Hat Enterprise Linux 上で FIPS モードを有効にする上記の手順は、Network Security
Services (NSS) の FIPS 状態に影響を及ぼさないので、NSS を使用するアプリケーションにも影響
がありません。必要な場合は、以下のコマンドを使って NSS アプリケーションを FIPS モードに切
り替えることができます。
~]# mo d uti l -fi ps true -d bd i r dir
ここでの dir は、アプリケーションに使用する NSS データベースを指定するディレクトリーです。
複数の NSS アプリケーションがこのデータベースを使用している場合は、これらアプリケーション
のすべてが FIPS モードに切り替えられます。NSS FIPS モードを有効にするには、アプリケーショ
ンを再起動する必要があります。
9.3. NISPOM (Nat ional Indust rial Securit y Program Operat ing Manual)
National Industrial Security Program (NISP) の 構成要素の 1 つである NISPOM (D oD 5220.22-M とも
呼ばれる) は、すべての政府指定業者向けに、秘密情報 (classified information) に関する一連の手順と要件
を規定しています。現行の NISPOM は、2006 年 2 月 28 日付けのもので、2013 年 3 月 28 日からのメ
ジャーな変更が組み込まれています。NISPOM 文書は以下の URL からダウンロードできま
す。http://www.nispom.org/NISPOM-download.html
9.4 . PCI DSS (Payment Card Indust ry Dat a Securit y St andard)
(ソース: https://www.pcisecuritystandards.org/about/index.shtml) PCI Security Standards Council は、
2006 年に発足したグローバル規模の開かれた協議会であり、データセキュリティスタンダード (DSS: Data
Security Standard) を含む PCI セキュリティ基準の開発、管理、教育および普及に関する討議の場を提供し
ています。
PCI D SS 標準は、https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml からダウン
ロードできます。
9.5. セキュリティ技術導入ガイド (Securit y T echnical Implement at ion
Guide)
セキュリティ技術導入ガイド (STIG: Security Technical Implementation Guide) は、ソフトウェアとハー
ドウェアの標準化された安全なインストールと保守についての方法論です。
STIG についての詳細は、以下の URL を参照してください。http://iase.disa.mil/stigs/index.html
199
Red Hat Ent erprise Linux 6 セキュリティガイド
第10章 参考資料
以下に挙げるものは、本ガイドのスコープ外である SELinux および Red Hat Enterprise Linux 関連の追加
情報の参照先です。SELinux は急速に開発されているため、記述の一部は Red Hat Enterprise Linux の特
定リリースにのみ適用されることに注意してください。
書籍
SELin u x b y Examp le
Mayer, MacMillan, and Caplan
Prentice Hall, 2007
チュートリアルとヘルプ
T u t o rials an d t alks f ro m R u ssell C o ker
http://www.coker.com.au/selinux/talks/ibmtu-2004/
G en eric Writ in g SELin u x p o licy H O WT O
http://www.lurking-grue.org/writingselinuxpolicyHOWTO.html
R ed H at ナレッジベース
http://kbase.redhat.com/
一般的な情報
N SA SELin u x メイン Web サイト
http://www.nsa.gov/selinux/
N SA SELin u x FAQ
http://www.nsa.gov/selinux/info/faq.cfm
SELin u x N SA' s O p en So u rce Secu rit y En h an ced Lin u x ( 日本語訳: SELin u x システム管理
-セキュア O S の基礎と運用)
http://www.oreilly.com/catalog/selinux/
技術
An O verview o f O b ject C lasses an d Permissio n s
http://www.tresys.com/selinux/obj_perms_help.html
In t eg rat in g Flexib le Su p p o rt f o r Secu rit y Po licies in t o t h e Lin u x O p erat in g Syst em
( a h ist o ry o f Flask imp lemen t at io n in Lin u x)
http://www.nsa.gov/research/_files/selinux/papers/selsymp2005.pdf
200
⁠第1 0 章 参考資料
http://www.nsa.gov/research/_files/selinux/papers/selsymp2005.pdf
Imp lemen t in g SELin u x as a Lin u x Secu rit y Mo d u le
http://www.nsa.gov/research/_files/publications/implementing_selinux.pdf
A Secu rit y Po licy C o n f ig u rat io n f o r t h e Secu rit y- En h an ced Lin u x
http://www.nsa.gov/research/_files/selinux/papers/policy/policy.shtml
コミュニティー
SELin u x コミュニティページ
http://selinuxproject.org/
IR C
irc.freenode.net, #selinux, #fedora-selinux, #security
歴史
Flask の歴史概観
http://www.cs.utah.edu/flux/fluke/html/flask.html
Flu ke の詳細な背景
http://www.cs.utah.edu/flux/fluke/html/index.html
201
Red Hat Ent erprise Linux 6 セキュリティガイド
暗号の標準
A.1. 同期式の暗号
A.1.1. 高度暗号化標準 (AES)
高度暗号化標準 (AES: Advanced Encryption Standard) は米国政府によって採用された暗号化標準です。
この標準は、元は Rijndael として公開された大規模なコレクションの中から採用された、3 つのブロック
暗号 AES-128、AES-192 および AES-256 から構成されています。それぞれの AES 暗号は、キーのサイズ
がそれぞれ 128、192 および 256 ビット の 128 ビットのブロックサイズを持ちます。AES 暗号の分析は
詳細に行われており、現在ではその前身であるデータ暗号化標準 (D ES: D ata Encryption Standard) と同
様に世界中で使用されています。 ⁠ [5]
A.1 .1 .1 . AES の歴史
AES は、標準化プロセス開始から 5 年後の 2001年11月26日に、U.S. FIPS PUB 197 (FIPS 197) として
National Institute of Standards and Technology (NIST) により発表されました。この 5 年間に 15 の競
合するデザインが提出され、それぞれの評価が行われた結果、Rijndael が最適な標準として選択されまし
た。これは多くの異なる暗号化パッケージで利用できます。AES は、最高機密情報に関して NSA が初めて
認定した、一般にアクセス可能でオープンな暗号です。
Rijndael は 2 人のベルギー人の暗号学者 Joan D aemon と Vincent Rijmen により開発され、彼らにより
AES の選定プロセスに提出されました。Rijndael はこれら 2 人の発明家の名前の混成語です。 ⁠ [6 ]
A.1.2. データ暗号化標準 (DES)
データ暗号化標準 (D ES: D ata Encryption Standard) は、1976 年に National Bureau of Standards に
よって米国の公式な連邦情報処理標準 (FIPS: Federal Information Processing Standard) として選択され
たブロック暗号 (共有秘密暗号の形式の1つ) であり、その後国際的に広く利用されるようになりました。
この暗号は 56 ビットキーを使用した対称鍵アルゴリズムに基づいています。このアルゴリズムは当初、秘
密の設計要素、比較的に短い鍵の長さ、および National Security Agency (NSA) のバックドアに関する疑
惑とともに議論の的になりました。その後、D ES は徹底的な学術的検証を受け、現代のブロック暗号とそ
の暗号解析の理解の進展に貢献しています。 ⁠ [7]
A.1 .2 .1 . DES の歴史
現在、D ES のセキュリティは多くのアプリケーションに対して不十分であると考えられています。この主
な原因は、56 ビットキーが小さすぎることにあります。1999年1月に、distributed.net と Electronic
Frontier Foundation は共同で D ES 鍵を 22 時間 15 分で解読しました。また、実際の実装については実現
不可能であるものの、暗号に理論上の弱点があることを示唆するいくつかの解析結果があります。こうした
理論上の弱点があるにも関わらず、アルゴリズムは 3-D ES の形式ではほとんど安全であると考えられてい
ます。近年、この暗号は高度暗号化標準 (AES) に置き換えられています。 ⁠ [8 ]
一部の文献では、標準としての D ES と、D EA (D ata Encryption Algorithm) と呼ばれる D ES アルゴリズ
ムを区別しています。 ⁠ [9 ] A.2. 公開鍵暗号
公開鍵暗号は、多くの暗号アルゴリズムと暗号化システムで採用されている暗号化のアプローチです。その
際立った特徴は、対称鍵アルゴリズムの代わりか、または対称鍵と共に非対称鍵アルゴリズムを使用する点
にあります。公開鍵/秘密鍵の暗号化技術を使用することで、以前には知られていなかった通信を保護し、
メッセージを認証する数多くの方法を実用化できるようになりました。また、対称鍵アルゴリズムを使用す
202
暗号の標準
る際に必要とされていた1つまたは複数の秘密鍵のセキュアな初期交換が不要になりました。さらに、公開
鍵暗号を使って電子署名を作成することもできるようになりました。 ⁠ [10 ]
公開鍵暗号は、基本的な技術であり世界中で幅広く使用されています。また、トランスポート層セキュリ
ティ (TLS) (SSL の後継)、PGP および GPG などのインターネット標準の土台となるアプローチです。
[11] 公開鍵暗号で使用される特徴的な技術は、非対称の鍵アルゴリズムの使用です。このアルゴリズムでは、
メッセージを暗号化するために使われる鍵がメッセージを復号するために使用される鍵と同じではありませ
ん。各ユーザーは、暗号鍵と秘密鍵のペアを持ちます。公開鍵が広く配布される可能性があるのに対して、
秘密鍵は秘密の状態にされます。メッセージは受信者の公開鍵で暗号化され、対応する秘密鍵でのみ暗号化
解除することができます。これらの鍵は数学的に関連付けることができますが、(現在または将来において)
秘密鍵を公開鍵から導き出すことはできません。このアルゴリズムの発見は、1970 年代中盤に始まった暗
号の使用に変革をもたらすものとなりました。 ⁠ [12]
これとは対照的に、数千年間にわたって使用されてきた各種の対称鍵暗号のアルゴリズムでは、暗号化と復
号のために単一の秘密鍵が使用され、この鍵は送信者と受信者によって共有されます (この秘密鍵は共有さ
れるものの、秘密の状態にしておく必要があります)。対称的な暗号化スキームを使用するには、送信者と
受信者の両方が前もって鍵を安全に共有しておく必要があります。 ⁠ [13] 対称鍵アルゴリズムの方の計算集約度が低くなることがほぼ通例であるため、鍵交換アルゴリズムを用いて
鍵を交換してから、その鍵と対称鍵アルゴリズムを用いてデータを転送することが一般に行われています。
例えば、PGP および各種スキームの SSL/TLS ファミリーがこれを実行するため、それらはハイブリッド
暗号システムと呼ばれています。 ⁠ [14] A.2.1. Diffie-Hellman
D iffie–Hellman 鍵交換 (D –H) は、相互を認識していない 2 当事者間で、保護されていない通信チャネルを
通して共有秘密鍵を共同で確立できるようにする暗号化プロトコルです。確立される鍵は、対称鍵暗号を用
いて後続の通信を暗号化するために使用されます。 ⁠ [15]
A.2 .1 .1 . Diffie -He llm an の歴史
このスキーマは 1976 年に Whitfield D iffie と Martin Hellman によって初めて公開されました。しかしなが
ら後に、GCHQ の British signals intelligence agency 内の Malcolm J. Williamson が数年早くこれを単
独で発明しており、かつ機密扱いにされていたことが明らかになりました。2002 年に Hellman は、Ralph
Merkle の公開鍵暗号の発明に対する貢献を認めてこのアルゴリズムを D iffie–Hellman–Merkle 鍵交換と呼
ぶことを提案しました(Hellman, 2002)。 ⁠ [16 ]
D iffie–Hellman 鍵合意はそれ自体が匿名の (認証されない) 鍵合意プロトコルであるにも関わらず、さまざ
まな認証されたプロトコルに対する基礎を提供し、トランスポート層セキュリティの超短期モード (暗号
スイートに応じて ED H または D HE と呼ばれる) において PFS (Perfect Forward Secrecy) を提供するた
めに使用されます。 ⁠ [17]
U.S. Patent 4,200,770 (現在は期間が満了している) は、アルゴリズムを説明しており、発明者は
Hellman、D iffie および Merkle であるとしています。 ⁠ [18 ]
A.2.2. RSA
暗号学において、RSA (初めて公に説明した Rivest、Shamir および Adleman の頭文字を表す) は公開鍵暗
号のアルゴリズムです。これは、暗号と署名のどちらにも適しているとされる最初のアルゴリズムであり、
当初の公開鍵暗号における主要な優位性の 1 つとなってきました。RSA は、電子商取引のプロトコルで広
く使用されており、十分な長さの鍵と最新の実装が使用されていることからセキュアであると考えられてい
ます。
203
Red Hat Ent erprise Linux 6 セキュリティガイド
A.2.3. DSA
電子署名アルゴリズム (D SA: D igital Signature Algorithm) は電子署名の標準であり、電子署名における米
連邦政府の標準です。D SA は署名のみに使用されるアルゴリズムであり、暗号アルゴリズムではありませ
ん。 ⁠ [19 ]
A.2.4 . SSL/T LS
トランスポート層セキュリティ (TLS: Transport Layer Security) とその前身である Secure Socket Layer
(SSL) は、インターネットなどのネットワーク上の通信に対してセキュリティを提供する暗号プロトコル
です。TLS と SSL は、エンドツーエンドでトランスポート層におけるネットワーク接続のセグメントを暗
号化します。
このプロトコルのいくつかのバージョンは、ウェブ閲覧、電子メール、インターネット FAX、インスタン
トメッセージおよび voice-over-IP (VoIP) などのアプリケーションで広く使われています。 ⁠ [20 ]
A.2.5. Cramer-Shoup 暗号システム
Cramer–Shoup システムは非対称暗号アルゴリズムであり、標準的な暗号推測に基づく適応的選択暗号文
攻撃に対してセキュアであることが証明された初の効率的なスキームです。そのセキュリティは、決定
D iffie–Hellman 仮定の計算的な難解さに基づいています(これは一般的な想定で、実証されている訳ではあ
りません)。これは 1998年に Ronald Cramer と Victor Shoup により開発された ElGamal 暗号の拡張で
す。極めて順応性のある ElGamal と比べて、Cramer–Shoup には高度な攻撃者に対してさえも頑強性を確
保するために追加の要素が加わります。この頑強性は、衝突耐性のあるハッシュ機能と追加の計算の使用に
よって実現され、これにより ElGamal の2倍の暗号文が生成されます。 ⁠ [21]
A.2.6. ElGamal 暗号
暗号学において、ElGamal 暗号システムは D iffie-Hellman 鍵合意に基づく公開鍵暗号の非対称鍵暗号アル
ゴリズムです。1985年に Taher Elgamal がこれを発表しました。Elgamal 暗号は、GNU Privacy Guard
フリーソフトウェアや最近のバージョンの PGP および他の暗号システムで使用されています。 ⁠ [22]
[5] " Ad vanc ed Enc ryp tio n Stand ard " Wikipedia 20 0 9 年11月14
日http ://en.wikip ed ia.o rg /wiki/Ad vanc ed _Enc ryp tio n_Stand ard
[6 ] " Ad vanc ed Enc ryp tio n Stand ard " Wikipedia 20 0 9 年11月14日
http ://en.wikip ed ia.o rg /wiki/Ad vanc ed _Enc ryp tio n_Stand ard
[7] " Data Enc ryp tio n Stand ard ." Wikipedia. 20 0 9 年11月14日
http ://en.wikip ed ia.o rg /wiki/Data_Enc ryp tio n_Stand ard
[8 ] " Data Enc ryp tio n Stand ard " Wikipedia 20 0 9 年11月14日
http ://en.wikip ed ia.o rg /wiki/Data_Enc ryp tio n_Stand ard
[9 ] " Data Enc ryp tio n Stand ard " Wikipedia 20 0 9 年11月14日
http ://en.wikip ed ia.o rg /wiki/Data_Enc ryp tio n_Stand ard
[10 ] " Pub lic -key Enc ryp tio n" Wikipedia 20 0 9 年11月14日 http ://en.wikip ed ia.o rg /wiki/Pub lic key_c ryp to g rap hy
[11] " Pub lic -key Enc ryp tio n." Wikipedia 20 0 9 年 11 月 14 日 http ://en.wikip ed ia.o rg /wiki/Pub lic key_c ryp to g rap hy
[12] " Pub lic -key Enc ryp tio n." Wikipedia. 20 0 9 年 11 月 14 日 http ://en.wikip ed ia.o rg /wiki/Pub lic key_c ryp to g rap hy
204
暗号の標準
[13] " Pub lic -key Enc ryp tio n." Wikipedia 20 0 9 年 11 月 14 日 http ://en.wikip ed ia.o rg /wiki/Pub lic key_c ryp to g rap hy
[14] " Pub lic -key Enc ryp tio n." Wikipedia 20 0 9 年 11 月 14 日 http ://en.wikip ed ia.o rg /wiki/Pub lic key_c ryp to g rap hy
[15] " Diffie-Hellman." Wikipedia 20 0 9 年 11 月 14 日 http ://en.wikip ed ia.o rg /wiki/Diffie-Hellman
[16 ] " Diffie-Hellman." Wikipedia 20 0 9 年 11 月 14 日 http ://en.wikip ed ia.o rg /wiki/Diffie-Hellman
[17] " Diffie-Hellman." Wikipedia20 0 9 年 11 月 14 日 http ://en.wikip ed ia.o rg /wiki/Diffie-Hellman
[18 ] " Diffie-Hellman." Wikipedia. 20 0 9 年 11 月 14 日 http ://en.wikip ed ia.o rg /wiki/Diffie-Hellman
[19 ] " DSA." Wikipedia 20 10 年 2 月 24 日 http ://en.wikip ed ia.o rg /wiki/Dig ital_Sig nature_Alg o rithm
[20 ] " TLS/SSL." Wikipedia 20 10 年 2 月 24 日 http ://en.wikip ed ia.o rg /wiki/Trans p o rt_Layer_Sec urity
[21] " Cramer-Sho up c ryp to s ys tem." Wikipedia 20 10 年 2 月 24 日 http ://en.wikip ed ia.o rg /wiki/Cramer–
Sho up _c ryp to s ys tem
[22] " ElG amal enc ryp tio n" Wikipedia 20 10 年 2 月 24 日 http ://en.wikip ed ia.o rg /wiki/ElG amal_enc ryp tio n
205
Red Hat Ent erprise Linux 6 セキュリティガイド
Audit システムのリファレンス
B.1. Audit イベントフィールド
表B.1「イベントフィールド」 では、現在サポートされている Audit イベントフィールドを一覧表示してい
ます。イベントフィールドとは、Audit ログファイルで等号記号の前にある値です。
表B .1 イベントフィールド
イベントフィールド
説明
a0 、a1、a2、a3
acct
ad d r
システムコールの最初の 4 つの引数を十六進法で記録します。
ユーザーのアカウント名を記録します。
IPv4 または IPv6 アドレスを記録します。このフィールドは通
常、ho stname フィールドの後に来て、ホスト名が解決するアドレスを
含みます。
システムの CPU アーキテクチャーについての情報を十六進法にエンコー
ドして記録します。
Audit ユーザー ID を記録します。この ID は、ログイン時にユーザーに割
り当てられ、ユーザーの ID が変更された後でもすべてのプロセスに引き
継がれます (たとえば、su - jo hn コマンドでユーザーアカウントを切
り替えた場合)。
特定の Linux 機能の設定に使用されたビット数を記録します。Linux 機能
については、capabilities(7) man ページを参照してください。
引き継いだファイルのシステムベースの機能設定に関連したデータを記録
します。
許可されたファイルのシステムベースの機能設定に関連したデータを記録
します。
効果的なプロセスベースの機能設定に関連したデータを記録します。
継承されたプロセスベースの機能設定に関連したデータを記録します。
許可されたプロセスベースの機能設定に関連したデータを記録します。
Audit イベント生成時のプロセスが含まれるcg ro up へのパスを記録しま
す。
実行されたコマンドライン全体を記録します。これは、exe フィールドが
たとえば /bi n/bash を記録するようなシェルインタープリターの場合
に便利です。シェルインタープリターと cmd フィールド
は、hel l o wo rl d . sh --hel p のような実行されたコマンドラインの
残りの部分を記録するからです。
実行されたコマンドを記録します。これは、exe フィールドがたとえば
/bi n/bash を記録するようなシェルインタープリターの場合に便利で
す。シェルインタープリターと co mm フィールドは、hel l o wo rl d . sh
のような実行されたスクリプト名を記録するからです。
システムコールが開始されたディレクトリーへのパスを記録します。
TTY 記録に関連するデータを記録します。
イベントで記録されたファイルまたはディレクトリーを含むデバイスのマ
イナーおよびメジャー ID を記録します。
メジャーデバイス ID を記録します。
マイナーデバイス ID を記録します。
分析されているプロセスを開始したユーザーの実効グループ ID を記録し
ます。
分析されているプロセスを開始したユーザーの実効ユーザー ID を記録し
ます。
arch
aui d
capabi l i ty
cap_fi
cap_fp
cap_pe
cap_pi
cap_pp
cg ro up
cmd
co mm
cwd
d ata
d ev
d evmajo r
d evmi no r
eg i d
eui d
206
Audit システムのリファレンス
イベントフィールド
説明
exe
分析されているプロセスを開始するために使用された実行可能ファイルへ
のパスを記録します。
システムコールが返した終了コードを記録します。この値は、システム
コールによって異なります。以下のコマンドを使うと、この値をヒューマ
ンリーダブルなものに変換できます。ausearch --i nterpret -exi t exit_code
IPv4 または IPv6 の使用されたアドレスプロトコルのタイプを記録しま
す。
ファイルのタイプを記録します。
ファイルシステム名のフラグを記録します。
分析されているプロセスを開始したユーザーのファイルシステムグループ
ID を記録します。
分析されているプロセスを開始したユーザーのファイルシステムユーザー
ID を記録します。
グループ ID を記録します。
ホスト名を記録します。
受信した Internet Control Message Protocol (ICMP) パッケージのタイ
プを記録します。このフィールドを含む Audit メッセージは通
常、ip t ab les が生成します。
変更されたアカウントのユーザー ID を記録します。
Audit イベントで記録されたファイルまたはディレクトリーに関連する
inode 番号を記録します。
inode の所有のグループ ID を記録します。
inode の所有のユーザー ID を記録します。
この記録にアタッチされたパス記録の数を記録します。
Audit ログで特定のイベントを生成したルールに関連付けられているユー
ザー定義の文字列を記録します。
Audit ルールリストの ID を記録します。以下が既知の ID リストになりま
す。
exi t
fami l y
fi l etype
fl ag s
fsg i d
fsui d
gid
ho stname
i cmptype
id
i no d e
i no d e_g i d
i no d e_ui d
i tems
key
l i st
0 — user
1 — task
4 — exi t
5 — excl ud e
mo d e
msg
msg type
name
new-d i sk
new-mem
new-vcpu
new-net
new_g i d
ファイルまたはディレクトリーのパーミッションを数字表記にエンコー
ドして記録します。
記録のタイムスタンプと一意の ID 、または各種のイベント固有の
<name>= <value> ペアを記録します。これらは、カーネルもしくはユー
ザースペースアプリケーションが提供します。
ユーザーベースの AVC 拒否の場合に返されたメッセージのタイプを記録
します。このメッセージタイプは、D -Bus で決定されます。
システムコールに引数として渡されたファイルまたはディレクトリーへの
完全パスを記録します。
仮想マシンに割り当てられた新規ディスクリソースの名前を記録します。
仮想マシンに割り当てられた新規メモリーリソースの容量を記録します。
仮想マシンに割り当てられた新規の仮想 CPU リソースの数を記録しま
す。
仮想マシンに割り当てられた新規ネットワークインターフェイスのリソー
スの MAC アドレスを記録します。
ユーザーに割り当てられたグループ ID を記録します。
207
Red Hat Ent erprise Linux 6 セキュリティガイド
イベントフィールド
説明
o aui d
システムにアクセスするためにログインし s
( u を使用してのログインなど
ではなく)、ターゲットプロセスを開始したユーザーのユーザー ID を記録
します。このフィールドは、タイプ O BJ_P ID の記録専用になります。
ターゲットプロセスの開始に使用されたコマンドを記録します。この
フィールドは、タイプ O BJ_P ID の記録専用になります。
ターゲットプロセスのプロセス ID を記録します。このフィールドは、タ
イプ O BJ_P ID の記録専用になります。
ターゲットプロセスのセッション ID を記録します。このフィールドは、
タイプ O BJ_P ID の記録専用になります。
ターゲットプロセスの実際のユーザー ID を記録します。
オブジェクトの SELinux コンテキストを記録します。オブジェクトは、
ファイルやディレクトリー、またはサブジェクトのアクションを受信す
るものになります。
オブジェクトのグループ ID を記録します。
オブジェクトの高い SELinux レベルを記録します。
オブジェクトの低い SELinux レベルを記録します。
オブジェクトの SELinux の役割を記録します。
オブジェクトの UID を記録します。
オブジェクトに関連付けられたユーザーを記録します。
オブジェクトの所有者のグループ ID を記録します。
新規ディスクリソースが仮想マシンに割り当てられた際の古いディスクリ
ソース名を記録します。
新しいメモリー容量が仮想マシンに割り当てられた際の古いメモリーリ
ソースの容量を記録します。
新規の仮想 CPU が仮想マシンに割り当てられた際の古い仮想 CPU リ
ソースの数を記録します。
新規ネットワークインターフェイスが仮想マシンに割り当てられた際の古
いネットワークインターフェイスリソースの MAC アドレスを記録しま
す。
ネットワークの無作為フラグの以前の値を記録します。
ターゲットプロセスを開始したユーザーの実際のユーザー ID を記録しま
す。
AVC 関連の Audi イベントでシステムコールに引数として渡されたファイ
ルまたはディレクトリーへの完全パスを記録します。
イベント生成に使用されたファイルパーミッション (つまり、読み取り、
書き込み、実行、または属性変更) を記録します。
pi d フィールドのセマンティックは、このフィールドの値の発生元に
よって異なります。
o co mm
o pi d
o ses
o ui d
o bj
o bj_g i d
o bj_l ev_hi g h
o bj_l ev_l o w
o bj_ro l e
o bj_ui d
o bj_user
ogid
o l d -d i sk
o l d -mem
o l d -vcpu
o l d -net
o l d _pro m
o ui d
path
perm
pi d
ユーザースペースから生成されたフィールドの場合、このフィールドはプ
ロセス ID になります。
カーネルが生成したフィールドの場合、このフィールドはスレッド ID に
なります。スレッド ID は単一スレッドプロセスの場合、プロセス ID と
同じになります。このスレッド ID の値は、ユーザースペースで使用され
る pthread_t ID の値とは異なることに注意してください。詳細
は、gettid(2) man ページを参照してください。
ppi d
pro m
pro to
208
親プロセス ID (PID ) を記録します。
ネットワークの無作為フラグを記録します。
使用されたネットワークプロトコルを記録します。このフィールド
は、ip t ab les で生成された Audit イベントに固有のものになります。
Audit システムのリファレンス
イベントフィールド
説明
res
resul t
sad d r
saui d
Audit イベントを開始した操作結果を記録します。
Audit イベントを開始した操作結果を記録します。
ソケットアドレスを記録します。
送信者の Audit ログインユーザー ID を記録します。この ID は、元の
aui d を送信しているユーザーをカーネルが判別できないため、D -Bus
が提供します。
分析されているプロセスが開始されたセッションのセッション ID を記録
します。
分析されているプロセスを開始したユーザーのセットグループ ID を記録
します。
プログラムを異常終了させたシグナル数を記録します。これは通常、シス
テム侵入を知らせるものです。
サブジェクトの SELinux コンテキストを記録します。サブジェクトは、
プロセスやユーザー、またはオブジェクトに対して動作を行なっているも
のになります。
サブジェクトの SELinux クリアランスを記録します。
サブジェクトの SELinux の役割を記録します。
サブジェクトの SELinux の秘密度を記録します。
サブジェクトに関連付けられたユーザーを記録します。
システムコールが成功したか、失敗したかを記録します。
分析されているプロセスを開始したユーザーのセットユーザー ID を記録
します。
カーネルに送信されたシステムコールのタイプを記録します。
ターミナル名 (/d ev/ なしで) を記録します。
制御ターミナルの名前を記録します。プロセスに制御ターミナルがない場
合は、(no ne) の値を使います。
分析されているプロセスを開始したユーザーの実際のユーザー ID を記録
します。
Audit イベントが始まった仮想マシン名を記録します。
ses
sg i d
si g
subj
subj_cl r
subj_ro l e
subj_sen
subj_user
success
sui d
syscal l
termi nal
tty
ui d
vm
B.2. Audit 記録のタイプ
表B.2「記録のタイプ」 では、現在サポートされている Audit 記録のタイプを一覧表示しています。イベン
トのタイプは、すべての Audit 記録の最初にある type= フィールドで指定されています。
表B .2 記録のタイプ
イベントタイプ
説明
AD D _G R O UP
AD D _USER
ANO M_AC C ESS_FS [a]
ユーザースペースグループが追加されると開始します。
ユーザースペースユーザーのアカウントが追加されると開始します。
プロセスが異常終了すると開始します (コアダンプを引き起こすシグナル
が有効になっていれば、このシグナルを伴います)。
ファイルまたはディレクトリーアクセスが異常終了すると開始します。
ANO M_AD D _AC C T [a]
ユーザースペースアカウントの追加が異常終了すると開始します。
ANO M_AMT U_FAIL [a]
ANO M_C R Y P T O _FAIL [a]
Abstract Machine Test Utility (AMTU) の失敗が検出されると開始しま
す。
暗号化システムの失敗が検出されると開始します。
ANO M_D EL_AC C T [a]
ユーザースペースアカウントの削除が異常終了すると開始します。
ANO M_ABEND ⁠ [a]
209
Red Hat Ent erprise Linux 6 セキュリティガイド
イベントタイプ
説明
ANO M_EXEC [a]
ファイル実行が異常終了すると開始します。
ANO M_LO G IN_AC C T [a]
アカウントのログイン試行が異常終了すると開始します。
ANO M_LO G IN_FAILUR ES [
ログイン試行が失敗の制限数に達すると開始します。
a]
ANO M_LO G IN_LO C AT IO N [ 許可されていない場所からログイン試行が行われると開始します。
a]
ANO M_LO G IN_SESSIO NS [
ログイン試行が同時セッションの最大数に達すると開始します。
a]
ANO M_LO G IN_T IME [a]
ログイン試行が pam_ti me などによって妨げられる場合に開始します。
ANO M_MAX_D AC [a]
ANO M_MAX_MAC [a]
D iscretionary Access Control (D AC) 失敗の最大数に達すると開始しま
す。
Mandatory Access Control (MAC) 失敗の最大数に達すると開始します。
ANO M_MK_EXEC [a]
ファイルを実行可能にすると開始します。
ANO M_MO D _AC C T [a]
ユーザースペースアカウントの修正が異常終了すると開始します。
ANO M_P R O MISC UO US [a]
デバイスが無作為モードを有効または無効にすると開始します。
ANO M_R BAC _FAIL [a]
Role-Based Access Control (RBAC) セルフテストの失敗が検出されると
開始します。
Role-Based Access Control (RBAC) ファイル整合性テストの失敗が検出
されると開始します。
ANO M_R BAC _INT EG R IT Y
_FAIL [a]
ANO M_R O O T _T R ANS [a]
AVC
AVC _P AT H
ユーザーが root になると開始します。
SELinux パーミッションチェックを記録するために開始します。
SELinux パーミッションチェックが発生すると、d entry および
vfsmo unt のペアを記録するために開始します。
BP R M_FC AP S
ユーザーがファイルシステム機能でプログラムを実行すると開始します。
C AP SET
プロセスベースの機能における変更を記録するために開始します。
C HG R P _ID
ユーザースペースのグループ ID が変更されると開始します。
C HUSER _ID
ユーザースペースのユーザー ID が変更されると開始します。
C O NFIG _C HANG E
Audit システムの設定が変更されると開始します。
C R ED _AC Q
ユーザーがユーザースペースの認証情報を必要とする際に開始します。
C R ED _D ISP
ユーザーがユーザースペースの認証情報を廃棄する際に開始します。
C R ED _R EFR
ユーザーがユーザースペースの認証情報を更新する際に開始します。
C R Y P T O _FAILUR E_USER 暗号解読、暗号化、ランダム化のいずれかの暗号化演算が失敗すると、開
始します。
C R Y P T O _KEY _USER
暗号化の目的で使用される暗号鍵識別子を記録するために開始します。
C R Y P T O _LO G IN
暗号化責任者のログイン試行が検出されると開始します。
C R Y P T O _LO G O UT
暗号化責任者のログアウト試行が検出されると開始します。
C R Y P T O _P AR AM_C HANG E 暗号化パラメーターで変更が検出されると開始します。
_USER
C R Y P T O _R EP LAY _USER
再生攻撃が検出されると開始します。
C R Y P T O _SESSIO N
TLS セッション確立中にパラメーター一式を記録するために開始しま
す。
C R Y P T O _T EST _USER
FIPS-140 規格で必要とされている暗号化テスト結果を記録するために開
始します。
C WD
現在の作業ディレクトリーを記録するために開始します。
D AC _C HEC K
D AC チェックの結果を記録するために開始します。
210
Audit システムのリファレンス
イベントタイプ
説明
D AEMO N_ABO R T
D AEMO N_AC C EP T
D AEMO N_C LO SE
D AEMO N_C O NFIG
D AEMO N_END
D AEMO N_R ESUME
D AEMO N_R O T AT E
エラーのためにデーモンが停止する際に開始します。
aud i td デーモンがリモート接続を受け入れる際に開始します。
aud i td デーモンがリモート接続を閉じる際に開始します。
デーモンの設定変更が検出されると開始します。
デーモンが正常に停止されると開始します。
aud i td デーモンがロギングを再開する際に開始します。
aud i td デーモンが Audit ログファイルをローテーションする際に開始
します。
aud i td デーモンが起動されると開始します。
ユーザースペースグループが削除されると開始します。
ユーザースペースのユーザーが削除されると開始します。
デバイスが割り当てられると開始します。
デバイスの割り当てが解除されると開始します。
複数記録イベントの終了を記録するために開始します。
execve(2) システムコールの引数を記録するために開始します。
pi pe および so cketpai r のシステムコールの使用を記録するために開
始します。
ファイルシステムのラベル張り替え操作が検出されると開始します。
ユーザースペースのグループに対してグループパスワードを使って認証が
行われると開始します。
カーネルが実行するデータ整合性検証イベントを記録するために開始しま
す。
カーネルが実行するハッシュタイプ整合性検証イベントを記録するために
開始します。
カーネルが実行するメタデータ整合性検証イベントを記録するために開始
します。
D AEMO N_ST AR T
D EL_G R O UP
D EL_USER
D EV_ALLO C
D EV_D EALLO C
EO E
EXEC VE
FD _P AIR
FS_R ELABEL
G R P _AUT H
INT EG R IT Y _D AT A ⁠ [b ]
INT EG R IT Y _HASH [b ]
INT EG R IT Y _MET AD AT A [
b]
INT EG R IT Y _P C R [b ]
INT EG R IT Y _R ULE [b ]
INT EG R IT Y _ST AT US [b ]
IP C
IP C _SET _P ER M
KER NEL
KER NEL_O T HER
LABEL_LEVEL_C HANG E
LABEL_O VER R ID E
LO G IN
MAC _C IP SO V4 _AD D
MAC _C IP SO V4 _D EL
MAC _C O NFIG _C HANG E
Platform Configuration Register (PCR) 無効化メッセージを記録するた
めに開始します。
ポリシールールを記録するために開始します。
整合性検証のステータスを記録するために開始します。
システムコールが参照する Inter-Process Communication オブジェクト
についての情報を記録するために開始します。
IPCオブジェクト上の IP C _SET 制御操作が設定する新しい値についての
情報を記録するために開始します。
Audit システムの初期化を記録するために開始します。
サードパーティーのカーネルモジュールからの情報を記録するために開始
します。
オブジェクトのレベルラベルが修正されると開始します。
管理者がオブジェクトのレベルラベルを上書きすると開始します。
ユーザーがシステムにアクセスするためにログインする際に関連するログ
イン情報を記録するために開始します。
Commercial Internet Protocol Security Option (CIPSO) ユーザーが新た
な D omain of Interpretation (D OI) を追加すると開始します。D OI の追加
は、NetLabel が提供するカーネルのパケットラベル付け機能の一部で
す。
CIPSO ユーザーが既存の D OI を削除すると開始します。D OI の追加は、
NetLabel が提供するカーネルのパケットラベル付け機能の一部です。
SELinux ブール値が変更されると開始します。
211
Red Hat Ent erprise Linux 6 セキュリティガイド
イベントタイプ
説明
MAC _IP SEC _EVENT
IPSec イベントが検出されるか IPSec 設定が変更されると、IPSec イベ
ントについての情報を記録するために開始します。
新たな Linux Security Module (LSM) ドメインマッピングが追加される
と開始します。LSM ドメインマッピングは、NetLabel が提供するカーネ
ルのパケットラベル付け機能の一部です。
既存の LSM ドメインマッピングが追加されると開始します。LSM ドメイ
ンマッピングは、NetLabel が提供するカーネルのパケットラベル付け機
能の一部です。
SELinux ポリシーファイルが読み込まれると開始します。
SELinux モード (enforcing、permissive、off) が変更されると開始しま
す。
NetLabel が提供するカーネルのパケットラベル付け機能を使用する際に
ラベルのないトラフィックが許可されると開始します。
NetLabel が提供するカーネルのパケットラベル付け機能を使用する際に
静的ラベルが追加されると開始します。
NetLabel が提供するカーネルのパケットラベル付け機能を使用する際に
静的ラベルが削除されると開始します。
mmap(2) システムコールのファイル記述子およびフラグを記録するため
に開始します。
mq _g etattr(3) および mq _setattr(3) のメッセージキュー属性を記
録するために開始します。
mq _no ti fy(3) システムコールの引数を記録するために開始します。
mq _o pen(3) システムコールの引数を記録するために開始します。
mq _send (3) および mq _recei ve(3) のシステムコールの引数を記録
するために開始します。
Netfilter チェーンの修正が検出されると開始します。
Netfilter チェーンをトラバースするパケットを記録するために開始しま
す。
信号の送信先のプロセスについての情報を記録するために開始します。
ファイル名パスの情報を記録するために開始します。
ユーザーのアカウントがロックされると開始します。
MAC _MAP _AD D
MAC _MAP _D EL
MAC _P O LIC Y _LO AD
MAC _ST AT US
MAC _UNLBL_ALLO W
MAC _UNLBL_ST C AD D
MAC _UNLBL_ST C D EL
MMAP
MQ _G ET SET AT T R
MQ _NO T IFY
MQ _O P EN
MQ _SEND R EC V
NET FILT ER _C FG
NET FILT ER _P KT
O BJ_P ID
P AT H
R ESP _AC C T _LO C K ⁠ [c ]
R ESP _AC C T _LO C K_T IME
ユーザーのアカウントが一定期間ロックされると開始します。
D [c ]
MED [c ]
ユーザーのアカウントがリモートセッションからロックされると開始しま
す。
ユーザーのアカウントが設定された期間の後にロック解除されると開始し
ます。
R ESP _ALER T [c ]
警告 E メールが送信されると開始します。
R ESP _ANO MALY [c ]
異常に対してアクションが取られないと開始します。
R ESP _EXEC [c ]
R ESP _HALT [c ]
プログラムの実行を元とする脅威に侵入検出プログラムが反応すると開始
します。
システムがシャットダウンすると開始します。
R ESP _KILL_P R O C [c ]
プロセスが終了すると開始します。
R ESP _SEBO O L [c ]
SELinux ブール値が設定されると開始します。
R ESP _SING LE [c ]
システムがシングルユーザーモードになると開始します。
R ESP _T ER M_AC C ESS [c ]
セッションが終了すると開始します。
R ESP _T ER M_LO C K [c ]
ターミナルがロックされると開始します。
R ESP _AC C T _R EMO T E [c ]
R ESP _AC C T _UNLO C K_T I
212
Audit システムのリファレンス
イベントタイプ
説明
R O LE_ASSIG N
R O LE_MO D IFY
R O LE_R EMO VE
SELINUX_ER R
SER VIC E_ST AR T
SER VIC E_ST O P
SO C KAD D R
SO C KET C ALL
管理者がユーザーに SELinux の役割を割り当てると開始します。
管理者が SELinux の役割を編集すると開始します。
管理者がユーザーを SELinux の役割から削除すると開始します。
内部 SELinux エラーが検出されると開始します。
サービスが起動すると開始します。
サービスが停止すると開始します。
ソケットアドレスを記録するために開始します。
sys_so cketcal l システムコール (多くのソケット関連のシステムコー
ルを多重化するために使用) の引数を記録するために開始します。
カーネルへのシステムコールを記録するために開始します。
システムが起動すると開始します。
システムのランレベルが変更されると開始します。
システムがシャットダウンすると開始します。
テストメッセージの成功の値を記録するために開始します。
このタイプの記録は、監査を必要とするサードパーティーのアプリケー
ションで使用可能です。
TTY 入力が管理プロセスに送信されると開始します。
ユーザースペースユーザーのアカウントが編集されると開始します。
ユーザースペースの認証試行が検出されると開始します。
ユーザースペースの AVC メッセージが生成されると開始します。
ユーザーアカウントの属性が編集されると開始します。
ユーザースペースのシェルコマンドが実行されると開始します。
ユーザースペースのセッションが終了すると開始します。
ユーザーアカウントの状態のエラーが検出されると開始します。
SELinux ラベルの付いたオブジェクトがエクスポートされると開始しま
す。
ユーザーがログインすると開始します。
ユーザーがログアウトすると開始します。
ユーザースペースのデーモンが SELinux ポリシーを読み込むと開始しま
す。
ユーザースペースの管理データを記録するために開始します。
ユーザーの SELinux の役割が変更されると開始します。
ユーザースペースの SELinux エラーが検出されると開始します。
ユーザースペースのセッションが開始すると開始します。
管理プロセスへの TTY 入力についての説明メッセージがユーザースペー
スから送信されると開始します。
SELinux ラベルなしでオブジェクトがエクスポートされると開始しま
す。
ユーザースペースのシステム設定変更が検出されると開始します。
仮想マシンが起動、一時停止、停止すると開始します。
仮想マシンへのラベルのバインディングを記録するために開始します。
仮想マシンのリソース割り当てを記録するために開始します。
SY SC ALL
SY ST EM_BO O T
SY ST EM_R UNLEVEL
SY ST EM_SHUT D O WN
T EST
T R UST ED _AP P
TTY
USER _AC C T
USER _AUT H
USER _AVC
USER _C HAUT HT O K
USER _C MD
USER _END
USER _ER R
USER _LABELED _EXP O R T
USER _LO G IN
USER _LO G O UT
USER _MAC _P O LIC Y _LO A
D
USER _MG MT
USER _R O LE_C HANG E
USER _SELINUX_ER R
USER _ST AR T
USER _T T Y
USER _UNLABELED _EXP O
RT
USY S_C O NFIG
VIR T _C O NT R O L
VIR T _MAC HINE_ID
VIR T _R ESO UR C E
[a] ANO M が前に付いている Aud it イベントタイプはすべて、侵入検出プログラムが処理することになっていま
す。
[b ] このイベントタイプは、Integ rity Meas urement Arc hitec ture (IMA) に関連しており、これは, Trus ted
Platfo rm Mo d ule (TPM) チップと一番うまく機能します。
[c ] R ESP が前に付いている Aud it イベントタイプはすべて、侵入検出システムがシステム上で悪意のあるアク
ティビティーを検出した場合に、その侵入検出システムの反応となることが意図されています。
213
Red Hat Ent erprise Linux 6 セキュリティガイド
改訂履歴
改訂 1- 12.4 .2
翻訳完成
Mo n Ap r 6 2015
K en z o Mo rig u ch i
改訂 1- 12.4 .1
Mo n Ap r 6 2015
翻訳ファイルを XML ソースバージョン 1-12.4 と同期
C h est er C h en g
改訂 1- 12.4
T u e D ec 16 2014
Red Hat カスタマーポータルでの並び替え順序の更新。
R o b ert K rát ký
改訂 1- 12.3
Mo n D ec 01 2014
POOD LE vuln を反映する更新。
R o b ert K rát ký
改訂 1- 12.0
Mo n O ct 13 2014
Red Hat Enterprise Linux 6.6 セキュリティガイドのリリース
Miro slav Svo b o d a
改訂 1- 9 .9
Feb 21 2013
Red Hat Enterprise Linux 6.4 セキュリティガイドのリリース
Mart in Prp ič
改訂 1- 8.25
Ju n 20 2012
Red Hat Enterprise Linux 6.3 セキュリティガイドのリリース
Mart in Prp ič
改訂 1- 7
D ec 6 2011
Red Hat Enterprise Linux 6.2 セキュリティガイドのリリース
Mart in Prp ič
214