SELinuxシステム管理
――セキュアOSの基礎と運用

[cover photo]
この商品は品切れ再入荷未定です

米国国家安全保障局が開発したSELinuxが注目されています。SELinuxを導入すれば、高価な軍事レベルのOSを動かしている高信頼セキュリティシステムにしかなかったような高度なセキュリティ技術をLinuxシステムで利用できるようになります。つまり、攻撃や侵入の危険性を大幅に低減できるわけです。ただし、これは適切に管理されたSELinuxを使っていればの話です。SELinuxを適切に管理するためには、SELinuxが持つ複雑な機能、独自の考え方、ポリシー設定を理解する必要があります。本書では、SELinuxの概念・導入・設定方法をわかりやすく解説します。これからSELinuxをはじめる技術者にとって必須の入門書となるでしょう。

監訳者によるサポートページ

関連書籍

Linuxサーバ Hacks

監訳者まえがき
まえがき

1章 SELinuxの概要
	1.1 ソフトウェアの脅威とインターネット
		1.1.1 権限の昇格
		1.1.2 パッチサイクルとゼロデイ(0-day)問題
		1.1.3 ゼロデイを防ぐ
		1.1.4 ネットワークおよびサーバホストの防御
		1.1.5 任意アクセス制御(DAC)方式と強制アクセス制御(MAC)方式
	1.2 SELinuxの特徴
		1.2.1 SELinuxの仕組み
		1.2.2 SELinuxの構成とLSM(Linuxセキュリティモジュール)
	1.3 SELinux上のアプリケーション
	1.4 SELinuxの歴史
	1.5 関連Webサイトと関連FTPサイト
		1.5.1 メーリングリスト

2章 SELinuxのセキュリティモデル
	2.1 サブジェクトとオブジェクト
	2.2 セキュリティコンテキスト
	2.3 一時的なオブジェクトと永続的なオブジェクト
	2.4 アクセス判定
	2.5 ドメイン遷移、タイプ遷移
	2.6 SELinuxのアーキテクチャ
		2.6.1 カーネルレベルのコード
		2.6.2 SELinux共有ライブラリ
		2.6.3 SELinuxセキュリティポリシー
		2.6.4 SELinuxのツール
		2.6.5 参考文書

3章 SELinuxのインストールと初期設定
	3.1 SELinuxのバージョン
	3.2 SELinuxのインストール方法
	3.3 SELinuxをサポートしているディストリビューションでのインストール
		3.3.1 Fedora Core
		3.3.2 Red Hat Enterprise Linux
		3.3.3 Turbolinux
	3.4 SELinuxをサポートしていないディストリビューションでのインストール方法
	3.5 バイナリまたはソースパッケージからのインストール
		3.5.1 Debian GNU/Linux
		3.5.2 Gentoo Linux
		3.5.3 SUSE LINUX
	3.6 ソースからのインストール

4章 SELinuxのオペレーションとシステム管理
	4.1 SELinuxの動作モード
	4.2 SELinuxの基本的な操作
		4.2.1 動作モードの切り替え
		4.2.2 セキュリティポリシーのロード
		4.2.3 ラベル(セキュリティ属性)の設定
		4.2.4 マクロ、tunable、Booleans
	4.3 SELinuxの基本的なシステム管理
		4.3.1 ロール
		4.3.2 セキュリティコンテキストの表示
		4.3.3 ユーザの追加
		4.3.4 デーモンの起動と制御
	4.4 アクセスログの監視
		4.4.1 SELinuxのログメッセージの出力形式
		4.4.2 ログの抑制
		4.4.3 audit2allowコマンド
	4.5 SELinuxの代表的なトラブルシューティング
		4.5.1 ブートの問題
		4.5.2 ローカルログインの問題
		4.5.3 プログラム実行の問題
		4.5.4 デーモンの問題
		4.5.5 Xの問題

5章 SELinuxのセキュリティポリシーとポリシー言語の概要
	5.1 SELinuxのセキュリティポリシー
	5.2 SELinuxのセキュリティポリシーは2つの形式
	5.3 代表的なポリシーファイルの構造
		5.3.1 FCファイル
		5.3.2 TEファイル
	5.4 SELinuxポリシーの構造
		5.4.1 flaskディレクトリ
		5.4.2 macrosディレクトリ
		5.4.3 file_contextsディレクトリ
		5.4.4 typesディレクトリ
		5.4.5 domainsディレクトリ
		5.4.6 appconfigディレクトリ
		5.4.7 ポリシーのソースディレクトリ

