Info: Version 1.3.1 is available.

# 各種ツールのドキュメント

Last modified: $Date: 2011-07-01 13:55:23 +0900 (Fri, 01 Jul 2011) $

## ＜＜システム管理者用ツール＞＞

### ＜ポリシーエディタ　editpolicy＞

現在のポリシーを /proc/ccs/policy/ ディレクトリから読み込み、編集を行う。

コマンドラインパラメータとして s e d のいずれかの文字を指定することで最初に表示される画面を指定できる。省略すると最初にドメイン一覧表示画面が表示される。

以下のキーを使用して操作する。

＜全画面共通のキー＞

q/Q | 終了する。
r/R | 最新の情報に更新する。
↑ | １行上へ移動する。
↓ | １行下へ移動する。
PageUp | １画面上へ移動する。
PageDown | １画面下へ移動する。

＜システムポリシー編集画面でのみ有効なキー＞

a/A | エントリを追加する。
d/D | エントリを削除する。
Tab | 例外ポリシー編集画面へ移動する。

＜例外ポリシー編集画面でのみ有効なキー＞

a/A | エントリを追加する。
d/D | エントリを削除する。
Tab | ドメイン一覧表示画面へ移動する。

＜ドメイン一覧表示画面でのみ有効なキー＞

a/A | ドメインを作成する。
d/D | 選択中のドメイン以下を削除する。
Tab | システムポリシー編集画面へ移動する。
Enter | 選択中のドメインに対するアクセス許可編集画面へ移動する。
@ | ドメインを検索する。
← | 逆方向へドメインを検索する。
→ | 順方向へドメインを検索する。

＜ドメインに対するアクセス許可編集画面でのみ有効なキー＞

Enter | ドメイン一覧表示画面に戻る。
a/A | アクセス許可を追加する。
d/D | アクセス許可を削除する。

このプログラムはファイル名を記憶するメモリ領域を節約するために、初出のファイル名を動的メモリに保存して、以後、同名のファイル名が現れた場合にはそのメモリのポインタを返すようにしている。そのため、この動的メモリはプログラムが終了するまで解放されない。

同じ事が TOMOYO Linux カーネルにも当てはまる。カーネルがファイル名を記憶しておくために割り当てたメモリは解放されない。そのため、永遠に学習モードで稼働していると、システムがメモリ不足に陥る可能性があるので注意が必要である。 ただし、実際のドメインの数やアクセス許可を与えるファイルの数にもよるが、 TOMOYO Linux カーネルが消費するＲＡＭはほとんどの環境では１ＭＢ以内であろう。

カーネルがアクセスログを記憶するためのＲＡＭは動的に確保され、ユーザランドプログラムから読み出され次第そのＲＡＭは解放される。カーネルが記憶可能なアクセスログの件数には上限を設けているため、アクセスログを読み出さなくともカーネルが全てのＲＡＭを消費してしまうことが無いようになっている。

### ＜オフライン版ポリシーエディタ　editpolicy_offline＞

/etc/ccs/ ディレクトリに保存されているポリシーを読み込み、編集を行う。

使い方は editpolicy と同じである。

### ＜ポリシー再読み込みプログラム　loadpolicy＞

ディスク上のポリシーをカーネルに読み込む。

以下のコマンドラインオプションを指定可能である。

- s ・・・システム用ポリシーを再読み込みする。
- e ・・・例外用ポリシーを再読み込みする。
- d ・・・ドメイン用ポリシーを再読み込みする。
- a ・・・上記３種類のポリシーを再読み込みする。
- f ・・・ディスク上のポリシーを再読み込みする前に、メモリ上のポリシーを消去する。

### ＜制御レベル変更プログラム　setlevel＞

プロファイルの内容を変更する。

コマンドラインパラメータで制御レベルを指定する。コマンドラインパラメータの有無に関係なく現在の制御レベルを表示する。

### ＜プロファイル割り当てプログラム　setprofile＞

ドメインに対してプロファイル番号を割り当てる。

コマンドラインパラメータでプロファイル番号とドメイン名を指定する。プロファイル番号が変更されたドメイン名が表示される。

### ＜プロセス一覧表示プログラム　ccstree＞

現在実行中のプロセスが属しているドメインとそのドメインに割り当てられているプロファイルを表示する。

