# Linux Intrusion Detection System FAQ

Sander
Klein

    lids AT roedie DOT nl

Omo
Kazuki
Translator, v.20J, August 8th, 2003

           omok AT honto DOT info

Kurashiki
Satoru
Translator, v.17J, Mar 8th, 2002

           ouka AT fx DOT sakura DOT ne DOT jp

v.20, May 19th, 2003

これは、Linux 侵入検知システム (LIDS) のFAQ です。これらの質問は、主に LIDS-mailling-list で質問されたものです。

このドキュメントの時点でリリースされているLIDS のバージョンは以下になります:

- Kernel 2.4: 1.1.1 (stable) 1.1.2-rc6 (developement)

- Kernel 2.2: 0.11.0r2 (stable) 0.11.1pre1 (development)

- Kernel 2.5: 2.0.3rc1 (development)

## LIDS 入門

### LIDS とは何ですか？

LIDS は、Xie Huagang とPhilippe Biondi によって書かれた、Linux カーネルの拡張です。素のLinux カーネルにはない、いくつかのセキュリティ機能を実装します。これらは、− 強制アクセス制御(MAC)、ポートスキャン検知、ファイル保護(root からも保護します)、プロセス保護などです。

### なぜLIDS を使うのですか？

現在のLinux の機構は、たくさんの *nix に由来する、多くの問題を抱えています。おそらく、唯一にして最大の問題は、root アカウントが "全能であること" です。プロセスやユーザがroot 特権を持っていて、そのプロセスやユーザがシステムを完全に破壊しようとしたら、誰にも止められません。悪意のあるユーザ/侵入者によるroot アクセスは、我々多忙な管理者に、多大な心労をもたらしかねません。LIDS は、強大なroot アカウントを使える人でさえシステムに対し大混乱をひきおこせないような仕組みであるアクセス制御リスト(ACL) を実装しています。こういったACL により、LIDS はプロセスのみならずファイルをも保護することができるのです。

### LIDS はどこで入手することができますか？

http://www.lids.org か、もしくはミラーサイトからダウンロードできます。ミラーサイトのリストは、 http://www.lids.org/mirrors.htmlにあります。

### どのバージョンのLinux カーネルがサポートされていますか？

現在、LIDS は新しい 2.4 カーネルの他に、2.2 カーネルもサポートしています。 LIDS の開発は 2.5 カーネルを使って行われています。ですから、新しい機能は先にそちらで実装されます。とはいえ、ユーザのニーズによって、2.4 あるいは 2.2 カーネルにバックポートされる機能もあります。LIDSの最新バージョンでは、LSM (Linux Security Modules)の機能も取り込んでいます。

### LIDS のメーリングリストはありますか？

あります。いつでも `lids-users@lists.sourceforge.net` に e-mail すれば、メーリングリストへの投稿になります。ただし、メーリングリストへポストされたメッセージを受けとりたいならば、登録する必要があります。登録するには、http://lists.sourceforge.net/lists/listinfo/lids-user へ行き、フォームを埋めてください。すると、確認要求が届きますので、それに返信してください。そのページから、登録解除とメーリングリストオプションの変更もできます。

### アーカイブはどうなっていますか？

メーリングリストのアーカイブは http://www.geocrawler.com/lists/3/SourceForge/9348/0/ にあります。古いアーカイブは http://groups.yahoo.com/group/lids に置いてあります。

### 著作権と注意書き

この文書は、`copyright(c) 2000, 2001, 2002 Steve Bremer -- 2002, 2003 for Sander Klein` で、FREE なものです。GNU General Public License のもとに再配布することができます。

この文書にある情報は、Sander の知識の限りにおいて、正確です。とはいえ人間ですから、その時々において誤りやバグなどはあり得ます。

どんな個人やグループ、あるいは他の主体も、この文書にある情報を使うことによるあなたのコンピュータへの被害や何か他の損失の責任を負うことはありません。すなわち −

著者および全メンテナは、この文書にある情報に基いてなされた行動により被ったいかなる被害にも責任を負いません。

### フィードバック

この文書に対して質問、コメント、提案や修正があるなら、お気軽に lids AT roedie DOT nlで私にコンタクトをとってください。良いものであれ悪いものであれ、いつでもフィードバックは歓迎します！

### クレジット

特別の謝意を −

- Xie Huagang - テクニカルエディタであり、LIDS の作者

  - LIDS versionについての質問

  - Subject/objectについての質問

- Philippe Biondi - LIDS の作者

- Andy Harrelson - 文法/綴りの監修

- Rob Willis - Open-SSH, OpenLDAP, それと Port Sentry の設定例

- Fred Mobach - ひらめきと訂正

- David Ranch - 私は、sgml のテンプレートに、彼の素晴らしい Linux IP Masquerade HOWTO を使いました。

- Austin Gonyou -

  - FAQ への有益なフィードバック

  - lidsadm のコンパイルの問題 への新しい修正

  - `/etc/passwd` ファイルの i ノード更新についての 警告

- Pavel Epifanov - lidsadm のコンパイルの問題 への簡単な修正

- Justus Pendleton - Samba の設定サンプル

- Nenad Micic

  - 隠しプロセスを kill するスクリプトの例

  - シャットダウン時に隠しプロセスを kill する C プログラム

  - LD_PRELOAD 警告

- Bill Phillips - PDF バージョンにおける、多数の参照ミスの指摘

- Szymon Juraszczyk

  - LD_PRELOAD 警告

- Lorn Kay -

  - Linu HA 用の ハートビートの設定

  - Sendmail の設定

- Bill McKenzie - Portsentry の設定に対する追加

- Sander Klein

  - LIDS が 有効か無効かのチェックに関する質問.

  - Apcupsd の設定

  - Pump の設定

  - Snort の設定

  - getty の設定

  - login の設定

  - su の設定

- David Spreen - 時間限定の警告 と crontab へのアクセス制限.

- Thomas Linden - BIND 9.x の設定を提供

- Mathias Gygax - exim, qpopper と proftp のサンプル設定を提供

- Dimitri Goldin - /dev/ptsがマウントされていて、保護されていない状態では、rootユーザーがLIDSのパスワードを取得できてしまう事を指摘

- BigSam - Innd の設定.

- Ralf Dreibrodt - Innd の設定.

- Steve Bremer - この文書を書きはじめてくれたことに。私が LIDSを初めて使用した時に、とても助けになりました

Linux は Linus Torvalds の登録商標です

### 翻訳

次のリストは、この文書の翻訳です

- Japanese -- http://www.linux.or.jp/JF/JFdocs/LIDS-FAQ.html

- Polish -- http://www.linuxpub.pl/man/lidsfaq/.

### 更新履歴

このFAQの最新版は http://www.roedie.nl/lids-faq/にあります。バグを報告する前に、最新バージョンをチェックしてください

- May 19th, 2003. Version .20

  - Postfix の例を追加

  - Openssh の例を更新

  - 1.1.0以前のバージョンのlidsの、コンパイル箇所を削除

  - '/etc/lidsディレクトリが見えません'の箇所を削除

  - 権限の喪失に関する質問を追加

  - 権限 セクションの修正

  - さまざまな細かい修正

- December 22th, 2002. Version .19

  - これは私(Sander Klein)がリリースする最初のバージョンのLIDS FAQです。Steveに感謝

  - lidsadm -Pをlidsconf -Pに置き換えた

  - さまざまな箇所を最新の情報に書き換えた

  - ドキュメントをdocbookフォーマットのldpスタイルに書き換えた

  - 権限 セクションの追加

  - いくつかのURLを正しいものに変更した

- April 27th, 2002. Version .18

  - これは、私 (Steve Breme)が提供する最後のLIDS FAQになります。Sander KleinがこのFAQの、新しいメンテナンス者になります。

  - aproxy 設定 例の追加

  - /dev/pts 警告の追加

  - squid 設定 例の追加

  - PowerPC status のアップデート

  - Innd 設定 例の追加

  - その他の細かい訂正

- January 28th, 2002. Version .17

  - "READ" から "READONLY" への変更

- January 12th, 2002. Version .16

  - バージョン1.1.0用の、様々な変更

  - 細かな修正

  - exim, qpopper, と proftpの、設定例の追加

  - console logging の質問のアップデート

  - LD_PRELOAD 警告のアップデート

  - file ACL inheritance の質問のアップデート

  - ファイルの編集 の、質問の追加

- November 12th, 2001. Version .15

  - 多くの(Sendmail,apcupsd,pump,snort,getty,login,su)設定例の追加。Sander Klein と Lorn Kayに感謝

  - Red Hat Kernel パッチの質問を追加

  - User の容量制限 質問の追加

- August 26th, 2001. Version .14

  - LIDS enabled/disabled 質問の追加

  - basic configuration 質問の追加

  - Debian ユーザーの注意点を追加

  - 時間制限 の質問を追加

  - 新しい時間制限方法 を使って、ログローテーションをする方法の質問を更新

  - 非Intel ハードウェア の質問を更新

  - 翻訳 セクションの追加

  - ポート制限 の質問を追加

  - BIND 9.x の設定 を追加

- May 20th, 2001. Version .13

  - HA Linux 用のハートビート設定 を追加

  - read password error の質問を追加

  - 基本設定 の質問を追加

  - portsentry の設定への細かい追加

  - パスワード更新 の質問の拡張

  - その他の細かな修正

- April 1st, 2001. Version .12

  - 新しいバージョンのLIDS (1.0.6+ and 0.9.14+)用に FAQ を更新

  - LD_PRELOAD 環境での警告 の追加

  - ハードウェアの質問を更新

- March 10th, 2001. Version .11

  - PDF バージョンでの幾つかの参照エラーを修正（まだ、幾つかの、変換されたドキュメントは注意する必要がある）

  - 基本的なシステムのセットアップ 設定を明白にした

  - メイリングリスト 情報 の更新

  - パスワード と ログローテーション の、質問の更新

- March 1st, 2001. Version .10

  - Samba 設定例の追加

  - シャットダウン時に隠しプロセスを kill する方法の例

  - ssh keygen question の追加

  - パスワード更新 の質問を拡張

- February 10th, 2001. Version .09

  - ssh/scp の質問を追加

  - メーリングリスト 情報の更新

  - LIDS SMP status の更新

- January 27th, 2001. Version .08

  - "Server Root" が DENY として保護されるようにApache の設定を変更

  - デフォルトのディレクトリが DENY として保護されるようにmysql と courier-imap の設定を変更

  - ssh の設定を、パスワード認証が動くように変更

  - ACL の再設定に関する質問を追加

- January 25th, 2001. Version .07

  - lidsadm のコンパイル問題を修正。 Clarified the カーネルの封印 の質問を (願わくば)明白にした。細かな修正

- January 24th, 2001. Version .06

  - /etc/mtab はシステム起動時に再作成され、ファイルシステムはアンマウントされるので、/etc/mtab マウントの ACL 設定例を削除した

  - lidsadm コンパイル問題の修正を追加

  - 細かな修正

- January 22nd, 2001. Version .05

  - 基本的なシステムセットアップの設定例を追加。e-mail アラートの設定のセクションを追加

- January 19th, 2001. Version .04

  - lidsadm コンパイル問題の細かな修正

- January 17th, 2001. Version .03

  - LIDS-0.9.12 での新しいfile ACL の "-i" オプションに関する情報を追加。また、"-i" オプションが必要になった時の使用例を更新。その他、lidsadm コンパいつ問題の情報や、権限の有効/無効や、新しいプログラムに対するACLのセットアップ方法に関する細かな更新。

- January 15th, 2001. Version .02

  - 細かな修正

- January 15th, 2001. Version .01

  - 最初のリリース

### To-do

このドキュメントの時点でもまだ必要なこと:

- LIDS-LSM への追加

- おそらく、他にももっと。

### この FAQ はどこから入手できますか？

HTML 版の LIDS-FAQ はLIDS のサイトに有ります。 その他のフォーマットは、 http://www.roedie.nl/lids-faq/ からダウンロードできます。

## LIDS のインストール

### LIDS カーネルパッチはどうやって当てるのですか？

Xie は instructions にLIDS をダウンロードして、カーネルにパッチをあてる方法をもりこんでいます。 とはいえ、必要な手順について簡単におさえておくことにします。この例では、カーネルソースが /usr/src/linux にインストールされていると想定しています。

`カーネルに対応している LIDS の最新版を使用しているかどうか、常に気をつけましょう。LIDS は急ピッチで開発されており、ドキュメントも、それに伴って変わります。`

- 最初に、LIDS のパッチを www.lids.org/download.html からダウンロードする必要があります。カーネルに合ったバージョンを入手するように注意してください。（それぞれのディストリビューション用のカーネルを使用している方は、 following を読んでください。）