6章 RBAC(Role-Based Access Control)
	6.1 SELinuxのRole-Based Access Control(RBAC)
	6.2 ポリシー構文図
		6.2.1 ポリシー構文図の役割
		6.2.2 ポリシー構文図の書き方
	6.3 SELinuxポリシーの構文図
		6.3.1 ポリシーの基本要素
	6.4 ユーザの定義
	6.5 RBACのアクセス制御の定義
		6.5.1 ロールに利用許可するドメインを宣言
		6.5.2 ロールの優位性を宣言
		6.5.3 ロール遷移を宣言
		6.5.4 ロールを切り替える許可を宣言

7章 TE(Type Enforcement)
	7.1 SELinuxのTEモデル
	7.2 SELinuxポリシーの構文のまとめ
	7.3 TEの宣言
		7.3.1 タイプを宣言
		7.3.2 タイプのエイリアスを宣言
		7.3.3 タイプ属性の宣言
		7.3.4 TEのアクセスベクタポリシーを宣言
		7.3.5 遷移動作を宣言
		7.3.6 ブール変数を宣言
		7.3.7 条件文を宣言
	7.4 SELinuxのサンプルポリシーの例

8章 その他のセキュリティポリシー言語
	8.1 制約条件(constraints)の宣言
	8.2 その他のセキュリティコンテキスト関連の宣言
		8.2.1 初期SIDのセキュリティコンテキスト
		8.2.2 ファイルシステムのセキュリティコンテキスト
		8.2.3 genfsconポリシー
		8.2.4 ネットワークのセキュリティコンテキスト
	8.3 Flask関連のセキュリティコンテキスト
		8.3.1 security_classesの定義
		8.3.2 initial_sidsの定義
		8.3.3 access_vectorsの定義

9章 セキュリティポリシーのカスタマイズ
	9.1 セキュリティポリシーのソースツリー
	9.2 複雑なセキュリティポリシーファイル
	9.3 SELinuxのMakefileの使用方法
	9.4 SELinuxユーザの作成
		9.4.1 システム管理者を追加
		9.4.2 一般ユーザを追加
	9.5 ロールのカスタマイズ
	9.6 アクセス許可ポリシーの追加
	9.7 既存のドメインに対するユーザアクセスの許可
	9.8 新しいドメインの作成
		9.8.1 どのファイルがドメインに関連しているかを特定
		9.8.2 ファイルのセキュリティコンテキストを特定
		9.8.3 新しいドメインに適切なセキュリティコンテキストを定義
		9.8.4 基本的なTEファイルを作成
		9.8.5 基本的なFCファイルを作成
		9.8.6 他のFCファイルから矛盾する指定を削除
		9.8.7 修正したポリシーをロードしてファイルにラベルを割り当て
		9.8.8 必要に応じてTEファイルとFCファイルのテストと修正を実施
	9.9 audit2allowの使用方法
	9.10 セキュリティポリシー管理ツール
		9.10.1 Apol
		9.10.2 seAudit
		9.10.3 SePCuT
		9.10.4 SeUser
	9.11 SELinuxについて今後学ぶべきこと

付録A オブジェクトクラス
付録B アクセスベクタ
付録C マクロ
付録D タイプ
付録E 属性


索引

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。


P.89 表4-3のallow_ypbindの「デフォルトの状態」
【誤】有効
【正】無効
 ※Fedora Core 3のselinux-policy-strict-1.19.10-2で確認

P.90 表4-3のsecure_modeの「説明」
【誤】管理者だけがコンソールにログインすることを許可し、ディスクに直接にアクセスすることを禁止
【正】newroleおよびsuコマンドでsysadm_rロールになれないようにする

P.241 表B-1のnet_bind_serviceの「説明」

【誤】特権ポート(1024番以下のポート)を使用することができる
【正】特権ポート(1024番未満のポート)を使用することができる


監訳者によるサポート頁

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

P.44の18行目と頁下監訳注
  • 【誤】2005年2月現在、入手可能なFedora Core のうちSELinuxを使用するならFedora Core 3が最も便利です。
  • 【正】2005年2月現在、入手可能なFedora Core のうちSELinuxを使用するならFedora Core 3が最も便利です【†】。
    †◆監訳注:3刷(2006年2月)時点で、Fedora Core 4/5-test2がリリースされている。これらのリリースでは本書時点のものとはポリシーが大幅に改訂されており、そのままでは本書の内容は適用できない部分がある。しかし、考え方の大筋に変更があるわけではないので、本書を読了の後、最新のFedora Coreに関する情報に当たるのはよい方法である。