プロファイル番号、プロセス名、プロセスＩＤ、ドメイン名の順番で pstree のように出力される。

### ＜ポリシー保存プログラム　savepolicy＞

カーネル内のポリシーをディスクに保存する。

以下のコマンドラインオプションを指定可能である。

- s ・・・システム用ポリシーを保存する。
- e ・・・例外用ポリシーを保存する。
- d ・・・ドメイン用ポリシーを保存する。
- a ・・・上記３種類のポリシーを保存する。
- f ・・・ディスク上のポリシーとメモリ上のポリシーが同一内容であっても保存する。

### ＜syaoran 用設定ファイル作成プログラム　makesyaoranconf＞

/dev 用のファイルシステム SYAORAN 用の設定ファイルである syaoran.conf を作成する。ルートファイルシステムが読み込み専用の場合や /dev ディレクトリ内のデバイスファイルの改ざんを防止したい場合に使用する。

syaoran.conf に記録されていないファイルは作成できないので、動的にデバイスファイルが作成される環境の場合はこのプログラムを実行する前に全てのデバイスを接続し、必要なデバイスファイルが全て syaoran.conf に記録されるように注意する。

### ＜アクセスログ保存デーモン　ccs-auditd＞

/proc/ccs/info/grant_log および /proc/ccs/info/reject_log の内容をコマンドラインで指定された場所に保存する。

コマンドラインの最初のパラメータがアクセス許可ログを保存するファイル名、２番目のパラメータがアクセス拒否ログを保存するファイル名である。ファイル名として /dev/null を指定しても良い。アクセスログをファイルに保存する必要が無い場合は実行する必要はない。

デーモンとして動作するので、 RedHat Linux の場合、 /etc/rc.d/rc.local で起動すればよい。 /proc/ccs/info/grant_log および /proc/ccs/info/reject_log に保持できる件数は、プロファイルの「MAX_GRANT_LOG=数値」および「MAX_REJECT_LOG=数値」という行で指定できる。

### ＜ポリシー圧縮プログラム　sortpolicy＞

ccs-auditd により保存されたログから重複を除去する。

ccs-auditd により保存されたログを標準入力から読み込み、ドメイン単位で sort と uniq を行った結果を標準出力へ書き出す。

### ＜テンポラリパス検出プログラム　findtemp＞

標準入力からパス名の一覧を受け取り、全ての存在しないパス名を表示する。

存在しなかったパス名はテンポラリなパス名として使用されている可能性が高いので、同様のパス名から規則性を判断して /etc/ccs/exception_policy.txt および /proc/ccs/policy/exception_policy にパターン化したパス名を追加していく。

/etc/ccs/domain_policy.txt または /proc/ccs/policy/domain_policy の内容をリダイレクトまたはパイプを使用して標準入力へ渡せばよい。

### ＜ライブラリファイルのパス名更新プログラム　ld-watch＞

/etc/ld.so.cache に登録されている共有ライブラリファイルのパス名の変化を検出し、自動的に allow_read キーワードを使って例外ポリシーに登録する。

このプログラムをソフトウェアのアップデート時に実行しておくことで、共有ライブラリファイルのパス名が変化したために共有ライブラリファイルへアクセスできないことが原因でプログラムの起動に失敗するというエラーを回避することができる。

### ＜遅延強制モード用アクセス承認プログラム　ccs-queryd＞

ポリシー違反を検出し、要求されたアクセスの内容を表示する。管理者は、その内容の妥当性を判断して許可（あるいは許可およびポリシーへの追加）あるいは拒否をシステムに伝えることができる。

このプログラムをソフトウェアのアップデート時に実行しておくことで、アクセス許可の不足によるエラーを回避することができる。

無条件に要求されたアクセスを許可しないこと。ポリシー違反の原因はパッケージの更新によって発生するものとは限らず、攻撃者による悪意ある要求の可能性もある。もし、攻撃者による悪意ある要求に対して許可を与えてしまった場合、システムに侵入されることになる。

遅延強制モードを有効にするには、 setprofile コマンドを用いて遅延強制モードを有効にしたいプロファイルの ALLOW_ENFORCE_GRACE を 1 に設定する必要がある。

### ＜ポリシー構文検査プログラム　checkpolicy＞