- 次に、tarball を展開します −

      bash$ tar -zxvf lids-lids のバージョン-カーネルのバージョン.tar.gz

- 既存のカーネルソースに lids のパッチを適用します −

      bash$ cd /usr/src/linux
      bash$ patch -p1 < /path/to/lids/patch/lids-lids のバージョン-カーネルのバージョン.patch

- それから、カーネルの設定をします。Linux カーネルの再コンパイルにおける素晴らしい情報源としては、Linux Kernel HOW-TO を参照してください。

LIDS 用に、いくつかのカーネル設定オプションがあります。LIDS が動作するためには、以下のオプションが有効になっていることを確認してください −

      [*]   Prompt for development and/or incomplete code/drivers
      [*]   Sysctl Support

### LIDS の管理ユーティリティ (lidsadm と lidsconf) をインストールする方法は？

- LIDS 1.1.2+

注意： LIDS をアップグレードしているなら、最初に /etc/lids ディレクトリを全てバックアップしてください)

LIDS のソースディレクトリで、こう入力します −

    bash$ tar -zvxf lidstools- バージョン .tar.gz
    bash$ cd lidstools- バージョン
    bash$ ./configure
    bash$ make
    bash$ su -
    bash# make install

これで lidsadm と lidsconf が /sbin ディレクトリにインストールされます。さらに、/etc/lids ディレクトリが作られ、デフォルトの設定ファイルがいくつかそこに置かれます。設定ファイルは、システムの適切な i ノード及びデバイス情報で更新されます。また、この時点で LIDS のパスワードを入力するように求められます。 i ノードの更新プロセス時に、システムに存在していないファイルを見ようとしているときには、いくつかのエラーを出します。これらのエラーは有害なものではありません。

lidsadm の参照オプション (-V) を有効にしたくないなら、`--disable-view` を指定して configure を実行してください。

### 次は？

再起動して LIDS で強化されたカーネルにする前に、まず LIDS の ACL を設定せねばなりません。さもなければ、再起動するとシステムが使いものにならなくなります。LIDS の ACL を設定する方法については 後ほど。

### lidsadm をコンパイルしようとしたら、gcc に lidstext.h がない、といわれました。この問題はどうやって解決すればいいの？

これは、`/usr/include/linux` が `/usr/src/linux/include/linux`へのシンボリックリンクではないシステムにおいて発生します。完全なエラーメッセージはこうです −

    lidsadm.c:30: linux/lidsext.h: No such file or directory make: *** [lidsadm.o] Error 1

この問題を解決するには、lidsadm のソースディレクトリにある Makefile を編集して、CFLAGS オプションに `-I/usr/src/linux/include` を加えてください。

この時点で、普通に lidsadm をコンパイルできるはずです。

### Debian ユーザへの注意……

David Spreen は LIDS の Debian パッケージを保守しています。パッケージ固有の LIDS の設定を netzwurm@debian.org 宛てにメールすると喜ぶでしょう。Debian 固有の修正が含まれているため、Debian ユーザは LIDS の Debian パッケージを使うようにも彼は勧めています。

### LIDS のパッチを RedHat のカーネル 2.x.x-x にあてようとしたら、エラーになりました。何が悪いの？

LIDS は Linus が開発した "普通の" カーネルを使って開発されています。RedHat や Debian、Suse を含む多くのディストリビューションでは、カーネルをカスタマイズしています。これは悪いことではありませんが、それらのカーネルが Linus のものと同じではない、ということは知っておいてください。(Debian ユーザは 上の 注意を見てください。)

## lidsadm と lidsconf

### lidsadm とは何ですか？

lidsadm は LIDS の管理ユーティリティで、これを使ってシステムの LIDS を管理します。これには、LIDS を有効/無効にしたり、カーネルを封印したり、LIDS の状況を見たりすることが含まれます。

### lidsconf とは何ですか？

lidsconf は LIDS のアクセス制御リスト (ACL) を設定するのに使います。また、LIDS のパスワードをセットするのにも使います。

注意：LIDS 1.1.0 より前のバージョンでは、現在 lidsconf が行っている仕事も全て lidsadm がこなします。

### lidsadm で使えるオプションは何がありますか？

利用可能なオプションを一覧するには、こう入力してください −

    bash# lidsadm -h

これによって、以下の出力が返ってきます −

    lidsadm version 0.4.1 for LIDS project
           Huagang Xie <xie@gnuchina.org>
           Philippe Biondi <pbi@cartel-info.fr>

    Usage: lidsadm -[S|I] -- [+|-][LIDS_FLAG] [...]
           lidsadm -V
           lidsadm -h

    Commands:
           -S  To submit a password to switch some protections
           -I  To switch some protections without submitting password (sealing time)
           -V  To view current LIDS state (caps/flags)
           -v  To show the version
           -h  To list this help

    Available capabilities:
               CAP_CHOWN chown(2)/chgrp(2)
        CAP_DAC_OVERRIDE DAC access
     CAP_DAC_READ_SEARCH DAC read
              CAP_FOWNER owner ID not equal user ID
              CAP_FSETID effective user ID not equal owner ID
                CAP_KILL real/effective ID not equal process ID
              CAP_SETGID set*gid(2)
              CAP_SETUID set*uid(2)
             CAP_SETPCAP transfer capability
     CAP_LINUX_IMMUTABLE immutable and append file attributes
    CAP_NET_BIND_SERVICE binding to ports below 1024
       CAP_NET_BROADCAST broadcasting/listening to multicast
           CAP_NET_ADMIN interface/firewall/routing changes
             CAP_NET_RAW raw sockets
            CAP_IPC_LOCK locking of shared memory segments
           CAP_IPC_OWNER IPC ownership checks
          CAP_SYS_MODULE insertion and removal of kernel modules
           CAP_SYS_RAWIO ioperm(2)/iopl(2) access
          CAP_SYS_CHROOT chroot(2)
          CAP_SYS_PTRACE ptrace(2)
           CAP_SYS_PACCT configuration of process accounting
           CAP_SYS_ADMIN tons of admin stuff
            CAP_SYS_BOOT reboot(2)
            CAP_SYS_NICE nice(2)
        CAP_SYS_RESOURCE setting resource limits
            CAP_SYS_TIME setting system time
      CAP_SYS_TTY_CONFIG tty configuration
               CAP_MKNOD mknod operation
               CAP_LEASE taking leases on files
              CAP_HIDDEN hidden process
      CAP_KILL_PROTECTED kill protected programs
           CAP_PROTECTED Protect the process from signals

    Available flags:
                    LIDS de-/activate LIDS locally (the shell & childs)
             LIDS_GLOBAL de-/activate LIDS entirely
             RELOAD_CONF reload config. file and inode/dev of protected programs

### lidsconf で使えるオプションは何がありますか？

利用できるオプションを一覧するには、こう入力してください −

    bash# lidsconf -h

これによって、以下の出力が返ってきます −

    lidsconf version 0.4.1 for the LIDS project
           Huagang Xie <xie@gnuchina.org>
           Philippe Biondi <philippe.biondi@webmotion.net>

    Usage: lidsconf -A [-s subject] -o object [-d] [-t from-to] [-i level] -j ACTION
           lidsconf -D [-s file] [-o file]
           lidsconf -Z
           lidsconf -U
           lidsconf -L [-e]
           lidsconf -P
           lidsconf -v
           lidsconf -[h|H]

    Commands:
           -A,--add To add an entry
           -D,--delete      To delete an entry
           -Z,--zero        To delete all entries
           -U,--update      To update dev/inode numbers
           -L,--list        To list all entries
           -P,--passwd      To encrypt a password with RipeMD-160
           -v,--version     To show the version
           -h,--help        To list this help
           -H,--morehelp    To list this help with CAP/SOCKET name

    subject: -s,--subject subj
           can be any program, must be a file
    object: -o,--object [obj]
           can be a file, directory or Capability, Socket Name
    ACTION: -j,--jump
           DENY     deny access
           READONLY read only
           APPEND   append only
           WRITE    writable
           GRANT    grant capability to subject
           IGNORE   ignore any permissions set on this object
           DISABLE  disable some extersion feature
    OPTION:
          -d,--domain       The object is an EXEC Domain
          -i,--inheritance Inheritance level
          -t,--time Time dependency
          -e,--extended     Extended list

### 素晴らしい。で、これらの権限はどういうものなの？

権限によって、システムが明白に、どのような行為を許可し、あるいは許可しないのかということを定義できます。仮りに `CAP_SETUID` を無効にすると、どのようなプログラムも UID を渡す事が出来なくなります。LIDSを用いると、明白なプログラムに対して、明白に権限を有効/無効にする事が出来ます。それぞれの権限については、`/etc/lids/lids.cap` の中か、（もし、まだ LIDS をインストールしていないのであれば `/path/to/lidstools/example/lids.cap` にあります。

## LIDS の管理

### LIDS のパスワードを設定するにはどうすればいいですか？

インストール時に、パスワードの設定について聞かれなかった場合には、LIDS によって拡張されたカーネルで再起動する前に、コマンドプロンプトでこのように入力します −

    bash# lidsconf -P

すると、LIDS のパスワードを求められます −

    MAKE PASSWD
    enter new password:
    reenter new password:
    wrote password to /etc/lids/lids.pw

これで、`/etc/lids/lids.pw` ファイルに RipeMD-160 で暗号化されたパスワードが書きこまれます。このパスワードは、ACL の権限を変えたい時や、LIDS free session を開始する時に必要です。

### 一度設定された LIDS パスワードを変更するにはどうすればよいですか？

最初に、LIDS フリーセッション を作成しなくてはなりません。それから、 最初にやったように "-P" オプションを使ってパスワードを設定します (現在のパスワードはきかれません)。LIDS パスワードを再設定した後で、LIDS に 設定ファイルのリロードをさせる必要があります。

注意：/dev/pts がマウントされている時には、root権限を持ったものが、LIDS パスワードを得る事が可能です。これを防ぐために、/dev/pts をアンマウントしておくか、保護をしておいてください。

### LIDS フリーセッションとは何？　どうやって作ればいいの？

LIDS フリーセッション (LFS) は LIDS からの制限を受けない端末セッションです。このオプションがあるため、非 LIDS のカーネルで再起動せずにシステムを管理することができます。これを機能させるには、LIDS で拡張したカーネルをコンパイルする時に、このオプションを選択している必要があります −

      [*] Allow switching LIDS protections

LFS を作るには、プロンプトでこのように入力します −

    bash# lidsadm -S -- -LIDS

すると、LIDS パスワードを訊ねられます。この端末は、もう LIDS から独立しています。以下の操作をするまでは、LIDS から独立したままです −

- LIDS を再び有効にする `(lidsadm -S -- +LIDS)`.

- ターミナルからログアウトする

一度にアクティブにできる LFS は 1 つだけです。別の端末に入っても `lidsadm -S -- -LIDS` は無効にならないとはいえ、LFS はただ 1 つしか持てません。

### LIDS フリーセッションを作ったけど、LIDS がまだ有効になってるみたい！　何がまずいの？

これは、LFS を仮想端末上で作ってから別の仮想端末に移動してマシンを管理しようとすると発生します。解決するためには、LIDS を有効にしてみて、それからもう一度無効にします (プロンプトが出たらパスワードを入力します)。

    # lidsadm -S -- +LIDS
    # lidsadm -S -- -LIDS

注意： LFS に他の管理者がいた場合には、その人の LFS も閉じてしまうので、他の管理者が居ないことをチェックしてください！

### LIDS に設定ファイルをリロードさせるにはどうすればいいの？

LIDS にその設定ファイルをリロードさせるには、LIDS で拡張したカーネルを設定する時に、このオプションを有効にする必要があります。

      [*]  Allow switching LIDS protections
      (3)    Number of attempts to submit password
      (30)     Time to wait after a fail (seconds)
      [ ]    Allow remote users to switch LIDS protections
      [ ]    Allow any program to switch LIDS protections
      [*]    Allow reloading config. file   <----------------------------

注意：設定ファイルをリロードできるようにするには、LIDS の保護を切り換えられるようにする必要があります。

LFS (あるいは LIDS_GLOBAL を無効にして) から、これらのコマンドを実行して LIDS に設定ファイルをリロードするよう指示します −

    # lidsadm -S -- +RELOAD_CONF

これで、以下の設定ファイルがリロードされます −

- `/etc/lids/lids.conf -` LIDS ACL の設定ファイルです。

- `/etc/lids/lids.cap -` LIDS の権限ファイルです。

- `/etc/lids/lids.pw -` LIDS のパスワードファイルです。

