Info: Version 1.4 is available.

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

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

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

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

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

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

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

＜カーソル移動＞

↑ | １行上へ移動する。
↓ | １行下へ移動する。
→ | １列右へ移動する。
← | １列左へ移動する。
PageUp | １画面上へ移動する。
PageDown | １画面下へ移動する。
Home | 行頭へ移動する。
End | 行末へ移動する。

＜検索＞

f/F | 文字列を指定して検索する。
n/N | 逆方向へ指定された文字列を検索する。
p/P | 順方向へ指定された文字列を検索する。

＜編集＞

a/A | エントリを追加する。
Enter | カーソル行のドメインに対するアクセス許可編集画面へ移動する。（ドメイン一覧表示画面でのみ有効）
Space | カーソル行の選択状態を反転する。
c/C | カーソル行の選択状態をカーソル行以下の全エントリに適用する。
d/D | 選択されたエントリを削除する。
s/S | 選択されたドメインのプロファイルを変更する。（ドメイン一覧表示画面でのみ有効）
Insert | 選択されたエントリをヒストリバッファに追加する。

＜その他＞

q/Q | 終了する。
r/R | 最新の情報に更新する。
Tab | 次の画面に切り替える。

### ＜オフライン版ポリシーエディタ　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 等）ではクライアント側の利用しているポート番号によるアクセス制限を行うことが可能になる。

目次へ戻る