標準入力からポリシーファイルの内容を読み込み、構文をチェックする。

問題があれば行番号と共にエラーの内容を表示する。

### ＜ポリシーローダー　.init＞

/etc/ccs/ ディレクトリからポリシーファイルを読み込んでから /sbin/init を実行する。

カーネル起動時のオプションで init=/.init のように指定する。

### ＜アクセス許可検索ツール　domainmatch＞

/proc/ccs/policy/domain_policy からドメイン単位で fgrep を行う。

### ＜パス名パターン化ツール　patternize＞

ドメイン用ポリシーを標準入力から受け取り、コマンドラインに与えられたパス名のパターンと一致した場合はパターン化してから標準出力へ送る。実行許可を含むファイルへのアクセス許可とドメイン名はパターン化されない。

### ＜例外ポリシー生成ツール　make_alias.sh／make_allow_read.sh／make_exception.sh／make_file_pattern.sh＞

例外ポリシーを生成する。自動生成された結果には余計なものや危険なものが含まれているかもしれないため、随時見直しを行うこと。

## ＜＜ログイン認証強化用ツール＞＞

### ＜ログイン認証用機能限定シェル　falsh＞

kill 等の内部コマンドを持たないシェルである。 /etc/passwd でログインシェルとして指定する。不正ログイン対策として追加のログイン認証を行う場合のみ使用する。

追加のログイン認証を行うためのプログラムは自分で作成することを推奨する。以下のサンプルプログラムをそのまま使用してはいけない。

### ＜タイミング付きパスワード認証のサンプルプログラム　honey＞

正しいタイミングで正しいパスワードを入力しないと認証が失敗する。通常の認証ではパスワードを入力するタイミングはチェックしないが、このプログラムではタイミングもチェックすることで、総当り攻撃を防止する。

### ＜時間制限付きパスワード認証のサンプルプログラム　candy＞

親プロセスが起動してから１０秒以内に起動して正しいパスワードを入力しないと認証が失敗する。通常の認証では、認証を開始するまでの時間制限を設けていないが、このプログラムでは一定時間内に認証を開始しないと認証が成功しないようにすることで、総当り攻撃を防止する。

### ＜ロックファイルの有無を用いた認証を行うサンプルプログラム　groovy＞

パスワードを入力するためのプロンプトが表示されるが、パスワードの入力内容はチェックせず、 /tmp/.lockme というファイルの有無で認証を行う。普段はロックされた状態にしておくことで、総当り攻撃を防止する。このプログラムはデモ用であり、攻撃者が一目で正解だと判るようなファイル名を使用している。利用する場合は必ずカスタマイズすること。

### ＜トークンを用いた認証を行うサンプルプログラム　gettoken／checktoken＞

これらのプログラムは時間同期方式でトークンを生成する。 gettoken が生成したトークンを checktoken に渡すことで認証が成功するようになっている。これらはデモ用プログラムであり、トークンの生成アルゴリズムも貧弱である。利用する場合は必ずカスタマイズすること。

### ＜チャレンジ・ハンドシェイク型の認証を行うサンプルプログラム　chaplet＞

このプログラムを実行すると、チャレンジとして文字列が表示される。表示された文字列の中から、レスポンスとして数字のみを抽出したものを入力することで認証が成功する。このプログラムはデモ用であり、アルゴリズムが単純すぎる。利用する場合は必ずカスタマイズすること。

### ＜タイミング付きパスワード認証のサンプルプログラム　timeauth＞

これは honey 相当の機能をインタプリタとして再実装したものである。スクリプトファイルを作成し、インタプリタとしてこのプログラムを指定する。

### ＜メールでワンタイムパスワードを送付する認証を行うサンプルプログラム　mailauth＞

このプログラムを実行するとワンタイムパスワードを生成して電子メールで利用者に通知する。利用者は送られてきたワンタイムパスワードを入力することで認証が成功する。利用する場合はメールサーバ等のソフトウェアが別途必要になる。

### ＜簡易ポート転送プログラム　proxy＞

このプログラムはクライアント側で使用する。特定のローカルポート番号に明示的に bind してからサーバに接続することで、サーバ側のファイアウォール（iptables 等）ではクライアント側の利用しているポート番号によるアクセス制限を行うことが可能になる。

目次へ戻る