2004年5月18日(米国時間)に公開されたディストリビューション「Fedora Core 2」で動作しているシステムに,LIDSをインストールする方法を紹介する。
この例では,サーバー用途のシステムにLIDSを導入するものとする。そのため,X Window Systemは動作させない(/etc/inittabの内容を編集して,「id:3:initdefault」にしている)と同時に,表1に示したサービスも動作させない(「chkconfig サービス名 off」を実行してサービスが起動しないようにしている)ものとする。
表1●動作させないサービス
サービス名 | 内容 |
---|---|
FreeWnn | かな漢字変換システムを起動する |
IIim | かな漢字変換システムを起動する |
autofs | リムーバブル・デバイスを検知して自動マウントする |
canna | かな漢字変換システムを起動する |
isdn | ISDNによる通信に必要な設定を施す |
netfs | NFSのマウント/アンマウントを実施する |
nfs | NFSサーバーを起動する |
nfslock | NFSのファイル・ロック機能を提供する |
pcmcia | PCMCIAを用いたPCカードを使えるようにする |
portmap | RPC用の通信ポートを割り当てる |
sendmail | メール・サーバーを起動する |
smartd | ハードディスクに問題が発生したときにメールで情報を送信する |
Linuxカーネルを導入する
LIDSをインストールするには,カーネルのソース・コード(以下,カーネル・ソース)が必要になる。LIDSのパッチは,The Linux Kernel Archivesなどから入手できる“素のままの”カーネル・ソースに対応する。特定のディストリビューションのカーネル,例えば,Red Hat Enterprise LinuxやFedora Core独自のカーネル・ソースには適用できない。そのため,Linuxカーネルを提供しているFTPサイト(上記サイト経由やftp.kernel.orgなど)からダウンロードしてきたカーネルでシステムが立ち上がるようにしておき,その後でLIDSのパッチを適用する。Red Hat Linux用やDebian GNU/Linux用カーネルに合わせたパッチも開発されているが,こちらはLIDS 1系列のみの対応となっており,LIDS 2系列はまだ対応していない。
また,LIDS 2系列の新しいバージョン(LIDS2.2.x)では,LIDS Free Session(連載第3回参照)用のパスワード暗号化と認証に「SHA256」というカーネル組み込みのライブラリを使用する。そのため,カーネル導入時に次の設定項目(カーネル・オプション)
Cryptographic options --->
<*> SHA256 digest algorithm
を選択しておく必要がある。
カーネルに対応したLIDSの最新版を入手する
LIDSの最新版は,公式サイトからダウンロードできる。ファイル名「lids-2.2.x-2.6.y」は,LIDSのバージョンと対応するカーネルのバージョンを示す*1。この例では,「このファイルはバージョン2.2.xのLIDSであり,カーネル2.6.yに対応する」ことを意味する。
ダウンロードしたtar.gz形式のファイルには,カーネルに適用するパッチ(lids-2.2.x-2.6.y.patch)と,lidstoolsが同こんされている。このlidstoolsには,LIDSの設定を行うコマンドなどが含まれる。
以下の例では,/home/lidsuser/srcディレクトリにlids-2.2.x-2.6.y.tar.gzをダウンロードし,/home/lidsuser/workディレクトリにおいてtar.gz形式のファイルを展開したものとする。また,コマンドプロンプトが「$」の場合は一般ユーザー(例示したユーザー名はlidsuser)で,「#」の場合はrootユーザーで行う作業である。
LIDSのパッチを適用してカーネルをコンパイルする
素のままのカーネルでシステムを立ち上げたら,最初に
# ln -s /usr/src/linux-2.6.x /usr/src/linux
を実行して,カーネル・ソースへのリンク・ファイル/usr/src/linuxを作成しておく。
次に,
# cd /usr/src/linux
# patch -p1 < /home/lidsuser/work/lids-2.2.x-2.6.y/lids-2.2.x-2.6.y.patch
を実行して,カーネル・ソースにLIDSのパッチを適用する。
パッチの適用が終了したら,
# make menuconfig
を実行し,カーネルのオプションにおいて,LIDSを使うために必要な項目を選択する。menuconfigの項目を見てみると,パッチ適用後には,次のようにLIDS関連の項目が追加されている。
[Security options] -> [*] Enable different security models [*] Socket and Networkng Security Hooks < > Default Linux Capabilities LIDS support ---> < > Root Plug Support [ ] NSA SELinux Support
ここでの注意点は,LIDSを選択する場合には,「Default Linux Capabilities」と「NSA SELinux Support」の2項目を(モジュールと組み込みのいずれにおいても)選択してはいけないことである。この2項目を選択すると,LIDSを組み込んだカーネルで起動したときにカーネル・パニックが起きてしまうためだ。
さらにLIDS supportの内容を次に示す。
<*> Linux Intrusion Detection System support(EXPERIMENTAL) ---(1) -- LIDS Options [*] Attempt not to flood logs ---(2) [*] Allow switching LIDS protections ---(3) [*] Restrict mode switching to specified terminals ---(4) [ ] Allow mode switching from a Linux console [ ] Allow mode switching from a Serial console [ ] Allow mode switching from a PTY
(1) LIDSをカーネルに組み込む場合には,この個所を選択する。モジュールとして使用する場合には,「M」にする。今回は,カーネルに組み込む形にするため,「*」で選択した状態にしておく。
(2) LOGに同じエラーが同時に何度も出力されることを防ぐためのオプションである。デフォルトでは選択された状態になっている。
(3) LIDS Free Session(以下,LFS)に関わる部分である。前回に説明したLFSを使用する場合には,こちらも選択しておく。デフォルトでは選択された状態になっている。
(4) (3)の関連項目である。LFSの使用を,コンソールやシリアル端末などに限定するものである。(3)を選択したときのみ,この項目が表示される。
必要なカーネル・オプションを選択したら,make bzImageなどを実行して新たなカーネルを作成する。新しく作成したカーネルで起動できる状態にしておいてから(ただし,まだ起動はしない),続いてlidstoolsをインストールする。
関連コマンドや設定ファイルを収めたlidstoolsを導入する
ダウンロードしたtar.gz形式のファイルを展開した,/home/lidsuser/work/lids-2.2.x-2.6.xディレクトリ中にlidstools-X.tar.gzというファイルがある。これには,LIDSの設定を行う際に必要なコマンドや設定ファイルが入っているため,次のようにしてインストールしておく。まず,ファイルを伸長・展開する。
$ tar -xvzf lidstools-X.tar.gz
$ cd lidstools-x
ディレクトリlidstools-xに移動してから,
$ ./configure
$ make
$ su
# make install
を実行してインストールする。
インストール時に,前回に紹介したLFS用のパスワードを聞いてくるので入力する。このパスワードは後でLIDSを設定するときにも必要なため,忘れないようにする。
また,再起動時にシステムが起動不能にならないように,「ACL_DISCOVERYモード」と呼ばれるデバッグ用のモードで起動するようにしておく。そのためには,/etc/lids/lids.iniファイルの内容を編集し,
ACL_DISCOVERY=1
という記述にする。続いて
# lidsconf -U
# lidsconf -C
を実行して設定を反映させる。これで,lidstoolsのインストールは完了である。
システムを再起動する
こうしてlidstoolsのインストールとパスワードの設定までが終わったら,LIDSを組み込んだカーネルを使ってシステムを再起動してみよう。再起動したシステムは,初期設定のアクセス制御リストとケーパビリティ・セット(連載第2回参照)が適用されているため,「XXサービスが起動できない」などのエラーがコンソールに出力される。これで,LIDSが動作していることが分かる。
最後に,シャットダウン方法を紹介しておこう。LIDSをインストールしたカーネルで起動した場合は,
# lidsadm -S -- +SHUTDOWN
を実行してシステムををSHUTDOWNステート(連載第3回)に移行してから,shutdownコマンドを実行する。
次回(7月6日公開予定)は,Apache HTTP Serverを動作させる場合のLIDSの具体的な設定手順を紹介する予定である。
■著者紹介
面 和毅(おも かずき)氏
学生時代よりUNIXに親しむ。1997年からサーバー構築およびセキュリティ全般を扱う仕事に従事,Linuxを使い始める。現在はLIDSの普及活動に注力。SELinuxコミュニティ内でのLIDS支部の立ち上げや,LIDS関連文書の日本語化,LIDSを用いたシステム構築の紹介などを行っている。