[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ A ] [ B ] [ C ] [ 次のページ ]

Debian セキュリティマニュアル
第 9 章 - システムを破られる前


9.1 侵入検知を設定する

FIXME: これについてさらに書く。

Debian には侵入検知のための道具がいくつか含まれています。あなたはローカル システムを守るために (あなたが本当にパラノイアだったり、あなたの システムが本当に重要だったりするなら)、または同じネットワークの他の システムを守るためにこれを設置したくなるかもしれません。

これらの道具を導入することによってシステムのセキュリティを本当に 向上させるためには、警告と応答を組みあわせたしくみが必要であることにいつも 注意してください。よってだれにも警告する気がないなら侵入検知を使わないように しましょう (つまり、あとで使う予定のないものを設定するのに時間をむだに 使わないようにしましょう)。

侵入検知ツールの大部分は検知された特定の攻撃に関して syslog にログを残すか root ユーザに電子メールを送るか (大部分はかわりに他のユーザにメールを 送るように設定できます) します。管理者は false positive が警告を 送らないように、そして警告が適切に扱われるように適切に侵入検知ツールを 設定しなければなりません。警告は進行中の攻撃を示すかもしれませんし、 たとえば 1 日後には役に立たないかもしれません。なぜなら攻撃がすでに成功して いるかもしれないからです。したがって警告を扱うのに関して適切なポリシーを 持つように、またそれを実施するための技術的なしくみが適切な場所にあるように してください。

CERT's Intrusion Detection Checklist は 興味深い情報源です。


9.1.1 ネットワークベースでの侵入検知

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 生成器です。


9.1.2 ホストベースでの検知

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 節 をごらんください)の ようなサイト上の監査ツールも安全な環境での異常を検知するのにとても 便利でしょう。


9.2 役に立つカーネルパッチ

FIXME: この章は kernel-2.x.x-patch-XXX パッケージを使ってこれらの特定の パッチを Debian でインストールする方法を扱う必要がある。

システムのセキュリティをとても高めるカーネルパッチがいくつかあります。 そのうちのいくつかをあげると:


9.3 rootkits を避ける


9.3.1 LKM - Loadable Kernel Modules

LKM (Loadable Kernel Modules) は動的にロードできるカーネルの部品を含む ファイルです。これは指示されたタスクを実行するためにカーネルに動的に ロードすることができます。GNU/Linux ではカーネルの機能を拡張するために 使われます。LKM を使うといくつかの利点が得られます。カーネル全体を 再コンパイルすることなく動的にロードできる、デバイスドライバ (または ファイルシステム) やサウンドカード、ネットワークカードなどのその他の ハードウェアドライバを指定するのに使えるなどです。しかしクラッカーは GNU/Linux システムに裏口をインストールするために LKM を rootkit (knark や adore) に使うかもしれません。

LKM rootkits はソースコードやバイナリを変更することなくプロセス、ファイル、 ディレクトリそして接続さえも隠すことができます。たとえば、ps は プロセス情報を /proc から取得していたかもしれません。悪意のある LKM はカーネルを破って、バイナリ ps の健全なコピーでさえも 正しいプロセス情報をすべて表示できないように procfs から特定のプロセスを 隠すことができます。


9.3.2 rootkits を発見する

この発見作業はあなたが選ぶ対策しだいで単純かつ楽にもなり得ますし、困難かつ 退屈にもなり得ます。LKM セキュリティに関する防御には 2 種類の対策があります。 事前の対策と事後の対策です。


9.3.2.1 事前の対策

この防御の利点は lkm rootkit のいくつかがシステムに被害を与えるのを防ぐ点です。 最もよく使われる事前の対策は「先まわりする」、すなわち悪意のある LKM によって システムが被害を受ける前にシステムを保護するために特定の LKM をロードする 方法です。他の対策はカーネルから機能を取り除き、システムをより安全にする ことです。たとえば、機能を取り除くことによってカーネルモジュールをロードしたり アンロードしたりするのを停止することができます。

Debian システムには事前対策の道具であるパッケージがいくつかあります:

あなたの GNU/Linux システムで多くのカーネル機能を本当に必要としてはいないなら、 カーネル設定のときにロード可能なモジュールのサポートを無効にしたいかも しれません。これは LKM rootkit を防ぎますが、あなたの GNU/Linux でカーネル モジュール機能を使うことができなくなります。ロード可能なモジュールを停止する ことによってカーネルを過負荷にする可能性があります。これが必要でないときも あります。

ロード可能なモジュールのサポートを停止するには、単に .config で CONFIG_MODULES=n と設定してください。


9.3.2.2 事後の防御

事後の防御の利点はシステムの資源に対する負荷がすくないことです。これは システムコールテーブルをディスクファイル中の既知のきれいなコピー (System.map) と比較することによって働きます。最も明白な欠点はこの方法は 管理者にシステムが破られた後にしか報告しない点です。

Debian では rootkit の検知は chkrootkit で行えます。これは ローカルファイルシステムの rootkit の印を調べて対象のコンピュータが rootkit に 感染しているかを示します。

SKAT を使うこともできます。 SKAT はカーネルメモリ領域 (/dev/kmem) を調べて対象のホストに ついての情報を調べます。この情報には Loadable Kernel Modules のインストール 情報が含まれます。

FIXME: lkm サポートなしのカーネルをコンパイルする方法についての情報を 追加する?


9.4 天才的な、またはパラノイアのアイデア — 何ができるか

これはたぶん最も不安定で楽しい章でしょう。なぜなら私はこの「お、これは 狂ってる」的な考えが実現してほしいからです。以下にはセキュリティを急速に 向上させるいくつかの考え — これを天才的、パラノイア、狂っている、 安全なのどれというかはあなたの考えかたしだいです — がありますが、 無事ではすまないかもしれません。


9.4.1 honeypot を構築する

FIXME。Debian 特有の内容がさらに必要。

もし望むなら (そしてそれを実装することができて、それに時間を使えるなら) Debian GNU/Linux システムを使って完全な honeypot を設置することができます。 honeynet (つまりネットワークのことです。honeypot は偽のサーバだけを指します) を設置するのに必要な道具はすべてあります。ファイアウォール、 ネットワーク侵入検知ソフトそして偽のサーバです。しかし、注意してください。 十分に見終わったらすぐに適切な手段を取って攻撃を終わらせることができるように 間にあううちに警告を受けられるようにしなければなりません (ログや警告の重要性, 第 4.9 節 をごらんください)。

honeypot を構築することについてくわしくは Lanze Spitzner さんのすばらしい記事 To Build a Honeypot (Know your Enemy シリーズより)、または David Raikow さんの Building your own honeypot をごらんください。 また、Honeynet Project は honeypot を構築したりそれに対して行われた攻撃を監査したりするための専門 プロジェクトです。ここには honeypot を設置する方法や攻撃の結果を監査する 方法についての価値ある情報があります (コンテストをごらんください)。


[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ A ] [ B ] [ C ] [ 次のページ ]

Debian セキュリティマニュアル

v2.4 Tue, 30 Apr 2002 15:41:13 +0200 (翻訳: Thu, 6 Jun 2002)

Javier Fernández-Sanguino Peña jfs@computer.org
翻訳: 大原雄馬 oohara@libra.interq.or.jp