- `/etc/lids/lids.net -` LIDS のメールによる警告を設定するファイルです。

### 助けて！！！　私のシステムが完全に使えなくなってしまいました！　どうすればいいでしょう？

再起動して LIDS で強化されていないカーネルにするか、LIDS を無効にして LIDS で強化されたカーネルを起動し、解決を試みることができます。LIDS を無効にして起動するには、lilo プロンプトに `security=0` と指定します。例えば、LIDS で強化されたカーネルが `lids-kernel` だとすると、lilo プロンプトでこのように入力するのです −

    lilo: lids-kernel lids=0

これは簡単な部分です。難しいのは、LIDS を有効にしたシステムをシャットダウンさせることです。LIDS の設定によっては、うまくシャットダウンできないかもしれません。

警告： 適切に設定されていない状態で LIDS が有効になったカーネルを再起動させると、ファイルシステムがおかしくなったり、データが失われるかも知れません。

### システムバイナリを変更/移動しました。ファイルが変更/移動したことを LIDS に教えるにはどうするのですか？

ファイルが存在しているデバイス、あるいはファイルの iノード番号が変わった時にはいつでも、`/etc/lids/lids.conf` ファイルを適切な情報で更新しなければなりません。幸運なことに、Xie はこういう時のためのオプションを用意してくれています −

    bash# lidsadm -U

それから、設定ファイルをリロードする必要があります。

### じゃあ、再起動せずに LIDS を完全に無効にする方法は？

LFS を使う以外にも、LIDS を全体的に停止させることはできます。これには、オプション込みでカーネルをコンパイルしている場合のみ機能します。

    bash# lidsadm -S -- -LIDS_GLOBAL

`LIDS_GLOBAL` が無効になっていると、システムは "通常の" Linux システムのように稼働します。LIDS を全体的に再び有効にするには、反対のことをします −

    bash# lidsadm -S -- +LIDS_GLOBAL

注意：今 LFS を有効にしているなら、これによって LFS が 影響をうけることはありません。

### "カーネルを封印する"とはどういうことですか？

起動プロセスの最後に、カーネルを封印する必要があります。これにより、システムに `/etc/lids/lids.cap` ファイルでのグローバルな権限がセットされます。ただし、ファイルの ACL はカーネルが封印される前でも執行されます。カーネルを封印するには、`rc.local`(SysV スタイルの init の場合) の最後に、これをつけたしてください −

    /sbin/lidsadm -I

"-I" オプションは、カーネルを封印する時のみ使われます。封印された後は、システムに変更を加えるために "-S" オプションを使う必要があります。

警告：起動時にカーネルを封印しなかった場合、LIDS で強化されたシステムの恩恵を完全に受けることはできません。

### LIDS システムの状態を見るにはどうすればいいの？

"-V" オプションを使うためには、lidsadm を view オプションを enable に した状態でコンパイルしておく必要があります。（通常の振舞は、 上記参照）

コマンドラインで、こう入力します −

    bash# lidsadm -V

こうすると、2.4.x カーネルの場合、このような出力が得られます −

    VIEW
                         CAP_CHOWN 0
                  CAP_DAC_OVERRIDE 0
               CAP_DAC_READ_SEARCH 0
                        CAP_FOWNER 0
                        CAP_FSETID 0
                          CAP_KILL 0
                        CAP_SETGID 0
                        CAP_SETUID 0
                       CAP_SETPCAP 0
               CAP_LINUX_IMMUTABLE 0
              CAP_NET_BIND_SERVICE 0
                 CAP_NET_BROADCAST 0
                     CAP_NET_ADMIN 0
                       CAP_NET_RAW 0
                      CAP_IPC_LOCK 0
                     CAP_IPC_OWNER 0
                    CAP_SYS_MODULE 0
                     CAP_SYS_RAWIO 0
                    CAP_SYS_CHROOT 0
                    CAP_SYS_PTRACE 0
                     CAP_SYS_PACCT 0
                     CAP_SYS_ADMIN 0
                      CAP_SYS_BOOT 1
                      CAP_SYS_NICE 0
                  CAP_SYS_RESOURCE 1
                      CAP_SYS_TIME 0
                CAP_SYS_TTY_CONFIG 0
                         CAP_MKNOD 0
                         CAP_LEASE 0
                        CAP_HIDDEN 1
                CAP_KILL_PROTECTED 0
                     CAP_PROTECTED 0
                              LIDS 0
                       LIDS_GLOBAL 1
                       RELOAD_CONF 0

上記の出力から読みとれるように、このシステムでは LFS が有効になっています。ただし、LIDS はグローバルに有効になっています。次に 1 がきている項目は有効なもので、0 がきているものは無効のものです。最後の 2 つの権限を除いて、root は通常これら全ての権限を持っています。LIDS のおかげで、この特定の状況において root は CAP_SYS_BOOT, SAP_SYS_RESOURCE, CAP_HIDDEN (注：CAP_HIDDEN は通常の Linux カーネルが提供する権限ではありません) といった権限のみを持っています。

### LIDS のポートスキャン検知を設定するにはどうすればいいですか？

必要ありません。LIDS で拡張したカーネルを設定するときにオプションを選んでいれば、ポートスキャン検知は有効になっています。

       [*]  Port Scanner Detector in kernel

### LIDS の --> --ACL における subject とobject とはなんですか？

subject はバイナリやシェルスクリプトといった、Linux システム上で実行で きるプログラムのことです。object は、subject がアクセスしようとするものです。これには、ファイル、ディレクトリ、権限といったものがあります。

### /etc/lids/lids.cap を修正して設定ファイルをリロードする以外にシステムの権限を有効/無効にすることはできますか？

できます。ただし、この方法だとシステムのシャットダウン後に変更が保存されません。

権限を有効にするには −

    bash# lidsadm -S -- +CAP_SYS_ADMIN

権限を無効にするには −

    bash# lidsadm -S -- -CAP_SYS_ADMIN

### LIDS の ACL を再設定したのに、変更が反映されていないように見えます。何が悪いのでしょう？

LIDS を再設定する時には、するべきことが 2 つあります −

1. 設定ファイルのリロード

2. 変更によって影響を受けるサービス(群)の再起動

### lidsconf -L が私の ACL を表示してくれないのですが？

lidsconf -L は LFS 上からか、LIDS_GLOBAL が無効になっている時に使わなければなりません。どちらの状態でもないなら、このエラーメッセージを見ることになります −

    lidsconf: can not open conf file
    reason:: Permission denied
    LIST

### コンソールに報告されるたくさんの LIDS 違反をどうにかして減らせないの？

できます。syslog の初期化スクリプトを修正して、klogd を "-c" オプションつきで起動させることができます。このオプションは、コンソールに記録されるシステムメッセージのデフォルトレベルを設定するものです。指定された値よりも低い値をもつメッセージがコンソールに表示されます (`include/linux/kernel.h`参照)。

例えば −

    klogd -c 4

klogd にレベル 4 以下の全メッセージをコンソールに記録するように指示します。

コンソールのログレベルを変更するには、`/proc/sys/kernel/printk` の値を修正するという方法もあります。詳細については、`/usr/src/linux/Documentation/sysctl/kernel.txt` で提供される文書を参照してください。

### LIDS を使う時は、LD_PRELOAD 環境変数に注意した方がいいですか？

はい。1.1.1preX よりも古いバージョンの LIDS を使用している場合には、読んでください。

setuid されたプログラムについて、LD_PRELOAD 環境変数は "未定義" ですから、プログラムによってロードされるライブラリに影響を及ぼすことはできません (最近の glibc の脆弱性といった例外はあります)。

問題が発生するのは、setuid されていないバイナリに特別な権限やファイルアクセス許可を与えたときです。LD_PRELOAD 環境変数はライブラリをロードする前は "未定義" ではないため、悪意のある誰かがトロイのライブラリをロードさせることができる上に、それはオリジナルのプログラムに与えられたのと同じ特別な権限/ファイルアクセス許可をもつことになってしまいます。

リスクを減らすために可能なオプションは −

- 特別な権限やファイルアクセス許可をもつプログラムは全て通常の unix ファイルパーミッションで制限されねばなりません。それにより、全員が実行できないようにします (e.g. `chmod o-rwx /path/to/program` )。

- 別解としては、ファイルを setuid した上で所有権を root 以外のユーザに変えるというのもあります。こうすると、プログラムの実行前に、LD_PRELOAD 環境変数は "未定義" となります。

セキュリティ上の更新：LIDS 1.1.1preX 以降から、LD_PRELOAD 環境変数は LIDS から特権を与えられる全てのプログラムに対して、自動的に無効になります。これは、LIDS 0.10.3 にもバックポートされています。

### 起動した時、"read password file error" というメッセージが表示されます。この問題を直すにはどうすればよいでしょう？

これは、最初に LIDS を起動する前に、LIDS のパスワードを設定し忘れた場合に発生します。問題を修正するには、マシンを再起動して (使用できないシステムの起動参照)、 LIDS パスワードを設定してください。

### LIDS が有効か無効かを調べるにはどうすればいいの？

lidsadm を 'make VIEW=1' としてコンパイルしてあれば、'lidsadm -V' を使って LIDS が有効になっているか知ることができます。'LIDS_GLOBAL 0' と表示されれば、LIDS は無効になっています。'LIDS 0' と表示されれば、誰かが LIDS フリーセッション を使っています。

lidsadm を VIEW オプションつきでコンパイルしていなかった場合は、LIDS が実行中か調べる方法はいくつか存在します。

1. dmesg に 'Linux Intrusion Detection System `<lids-version>` for `<kernel-version>` doesn't start' という行がないか調べることができます。もちろん、'Linux Intrusion Detection System `<lids-version>` for `<kernel-version>` starts' と出ていた場合には、LIDS は実行されています。

2. 本来ならできないはずの何事かをしでかして、LIDS が行動を起こすかを試すことができます。もし何も反応がなければ、LIDS は動作していません。

## LIDS の設定

### ファイルを読みとり専用にして保護する方法は？

    bash# lidsconf -A -o /some/file	-j READONLY

これにより、LIDS が有効になっていれば、(root を含む) 何者かが `/some/file` を変更したり削除したりするのを防ぐことができます。LFS にいるなら、適切なファイルパーミッションがあり、パーティションが読みとり専用で mount されているのでなければ、自由に `/some/file` を変更することができます。

### OK, じゃあディレクトリを読みとり専用にするにはどうすれば？

上と同じですが、指定するのは `/some/directory` です。

    bash# lidsconf -A -o /some/directory	 -j READONLY

オブジェクトがディレクトリの場合、LIDS はディレクトリそのものと、再帰的にその下の同じファイルシステム上にあるものを保護します。(e.g. LIDS の ACL はファイルシステムの境界を越しません！) これは覚えておくべき非常に重要なことで、それにより、はからずもシステムの一部を保護されないままにしておくことがなくなります。

読みとり専用として保護しておきたいと思うディレクトリは、`/etc` でしょう。

    bash# lidsconf -A -o /etc -j READONLY

### 誰からもファイル/ディレクトリを隠すことはできますか？

    bash# lidsconf -A -o /some/file_or_directory   -j DENY

繰り返しますが、これで、root すらアクセスが出来なくなります。さらに、もしこれがディレクトリであれば、その下にある全てのファイルとディレクトリも隠されます (もちろん、同じファイルシステムにあれば、です)。

### 追記しかできないようにログファイルを保護する方法は？

    bash# lidsconf -A -o /some/log/file  -j APPEND

これにより、同時に誰かがファイルの末尾に書きこんでも、既存の内容を消したり変更したりできないようになります。

システムログを追記専用として保護する簡単な方法はこうです −

    bash# lidsconf -A -o /var/log  -j APPEND

### /etc/shadow ファイルを読むのに、何も許可がなければ、どうやって私はシステムに認証されるの？

ユーザが自分自身をシステムに認証させるには、いくつかのプログラムに `/etc/shadow` への読みとり専用のアクセスをさせる必要があります。読みとりアクセスを与えるように考慮するかも知れないプログラムとしては − `login, sshd, su, vlock` などがあります。

login プログラムが `/etc/shadow` を読めるようにするには、この ACL を使います −

    bash# lidsconf -A -s /bin/login -o /etc/shadow -j READONLY

この場合、"-s" オプションは subject である `/bin/login` を指定しています。subject に対して、object (`/etc/shadow`) への読みとり専用アクセスを与えていることになります。

これにより、`/var/log` 以下にある全てのファイルが追記専用として保護されます。READ や DENY と同様に、このターゲットも再帰的です。

