次のページ 前のページ 目次へ

6. カーネルのセキュリティ

ここではセキュリティに関連するカーネル設定オプションの説明と, それらの動作や使い方に関する説明を行います.

カーネルはコンピュータのネットワークを制御するので, カーネルをこの上な く安全にしておくことと, カーネルそのものが破られないようにすることは重 要です. 最近出現したネットワーク攻撃のいくつかを防ぐために, カーネルの バージョンは最新に保つようにすべきです. 新しいカーネルは ftp://ftp.kernel.org またはお使いのディストリビューション のベンダから入手できます.

本家の Linux カーネル用にひとつに統合された 暗号化パッチを提供している国際的なグループもあります. このパッチは, 各種暗号サブシステムや輸出制限のために本家のカーネルに 含まれていない機能を提供します. 詳しい情報については グループの WWW ページ http://www.kerneli.org をご覧ください.

6.1 バージョン 2.0 のカーネルのコンパイルオプション

2.0.x カーネルでは以下のオプションが該当します. カーネルを設定する際にこれらのオプションを確認することになるでしょう. ここに挙げたコメントの多くは ./linux/Documentation/Configure.help から取っています. このコメントは, カーネルのコンパイル時にmake config の Help 機能で参照できるドキュメントと同じものです.

6.2 バージョン 2.2 のカーネルのコンパイルオプション

2.2.x カーネルでも多くのオプションは同じですが, 新しいオプションもいくつか開発されています. ここに挙げたコメントの多くは ./linux/Documentation/Configure.help から取っています. このコメントは, カーネルのコンパイル時に make config の Help 機能で参照できるドキュメントと同じものです. 以下では新しく追加されたオプションだけを示します. 必要な他のオプションについては, 2.0 用の説明を参照してください. 2.2 カーネルにおける最大の変更点は, IP firewalling のコードです. 2.2 カーネルからは, IP firewalling を行うには, ipchains を使うようになりました. 2.0 カーネルで使われていた ipfwadm は使いません.

6.3 カーネルデバイス

Linux には, セキュリティの向上にも使えるブロックデバイスや キャラクタデバイスがいくつかあります.

/dev/random/dev/urandom という, いつでもランダムなデータを取り出せる 2 つのデバイスがカーネルに用意されています.

/dev/random/dev/urandom はどちらも安全であり, PGP の鍵や ssh のチャレンジ文字列の生成や, ランダムな数字を必要とする他のアプリケーションで利用できるはずです. これらを入力として数の初期シーケンスを与えても, 攻撃者が次の数を予測することは不可能なはずです. これらの入力から得た数字があらゆる意味において言葉通りランダムで あることを保証するため, 大変な努力が行われてきました.

2 つのデバイスの唯一の違いは, /dev/random はランダムなバイト列を全て使う点と, 計算を行うためのユーザの待ち時間がより長い点です. 一部のシステムでは, ユーザが生成したエントロピーが システムに入るのを待つ長い間, ブロックされてしまうことに注意してください. したがって, /dev/random を使う前には気を付ける必要があります. (これの利用の最良の場面はおそらく, 機密キー入力情報を生成する時で, ユーザに「はい, もう十分です」 と表示するまでキーボードを繰り返し叩いてもらう場合です)

/dev/random は非常に高品質のエントロピーを持ち, 割り込み間の 時間等の測定値から生成しています. このデバイスは十分なビット数のランダ ムデータが利用可能になるまでブロックします.

/dev/urandom も同様ですが, エントロピーの保持量が少なくなると, 現在保持している値の暗号学的に強いハッシュ値を返します. これは /dev/random ほど安全ではありませんが, ほとんどの目的に 対してはこれで十分です.

このデバイスは以下のようにして読み出すことができます:

        root#  head -c 6 /dev/urandom | mmencode
        root#  head -c 6 /dev/urandom | mimencode
これはコンソールに 8 つのランダムな文字を出力します. パスワード生成などによいでしょう. mimeencodemetamail パッケージに入っています.

アルゴリズムの説明については, /usr/src/linux/drivers/char/random.c を参照してください.

これについて筆者(Dave)に教えてくださった, Theodore Y. Ts'o さん, Jon Lewis さん他の Linux-kernel ML の皆さんに感謝します.


次のページ 前のページ 目次へ