Info: Version 1.8.x is available.
Last modified: $Date: 2024-03-30 11:25:00 +0000 (Sat, 30 Mar 2024) $
現在のポリシーを /proc/ccs/ ディレクトリから読み込み、編集を行う。
コマンドラインパラメータとして e d p m u のいずれかの文字を指定することで最初に表示される画面を指定できる。省略すると最初にドメイン一覧表示画面が表示される。
以下のキーを使用して操作する。
<カーソル移動>
↑ | 1行上へ移動する。 |
↓ | 1行下へ移動する。 |
→ | 1列右へ移動する。 |
← | 1列左へ移動する。 |
PageUp | 1画面上へ移動する。 |
PageDown | 1画面下へ移動する。 |
Home | 行頭へ移動する。 |
End | 行末へ移動する。 |
<検索>
f/F | 文字列を指定して検索する。 |
n/N | 逆方向へ指定された文字列を検索する。 |
p/P | 順方向へ指定された文字列を検索する。 |
<編集>
a/A | エントリを追加する。 |
Enter | カーソル行のドメインに対するアクセス許可編集画面へ移動する。(ドメイン一覧表示画面でのみ有効) |
Space | カーソル行の選択状態を反転する。 |
c/C | カーソル行の選択状態をカーソル行以下の全エントリに適用する。 |
d/D | 選択されたエントリを削除する。 |
s/S | 選択されたドメインのプロファイルを変更する。(ドメイン一覧表示画面でのみ有効) 選択されたプロファイルの設定を変更する。(プロファイル編集画面でのみ有効) 選択された項目のクォータを変更する。(メモリ使用量表示画面でのみ有効) |
Insert | 選択されたエントリをヒストリバッファに追加する。 |
<その他>
q/Q | 終了する。 |
r/R | 最新の情報に更新する。 |
w/W | ウィンドウ選択画面を表示する。 |
ポリシーエディタの使い方に説明があります。
ディスク上のポリシーをカーネルに読み込む。
以下のコマンドラインオプションを指定可能である。
プロファイルの内容を変更する。
コマンドラインパラメータで制御レベルを指定する。コマンドラインパラメータの有無に関係なく現在の制御レベルを表示する。
ドメインに対してプロファイル番号を割り当てる。
コマンドラインパラメータでプロファイル番号とドメイン名を指定する。プロファイル番号が変更されたドメイン名が表示される。
現在実行中のプロセスが属しているドメインとそのドメインに割り当てられているプロファイルを表示する。
プロファイル番号、プロセス名、プロセスID、ドメイン名の順番で pstree のように出力される。
カーネル内のポリシーをディスクに保存する。
以下のコマンドラインオプションを指定可能である。
/proc/ccs/grant_log および /proc/ccs/reject_log の内容をコマンドラインで指定された場所に保存する。
コマンドラインの最初のパラメータがアクセス許可ログを保存するファイル名、2番目のパラメータがアクセス拒否ログを保存するファイル名である。ファイル名として /dev/null を指定しても良い。アクセスログをファイルに保存する必要が無い場合は実行する必要はない。
デーモンとして動作するので、 RedHat Linux の場合、 /etc/rc.d/rc.local で起動すればよい。 /proc/ccs/grant_log および /proc/ccs/reject_log に保持できる件数は、プロファイルの PREFERENCE::audit={ max_grant_log=件数 max_reject_log=件数 } で指定できる。
ccs-auditd により保存されたログから重複を除去する。
ccs-auditd により保存されたログを標準入力から読み込み、ドメイン単位で sort と uniq を行った結果を標準出力へ書き出す。
標準入力からパス名の一覧を受け取り、全ての存在しないパス名を表示する。
存在しなかったパス名はテンポラリなパス名として使用されている可能性が高いので、同様のパス名から規則性を判断して /etc/ccs/exception_policy.conf および /proc/ccs/exception_policy にパターン化したパス名を追加していく。
/etc/ccs/domain_policy.conf または /proc/ccs/domain_policy の内容をリダイレクトまたはパイプを使用して標準入力へ渡せばよい。
/etc/ld.so.cache に登録されている共有ライブラリファイルのパス名の変化を検出し、自動的に allow_read キーワードを使って例外ポリシーに登録する。
このプログラムをソフトウェアのアップデート時に実行しておくことで、共有ライブラリファイルのパス名が変化したために共有ライブラリファイルへアクセスできないことが原因でプログラムの起動に失敗するというエラーを回避することができる。
ポリシー違反を検出し、要求されたアクセスの内容を表示する。管理者は、その内容の妥当性を判断して許可(あるいは許可およびポリシーへの追加)あるいは拒否をシステムに伝えることができる。
このプログラムをソフトウェアのアップデート時に実行しておくことで、アクセス許可の不足によるエラーを回避することができる。
無条件に要求されたアクセスを許可しないこと。ポリシー違反の原因はパッケージの更新によって発生するものとは限らず、攻撃者による悪意ある要求の可能性もある。もし、攻撃者による悪意ある要求に対して許可を与えてしまった場合、システムに侵入されることになる。
ポリシー違反を検出し、(メールを送信するなどの)指定された処理を行うことにより、管理者に通知する。
このデーモンを /etc/crontab から起動するように設定しておくことで、強制モードにおけるポリシー違反の発生をできるだけ早く知ることができるようになる。
標準入力からポリシーファイルの内容を読み込み、構文をチェックする。
問題があれば行番号と共にエラーの内容を表示する。
/etc/ccs/ ディレクトリからポリシーファイルを読み込む。
/sbin/ccs-init に置くことで、 initrd から /sbin/init の実行が要求されたときに自動的に呼び出される。
/proc/ccs/domain_policy からドメイン単位で fgrep を行う。
ドメイン用ポリシーを標準入力から受け取り、コマンドラインに与えられたパス名のパターンと一致した場合はパターン化してから標準出力へ送る。実行許可を含むファイルへのアクセス許可とドメイン名はパターン化されない。
ポリシーの雛型を生成する。自動生成された結果には余計なものや危険なものが含まれているかもしれないため、随時見直しを行うこと。
このプログラムを実行したユーザの端末をハングアップさせることにより強制的にログアウトさせる。現在のユーザを追い出すために使用する。
このプログラムは execve() に渡されたパラメータを syslog に記録してから要求されたプログラムを実行する。
このプログラムをどこかにコピー(例えば cp -p /usr/lib/ccs/audit-exec-param /bin/audit-exec-param )して使う。例えば Apache の CGI として実行されるプログラムのパラメータを記録したい場合、例外ポリシーに keep_domain /usr/lib/ccs/audit-exec-param from <kernel> /usr/sbin/httpd というエントリを登録することで /bin/audit-exec-param が実行されてもドメイン遷移を行わないようにしておき、 Apache のドメイン(例えば <kernel> /usr/sbin/httpd ドメイン)に対して execute_handler /bin/audit-exec-param というエントリを追加する。
kill 等の内部コマンドを持たないシェルである。 /etc/passwd でログインシェルとして指定する。不正ログイン対策として追加のログイン認証を行う場合のみ使用する。
追加のログイン認証を行うためのプログラムは自分で作成することを推奨する。以下のサンプルプログラムをそのまま使用してはいけない。
正しいタイミングで正しいパスワードを入力しないと認証が失敗する。通常の認証ではパスワードを入力するタイミングはチェックしないが、このプログラムではタイミングもチェックすることで、総当り攻撃を防止する。
親プロセスが起動してから10秒以内に起動して正しいパスワードを入力しないと認証が失敗する。通常の認証では、認証を開始するまでの時間制限を設けていないが、このプログラムでは一定時間内に認証を開始しないと認証が成功しないようにすることで、総当り攻撃を防止する。
パスワードを入力するためのプロンプトが表示されるが、パスワードの入力内容はチェックせず、 /tmp/.lockme というファイルの有無で認証を行う。普段はロックされた状態にしておくことで、総当り攻撃を防止する。このプログラムはデモ用であり、攻撃者が一目で正解だと判るようなファイル名を使用している。利用する場合は必ずカスタマイズすること。
これらのプログラムは時間同期方式でトークンを生成する。 gettoken が生成したトークンを checktoken に渡すことで認証が成功するようになっている。これらはデモ用プログラムであり、トークンの生成アルゴリズムも貧弱である。利用する場合は必ずカスタマイズすること。
このプログラムを実行すると、チャレンジとして文字列が表示される。表示された文字列の中から、レスポンスとして数字のみを抽出したものを入力することで認証が成功する。このプログラムはデモ用であり、アルゴリズムが単純すぎる。利用する場合は必ずカスタマイズすること。
これは honey 相当の機能をインタプリタとして再実装したものである。スクリプトファイルを作成し、インタプリタとしてこのプログラムを指定する。
このプログラムを実行するとワンタイムパスワードを生成して電子メールで利用者に通知する。利用者は送られてきたワンタイムパスワードを入力することで認証が成功する。利用する場合はメールサーバ等のソフトウェアが別途必要になる。
このプログラムはクライアント側で使用する。特定のローカルポート番号に明示的に bind してからサーバに接続することで、サーバ側のファイアウォール(iptables 等)ではクライアント側の利用しているポート番号によるアクセス制限を行うことが可能になる。