### /etc を読みとり専用で保護したら、mount はどうやって /etc/mtab へ書きこみをするのでしょう？

できません。この問題を修正するには、`/etc/mtab` ファイルを削除して、`/proc/mounts` へのシンボリックリンクに置きかえる方法があります。これを機能させるためには、起動スクリプトを修正して、全ての `mount` と `umount` コマンドが "-n" オプションを使うようにする必要があります。これにより、`mount` と `umount` は `/etc/mtab` ファイルを更新しなくなります。

例えば、こういうものを −

    mount -av -t nonfs,noproc

起動スクリプトの中に見つけたなら、このように変更します −

    mount -av -n -t nonfs,noproc

こういった `mount` コマンドは、起動スクリプト全体に散在しているでしょう。それら全てを捕まえるために、grep を使ってください。同じ方法で、全 `umount` コマンドの修正もしたいと思うでしょう。

### LIDS が、起動時に modules.dep ファイルに書きこめない、と文句を言います。何が悪いのですか？

これは、`/lib` が読みこみ専用で保護されている時に (そうするのは、よいことです) 発生します。受けとるエラーは、こういう感じになります −

    LIDS: depmod (3 12 inode 16119) pid 13203 user (0/0) on tty2: Try to open /lib/modules/2.2.18/modules.dep for writing,flag=578

これは、起動時に `/etc/rc.d/rc.sysinit` 起動スクリプトがモジュールの依存性を再構築しようとするからです。通常、これは必要ありません。というのも、モジュールを追加したり変更したり削除したりしない限り、モジュールの依存性は変化しないからです。エラーは無害ですが、見るのがいやなら単純に `/etc/rc.d/rc.sysinit`スクリプト中でモジュールの依存性を再構築している行 (`depmod -a` といったものを探してください) をコメントアウトすることができます。

### ログを追記専用で保護していると、logrotated はどうやってログをローテートするのでしょう？

なされません。ログのローテーションは、LIDS_GLOBAL が無効になっている時に、ログローテーションユーティリティを手動で実行してなされるべきものです。ログのローテーションを生起する cron のジョブは無効にするべきです。(別解については 下記 を参照してください)

### なぜ、単純にログローテーションユーティリティにログファイルのあるディレクトリへの書きこみ許可を与える方法で、それらをローテートするようにしてはいけないのですか？

しても構いませんが、お勧めしません。誰かがシステムに侵入し、例え彼らがログを変更することができなくても、侵入の間に集められた情報を持ったログが地上から姿を消すまで、(ログローテーションユーティリティを手動で実行して) ローテートを必要なだけ繰り返すことができます。これは、高度なセキュリティのために支払うべき代価の一部なのです。

ログローテーションユーティリティに `/var/log` への書きこみアクセスをさせる別解としては、cron デーモンに /var/log への書きこみ許可を与え、それを継承可能とする方法があります。

    lidsconf -A -s /usr/sbin/crond -i -o /var/log	-j WRITE

これで、誰かが手動でログローテーションユーティリティを実行することはできませんが、cron デーモンによって実行された時は動作するようになります。 警告： cron デーモンに脆弱性が見つかった場合は、誰かがそこを突くと、cron が `/var/log` への書きこみ権をもっているためにログを一掃できてしまいます。これは、そもそも MAC を用いる目的を無為にします。なにしろ、脆弱性が見つかれば、今やアクセス制御は迂回され得るのですから。このオプションは自己責任のもとに使うように！

更新： 新しい 時間制限 機能のため、crond が `/var/log` に書きこみ権限をもっているなら、それを特定の時間帯に制限するのをお勧めします。例えば、logrotated が crond によって毎日 6:00 AM に実行されるなら、crond の書きこみ権限を 1 分間に制限します −

    /sbin/lidsconf -A -s /usr/sbin/crond -i 2 -o /var/log -t 0600-0601 -j WRITE

1 分が十分な長さでないなら、logrotated が無事実行を終えるまで、時間を 1 分づつ増やしてください。

### LIDS が有効な時、シャットダウンまでファイルシステムがアンマウント出来ません。どうすればよいでしょう？

これは、CAP_SYS_ADMIN 権限を全体で無効にしていて、かつファイルシステムをアンマウントするための適切な権限を shutdown スクリプトに与えていない場合におこります。例えば、Red Hat6.2 では、`/etc/rc.d/init.d/halt` スクリプトがファイルシステムのアンマウントを行います。それに CAP_SYS_ADMIN 権限を与える必要があります。そうして、ファイルシステムのアンマウントが可能になるのです −

    bash# lidsconf -A -s /etc/rc.d/init.d/halt -o CAP_SYS_ADMIN -i 1 -j GRANT

ターゲット "GRANT" は LIDS に subject (この場合、`/etc/rc.d/init.d/halt`) に CAP_SYS_ADMIN 権限を許可するように伝えます。 "-i 1" オプションは、ACL の "継承レベル" を 1 にセットします。

これにより、`/etc/rc.d/init.d/halt` スクリプトを実行できる誰かにも、ファイルシステムのアンマウントが可能になることに注意してください。もしマシンに物理的にアクセスできるなら、シャットダウンスクリプトに権限を与えるよりも、シャットダウンの前に LIDS_GLOBAL を無効にするだけの方がいいかもしれません。とはいえ、停電時にシステムをシャットダウンさせることができる UPS を持っているなら、LIDS_GLOBAL を無効にするわけにはいかないでしょう。

### なぜ特権ポートを使うサービスが root で開始できないのですか？

特権ポート (1024 以下のもの) で走るサービスは、ポートにバインドするために CAP_NET_BIND_SERVICE 権限を必要とします。`/etc/lids/lids.cap` ファイルでこの権限を全体的に無効にしているなら、プログラム毎にその権限を許可せねばなりません。

    bash# lidsconf -A -s /usr/local/bin/apache -o CAP_NET_BIND_SERVICE 80 -j GRANT

あるいは、LIDS_GLOBAL が無効なときにサービスを開始してください。

### なぜ特権ポートを使うサービスを LFS から開始できないのですか？

LFS は、単一の端末セッションに適用されます。デーモンは、制御端末から自分を切り離すために、自分自身を fork します。こうなると、それはもはや端末の LFS には接続されておらず、ゆえに LIDS に保護されることになるのです。

### 権限を無効/有効にする方法は？

`/etc/lids/lids.cap` ファイルが LIDS で強化された Linux カーネルで利用できる全権限のリストを保持しています。頭に "+" のあるものが、有効になっているもので、"-" が頭についているものは、無効なものです。権限の状態を変更するには、単にテキストファイルを編集して "+" を "-" に変えれば権限は無効になりますし、逆だと有効になります。ファイルの編集が終わったら、LIDS に設定ファイルを リロードさせる必要があります。

### LIDS が有効になっていると X Window System が動作しないのはなぜですか？

使用している X サーバには CAP_SYS_RAWIO 権限が必要です。

    bash# lidsconf -A -s /path/to/your/X_server -o CAP_SYS_RAWIO -j GRANT

### これら ACL 全てに対して、私は一体全体どうやって自分の設定を把握しておけばよいのでしょう？

あなたが望む全ての ACL をシステムに追加するシェルスクリプトを作成するのをお勧めします。こうすれば、システムを変更した時に、はからずも何かを保護されないままにしておくことはありません。スクリプトは、古い ACL を消すことから始めれば、2 重に設定することもありません。

    bash# lidsconf -Z

このシェルスクリプトを保護するには、それへのアクセスを DENY する ACL を作ったり、`/etc/lids` ディレクトリへ配置して自動的に DENY で保護されるようにもできます。

### 起動とシャットダウンの時に LIDS が文句を言わないように、init に /etc/initrunlvl への書きこみアクセスを許すにはどうすればいいですか？

不幸にも、これについて出来ることはそう多くありません。`init` は起動の度にこのファイルを再作成するので、毎回 iノード番号が変化するのです。これにより、そのファイルは LIDS には扱いにくくなります。このエラーは無害ですし、`/etc/initrunlvl` がなくてもシステムは適切に機能します。

### プロセスは、親プロセスからそのファイル ACL を継承できますか？

できます。バージョン 0.9.12 から 2.2.18 までは、これがデフォルトの動作でした。現在は、デフォルトでは、子はその親からファイル ACL を継承しません。親プロセスから子プロセスへファイル ACL が移行できるようにするには、"-i <継承レベル>" オプションを使う必要があります。

"継承レベル" (別名 TTL) とは、ACL が継承される世代数を決定します。TTL に 1 が指定されれば、ACL で指定された subject とその子全ては ACL を継承します。しかし、子の子 (別の言い方をすれば ACL の subject の孫) は ACL を継承しません (こうなるようにするには、TTL を 2 にする必要があります)。

注意：権限を許可する ACL にも、これらと同じ継承のルールが適用されます。

セキュリティ上の更新 LIDS 1.1.1prex 及び 0.10.1 以降では、保護されたプログラムのみがその親から ACL を継承することができます。保護されていないプロセスに ACL の継承を許すと、exploit の原因となります。

### 助けて！　LIDS のもとでは、プログラム xyz が動作しないようです。どのファイル/権限にアクセスする必要があるのか、どうやって決めるのでしょう？

最初にするべきことは、単純にプログラムを実行して、LIDS がどんな違反を通告してくるかを見ることです。とはいえ、何度これをやっても、十分な情報は得られません。これが起きた時は、strace を使ってプログラムを追いかけて、どのシステムコールが失敗しているのか見ることができます。こうすると、たいていの場合はどの権限が違反しているのか、よい示唆を得ることができます。

注意：全体で CAP_SYS_PTRACE を無効にしているなら、LIDS が有効な状態でプログラムの追跡ができるように、一時的に strace に CAP_SET_PTRACE 権限を与える必要があります。

### /etc/shadow ファイルを更新する適切なパーミッションを passwd に与えるにはどうすればいいですか？

残念ながら、簡単な解は存在しません。これは、`passwd` ユーティリティがパスワードを変更するたびに `/etc/shadow` ファイルを再作成するからです。これにより、`passwd` ユーティリティを成功裏に使う度に、違う i ノードからファイルが始まるのです。

システム管理者には、簡単な解決法があります。LFS を開始して、LFS の中から `passwd` ユーティリティを使うのです。パスワードを変更する必要のあるユーザがいる場合、LDAP を使えば、ユーザが自分のパスワードを変更できるクライアント認証手段を提供してくれます。

標準的 unix システムファイルを使って、UNIX 認証をする時に、ユーザが自分のシステムパスワードを変更できるようにする選択肢があります。ですが、お勧めはできません。`/usr/bin/passwd` に /etc への書きこみアクセスを与えれば、いつでも shadow ファイルをその i ノード番号に関わらず修正できるようになります。

警告： 誰かが `/usr/bin/password` や、それが使うライブラリ/PAM モジュールの何れかに脆弱性を発見すれば、その人は潜在的に `/etc` ディレクトリへの書きこみアクセスを得ることができます。 脆弱性が見つかれば、あなたのアクセス制御を出し抜くことができるわけで、これはそもそも MAC を用いる目的を無駄にするものです。このオプションは自己の裁量で使うようにしてください。

`/usr/bin/passwd` に `/etc` への書きこみアクセスを与えることにしたのなら、`/etc` の下にあって、`/usr/bin/passwd` が修正できるようにしたくないファイルとディレクトリ全てを保護する ACL を作成することをお勧めします。 これにより、上記のリスクが著しく減少します (しかも正確に行えば、完全に取り除くこともできます)。

例えば：

    /sbin/lidsconf -A -s /usr/bin/passwd -o /etc                     -j WRITE
    /sbin/lidsconf -A -s /usr/bin/passwd -o /etc/hosts.allow         -j READONLY
    /sbin/lidsconf -A -s /usr/bin/passwd -o /etc/hosts.deny          -j READONLY
    /sbin/lidsconf -A -s /usr/bin/passwd -o /etc/rc0.d               -j READONLY
    /sbin/lidsconf -A -s /usr/bin/passwd -o /etc/rc1.d               -j READONLY
    /sbin/lidsconf -A -s /usr/bin/passwd -o /etc/rc2.d               -j READONLY
    /sbin/lidsconf -A -s /usr/bin/passwd -o /etc/rc3.d               -j READONLY
    /sbin/lidsconf -A -s /usr/bin/passwd -o /etc/rc4.d               -j READONLY
    /sbin/lidsconf -A -s /usr/bin/passwd -o /etc/rc5.d               -j READONLY
    /sbin/lidsconf -A -s /usr/bin/passwd -o /etc/rc6.d               -j READONLY
    /sbin/lidsconf -A -s /usr/bin/passwd -o /etc/init.d              -j READONLY
    /sbin/lidsconf -A -s /usr/bin/passwd -o /etc/cron.d              -j READONLY
    /sbin/lidsconf -A -s /usr/bin/passwd -o /etc/pam.d               -j READONLY
    ...

