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

4. LIDS の管理

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

再起動して LIDS で拡張したカーネルにする前に、コマンドプロンプトでこのように入力します −

# lidsadm -P

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

MAKE
enter password:
Verifying enter password:

これで、/etc/lids/lids.pw ファイルに RipeMD-160 で暗号化されたパスワードが書きこまれます。

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

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

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

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

  [*] Allow switching LIDS protections
LFS を作るには、プロンプトでこのように入力します −

# lidsadm -S -- -LIDS

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

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

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

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

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

4.5 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

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

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

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

lilo: lids-kernel security=0

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

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

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

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

# lidsadm -U

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

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

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

# lidsadm -S -- -LIDS_GLOBAL

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

# lidsadm -S -- +LIDS_GLOBAL

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

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

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

/sbin/lidsadm -I

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

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

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

"-V" オプションを使うためには、lidsadm を make VIEW=1 (上記参照) としてコンパイルしておく必要があります。

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

# lidsadm -V

こうすると、2.2.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_HIDDEN 1
                 CAP_INIT_KILL 0
                   LIDS_GLOBAL 1
                               0
                   RELOAD_CONF 0
                          LIDS 0

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

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

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

   [*]  Port Scanner Detector in kernel

4.12 LIDS の ACL における subject とオブジェクトとはなんですか?

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

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

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

権限を有効にするには −

# lidsadm -S -- +CAP_SYS_ADMIN

権限を無効にするには −

# lidsadm -S -- -CAP_SYS_ADMIN

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

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

  1. 設定ファイルの リロード
  2. 変更によって影響を受けるサービス(群)の再起動

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

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

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

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

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

例えば −

klogd -c 4

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

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

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

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

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

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

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

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

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

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

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

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

  1. dmesg に 'Linux Intrusion Detection System * for * doesn't start' という行がないか調べることができます。
  2. /etc/lids ディレクトリがあるか調べることができます。LIDS が有効ならば、見えるのは望ましくないでしょうから、デフォルトでは LIDS はそのディレクトリを隠します。
  3. 本来ならできないはずの何事かをしでかして、LIDS が行動を起こすかを試すことができます。もし何も反応がなければ、LIDS は動作していません。


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