FIXME: これについてさらに書く。
Debian には侵入検知のための道具がいくつか含まれています。あなたはローカル システムを守るために (あなたが本当にパラノイアだったり、あなたの システムが本当に重要だったりするなら)、または同じネットワークの他の システムを守るためにこれを設置したくなるかもしれません。
これらの道具を導入することによってシステムのセキュリティを本当に 向上させるためには、警告と応答を組みあわせたしくみが必要であることにいつも 注意してください。よってだれにも警告する気がないなら侵入検知を使わないように しましょう (つまり、あとで使う予定のないものを設定するのに時間をむだに 使わないようにしましょう)。
侵入検知ツールの大部分は検知された特定の攻撃に関して syslog にログを残すか root ユーザに電子メールを送るか (大部分はかわりに他のユーザにメールを 送るように設定できます) します。管理者は false positive が警告を 送らないように、そして警告が適切に扱われるように適切に侵入検知ツールを 設定しなければなりません。警告は進行中の攻撃を示すかもしれませんし、 たとえば 1 日後には役に立たないかもしれません。なぜなら攻撃がすでに成功して いるかもしれないからです。したがって警告を扱うのに関して適切なポリシーを 持つように、またそれを実施するための技術的なしくみが適切な場所にあるように してください。
CERT's
Intrusion Detection Checklist
は 興味深い情報源です。
snort
は攻撃署名辞書を使って攻撃を検知する柔軟な
パケット盗聴ソフトであるとともに記録ソフトでもあります。snort は
バッファオーバーフロー、ステルスポートスキャン、CGI 攻撃、SMB 攻撃、そして
その他多くのさまざまな攻撃や探知を検知します。Snort はリアルタイムでの
警告能力を持っています。これはネットワークを監視するためにすべてのルータに
インストールするべき道具です。apt-get install snort で
インストールし、質問に答えて snort がログを取るのをみはりましょう。
Debian の Snort は必要かもしれない多くのセキュリティチェックが有効になって います。しかし、あなたのシステムで動いている特定のサービスを考慮して 設定をカスタマイズするべきです。これらのサービスに特有の追加のチェックを 検索したいかもしれません。
あなたのネットワークのホストのためのネットワーク侵入検知設置するために
snort
を使うこともできますし、あなた自身のホストへの
ネットワーク攻撃を検知するために使うこともできます。
(より単純ではありますが) ネットワーク攻撃を検知するのに使える他の道具も
あります。Portsentry
はあなたのサイトに対してスキャンが
行われたときに警告してくれる興味深いパッケージのひとつです。 ippl
や iplogger
のような他の道具も (snort のように)
ネットワーク攻撃の検知などの進んだ技術は提供しないものの いくつかの IP (TCP
および ICMP) 攻撃を検知します。
idswakeup
プログラムを使ってこれらの道具のどれでもためすことが
できます。これは Debian で利用可能な多くの一般的な攻撃署名を使って NIDS に
警告する false-positive 生成器です。
Tiger
は woody ディストリビューション以降 Debian に
移植された古い侵入検知ツールです。Tiger はセキュリティ破りに関係する
一般的なチェックを提供し、パスワードの強度、ファイルシステムの問題、
やりとりしているプロセスなどを調べます。Debian 版は Debian 特有の新しい
セキュリティチェックを含みます: 与えられたバイナリの MD5sum、インストール
されている脆弱なパッケージのチェックです。デフォルトのインストールでは
tiger
は毎日動き、スーパユーザに送られる報告を生成します。
生成された報告はシステムへの成功した攻撃についての情報を与えることもできます。
logcheck
のようなサイト上のログ監査ツールもいくつか
あります。このツールはもし管理者にローカルファイルシステムでの異常な
できごとについて警告するように適切に設定されていればとても便利です。
Logcheck
はログから回収された注目する価値のあるできごとに
もとづいてメールを送るように完全に設定できます。デフォルトのインストールでは 3
種類 (workstation、server そして paranoid) の無視するできごとおよび
ポリシー違反のファイルを含みます。logcheck の Debian パッケージは logcheck
プログラムによって読みこまれる設定ファイル
/etc/logcheck/logcheck.conf
を含みます。
これはチェックの結果がどのユーザに送られるかを定義します。また logcheck の
Debian パッケージはサービスを提供するパッケージが以下のディレクトリに
新しいポリシーを導入する方法を提供します:
/etc/logcheck/hacking.d/_packagename_
、
/etc/logcheck/violations.d/_packagename_
、
/etc/logcheck/violations.ignore.d/_packagename_
、
/etc/logcheck/ignore.d.paranoid/_packagename_
、
/etc/logcheck/ignore.d.server/_packagename_
そして
/etc/logcheck/ignore.d.workstation/_packagename_
です。しかし、
現時点ではそれほど多くのパッケージがそうするわけではありません。他のユーザに
とって便利なポリシーを持っているなら、適切なパッケージにバグ報告として
送ってください。くわしくは /usr/share/doc/logcheck/README.Debian
をごらんください。
ファイルシステムの完全性チェッカー (ファイルシステムの完全性を確かめる, 第 4.15.3
節 をごらんください)の
ようなサイト上の監査ツールも安全な環境での異常を検知するのにとても
便利でしょう。有効な侵入はローカルのセキュリティポリシーを出し抜く、トロイの
木馬をインストールする、ユーザを作るなどの目的でほぼ確実にローカルの
ファイルシステム中のファイルを変更します。これらのできごとは完全性チェッカーで
検知できます。 logcheck
、portsentry
や
ファイルシステムの完全性チェッカー (ファイルシステムの完全性を確かめる, 第 4.15.3
節 をごらんください)の
ようなサイト上の監査ツールも安全な環境での異常を検知するのにとても
便利でしょう。
FIXME: この章は kernel-2.x.x-patch-XXX パッケージを使ってこれらの特定の パッチを Debian でインストールする方法を扱う必要がある。
システムのセキュリティをとても高めるカーネルパッチがいくつかあります。 そのうちのいくつかをあげると:
/tmp
中の FIFO、制限つきの /proc
、 file descriptor
の特別な扱い、
実行不可能なユーザスタック領域などのカーネルの制限の便利なセットです。
ホームページ: http://www.openwall.com/linux/
http://www.lids.org
http://acl.bestbits.at/
http://trustees.sourceforge.net/
http://www.kerneli.org
http://www.immunix.org/subdomain.html
http://ramses.rsmeyers.be/useripacct
http://www.freeswan.org
LKM (Loadable Kernel Modules) は動的にロードできるカーネルの部品を含む ファイルです。これは指示されたタスクを実行するためにカーネルに動的に ロードすることができます。GNU/Linux ではカーネルの機能を拡張するために 使われます。LKM を使うといくつかの利点が得られます。カーネル全体を 再コンパイルすることなく動的にロードできる、デバイスドライバ (または ファイルシステム) やサウンドカード、ネットワークカードなどのその他の ハードウェアドライバを指定するのに使えるなどです。しかしクラッカーは GNU/Linux システムに裏口をインストールするために LKM を rootkit (knark や adore) に使うかもしれません。
LKM rootkits はソースコードやバイナリを変更することなくプロセス、ファイル、
ディレクトリそして接続さえも隠すことができます。たとえば、ps
は
プロセス情報を /proc
から取得していたかもしれません。悪意のある
LKM はカーネルを破って、バイナリ ps
の健全なコピーでさえも
正しいプロセス情報をすべて表示できないように procfs から特定のプロセスを
隠すことができます。
この発見作業はあなたが選ぶ対策しだいで単純かつ楽にもなり得ますし、困難かつ 退屈にもなり得ます。LKM セキュリティに関する防御には 2 種類の対策があります。 事前の対策と事後の対策です。
この防御の利点は lkm rootkit のいくつかがシステムに被害を与えるのを防ぐ点です。 最もよく使われる事前の対策は「先まわりする」、すなわち悪意のある LKM によって システムが被害を受ける前にシステムを保護するために特定の LKM をロードする 方法です。他の対策はカーネルから機能を取り除き、システムをより安全にする ことです。たとえば、機能を取り除くことによってカーネルモジュールをロードしたり アンロードしたりするのを停止することができます。
Debian システムには事前対策の道具であるパッケージがいくつかあります:
kernel-patch-2.4-lsm
- LSM is the Linux Security Modules
framework.
lcap
- Removes 'capabilities' in the kernel, making the system
more secure
あなたの GNU/Linux システムで多くのカーネル機能を本当に必要としてはいないなら、 カーネル設定のときにロード可能なモジュールのサポートを無効にしたいかも しれません。これは LKM rootkit を防ぎますが、あなたの GNU/Linux でカーネル モジュール機能を使うことができなくなります。ロード可能なモジュールを停止する ことによってカーネルを過負荷にする可能性があります。これが必要でないときも あります。
ロード可能なモジュールのサポートを停止するには、単に .config
で
CONFIG_MODULES=n と設定してください。
事後の防御の利点はシステムの資源に対する負荷がすくないことです。これは システムコールテーブルをディスクファイル中の既知のきれいなコピー (System.map) と比較することによって働きます。最も明白な欠点はこの方法は 管理者にシステムが破られた後にしか報告しない点です。
Debian では rootkit の検知は chkrootkit
で行えます。これは
ローカルファイルシステムの rootkit の印を調べて対象のコンピュータが rootkit に
感染しているかを示します。
SKAT
を使うこともできます。 SKAT はカーネルメモリ領域 (/dev/kmem
)
を調べて対象のホストに ついての情報を調べます。この情報には Loadable Kernel
Modules のインストール 情報が含まれます。
FIXME: lkm サポートなしのカーネルをコンパイルする方法についての情報を 追加する?
これはたぶん最も不安定で楽しい章でしょう。なぜなら私はこの「お、これは 狂ってる」的な考えが実現してほしいからです。以下にはセキュリティを急速に 向上させるいくつかの考え — これを天才的、パラノイア、狂っている、 安全なのどれというかはあなたの考えかたしだいです — がありますが、 無事ではすまないかもしれません。
/bin
、
/sbin/
、/usr/bin
、/usr/sbin
そして
/usr/lib
(さらに他のいつも気になるところ) に移動して思いきって
chattr +i command
しましょう。さらにルートにあるカーネル
ファイルにもそれを追加しましょう。そして mkdir /etc/.dist/
して、
/etc/
の中身全部をそのディレクトリにコピーしましょう (私は
再帰を避けるためこれを /tmp/etcdist.tar
を 使って 2
段階に分けて行っています)。 (単に /etc/.dist.tar.gz
を作ってもいいです。) -- そして それを immutable にしましょう。
これらすべてを行う理由は root としてログインしたときにありえる被害を制限する
ためです。迷子のリダイレクト演算子でファイルを上書きすることもありませんし、
rm -fr
コマンドにまちがった空白を入れてシステムを使用不能に
することもありません (データに多大な被害をもたらすことはできます —
しかしライブラリとバイナリはより安全でしょう)。
これはまたさまざまなセキュリティをもたらし、サービス拒否攻撃を不可能にするか よりむずかしくします (なぜならその多くは 任意のシェルコマンドを提供して いるわけではない SUID されたプログラムの行動によってファイルを上書き することに依存するからです)。
これによってただひとつ不便になるのはシステムのさまざまなバイナリを構築して
make install
するときです。一方でこれは make install
がファイルを上書きすることも防ぎます。Makefile を
読むのを忘れて上書きされるべきファイル (およびファイルを追加したい
ディレクトリ) に chattr -i しないでいると — make は失敗します。 chattr
コマンドを使って再度実行しなければなりません。この機会に古いバイナリや
ライブラリその他を .old/ ディレクトリに移動させるなり名前を変えるなり tar
するなりすることもできます。
これはシステムのパッケージをアップグレードすることもさまたげることに注意して
ください。そのパッケージが提供するファイルを上書きすることはできないので、
apt-get update
する直前にすべてのバイナリから immutable flag を
はずすしくみがほしくなるかもしれません。
FIXME。Debian 特有の内容がさらに必要。
もし望むなら (そしてそれを実装することができて、それに時間を使えるなら) Debian GNU/Linux システムを使って完全な honeypot を設置することができます。 honeynet (つまりネットワークのことです。honeypot は偽のサーバだけを指します) を設置するのに必要な道具はすべてあります。ファイアウォール、 ネットワーク侵入検知ソフトそして偽のサーバです。しかし、注意してください。 十分に見終わったらすぐに適切な手段を取って攻撃を終わらせることができるように 間にあううちに警告を受けられるようにしなければなりません (ログや警告の重要性, 第 4.9 節 をごらんください)。
syslog-ng
。
snort
。
osh
、これは記録機能つきの制限されたシェルを 設定するのに使えます
(下にある Lance Spitzner さんの記事をごらんください)。
dtk
で提供される偽のサービスも。
tct
)。
honeypot を構築することについてくわしくは Lanze Spitzner さんのすばらしい記事
To
Build a Honeypot
(Know your Enemy シリーズより)、または David Raikow
さんの Building
your own honeypot
をごらんください。 また、Honeynet Project
は honeypot
を構築したりそれに対して行われた攻撃を監査したりするための専門
プロジェクトです。ここには honeypot を設置する方法や攻撃の結果を監査する
方法についての価値ある情報があります (コンテストをごらんください)。
Debian セキュリティマニュアル
v2.4 Tue, 30 Apr 2002 15:41:13 +0200 (翻訳: Thu, 6 Jun 2002)jfs@computer.org
oohara@libra.interq.or.jp