上は、どんなに想像力を逞しくしたところで完全なリストではありませんが、きっかけにはなります。`/etc` に `passwd` にアクセスさせたくないファイルやディレクトリを追加したときはいつでも、それを保護する新しい ACL を作らねばならないことも、頭に入れておいてください。

i ノードの更新に関するメモ： `/etc/shadow` や `/etc/passwd` へのアクセスを許可する ACL を定義したなら、LIDS にi ノードを更新したことを知らせ、それから設定ファイルを リロードするのを忘れないようにしなければなりません。さもないと、問題が生じることになります。

例えば：`/etc/passwd` が DENY で保護されており、`/bin/login` は `/etc/passwd` を読めるものとします。パスワードを変更した後、i ノードが更新されなければ、誰かが次回ログインしようとした時に問題が発生します。`/bin/login` は `/etc/passwd` を読みこむことができず、ログインが不可能になります。あるいはさらに酷く、単に <ENTER> キーを押すだけでログインできるようになってしまうのです。

### LIDS が有効になっていると、ssh や scp が動作しないのは何故ですか？

デフォルトでは、ssh/scp は外向きのコネクションを作成する時に、ソースポートとして特権ポートを使おうとします。これには、CAP_NET_BIND_SERVICE 権限が必要です。ですが、ソースポートとして 1023 以上のポートを使うように強いるため、`ssh_config` 中でこのオプションを指定することができます −

    UsePrivilegedPort no

あるいは、ssh (scp は ssh を使うので、これも動作します) に CAP_NET_BIND_SERVICE を許可することもできます −

    lidsconf -A -s /usr/bin/ssh -o CAP_NET_BIND_SERVICE 22 -j GRANT

### OpenSSH が起動時に開始されません。LIDS は `bash` が隠しファイルにアクセスしようとしている、とレポートを出しています。これはどうすれば直りますか？

これは、デフォルトポリシーを DENY として 秘密鍵を保護している時に発生します。openssh-server の RPM で提供される init スクリプトは `/etc/ssh` 下に秘密鍵ファイルがあるかチェックします。スクリプトは発見できなかった場合、それを生成するために ssh-keygen を実行します。Beckeygenthe 鍵は実際にはそこにあるので、ssh-keygen は失敗して、起動スクリプトは終了します。

これを修正するには、起動スクリプトから鍵ファイルのチェックを削除します −

    start)
          # Create keys if necessary
          #do_rsa_keygen;  <------------ Comment out these lines
          #do_dsa_keygen;

          echo -n "Starting sshd: "
          if [ ! -f $PID_FILE ] ; then
                  sshd
                  RETVAL=$?
                  if [ "$RETVAL" = "0" ] ; then
                          success "sshd startup"
                          touch /var/lock/subsys/sshd
                  else
                          failure "sshd startup"
                  fi
          fi
          echo
          ;;

注意：これが意味するのは、sshd が起動するより前に、手動で秘密鍵を作る必要がある、ということです。さもなければ、起動は失敗します。

### 隠しプロセスが走っているため、シャットダウン時にファイルシステムのいくつかがアンマウントできません。どうすればそれらを kill できますか？

隠しプロセスでも、そのプロセス id (pid) がわかれば kill できます。多くのシステムでは、起動時に開始された全プロセスの pid を、`/var` (普通 `/var/run` が使われます) の下のどこかに保存します。シャットダウンスクリプトを修正して、これらのファイルから pid を読み、適切なシグナルを送るようにできます。

例えば、システムが pid を `/var/run/<プロセス名>.pid` に保存しているなら、以下の行をシャットダウンスクリプトに追加することができます −

    for p in `ls /var/run/*.pid`
    do
       kill -15 `cat $p`
    done
    sleep 5
    sync;sync;sync

    for p in `ls /var/run/*.pid`
    do
       kill -9 `cat $p`
    done
    sleep 5
    sync;sync;sync

これらの行を含むシャットダウンスクリプトに、CAP_KILL と CAP_INIT_KILL 権限を許可しなければなりません。`/var/run` ディレクトリを init スクリプト群以外の全てから隠すのも、おそらくよい考えです。

別解としては、全てのプロセスに、TERM と KILL のシグナルを単に送るというのもあります。

    MAX_PROC=65535
    trap : 1 2 15
    I=1;while (( $I < $MAX_PROC ));do
            I=$(($I+1));
            if (( $$ != $I ));then
                    kill -15 $I;
            fi;
    done
    sleep 5
    sync;sync;sync;
    I=1;
    while (( $I < $MAX_PROC ));do
            I=$(($I+1));
            if (( $$ != $I ));then
                    kill -9 $I;
            fi;
    done
    sync;sync;sync

Nenad Micic はシャットダウン時に隠れプロセスを kill する独自の C プログラム を書きました。

### 基本的な設定から始めたいだけなんです。追加の保護を提供してくれて、さらにシステムの機能のほとんどを通常通りにしておいてくれるお勧めのセットアップはありますか？

これらのカーネルオプションを選択するようにしてください −

      ...
      [*]    Security alert when execing unprotected programs before sealing
      [*]      Do not execute unprotected programs before sealing lids
      ...
      [*]    Allow switching LIDS protections
      ...
      [*]      Allow reloading config. file

出発点としてよいのは、init スクリプトやシステムバイナリ、ライブラリを保護するものでしょう (ディストロによってこれらは変化することに注意) −

    /sbin/lidsconf -A -o /etc/rc0.d                  -j READONLY
    /sbin/lidsconf -A -o /etc/rc1.d                  -j READONLY
    /sbin/lidsconf -A -o /etc/rc2.d                  -j READONLY
    /sbin/lidsconf -A -o /etc/rc3.d                  -j READONLY
    /sbin/lidsconf -A -o /etc/rc4.d                  -j READONLY
    /sbin/lidsconf -A -o /etc/rc5.d                  -j READONLY
    /sbin/lidsconf -A -o /etc/rc6.d                  -j READONLY
    /sbin/lidsconf -A -o /etc/init.d                 -j READONLY
    /sbin/lidsconf -A -o /etc/rc                     -j READONLY
    /sbin/lidsconf -A -o /etc/rc.local               -j READONLY
    /sbin/lidsconf -A -o /etc/rc.sysconfig           -j READONLY

    /sbin/lidsconf -A -o /bin                        -j READONLY
    /sbin/lidsconf -A -o /sbin                       -j READONLY
    /sbin/lidsconf -A -o /lib                        -j READONLY

    /sbin/lidsconf -A -o /usr/bin                    -j READONLY
    /sbin/lidsconf -A -o /usr/sbin                   -j READONLY
    /sbin/lidsconf -A -o /usr/lib                    -j READONLY

`/usr/local` が別のパーティションにあるなら、以下の ACL も加えてください −

    /sbin/lidsconf -A -o /usr/local/bin              -j READONLY
    /sbin/lidsconf -A -o /usr/local/sbin             -j READONLY
    /sbin/lidsconf -A -o /usr/local/lib              -j READONLY

`/etc/lids/lids.cap` ファイルで、CAP_SYS_RAWIO と CAP_SYS_PTRACE も無効にするべきです。CAP_SYS_RAWIO を無効にしなければ、デバイスに直接書きこむことで、誰でも上記のファイル保護を無視できてしまいます。

X Window System を実行しているなら、LIDS の下で X を動作させることについて、上記 も参照するようにしてください。

### 日時をもとにしてアクセスを制限することはできますか？

できます。LIDS バージョン 0.10.1 for 2.2.19 とバージョン 1.0.10 for 2.4.5 での新しい機能で、ACL の記載を時間制限できるようにします。例えば、ログインを 9:00 AM から 6:00 PM (18:00) までの時間のみ許すには −

    /sbin/lidsconf -A -s /bin/login -o /etc/shadow -t 0900-1800 -j READONLY

これで、`/bin/login` は `/etc/shadow` ファイルを指定された時間帯にのみ読むことができるので、その時間帯以外のあらゆるログインの試みは失敗します。否定のために "!" 演算子を使うこともできます (例えば、ACL がリストされた時間帯以外の全アクセスを許容する、など)。

crond に時間制限された権限を与えるなら、(root を含む)全員から crontab を隠し、crond のみがそれらを読めるようにすることを特にお勧めします。さもなければ、その crontab を見て、どの時間に何かを試して食いものにすればいいか、誰かが検討をつけてしまうかも知れません。ユーザのものだけでなく、システムの crontab を守ることも忘れないでください。

例えば、これらは隠すべきです −

    /var/spool/cron/
    /etc/crontab
    /etc/cron.hourly/
    /etc/cron.daily/
    /etc/cron.weekly/
    /etc/cron.monthly/
    /etc/cron.d/

警告： この新しい機能はシステムの時刻に依存しているので、システムの時刻を変更し得るどんなプログラム (例えば `/sbin/hwclock`) にも、CAP_SYS_RAWIO を与えるべきではありません。 これによって、誰かがシステムの時刻を変更して、時間制限をすり抜けてしまうかもしれません。

### プログラムがバインドできるポートを制限するにはどうすればいいの？

バージョン 0.10.1 for 2.2.19 とバージョン 1.0.11 for 2.4.6 からは、プログラムがバインドできる特権ポートを制限できます。プログラムに CAP_NET_BIND_SERVICE 権限を与える場合には、プログラムがバインドできるポート (群) をその後に指定します。次のようにします −

    /sbin/lidsconf -A -s /bin/httpd -o CAP_NET_BIND_SERVICE 80-80 -j GRANT

または、SSL 用に 443 ポートもバインドする必要があるなら −

    /sbin/lidsconf -A -s /bin/httpd -o CAP_NET_BIND_SERVICE 80-80,443-443 -j GRANT

プログラムがポートの範囲を必要とするなら、このようにしてみて下さい −

    /sbin/lidsconf -A -s /path/to/program -o CAP_NET_BIND_SERVICE 423-867 -j GRANT

### /etc/mtab を /proc/mounts へのシンボリックリンクにしても、ユーザクオータは機能しますか？

はい、"-a" オプションで quotaon を開始すればよいのです。

### LIDS が保護しているファイルを編集すると、LIDS に保護されなくなるようです。なぜですか？

多くのエディタ (例えば vi) は、編集中のファイルをテンポラリファイルにコピーします。変更は全てそのテンポラリファイルに対してなされるのです。エディタを終了すると、テンポラリファイルがオリジナルのファイルを上書きします。これによってオリジナルファイルの i ノードが変わり、そのファイルに関係していた以前の LIDS ACL はもう機能しなくなるのです。こう入力して −

    /sbin/lidsconf -U

lids.conf 内のファイルの i ノードを更新してください。

### LIDS の設定を更新したら、いくつかのプロセスが権限を失っちゃうようです

これは、プロセスが権限を継承によって得た時に起きます。次の状況を考えてみてください −

親プロセスが、その権限を子プロセスに与えたのち、親プロセスが終了して、子プロセスがまだ残っているとします。この時に LFS を開始して、 ACL を変更して設定をリロードすると、 LIDS は再び、親プロセスの権限とそのプロセス自身の権限に基づいて、権限を与えます。このとき、親プロセスが動いていないときには、プロセスはそれらの権限を受け取る事が出来ずに、エラーを返します。

## セキュリティ警告の設定

### ネットワーク越しにセキュリティ警告を送るには、どのカーネル設定オプションが必要ですか？

    [*]   Send security alerts through network
    [ ]      Hide klids kernel thread
    (3)      Number of connection tries before giving up
    (30)     Sleep time after a failed connection
    (16)     Message queue size
    [*]      Use generic mailer pseudo-script

最初のオプションで、セキュリティ警告が使えるようになります。2 番目のオプションでは、警告を送るプロセスを隠すことができます。メールでの通知が動作するまでは、このオプションは無効なままにしておくことをお勧めします。なぜなら、これはエラーメッセージのログ取りも妨げるからです。最後のオプションは、あらゆる警告メッセージをあなたのメールサーバに送るために、 LIDS が提供する一般的なメーラスクリプトを使うよう、LIDS に指示するものです。これは今のところ唯一のオプションです。

### LIDS の警告を送るメールサーバと e-mail アドレスの情報は、どこで指定すればいいのですか？

