再起動して LIDS で拡張したカーネルにする前に、コマンドプロンプトでこのように入力します −
# lidsadm -P
すると、LIDS のパスワードを求められます −
MAKE enter password: Verifying enter password:
これで、/etc/lids/lids.pw
ファイルに RipeMD-160 で暗号化されたパスワードが書きこまれます。
最初に、 LIDS フリーセッション を作成しなくてはなりません。それから、 最初にやったように "-P" オプションを使ってパスワードを設定します (現在のパスワードはきかれません)。LIDS パスワードを再設定した後で、LIDS に 設定ファイルのリロードをさせる必要があります。
LIDS フリーセッション (LFS) は LIDS からの制限を受けない端末セッションです。このオプションがあるため、非 LIDS のカーネルで再起動せずにシステムを管理することができます。これを機能させるには、LIDS で拡張したカーネルをコンパイルする時に、このオプションを選択している必要があります −
[*] Allow switching LIDS protectionsLFS を作るには、プロンプトでこのように入力します −
# lidsadm -S -- -LIDS
すると、LIDS パスワードを訊ねられます。この端末は、もう LIDS から独立しています。以下の操作をするまでは、LIDS から独立したままです −
(lidsadm -S -- +LIDS)
.一度にアクティブにできる LFS は 1 つだけです。別の端末に入っても lidsadm -S -- -LIDS
は無効にならないとはいえ、LFS はただ 1 つしか持てません。
これは、LFS を仮想端末上で作ってから別の仮想端末に移動してマシンを管理しようとすると発生します。解決するためには、LIDS を有効にしてみて、それからもう一度無効にします (プロンプトが出たらパスワードを入力します)。
# lidsadm -S -- +LIDS # lidsadm -S -- -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 security=0
これは簡単な部分です。難しいのは、LIDS を有効にしたシステムをシャットダウンさせることです。LIDS の設定によっては、うまくシャットダウンできないかもしれません。
警告: 適切に設定されていない状態で LIDS が有効になったカーネルを再起動させると、ファイルシステムがおかしくなったり、データが失われるかも知れません。
ファイルが存在しているデバイス、あるいはファイルの iノード番号が変わった時にはいつでも、/etc/lids/lids.conf
ファイルを適切な情報で更新しなければなりません。幸運なことに、Xie はこういう時のためのオプションを用意してくれています −
# lidsadm -U
それから、 設定ファイルをリロードする必要があります。
LFS を使う以外にも、LIDS を全体的に停止させることはできます。これには、オプション込みでカーネルをコンパイルしている場合のみ機能します。
# lidsadm -S -- -LIDS_GLOBAL
LIDS_GLOBAL
が無効になっていると、システムは "通常の" Linux システムのように稼働します。LIDS を全体的に再び有効にするには、反対のことをします −
# lidsadm -S -- +LIDS_GLOBAL
注意:今 LFS を有効にしているなら、これによって LFS が 影響をうけることはありません。
起動プロセスの最後に、カーネルを封印する必要があります。これにより、システムに /etc/lids/lids.cap
ファイルでのグローバルな権限がセットされます。ただし、ファイルの ACL はカーネルが封印される前でも執行されます。カーネルを封印するには、rc.local
(SysV スタイルの init の場合) の最後に、これをつけたしてください −
/sbin/lidsadm -I
"-I" オプションは、カーネルを封印する時のみ使われます。封印された後は、システムに変更を加えるために "-S" オプションを使う必要があります。
警告:起動時にカーネルを封印しなかった場合、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 カーネルが提供する権限ではありません) といった権限のみを持っています。
必要ありません。LIDS で拡張したカーネルを設定するときにオプションを選んでいれば、ポートスキャン検知は有効になっています。
[*] Port Scanner Detector in kernel
subject はバイナリやシェルスクリプトといった、Linux システム上で実行できるプログラムのことです。オブジェクトは、subject がアクセスしようとするものです。これには、ファイル、ディレクトリ、権限といったものがあります。
できます。ただし、この方法だとシステムのシャットダウン後に変更が保存されません。
権限を有効にするには −
# lidsadm -S -- +CAP_SYS_ADMIN
権限を無効にするには −
# lidsadm -S -- -CAP_SYS_ADMIN
LIDS を再設定する時には、するべきことが 2 つあります −
lidsconf -L は LFS 上からか、LIDS_GLOBAL が無効になっている時に使わなければなりません。どちらの状態でもないなら、このエラーメッセージを見ることになります −
lidsconf: can not open conf file reason:: Permission denied LIST
できます。syslog の初期化スクリプトを修正して、klogd を "-c" オプションつきで起動させることができます。このオプションは、コンソールに記録されるシステムメッセージのデフォルトレベルを設定するものです。指定された値よりも低い値をもつメッセージがコンソールに表示されます (include/linux/kernel.h
参照)。
例えば −
klogd -c 4
klogd にレベル 4 以下の全メッセージをコンソールに記録するように指示します。
コンソールのログレベルを変更するには、/proc/sys/kernel/printk
の値を修正するという方法もあります。詳細については、/usr/src/linux/Documentation/sysctl/kernel.txt
で提供される文書を参照してください。
はい。setuid されたプログラムについて、LD_PRELOAD 環境変数は "未定義" ですから、プログラムによってロードされるライブラリに影響を及ぼすことはできません (最近の glibc の脆弱性といった例外はあります)。
問題が発生するのは、setuid されていないバイナリに特別な権限やファイルアクセス許可を与えたときです。LD_PRELOAD 環境変数はライブラリをロードする前は "未定義" ではないため、悪意のある誰かがトロイのライブラリをロードさせることができる上に、それはオリジナルのプログラムに与えられたのと同じ特別な権限/ファイルアクセス許可をもつことになってしまいます。
リスクを減らすために可能なオプションは −
chmod o-rwx /path/to/program
)。セキュリティ上の更新: LIDS 1.1.1preX 以降から、LD_PRELOAD 環境変数は LIDS から特権を与えられる全てのプログラムに対して、自動的に無効になります。これは、LIDS 0.10.3 にもバックポートされています。
これは、最初に LIDS を起動する前に、LIDS のパスワードを設定し忘れた場合に発生します。問題を修正するには、マシンを再起動して ( 使用できないシステムの起動参照)、 LIDS パスワードを設定してください。
lidsadm を 'make VIEW=1' としてコンパイルしてあれば、'lidsadm -V' を使って LIDS が有効になっているか知ることができます。'LIDS_GLOBAL 0' と表示されれば、LIDS は無効になっています。'LIDS 0' と表示されれば、誰かが LIDS フリーセッション を使っています。
lidsadm を VIEW オプションつきでコンパイルしていなかった場合は、LIDS が実行中か調べる方法はいくつか存在します。