lidsconf - Linux Intrusion Detection System
用の設定ツール
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]
lidsconf は、Linux Intrusion Detection System (LIDS)
の設定ツールである。
LIDS は現在のLinux
カーネルを拡張する、カーネルパッチである。LIDS
によっ
て、重要なファイルや、ディレクトリや、デバイスを保護することができる。
さらにシステム全体に対して、アクセス制限をかけるACL
を定義することもで
きる。LIDS
の詳しい情報に関しては、
http://www.lids.org
を参照のこと。
lidsconf はLIDS
に対してのアクセス制限情報を設定するために使用される。それに
関する全ての情報は、"/etc/lids/lids.conf"
に保存される。
ACL は "Access Control List"
の略である。LIDS のACL
では、Subject がどの
様にObject
に対してアクセス出来るのかを定義している。
Subject は、シ
ステム上の、任意のプログラムファイルを指している。Object
はファイルや、ディ
レクトリや、その他の特別なオプション
(MEM デバイス、RAW
IO、隠しプロセ
ス)を指している。Target
は、Sbject のObject
に対するアクセスタイプを定義
している。
- ACL の書式は
- [-s subject] [-d|-i TTL] -o object [-t timescale] -j
TARGET
- Subject
を省略すると、ACL
はそのObject
に対するデフォルトのアクセスを
- 定義する。
- -s subject
- Subject
とは、システム上の"/bin/login"
のような、任意のプログラムであ
る。
- -o object [portscale]
- Object
はファイルや、ディレクトリや、その他の特別なオプション
(CAP_SYS_RAWIO, CAP_HIDDEN, CAP_INIT_KILL, など)
である。. Object が CAP_NET_BIND_SERVICE
の場合には、例えば、"20-299,400-1002"
のように、続けてポート番号の範囲を指定する必要がある。
- -d
- これは、DOMAIN
設定用である。これを指定すると、Subject
はDomain で定義さ
れているObject
にのみアクセスが可能になる。このDomain
以外のObject
に関する全てのアクセスは、できなくなる。
- -i <inheritance level>
- これで、Subjectの子プロセスに対してのACL
の継承を指定する。
inheritance level
は、どれぐらいまでACL
が影響するのかを表している。継承レベル"-1"
は、
無制限の継承を表す。
継承レベル1
は、親プロセスにより発生された、同じプログラムでは無い子プ
ロセスがACL
を継承するが、子プロセスが発生した子プロセス(すなわち、オ
リジナルのプロセスから見た孫プロセス)には、ACL
は継承されないというこ
とを表している。
継承レベルは、親プロセスとは異なるプログラムの、子プロセスにのみ有効に
なる。もし子プロセスが親プロセスと同じ場合には、親プロセスと完全に
同じ権限が与えられる。
- -t
タイムスケール
- これは、ACL
に対する時間制限である。この制限は、Subject
付きのACL に
のみ、作用する。時間制限とは、ACL
が有効になる時間帯である。タイム
スケールの書式は、"hourminute-hourminute"
になる。例えば、"0905-1021"
は、 "9 時5 分から、10
時21 分まで" となる。
- -j Target
- Target
には、通常のファイルアクセスACL
に対してREAD, APPEND, WRITE, あ
るいは IGNORE
が設定できる。特殊なObject
に対しては、Target はGRANT
だけが設定できる。
LIDS
で使われる権限には、下記のものがある。封印して切替えをすると
きに、権限を有効や無効にするために名前を使用することができる。
さらに、権限がシステム全体で無効になっているときでも、プログラムに権限
を与えることができる。
- CAP_CHOWN
- chown(2)/chgrp(2)
- CAP_DAC_OVERRIDE
- DAC access.
- CAP_DAC_READ_SEARCH
- DAC read.
- CAP_FOWNER
- ユーザーID
とオーナーID
が等しくない
- CAP_FSETID
- 実行ユーザーID
とオーナーID
が等しくない
- CAP_KILL
- 実/有効ID
とプロセスID
が等しくない
- CAP_SETGID
- setgid(2)
- CAP_SETUID
- set*uid(2)
- CAP_SETPCAP
- 転送権限
- CAP_LINUX_IMMUTABLE
- 不変か、付け加えられるファイル特性
- CAP_NET_BIND_SERVICE
- 1024
未満のポートへのバインディング
- CAP_NET_BROADCAST
- マルチキャストのブロードキャスト/リスニング
- CAP_NET_ADMIN
- インターフェース/ファイアーウォール/ルーティング
変更
- CAP_NET_RAW
- RAW ソケット(ping)
- CAP_IPC_LOCK
- 共有メモリーセグメントのロック
- CAP_IPC_OWNER
- IPC
所有者のチェック
- CAP_SYS_MODULE
- カーネルモジュールの挿入と削除
- CAP_SYS_RAWIO
- ioperm(2)/iopl(2) アクセス
- CAP_SYS_CHROOT
- chroot(2)
- CAP_SYS_PTRACE
- ptrace(2)
- CAP_SYS_PACCT
- プロセスアカウンティングの設定
- CAP_SYS_ADMIN
- 管理者の重み
- CAP_SYS_BOOT
- reboot(2)
- CAP_SYS_NICE
- nice(2)
- CAP_SYS_RESOURCE
- リソース制限の設定
- CAP_SYS_TIME
- システム時間の設定
- CAP_SYS_TTY_CONFIG
- TTY 設定
- CAP_MKNOD
- mknod()
の特別な許可
- CAP_LEASE
- ファイルにリースを許可
- CAP_HIDDEN
- システムからプログラムを隠す
- CAP_KILL_PROTECTED
- プロセスに、保護されているプロセスをkill
させることを許可/不許可
- CAP_PROTECTED
- シグナルからプロセスを保護
以下に、いくつかのlidsconf
を使った例を示す。これらは簡単/平易なも
のから、複雑/難解なものまである。
実際のファイル名はもっと具体的な
ものが使われることに注意すること。
実際のシステム
に合わせてファイル/ディレクトリを置き換えること。
- lidsconf -A -o /sbin -j READ
- このACL は、/sbin
ディレクトリを読込み専用に保護する。
- lidsconf -A -o /var/log/message -j APPEND
- /var/log/messages
を付加専用にする。
- lidsconf -A -o /sbin/test -j IGNORE
- /sbin
を読込専用で保護するが、/sbin/test
は保護しない。
- lidsconf -A -o /etc/passwd -j DENY
- /etc/passwd
を全てのユーザーから隠す。ファイルを見るようなこと
(open, stat,
など)は、できなくなる。
- lidsconf -A -s /bin/login -o /etc/passwd -j
READ
- /bin/login
プログラムに、先ほどの設定で隠しファイルにされている
/etc/passwd
を読み込むことを許可する。
この場合、/bin/login
のみが/etc/passwd
を読むことができる。その他の
プログラムやユーザーは、そのファイル(/etc/passwd)
を見ることはできない。
- lidsconf -A -o /home/httpd -j DENY
- lidsconf -A -s /usr/sbin/httpd -o /home/httpd -j
READ
- lidsconf -A -s /usr/sbin/httpd -o CAP_NET_BIND_SERVICE
80 -i -1 -j GRANT
- Web サーバーのServerROOT
(/home/httpd) をDENY で保護し、httpd
バ イナリー(/usr/sbin/httpd)
のみがServerROOT (/home/httpd)
を読み込む
ことを許可して、さらにhttpd
がポート番号80
番にのみバインドできるよう
にすることを許可する。
- lidsconf -A -s /bin/program -i 2 -o CAP_NET_ADMIN -j
GRANT
- /bin/program にCAP_NET_ADMIN
の権限を与え、継承レベルを2
に設定してい る。
- lidsconf -A -s /usr/X11/bin/XF86_SVGA -o CAP_SYS_RAWIO
-j GRANT
- XF86_SVGA にCAP_SYS_RAWIO
の権限を、CAP_SYS_RAWIO
が/etc/lids/lids.cap
で無効になっているときにも、与える。
- lidsconf -A -s /usr/sbin/httpd -d -o /home/httpd -j
READ
- httpd
の実行ドメインを/home/httpd
として定義している。/home/httpd
以外か
らの、どのようなオペレーションも、httpd
が動いているときには許可しない。
- lidsconf -A -s /bin/login -o /etc/shadow -t 0900:1800 -j
READ
- /bin/login に/etc/shadow
ファイルを、09:00
から18:00
の間だけ読み込ま
せることを許可する。これにより、ユーザーのログインを、この時間だけに
制限することができる。
- lidsconf -A -s /usr/sbin/sshd -o CAP_NET_BIND_SERVICE
10-22,300-1020 -j GRANT
- /usr/sbin/sshd
がポート番号10 から22
までと、300 から1020
までバイン
ドすることができるように定義している。このケースでは、ssh
はこの番号
の範囲のみでしかバインドできない。
- メーリングリスト
- 参加、退会するときには、次のサイトを参照-
http://lists.sourceforge.net/lists/listinfo/lids-user
メッセ-ジをメーリングリストに投稿するときは、メールを次のところまで送信
してほしい-
[email protected]
最新のLIDS
メーリングリストのアーカイブは、次のところにある-
http://www.geocrawler.com/redir-sf.php3?list=lids-user
古いアーカイブは、次のところにある-
http://groups.yahoo.com/group/lids
- LIDS FAQ
- LIDS FAQ
は次のところにある-
http://www.lids.org/lids-faq/lids-faq.html
あるいは、
http://www.roedie.nl/lids-faq
LIDS に関するバグは、Xie
やPhil
に送るか、あるいはメーリングリスト
([email protected])
に送ってほしい。
カーネルをコンパイルするときに使った、.config
ファイルと、/etc/lids に
あるlids.conf とlids.cap
ファイルを一緒に送ること。また、このマ
ニュアルページでエラーを見付けたら、Sander
Klein
まで知らせて欲しい。
/etc/lids/lids.conf - LIDS
設定ファイル
/etc/lids/lids.cap -
全体の権限の定義
/etc/lids/lids.net - e-mail
アラートの設定
/etc/lids/lids.pw - 暗号化されたLIDS
パスワード
lidsadm(8)
Huagang Xie
<[email protected]>
Philippe Biondi
<[email protected]>
マニュアルページは、Sander
Klein によって書かれた。
<[email protected]>
LIDS
の最新のバージョンは、
http://www.lids.org/
か、ミラーからダウンロードできる。
LIDS
その他の注意点は、lidsadm
(8)
のマニュアルを参照のこと。