P.47の10行目と頁下監訳注
  • 【誤】操作方法もFedora Coreとほぼ同様ですので、詳細は「3.3.1 Fedora Core」を参照してください。
  • 【正】操作方法はFedora Coreとほぼ同様ですが、標準状態でサポートしているポリシーはtargetedのみでstrictポリシーが提供されていない点が異なるので注意が必要です【†】。
    †◆監訳注:RHEL4用のstrictポリシーは、Red Hat社のGPS(Global Professional Service)のコンサルを通じて入手可能。なお、CentOS4などのRHEL4クローンでstrictポリシーを使用したい場合は別途Fedora Core 3のポリシーを導入する必要がある。
P.72の2行目後半〜3行目
  • 【誤】どのユーザがどのファイルへアクセスしようともとしても拒否しません。
  • 【正】どのユーザがどのファイルへアクセスしようとしても拒否しません。
P.75の8行目
  • 【誤】[NSA SELinux Development support]オプション付きでコンパイルしたおいた
  • 【正】[NSA SELinux Development support]オプション付きでコンパイルしておいた
P.75の11行目
  • 【誤】[NSA SELinux Development support]オプションなしのカーネルを指定おき
  • 【正】[NSA SELinux Development support]オプションなしのカーネルを指定しておき
P.78の7行目
  • 【誤】バイナリ形式に変換するcheckpolicyコマンド)という
  • 【正】バイナリ形式に変換するcheckpolicyコマンドという
P.103の下から12行目(ログの各フィールド解説のexeの部分)
  • 【誤】操作を実行しようとしたプロセスに対応するコマンドの実行ファイルの絶対パス名
  • 【正】操作を実行しようとしたプロセスに対応するコマンドの実行ファイルの絶対パス名【†】
    †◆監訳注:3刷(2006年2月)時点の最新のSELinuxでは[_Fc_]comm[_/Fc_]という表示に変更されている。また実行ファイルのパス名ではなくコマンド名が表示される。
P.120の11行目
  • 【誤】例えばmacros/network_macros.teファイルには、squid.teファイルの約40行目あたりで定義されているcan_networkマクロの記述があります。
  • 【正】例えばmacros/network_macros.teファイルには、squid.teファイルの約40行目あたりで定義されているcan_networkマクロの記述があります【†】。
    †◆監訳注:3刷(2006年2月)時点の最新のSELinuxではcan_networkマクロの定義はmacros/global_macros.teファイル内に定義されるようになった。また、squid.teファイル内のcan_networkマクロは約55行目あたりに定義されている。
P.124の16行目
  • 【誤】network_macros.te
  • 【正】network_macros.te【†】
    †◆監訳注:3刷(2006年2月)時点の最新のSELinuxではnetwork_macros.teファイル内で定義されていたネットワーク関連のマクロはcore_macros.teファイルやglobal_macros.teファイル内で定義されている。
P.131の20行目
  • 【誤】policy.??
  • 【正】policy.??【†】
    †◆監訳注:policy.??ファイルの格納ディレクトリはsrc/policyディレクトリではなく、/etc/selinux/strict|targeted/policyディレクトリである。
P.134の15行目
  • 【誤】セキュリティポリシー違反となり使用できません
  • 【正】セキュリティポリシー違反となり使用できません。
P.194の1行目
  • 【誤】「ターゲット」には、表9-2にのターゲットのうち
  • 【正】「ターゲット」には、表9-2のターゲットのうち
P.194の下から6行目
  • 【誤】例えば、ユーザbillにシステム管理ユーザにしたければ、以下のエントリを追加します。
  • 【正】例えば、ユーザbillをシステム管理ユーザにしたければ、以下のエントリを追加します。
P.210の6行目と7行目
  • 【誤】allow nmap_t nmap_t:dir { search };
       allow nmap_t nmap_t:file { getattr read };
  • 【正】r_dir_file(nmap_t, nmap_data_t)
P.217の下から3行目
  • 【誤】Starting nmap 3.50(http//....
  • 【正】Starting nmap 3.70(http//....

Feedback

皆さんのご意見をお聞かせください。ご購入いただいた書籍やオライリー・ジャパンへのご感想やご意見、ご提案などをお聞かせください。より良い書籍づくりやサービス改良のための参考にさせていただきます。
[feedbackページへ]