セキュリティ警告を送信するのに必要な全ての情報は、`/etc/lids/lids.net` ファイルで設定される必要があります。各オプションの説明は、設定ファイルそのもので提供されます。e-mail アドレスを指定する時は、 e-mail アドレスの前後に、どんなスペースも残さないように気をつけてください。これにより、配送に問題が生じる可能性があります。例えば、次に挙げる 2 つのMAIL_TO の例は、機能しません −

    "MAIL_TO= steve@somedomain.org"
    "MAIL_TO=steve@somedomain.org "

注意：二重引用符は、後に続くスペースを視覚化するためだけに使われています。実際の設定ファイルには含めていはいけません。

`/etc/lids/lids.net` ファイルに変更を行った後は、LIDS に設定ファイルの リロード を指示するようにしてください。

### LIDS が、私の qmail SMTP サーバには警告を配信してくれないようです。これは直せますか？

直せます。LIDS のバージョン 0.9.12 以前だと、LIDS の e-mail 警告を qmail SMTP サーバで機能させるにはパッチが必要です。パッチはここにあります − http://www.egroups.com/message/lids/1896.

## 設定のサンプル

注意： LIDS の開発は急速に進んでおり、実際ソフトウェアパッケージも変化しているため、これらの設定の幾つかは、きちんと動かずに"もう駄目"になっているかもしれません。しかしながら、これらの設定は、ここに載っているサービスの設定に興味がある人にとって、良いスタートポイントになるでしょう。

### 基本的なシステムのセットアップ

次のものは、基本的なシステムをセットアップする設定のサンプルです。

    # Protect System Binaries
    # システムバイナリの保護
    #
    /sbin/lidsconf -A -o /sbin                               -j READONLY
    /sbin/lidsconf -A -o /bin                                -j READONLY

    # Protect all of /usr and /usr/local
    # (This assumes /usr/local is on a separate file system).
    # /usr と /usr/local の保護
    # (ここでは /usr/local は別のファイルシステム上にあると想定しています)
    #
    /sbin/lidsconf -A -o /usr                                -j READONLY
    /sbin/lidsconf -A -o /usr/local                          -j READONLY

    # Protect the System Libraries
    #(/usr/lib is protected above since /usr/lib generally isn't
    # on a separate file system than /usr)
    # システムライブラリの保護
    # (/usr/lib は普通 /usr と別のファイルシステム上にはないので、
    #  すでに上で保護されています)
    #
    /sbin/lidsconf -A -o /lib                                -j READONLY

    # Protect /opt
    # /opt を保護
    #
    /sbin/lidsconf -A -o /opt				-j READONLY

    # Protect System Configuration files
    # システムの設定ファイルを保護
    #
    /sbin/lidsconf -A -o /etc                                -j READONLY
    /sbin/lidsconf -A -o /usr/local/etc                      -j READONLY
    /sbin/lidsconf -A -o /etc/shadow                         -j DENY
    /sbin/lidsconf -A -o /etc/lilo.conf                      -j DENY

    # Enable system authentication
    # システムの認証を有効に
    #
    /sbin/lidsconf -A -s /bin/login -o /etc/shadow           -j READONLY
    /sbin/lidsconf -A -s /usr/bin/vlock -o /etc/shadow       -j READONLY
    /sbin/lidsconf -A -s /bin/su -o /etc/shadow              -j READONLY
    /sbin/lidsconf -A -s /bin/su \
                      -o CAP_SETUID                          -j GRANT
    /sbin/lidsconf -A -s /bin/su \
                      -o CAP_SETGID                          -j GRANT

    # Protect the boot partition
    # boot パーティションの保護
    #
    /sbin/lidsconf -A -o /boot                               -j READONLY

    # Protect root's home dir, but allow bash history
    # root のホームディレクトリを保護するが、bash の履歴は許可
    #
    /sbin/lidsconf -A -o /root                               -j READONLY
    /sbin/lidsconf -A -s /bin/bash -o /root/.bash_history    -j WRITE

    # Protect system logs
    # システムログの保護
    #
    /sbin/lidsconf -A -o /var/log                            -j APPEND
    /sbin/lidsconf -A -s /bin/login -o /var/log/wtmp         -j WRITE
    /sbin/lidsconf -A -s /bin/login -o /var/log/lastlog      -j WRITE
    /sbin/lidsconf -A -s /sbin/init -o /var/log/wtmp         -j WRITE
    /sbin/lidsconf -A -s /sbin/init -o /var/log/lastlog      -j WRITE
    /sbin/lidsconf -A -s /sbin/halt -o /var/log/wtmp         -j WRITE
    /sbin/lidsconf -A -s /sbin/halt -o /var/log/lastlog      -j WRITE
    /sbin/lidsconf -A -s /etc/rc.d/rc.sysinit \
                      -o /var/log/wtmp -i 1                  -j WRITE
    /sbin/lidsconf -A -s /etc/rc.d/rc.sysinit \
                      -o /var/log/lastlog -i 1               -j WRITE

    # Startup
    #
    /sbin/lidsconf -A -s /sbin/hwclock -o /etc/adjtime       -j WRITE

    # Shutdown
    #
    /sbin/lidsconf -A -s /sbin/init -o CAP_INIT_KILL         -j GRANT
    /sbin/lidsconf -A -s /sbin/init -o CAP_KILL              -j GRANT

    # Give the following init script the proper privileges to kill processes and
    # unmount the file systems.  However, anyone who can execute these scripts
    # by themselves can effectively kill your processes.  It's better than
    # the alternative, however.
    # これらの起動スクリプトに、プロセスを kill したり ファイルシステムを
    # アンマウントするための適切な権限を与えてください。とはいえ、これらの
    # スクリプトを自分で実行る人はみな、効果的にプロセスを kill することが
    # できます。ですが、他の方法よりはマシなはずです。
    #
    # Any ideas on how to get around this are welcome!
    # これを解決するアイデアを歓迎します!
    #
    /sbin/lidsconf -A -s /etc/rc.d/init.d/halt \
                      -o CAP_INIT_KILL -i 1                  -j GRANT
    /sbin/lidsconf -A -s /etc/rc.d/init.d/halt \
                      -o CAP_KILL -i 1                       -j GRANT
    /sbin/lidsconf -A -s /etc/rc.d/init.d/halt \
                      -o CAP_NET_ADMIN -i 1                  -j GRANT
    /sbin/lidsconf -A -s /etc/rc.d/init.d/halt \
                      -o CAP_SYS_ADMIN -i 1                  -j GRANT

    # Other
    #
    /sbin/lidsconf -A -s /sbin/update -o CAP_SYS_ADMIN       -j GRANT

### Apache

この設定サンプルでは、Apache が `/usr/local/apache` に、ログディレクトリが `/var/log/httpd` に、設定ディレクトリが `/etc/httpd` にインストールされていることを前提にしています。ACL 中のパスを、各自の設定に合うように調整しなくてはなりません。この設定では、ポート 80 (ことによると 443 も) をバインドできるように、Apache はカーネルを封印するより前か、LIDS_GLOBAL が無効な時に起動する必要があります。

    /sbin/lidsconf -A -s /usr/local/apache/bin/httpd \
                      -o CAP_SETUID                          -j GRANT
    /sbin/lidsconf -A -s /usr/local/apache/bin/httpd \
                      -o CAP_SETGID                          -j GRANT

    # Config files
    /sbin/lidsconf -A -o /etc/httpd                          -j DENY
    /sbin/lidsconf -A -s /usr/local/apache/bin/httpd \
                      -o /etc/httpd                          -j READONLY

    # Server Root
    /sbin/lidsconf -A -o /usr/local/apache                   -j DENY
    /sbin/lidsconf -A -s /usr/local/apache/bin/httpd \
                      -o /usr/local/apache                   -j READONLY

    # Log Files
    /sbin/lidsconf -A -o /var/log/httpd                      -j DENY
    /sbin/lidsconf -A -s /usr/local/apache/bin/httpd \
                      -o /var/log/httpd                      -j APPEND
    /sbin/lidsconf -A -s /usr/local/apache/bin/httpd \
                      -o /usr/local/apache/logs              -j WRITE

### Qmail

これらの ACL は、Dave Sill の Life with qmail によってインストールされた qmail のセットアップ向けに書かれています。この設定では、tcpserver がポート 25 をバインドできるように、qmail はカーネルを封印するより前か、LIDS_GLOBAL が無効な時に起動する必要があります。

    # setup
    /sbin/lidsconf -A -o /var/qmail                          -j READONLY
    /sbin/lidsconf -A -s /usr/local/bin/multilog \
                      -o /var/log/qmail                      -j WRITE
    /sbin/lidsconf -A -s /usr/local/bin/svc \
                      -o /var/qmail/supervise                -j WRITE

    # queue access
    # キューへのアクセス
    #
    /sbin/lidsconf -A -s /var/qmail/bin/qmail-inject \
                      -o /var/qmail/queue                    -j WRITE
    /sbin/lidsconf -A -s /var/qmail/bin/qmail-rspawn \
                      -o /var/qmail/queue                    -j WRITE
    /sbin/lidsconf -A -s /var/qmail/bin/qmail-lspawn \
                      -o /var/qmail/queue                    -j WRITE
    /sbin/lidsconf -A -s /var/qmail/bin/qmail-queue \
                      -o /var/qmail/queue                    -j WRITE
    /sbin/lidsconf -A -s /var/qmail/bin/qmail-clean \
                      -o /var/qmail/queue                    -j WRITE
    /sbin/lidsconf -A -s /var/qmail/bin/qmail-send \
                      -o /var/qmail/queue                    -j WRITE
    /sbin/lidsconf -A -s /var/qmail/bin/qmail-remote \
                      -o /var/qmail/queue                    -j WRITE

    # Access to local mail boxes
    # ローカルメールボックスへのアクセス
    /sbin/lidsconf -A -s /var/qmail/bin/qmail-lspawn \
                      -o CAP_SETUID                          -j GRANT
    /sbin/lidsconf -A -s /var/qmail/bin/qmail-lspawn \
                      -o CAP_SETGID                          -j GRANT
    /sbin/lidsconf -A -s /var/qmail/bin/qmail-lspawn \
                      -o CAP_DAC_OVERRIDE                    -j GRANT
    /sbin/lidsconf -A -s /var/qmail/bin/qmail-lspawn \
                      -o CAP_DAC_READ_SEARCH                 -j GRANT

    # Remote delivery
    # リモート配送
    /sbin/lidsconf -A -s /var/qmail/bin/qmail-rspawn \
                      -o CAP_NET_BIND_SERVICE -i -1          -j GRANT

    # supervise

    /sbin/lidsconf -A -s /usr/local/bin/supervise \
                      -o /var/qmail/supervise/qmail-smtpd/supervise     -j WRITE
    /sbin/lidsconf -A -s /usr/local/bin/supervise \
                      -o /var/qmail/supervise/qmail-smtpd/log/supervise -j WRITE
    /sbin/lidsconf -A -s /usr/local/bin/supervise \
                      -o /var/qmail/supervise/qmail-send/supervise      -j WRITE
    /sbin/lidsconf -A -s /usr/local/bin/supervise \
                      -o /var/qmail/supervise/qmail-send/log/supervise  -j WRITE

### Dnscache &amp Tinydns (djbdns)

これらの ACL は、Jeremy Rauch の Installing djbdns (DNScache) for Name Service のパート 1 &amp 2 をもとにした djbdns のセットアップ向けに書かれています。 この設定では、 dnscache と tinydns はカーネルを封印する前に開始されているか、それらのプログラムがポート 53 をバインドする時に LIDS_GLOBAL が無効になっていなければなりません。

    # dnscache
    #
    /sbin/lidsconf -A -o /var/dnscache                        -j READONLY
    /sbin/lidsconf -A -s /usr/local/bin/supervise \
                      -o /var/dnscache/dnscache/supervise     -j WRITE
    /sbin/lidsconf -A -s /usr/local/bin/supervise \
                      -o /var/dnscache/dnscache/log/supervise -j WRITE
    /sbin/lidsconf -A -s /usr/local/bin/multilog \
                      -o /var/dnscache/dnscache/log/main      -j WRITE

    # tinydns
    #
    /bin/echo "tinydns"

    /sbin/lidsconf -A -s /usr/local/bin/supervise \
                      -o /var/dnscache/tinydns/supervise      -j WRITE
    /sbin/lidsconf -A -s /usr/local/bin/supervise \
                      -o /var/dnscache/tinydns/log/supervise  -j WRITE
    /sbin/lidsconf -A -s /usr/local/bin/multilog \
                      -o /var/dnscache/tinydns/log/main       -j WRITE

### Courier-imap

