今回は,LIDSの設定作業の全体像を把握するために,設定関連の基礎知識と,Apache HTTP Server(以下,Apache)を動作させるときの簡単な設定手順を紹介する。
ここではSSHとsyslogdの設定を済ませてから,言い換えれば安全に設定作業が行えるようにしてから,Apacheを設定する。アクセス・コントロール・リスト(以下,ACL)の作成は著者が用意したスクリプト(次回に解説予定)を用いて行う。
説明に入るまえに,LIDSの最新情報を紹介する。前回で紹介した以降に,新しいバージョンのLIDS(Linuxカーネルのバージョン2.6.7に対応したlids-2.2.0rc2-2.6.7.tar.gz)が公開された。従来版との修正点は,従来版ではLIDS Free Session(以下LFS,連載第3回参照)を無効にした際にはステートを変更できなかったが,新版では「Allow switch the Linux Free Session」オプションを設けることにより可能にした点である。
/etc/lidsディレクトリ内の設定ファイルに基づいてアクセスを制御
最初にLIDSの設定ファイルを紹介する。LIDSの動作を設定するファイルはすべて,/etc/lidsディレクトリに格納されている。LIDSは,Linuxカーネルの起動時に,/etc/lidsディレクトリに格納されている「lids.boot.acl」「lids.postboot.acl」「lids.shutdown.acl」ファイルを主メモリー上に展開する。そして,これらのファイル内に記述されたACLに沿って,プロセスやファイルの読み書きを制御する。
/etc/lidsディレクトリには,表1に示したファイルがある。これらのファイルのうち,手作業で直接編集するものは,lids.iniファイルだけである。これ以外のファイルはlidsconfコマンドを用いて変更する。
表1●/etc/lidsディレクトリ内のファイル一覧
lids.ini | ACL_DISCOVERY機能の設定(ON/OFF) |
lids.pw | LFS用のパスワード・ファイル(HASH) |
lids.cap | 全ステート共通のケーパビリティ・バウンディング・セット |
lids.conf | 全ステート共通のファイルやプロセスに対するACLファイル |
lids.boot.cap | BOOTステートのケーパビリティ・バウンディング・セット |
lids.boot.conf | BOOTステートのファイルやプロセスに対するACLファイル |
lids.boot.acl | lids.boot.cap,lids.boot.conf,lids.cap,lids.confから生成された,BOOTステート時に使用するACL |
lids.postboot.cap | POSTBOOTステートのケーパビリティ・バウンディング・セット |
lids.postboot.conf | POSTBOOTステートのファイルやプロセスに対するACLファイル |
lids.postboot.acl | lids.postboot.cap,lids.postboot.conf,lids.cap,lids.confから生成された,POSTBOOTステート時に使用するACL |
lids.shutdown.cap | SHUTDOWNステートのケーパビリティ・バウンディング・セット |
lids.shutdown.conf | SHUTDOWNステートのファイルやプロセスに対するACLファイル |
lids.boot.acl | lids.shutdown.cap,lids.shutdown.conf,lids.cap,lids.confから生成された,SHUTDOWNステート時に使用するACL |
LIDSを設定・管理するためのコマンド
lidstoolsには,LIDSを設定するための2種類のコマンドが含まれる。一つが前述のlidsconfコマンド,もう一つがlidsadmコマンドである。
(1)lidsconfコマンド
ACLを設定するためのコマンドである。このコマンドを用いて,ファイルやプロセスのACLを設定したり,ACLの情報を確認したりできる。
(2)lidsadm
LIDSを管理するためのコマンドである。このコマンドを用いて,LIDSシステムの状態を確認したり,カーネルを封印(以下LFS,連載第3回参照)したりできる。
ACLを設定する前の準備
それでは,LIDSをインストールしたシステムを起動して設定作業の準備に取り掛かろう。まずは,デバッグ・モードでシステムが起動していることを確認する。
前回の最後に,/etc/lids/lids.iniファイルの内容を「ACL_DISCOVERY=1」に変更してから,その設定を反映させた。これにより,システムがデバッグ・モードで動作しているはずだ。システムの起動時に「ACL_DISCOVERY」という警告が表示される場合には,デバッグ・モードになっている。
デバッグ・モードになっていなかったり,システムの起動に失敗したりした場合は,再度/etc/lids/lids.iniファイル内で「ACL_DISCOVERY=1」と記述されていることを確認する。それから
# lidsconf -U
# lidsconf -U BOOT
# lidsconf -U POSTBOOT
# lidsconf -U SHUTDOWN
# lidsconf -C
を実行して設定をシステムに反映させた後,システムを再起動する。
次に,システムにローカルからrootユーザーでログインした後,
# lidsadm -S -- -LIDS
を実行して,LFSを開く。このときパスワードを聞かれるので,lidstoolsをインストールするときに設定したパスワードを入力する。
次に,今回の設定に必要なACLを生成するスクリプトをまとめて圧縮したファイル「lids.conf.tar.gz」を用意したので,ここからダウンロードする。適当なディレクトリで(例では/tmp)
# tar -xvzf lids.conf.tar.gz
# cd /tmp/root
# ./install.sh
を実行して,スクリプトをシステムに導入する。
install.shスクリプトが終了したら,システムを再起動する。この時点では,LIDSはデバッグ・モードで動作しているため,システム起動時にエラー・メッセージは多数表示されるものの,システムはきちんと起動しており問題ない。
SSH用のACLを導入する
続いてLIDSを導入したシステムに,SSHを用いてリモートからログインできるようにするACLを導入してみよう。/tmp/rootディレクトリに,「lids.ssh.sh」というスクリプトがある。これを使ってSSHを利用するためのACLを設定する。
システムにローカルからrootでログインした後
# lidsadm -S -- -LIDS
を実行して,LFSを開いた後,
# cd /tmp/root
# ./lids.ssh.sh
を実行する。すると,Fedora Core 2でSSHを使うためのACLファイルが設定される。これで作成されるのは,lids.postboot.confファイルである。続いて以下のコマンドを実行して,confファイル(confという拡張子を持つファイル群)から,aclファイル(aclという拡張子を持つファイル群)を生成する(この作業を,コンパイルと呼ぶ)。
# ./lidsconf -C
新たに作成したlids.postboot.aclファイルの内容をシステムに反映するには,
# lidsadm -S -- +SHUTDOWN
を実行してからシステムを再起動するか,あるいは
# lidsadm -S -- +RELOAD_CONF
を実行する。最後に
# lidsadm -S -- +LIDS
としてLFSを閉じれば,SSH用のACLの設定は終了である。
syslogd用のACLを導入する
次に,LIDSを導入したシステムで,syslogdをより強固に保護するためのACLを設定する。“強固に保護する”というのは,システムの動作中にはsyslogdを停止できないようにすることを指す。これにより,システム動作中には必ずログを残すことができる。
/tmp/rootディレクトリには,lids.syslogd.shというスクリプトがある。システムにローカルからrootでログインしてから
# lidsadm -S -- -LIDS
を実行してLFSを開いた後,
# cd /tmp/root
# ./lids.syslogd.sh
を実行して,syslogdを動作させるためのACLファイルを作成する。続いて
# ./lidsconf -C
# lidsadm -S -- +RELOAD_CONF
を実行して設定をシステムに反映させる。これで設定は済んだのでsyslogdを以下の手順で再起動する。まず,
# /etc/init.d/syslog stop
を実行してsyslogdを停止してから
# lidsadm -S -- +LIDS
を実行してLFSを閉じる。最後に
# /etc/init.d/syslog start
を実行してLIDSで保護されたsyslogdを起動すればよい。
Apacheをシステムにインストールする
いよいよApache本体の設定作業を行おう。Apacheをまだ導入していない場合は,Fedora Core 2 のインストールCDの1枚目をマウントしてから
# cd /mnt/cdrom/Fedora/RPMS/
# rpm -ivh apr-0.9.4-11.i386.rpm apr-util-0.9.4-14.i386.rpm httpd-2.0.49-4.i386.rpm
を実行して,Apacheをインストールする。
Apache用のACLを導入する
/tmp/rootディレクトリに,lids.apache.shというスクリプトがある。これまでと同じようにシステムにローカルからrootでログインした後
# lidsadm -S -- -LIDS
# cd /tmp/root
# ./lids.apache.sh
を実行して,Fedora Core 2のApacheに対応したACLファイルを作成する。続いて,以下のようにして,ACLファイルをコンパイルする。
# ./lids.update.sh
# lidsconf -C
を実行する。
Apacheの場合は,SSHやsyslogdとは異なり,POSTBOOT用ACLに加えてBOOT用ACLも生成される。そのため,システムを再起動して設定を反映させる必要がある。そのため,
# lidsadm -S -- +LIDS
を実行してLFSを閉じてから,
# lidsadm -S -- +SHUTDOWN
を実行してシステムを再起動する。
以上で,LIDSを導入したシステムでのApacheの設定は終了である。ここで使用したコマンドやスクリプトの内容については,次回(7月20日公開予定)に説明する。
■著者紹介
面 和毅(おも かずき)氏
学生時代よりUNIXに親しむ。1997年からサーバー構築およびセキュリティ全般を扱う仕事に従事,Linuxを使い始める。現在はLIDSの普及活動に注力。SELinuxコミュニティ内でのLIDS支部の立ち上げや,LIDS関連文書の日本語化,LIDSを用いたシステム構築の紹介などを行っている。