これらの ACL は、courier-imap が `/usr/local/courier-imap` にインストールされていることを前提にしています。この設定では、ポート 143 をバインドできるように、courier-imap はカーネルを封印する前か、LIDS_GLOBAL が無効な時に起動する必要があります。

    /sbin/lidsconf -A -o /usr/local/courier-imap                     -j DENY

    /sbin/lidsconf -A -s /usr/local/courier-imap/sbin/imaplogin \
                      -o /etc/shadow                                 -j READONLY
    /sbin/lidsconf -A -s /usr/local/courier-imap/libexec/authlib/authpam \
                      -o /etc/shadow                                 -j READONLY
    /sbin/lidsconf -A -s /usr/local/courier-imap/libexec/couriertcpd \
                      -o /usr/local/courier-imap                     -j READONLY

    /sbin/lidsconf -A -s /usr/local/courier-imap/libexec/couriertcpd \
                      -o CAP_SETUID -i 3                             -j GRANT
    /sbin/lidsconf -A -s /usr/local/courier-imap/libexec/couriertcpd \
                      -o CAP_SETGID -i 3                             -j GRANT
    /sbin/lidsconf -A -s /usr/local/courier-imap/libexec/couriertcpd \
                      -o CAP_DAC_OVERRIDE -i 3                       -j GRANT
    /sbin/lidsconf -A -s /usr/local/courier-imap/libexec/couriertcpd \
                      -o CAP_DAC_READ_SEARCH -i 3                    -j GRANT

### MySQL

これらの ACL は、MySQL が `/usr/local/mysql` にインストールされていることを前提にしています。

    /sbin/lidsconf -A -o /usr/local/mysql/var                -j APPEND

    /sbin/lidsconf -A -o /usr/local/mysql                    -j DENY
    /sbin/lidsconf -A -s /usr/local/mysql/libexec/mysqld \
                      -o /usr/local/mysql                    -j READONLY
    /sbin/lidsconf -A -s /usr/local/mysql/libexec/mysqld \
                      -o /usr/local/mysql/var                -j WRITE

### OpenSSH (3.4p1)

これらの設定は、sshd に CAP_NET_BIND_SERVICE 権限を与えていますので、起動後、LIDS_GLOBAL が有効な時に機能します。

    /sbin/lidsconf -A -s /usr/sbin/sshd -o /etc/shadow      -j READONLY

    /sbin/lidsconf -A -o /etc/ssh/sshd_config               -j DENY
    /sbin/lidsconf -A -o /etc/ssh/ssh_host_key              -j DENY
    /sbin/lidsconf -A -o /etc/ssh/ssh_host_dsa_key          -j DENY

    /sbin/lidsconf -A -s /usr/sbin/sshd \
                      -o /etc/ssh/sshd_config               -j READONLY
    /sbin/lidsconf -A -s /usr/sbin/sshd \
                      -o /etc/ssh/ssh_host_key              -j READONLY
    /sbin/lidsconf -A -s /usr/sbin/sshd \
                      -o /etc/ssh/ssh_host_dsa_key          -j READONLY

    /sbin/lidsconf -A -s /usr/sbin/sshd \
                      -o /var/log/wtmp                      -j WRITE
    /sbin/lidsconf -A -s /usr/sbin/sshd \
                      -o /var/log/lastlog                   -j WRITE

    /sbin/lidsconf -A -s /usr/sbin/sshd \
                      -o CAP_SETUID                         -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/sshd \
                      -o CAP_SETGID                         -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/sshd \
                      -o CAP_FOWNER                         -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/sshd \
                      -o CAP_CHOWN                          -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/sshd \
                      -o CAP_DAC_OVERRIDE                   -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/sshd \
                      -o CAP_NET_BIND_SERVICE 22-22         -j GRANT
    /sbin/lidscond -A -s /usr/sbin/sshd \
    		  -o CAP_SYS_CHROOT			-j GRANT
    /sbin/lidscond -A -s /usr/sbin/sshd \
    		  -o CAP_SYS_RESOURCE			-j GRANT
    /sbin/lidscond -A -s /usr/sbin/sshd \
    		  -o CAP_SYS_TTY_CONFIG			-j GRANT

### OpenLDAP (slapd)

これらの設定は、slapd に CAP_NET_BIND_SERVICE 権限を与えていますので、起動後、LIDS_GLOBAL が有効な時に機能します。

    /sbin/lidsconf -A -s /usr/local/libexec/slapd \
                      -o /usr/local/ldapdb 			-j WRITE
    /sbin/lidsconf -A -s /usr/local/libexec/slapd \
                      -o CAP_NET_BIND_SERVICE                -j GRANT
    /sbin/lidsconf -A -s /usr/local/libexec/slapd \
                      -o CAP_INIT_KILL                       -j GRANT
    /sbin/lidsconf -A -s /usr/local/libexec/slapd \
                      -o CAP_SYS_MODULE                      -j GRANT

### Port Sentry

これらの設定は、portsentry に CAP_NET_BIND_SERVICE 権限を与えていますので、起動後、LIDS_GLOBAL が有効な時に機能します。portsentry にやらせようと思っている内容によって、これらの ACL 全ては必要だったり不要だったりするかもしれません。

    /sbin/lidsconf -A -s /usr/local/psionic/portsentry/portsentry \
                      -o /usr/local/psionic/portsentry 					-j WRITE
    /sbin/lidsconf -A -s /usr/local/psionic/portsentry/portsentry \
                      -o /var/log 												-j WRITE
    /sbin/lidsconf -A -s /usr/local/psionic/portsentry/portsentry \
                      -o CAP_NET_BIND_SERVICE                        -j GRANT

    # For portsentry to be able to update the firewall:
    # portsentry がファイアウォールを更新するため：
    /sbin/lidsconf -A -s /usr/local/psionic/portsentry/portsentry \
                      -o CAP_NET_RAW -i 1                            -j GRANT

    # For portsentry to be able to update /etc/hosts.allow and/or /etc/hosts.deny:
    # portsentry が /etc/hosts.allow や/etc/hosts.deny を更新するため：
    /sbin/lidsconf -A -s /usr/local/psionic/portsentry/portsentry \
                      -o /etc/hosts.allow             		-j WRITE
    /sbin/lidsconf -A -s /usr/local/psionic/portsentry/portsentry \
                      -o /etc/hosts.deny             		-j WRITE

### Samba

この設定では、ポート 137 &amp 139 をバインドできるように、Samba はカーネルを封印するより前か、LIDS_GLOBAL が無効になっている時に起動する必要があります。

    /sbin/lidsconf -A -o /etc/samba -j READONLY
    /sbin/lidsconf -A -o /var/samba -j READONLY
    /sbin/lidsconf -A -s /usr/sbin/smbd -o /var/samba -j WRITE
    /sbin/lidsconf -A -s /usr/sbin/nmbd -o /var/samba -j WRITE

    # smbd needs write access to smbpasswd to chmod it.  i think it
    # also needs access to MACHINE.SID
    # smbd は chmod するために smbpasswd への書きこみ権限が必要です。
    # MACHINE.SID にも同様に必要だと思います。
    /sbin/lidsconf -A -s /usr/sbin/smbd -o /etc/samba -j WRITE
    /sbin/lidsconf -A -s /usr/sbin/smbd -o /etc/shadow -j READONLY

    /sbin/lidsconf -A -s /usr/sbin/smbd -o CAP_SETUID -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/smbd -o CAP_SETGID -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/smbd -o CAP_HIDDEN -j GRANT

    # LIDS complains about smbd trying to chroot to /
    # everything still seems to work without it, though
    # (and isn't chrooting to / kinda pointless anyway?)
    # LIDS は smbd が /  に chroot しようとする旨文句を言います。
    # ただ、それなしでも全てうまく機能しているようには見えます。
    # (しかも / に chroot してはいないのに、ちょっと無駄じゃない？)
    #/sbin/lidsconf -A -s /usr/sbin/smbd -o CAP_SYS_CHROOT -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/nmbd -o CAP_HIDDEN -j GRANT

### Linux HA heartbeat

    /sbin/lidsconf -A -o /usr/lib/heartbeat/heartbeat                -j READONLY
    /sbin/lidsconf -A -s /usr/lib/heartbeat/heartbeat \
                      -o CAP_NET_BIND_SERVICE -i -1                  -j GRANT
    /sbin/lidsconf -A -s /usr/lib/heartbeat/heartbeat \
                      -o CAP_SYS_RAWIO -i -1                         -j GRANT
    /sbin/lidsconf -A -s /usr/lib/heartbeat/heartbeat \
                      -o CAP_NET_BROADCAST -i -1                     -j GRANT
    /sbin/lidsconf -A -s /usr/lib/heartbeat/heartbeat \
                      -o CAP_NET_ADMIN -i -1                         -j GRANT
    /sbin/lidsconf -A -s /usr/lib/heartbeat/heartbeat \
                      -o CAP_NET_RAW -i -1                           -j GRANT
    /sbin/lidsconf -A -s /usr/lib/heartbeat/heartbeat \
                      -o CAP_SYS_ADMIN -i -1                         -j GRANT

    # For sending Gratuitous Arps
    # 余計な Arp を送るため

    /sbin/lidsconf -A -o /usr/lib/heartbeat/send_arp                 -j READONLY
    /sbin/lidsconf -A -s /usr/lib/heartbeat/send_arp \
                      -o CAP_NET_RAW -i -1                           -j GRANT

    # For modifying the routing table when the IP address changes
    # IP アドレス変更時にルーティングテーブルを修正するため

    /sbin/lidsconf -A -o /sbin/route                                 -j READONLY
    /sbin/lidsconf -A -s /sbin/route -o CAP_NET_ADMIN -i 0           -j GRANT

    #
    # Protect the heartbeat configuration and authentication key.
    # heartbeat の設定と認証キーを保護します
    #
    /sbin/lidsconf -A -o /etc/ha.d/ha.cf                             -j READONLY
    /sbin/lidsconf -A -o /etc/ha.d/haresources                       -j READONLY
    /sbin/lidsconf -A -o /etc/ha.d/authkeys                          -j DENY

    #
    # Only heartbeat can see the authkey
    # hertbeat のみが authkey を読めます
    #
    /sbin/lidsconf -A -s /usr/lib/heartbeat/heartbeat \
                      -o /etc/ha.d/authkeys                          -j READONLY

### Bind 9.x

    /sbin/lidsconf -A -s /usr/sbin/named  -o CAP_NET_BIND_SERVICE 53 -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/named  -o CAP_SETPCAP             -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/named  -o CAP_SYS_CHROOT          -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/named  -o CAP_SYS_RESOURCE        -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/named  -o CAP_SETUID              -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/named  -o CAP_SETGID              -j GRANT

### Sendmail

    # Sendmail LIDS rules (using infinite inheritance for the sendmail
    # children and delivery agents to work properly, but a lower inheritance
    # like 2 or 3 would probably work as well.)
    # Sendmail 用 LIDS ルール
    # (sendmail の子孫や配送エージェントが適切に動作するように
    # 無限の継承を使っていますが、2, 3 のより低い継承でもおそらく
    # 同じように動作するでしょう。)

    # Lock down /etc/mail if it's not already done elseware
    # どこか他で既になされていないなら、/etc/mail を読めるようにします
    /sbin/lidsconf -A -o /etc/mail -j READONLY

    /sbin/lidsconf -A -o /usr/sbin/sendmail -j READONLY
    /sbin/lidsconf -A -s /usr/sbin/sendmail -o /etc/shadow -j READONLY -i -1
    /sbin/lidsconf -A -s /usr/sbin/sendmail -o /etc/passwd -j READONLY -i -1
    /sbin/lidsconf -A -s /usr/sbin/sendmail -o /etc/mail   -j READONLY -i -1
    /sbin/lidsconf -A -s /usr/sbin/sendmail -o /etc/mail/aliases   -j WRITE -i -1
    /sbin/lidsconf -A -s /usr/sbin/sendmail -o /etc/mail/aliases.db   -j WRITE -i -1
    /sbin/lidsconf -A -s /usr/sbin/sendmail -o CAP_SETUID -j GRANT -i -1
    /sbin/lidsconf -A -s /usr/sbin/sendmail -o CAP_SETGID -j GRANT -i -1
    /sbin/lidsconf -A -s /usr/sbin/sendmail -o CAP_SYS_ADMIN -j GRANT -i -1
    /sbin/lidsconf -A -s /usr/sbin/sendmail -o CAP_NET_BIND_SERVICE 25-25 -j GRANT -i -1

    # Depending on how you have the log files secured
    # (The maillog will normally get rotated out and this
    # rule will stop working when that happens unless you
    # stop the log rotation.)
    # ログファイルをどのように安全にしているかによって
    # (mail ログは通常ローテートされているでしょう。このルールは
    # ログのローテーションをやめない限り、それが起きた時点で機能
    # しなくなります。

    /sbin/lidsconf -A -s /usr/sbin/sendmail -o /var/log/maillog -j APPEND -i -1

### Apcupsd

    /sbin/lidsconf -A -o /etc/apcupsd                                        -j DENY
    /sbin/lidsconf -A -s /sbin/apcupsd -o /etc/apcupsd                       -j READONLY
    /sbin/lidsconf -A -s /sbin/apcupsd -o CAP_HIDDEN -i -1                   -j GRANT

### Pump

    /sbin/lidsconf -A -s /sbin/pump -o CAP_NET_BIND_SERVICE 68-68            -j GRANT
    /sbin/lidsconf -A -s /sbin/pump -o CAP_NET_RAW                           -j GRANT
    /sbin/lidsconf -A -s /sbin/pump -o CAP_HIDDEN                            -j GRANT

### Snort

    /sbin/lidsconf -A -s /usr/sbin/snort -o CAP_DAC_OVERRIDE                 -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/snort -o CAP_NET_RAW                      -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/snort -o CAP_HIDDEN                       -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/snort -o CAP_SETUID                       -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/snort -o CAP_SETGID                       -j GRANT

### Getty

    /sbin/lidsconf -A -s /sbin/getty -o CAP_DAC_OVERRIDE                     -j GRANT
    /sbin/lidsconf -A -s /sbin/getty -o CAP_HIDDEN                           -j GRANT

### Login

    /sbin/lidsconf -A -s /bin/login -o /etc/shadow                           -j READONLY
    /sbin/lidsconf -A -s /bin/login -o CAP_SETUID                            -j GRANT
    /sbin/lidsconf -A -s /bin/login -o CAP_SETGID                            -j GRANT
    /sbin/lidsconf -A -s /bin/login -o CAP_CHOWN                             -j GRANT
    /sbin/lidsconf -A -s /bin/login -o CAP_FSETID                            -j GRANT

### Su

    /sbin/lidsconf -A -s /bin/su -o /etc/shadow                              -j READONLY
    /sbin/lidsconf -A -s /bin/su -o CAP_SETUID                               -j GRANT
    /sbin/lidsconf -A -s /bin/su -o CAP_SETGID                               -j GRANT

### Exim

    /sbin/lidsconf -A -s /usr/sbin/exim -o CAP_SETGID -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/exim -o CAP_SETUID -j GRANT

### Qpopper

    /sbin/lidsconf -A -s /usr/sbin/in.qpopper -o /etc/shadow -j READONLY

### Proftp

    /sbin/lidsconf -A -s /usr/sbin/proftpd  -o CAP_SETGID -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/proftpd  -o CAP_SETUID -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/proftpd  -o CAP_SYS_CHROOT -j GRANT
    /sbin/lidsconf -A -s /usr/sbin/proftpd  -o /etc/shadow -j READONLY

### Aproxy

    /sbin/lidsconf -A -s /path/to/aproxy -i 2 -o CAP_NET_BIND_SERVICE 25,110,119 -j GRANT

### Squid

    /sbin/lidsconf -A -o /var/spool/squid -j DENY
    /sbin/lidsconf -A -s /usr/sbin/squid   -i 2 -o /var/spool/squid               -j WRITE
    /sbin/lidsconf -A -s /usr/sbin/squid   -i 2 -o /var/log/squid                 -j WRITE
    /sbin/lidsconf -A -s /etc/init.d/squid -i 2 -o /var/spool/squid               -j WRITE
    /sbin/lidsconf -A -s /usr/sbin/squid        -o CAP_NET_BIND_SERVICE 3128,3130 -j GRANT

### Innd

    /sbin/lidsconf  -A -o /usr/local/news -j DENY

    /sbin/lidsconf  -A -s /usr/local/news/bin/ctlinnd    -o /usr/local/news      -j WRITE
    /sbin/lidsconf  -A -s /usr/local/news/bin/innd       -o /usr/local/news      -j WRITE
    /sbin/lidsconf  -A -s /usr/local/news/bin/nnrpd      -o /usr/local/news      -j WRITE
    /sbin/lidsconf  -A -s /usr/local/news/bin/nnrpd \
                                              -o /usr/local/news/spool/overview  -j WRITE
    /sbin/lidsconf  -A -s /usr/local/news/bin/rc.news    -o /usr/local/news      -j WRITE
    /sbin/lidsconf  -A -s /usr/local/news/bin/shlock     -o /usr/local/news/run/ -j WRITE
    /sbin/lidsconf  -A -s /usr/local/news/bin/innwatch   -o /usr/local/news/run/ -j WRITE
    /sbin/lidsconf  -A -s /usr/local/news/bin/innconfval -o /usr/local/news/     -j WRITE
    /sbin/lidsconf  -A -s /usr/local/news/bin/innmail    -o /usr/local/news/     -j WRITE
    /sbin/lidsconf  -A -s /usr/local/news/bin/inndstart  -o /usr/local/news/     -j WRITE

    /sbin/lidsconf  -A -s /usr/local/news/bin/inndstart \
                                           -o CAP_NET_BIND_SERVICE 119 -j GRANT
    /sbin/lidsconf  -A -s /usr/local/news/bin/inndstart  -o CAP_SETGID -j GRANT
    /sbin/lidsconf  -A -s /usr/local/news/bin/inndstart  -o CAP_SETUID -j GRANT
    /sbin/lidsconf  -A -s /usr/local/news/bin/nnrpd      -o CAP_SETUID -j GRANT
    /sbin/lidsconf  -A -s /usr/local/news/bin/nnrpd      -o CAP_SETGID -j GRANT

### Postfix

下記、Debian GNU/Linux Woody (3.0) システム上で全ての権限が不可になっている時の、postfixの設定例です。CAP_HIDDEN パートは、もちろん任意です。

    /sbin/lidsconf -A -o /etc/postfix               -j DENY
    /sbin/lidsconf -A -o /var/spool/postfix         -j DENY

    /sbin/lidsconf -A -s /etc/init.d/postfix \
    		  -o /etc/postfix		-j READONLY -i 1
    /sbin/lidsconf -A -s /etc/init.d/postfix \
    		  -o /var/spool/postfix		-j WRITE    -i 1
    /sbin/lidsconf -A -s /usr/sbin/postfix   \
    		  -o /etc/postfix		-j READONLY -i 4
    /sbin/lidsconf -A -s /usr/sbin/postfix	 \
    		  -o /var/spool/postfix		-j WRITE    -i 4

    /sbin/lidsconf -A -s /usr/lib/postfix/master \
    		  -o CAP_SETGID			-j GRANT    -i 1
    /sbin/lidsconf -A -s /usr/lib/postfix/master \
    		  -o CAP_SETUID			-j GRANT    -i 1
    /sbin/lidsconf -A -s /usr/lib/postfix/master \
    		  -o CAP_HIDDEN	                -j GRANT    -i 1
    /sbin/lidsconf -A -s /usr/lib/postfix/master \
    		  -o CAP_DAC_OVERRIDE           -j GRANT    -i 1
    /sbin/lidsconf -A -s /usr/lib/postfix/master \
    		  -o CAP_SYS_CHROOT             -j GRANT    -i 1

    /sbin/lidsconf -A -s /usr/lib/postfix/master \
    		  -o /etc/aliases.db		-j READONLY -i 1
    /sbin/lidsconf -A -s /usr/lib/postfix/master \
    		  -o /var/spool/postfix		-j WRITE    -i 1
    /sbin/lidsconf -A -s /usr/lib/postfix/master \
    		  -o /etc/postfix	        -j READONLY -i 1

    /sbin/lidsconf -A -s /usr/sbin/postdrop \
    		  -o /etc/postfix		-j READONLY
    /sbin/lidsconf -A -s /usr/sbin/postdrop \
    		  -o /var/spool/postfix		-j WRITE

    /sbin/lidsconf -A -s /usr/sbin/sendmail \
    		  -o /etc/postfix		-j READONLY
    /sbin/lidsconf -A -s /usr/sbin/sendmail \
    		  -o /var/spool/postfix		-j WRITE

## LIDS テクニカル

### LIDS は ext2 以外のファイルシステムでも動作しますか？

はい。LIDS の共著者である Philippe Biondi の言葉を借ります − "LIDS は VFS レイヤの最上部で動作しますので、Linux がサポートするあらゆる fs を扱うことができます。"

### LIDS は SMP のシステムで動作しますか？

SMP システムで LIDS を実行することについては、障害報告がなされています。問題の多くは修正されていますので、最新バージョンを試してみるのをお勧めします。Xie と Philippe はこの手の問題を修正するのに、非常に注力していますので、LIDS のメーリングリストに報告するようにしてください。

更新 (2/10/01)： 多くのユーザから、LIDS-1.0.5 を使って SMP システムの 2.4.x カーネルでうまくいったというレポートがなされています。

### LIDS は Solar Designer の Openwall パッチと共存しますか？

大丈夫です。LIDS と Openwall パッチを両方適用すれば、1 hunk が失敗します (カーネル 2.2.18 用リリース 0.9.11 の時点)。このエラーはささいなもので、システムのセキュリティには影響しないと思います。とはいえ、エラーが気に入らないなら、http://root-it.be/community/lids へいって、LIDS + Openwall 統合パッチをダウンロードしてください。Wim Vandersmissen が素晴らしいことに、私達のためにパッチを統合してエラーを修正してくれています。Wim は彼のサイトで、他にも LIDS を含んだ統合パッチをいくつか提供しています。

### LIDS は非インテルなハードウェア上で動作しますか？

私は、確認できる形で、別のハードウェアプラットフォームで成功したという話は聞いていません。もし LIDS を別のアーキテクチャで動作させたなら、是非みんなにその努力を知らせるようにしましょう。

更新： Johannes Helje はLIDS を SUN IPX のペアにインストールすることに成功しました。彼は、2.2.18 カーネルで Debian を使っています。

更新： Joseph P. Garcia ( jpgarcia@execpc.com) は LIDS を PowerPC ベースのPowerBook G3 にインストールしようとしましたが、うまくいきませんでした。ここに、問題の詳細を彼のメールから引用します −

    私は、30ヶ月前の PowerPC ベース の Macintosh PowerBook G3 (知る人ぞ知る「旧時代」の powermac) で LIDS を試そうとしています。
    起動には BootX ブートローダを使い、LinuxPPC 2000 Q4 をベースにした Linux で
    カーネル 2.4.7pre3 と glibc2.2.3、gcc2.95.4 を使っています。

    LIDS を自分のシステムで使うという私の目論見は、ほとんど報われていません。
    パッチを適用して、設定で LIDS を無効にしていればカーネルはちゃんと動きます。
    わずかでも LIDS を有効にすると、CONFIG_LIDS と security=0 だけでさえ、
    私のカーネルは起動しません。通常のルーチンは、BootX が MacOS をクリアし、
    ハードウェアをセットアップ (ハードディスクをスピンダウンするとか) し、
    カーネルが画面をクリアして 'BootX text' で簡単な設定を表示し、それから
    フレームバッファコンソールへの出力とともに起動する、というものです。
    LIDS を有効にすると、カーネルは画面のクリアさえ行いません。
    これを行うコードを眺めてみましたが、理解の及ぶ範囲では、メモリに
    書き込みしているだけです。これがどれほど核心に近いかはわかりません。

    私の知る限り、LIDS はずっと後になるまでアクティブにはならないはずです。
    ですから、これは LIDS が行う、私には理解できない基本的なコード変更か、
    カーネルが私のシステム上で起動するのを妨げる機能かによって起きている
    のでしょう。

    現時点において、PowerPC 上で LIDS を動かそうとしているという話を私は
    知りません。誰かが、ますます広がりつつある PowerPC アーキテクチャ用に
    LIDS をサポートせねばならないかも知れないなら、その構想や修正をテストする時間があれば、喜んでさし出すつもりです。

    現状では、これを書いた後で、BootX の text オプションを無効にしてみて、
    何がおきるか見てみようと思っています。添付したのは、この修正を行う前の
    カーネルコンフィグ (bz2) です。

    日頃のご厚情に感謝します。

更新： Joseph P. Garcia は、 PowerPC 上で LIDS を動かす事に成功しました。彼は カーネル設定の中で、 LIDS が管理する object を 1024 から 512 に減らしたそうです。

### LIDS のバージョン 0.x, 1.x と 2.x との違いは何ですか？

LIDS `0.x` は Linux カーネル `2.2.x` 向け、LIDS `1.x` は Linux カーネル `2.4.x` 向け、LIDS `2.x` は Linux カーネル `2.5.x` 向けです。