[[LinuxSoft]] #contents ---- * README (rkdat - rookit detector for Linux) [#lb9e98a7] ** 日本語版ドキュメントについて [#i945f37f] 日本語版のドキュメント公開については念のため作者さんに問い合わせ中です。先方の回答やライセンスによってはドキュメントは非公開になる場合もあります。 ドキュメントの内容は出来るだけオリジナル英語に忠実に翻訳するように努めますが、日本語として不適切な部分は日本語として読みやすいように置き換えている場合もあります。なお、免責事項として、日本語版を利用者が利用するにあたり、いかなる場合も訳者はその責をを追いません(、と書くのが一般的ですので、私も書かせてください。。)。 ** オリジナル著作権表記 [#j87db88e] rkdet rootkit detector Andrew Daviel <andrew@vancouver-webpages.com> February 2000 Revised March 2001 ** Tiny Abstract - 要約 [#mfcdf93a] プログラムをインストールすることによって、クラッカーのシステム破壊活動を検出します。 ** Abstract - 概要 [#kde99ceb] このデーモン(rkdet)は Rootkit((システムに入り込んでプロセスを隠蔽したりバックドアを敷設したり破壊活動を目的としたシステム改竄ツール群のことです)) やパケットスニファ(パケットキャプチャ)を意図する行為を細くすることを目的としたものです。デーモン自体は無害で非常に小さな動作で稼働できるよう設計されています。もし異常を検出すると、ログファイルを添付したメールを送信し、直ちにネットワークもしくはシステムを停止させます。機能として通常のマルチユーザシステムで最小限で稼働するように設計されており、Linux カーネルの変更やシステムの変更を必要としません。 ** License - ライセンス [#v89f8687] rkdet はフリーウェアです。rkdet は David A. Curry によって作成されました。&br; もしソフトウェアの種別を定義するのであればパブリック・ドメイン((PDF…みんなが便利に使えるよう著作権を放棄したソフトウェアを指します))です。 ** Background - 開発に至る背景 [#if8dae62] 侵入者はありとあらゆる手段を用いてあなたが運用しているシステムへの侵入を試みるかもしれません。侵入方法としては権限のあるユーザのパスワードを盗むかも知れませんし、ネットワーク上のパケット盗聴(スニッファ)によってパスワード情報を入手するかもしれません。あるいは、システム上で動作するデーモンに対してバッファ・オーバランといったセキュリティホールへの攻撃を試みるかも知れないのです。もし侵入者にアクセスされてしまうと、クラッカー((悪意のあるハッカー))によって Eggdrop といった IRC ロボットを動作させるだけの為に CPU を消費させたり、いろんな手段でパスワード情報を入手するかもしれません(たとえシステムのパスワードがシャドウ化されていてもです)。あるいは純粋にクラッキング用ツールをや盗んだデータを保存していくだけかもしれません。とはいっても、クラッカーが侵入形跡を消去したり悪質なプログラムを実行するようになるまでは、いくつものステップを踏まなくてはいけません。まず、システムを乗っ取る為には root ユーザ権限が必要です。そのためには setuid された mount、cron、あるいはゲームプログラムなどに対する攻撃用のプログラムを用います。その後、多くのクラッカー達は一般的に重要なシステムアカウントを無効にしたり、侵入時のログ記録を削除しようとします。これらに用いるシステム破壊・隠蔽ツールが一般に "Rootkit"(ルートキット)と呼ばれているものです。典型的なものは "ps" や "netstat" コマンドを改竄し、クラッカーが用いるプログラムや接続元の IP アドレスを隠す働きを持ちます。これらシステムコマンドに対して監視をしつづければ、侵入時に侵入を検することが出来るかもしれません。 もう1つ典型的なものはパケット・スニファをシステムにインストールすることです。侵入したマシンの置かれている同一ネットワーク内にあるマシンへの telnet や ftp のユーザ名とパスワード情報を取得することです。同様に IMAP や POP3 といったメールや Windows のネットワークのログイン情報も取得されてしまうでしょう。もし、このような盗聴活動を監視することができれば(ネットワークインターフェースの状態が promiscuous*3 モードになれば、侵入された可能性が高いと判断できるでしょう(しかしながら、クラッカーはネットワークのモードを変更せず、ただ侵入したマシンの情報を監視しつづけるだけかもしれません)。 ** Description - ソフトウェアの解説 [#ga255a2a] このプログラムは rootkit によって改竄されることが多い一般的なプログラムのチェックサムを検査をするものです。検査対象となるファイルはコンパイル時に指定します((ソースを展開したディレクトリにある xfiles.txt))。ファイルリストはシステムコマンドや各種のメッセージと共バイナリ・コードとしてにコンパイルされるので、利用時には解読しづらい状態になっています。不明瞭化アルゴリズムは些細ですが、コンパイルされたプログラムは外部プログラムやライブラリを一切必要としません。 プログラムにには任意の整数を引数とします。もし変な引数(例えばビット 0 がセットされる場合)があれば、インターフェース "ech0" が promiscus ((プロミスキャス・モード=ネットワーク上でパケットを収集する動作モード)) 状態(パケット収集中)でないか調べます。もしビット 1 がクリアされると、プログラムはネットワークの route 情報を削除するようになっています。もしビット 1 がセットされると、プログラムは eth0 インターフェースを無効にします。システムが複数のインターフェースを備えている場合には、"xstrings.txt" に含まれるインターフェースの情報をを変更するか、プログラムが複数のインターフェースに対応できるようにしなければいけないでしょう。コマンドはどのようにでも変更できます。例えば "init 1" でシングル・ユーザ・モードに移行させたり "shutdown -h now" により即時シャットダウンをさせたり、あるいは "panic.sh" のようなスクリプトを実行させることも出来ます(panic.sh はソースコードのアーカイブに含まれています)。 ** Enhanced Security - セキュリティの拡張 [#ba3c444c] セキュリティについて"あいまいな状態"というのは真の意味で安全ではありませんが、全くなにもしないよりはましです。LIDS といったカーネル拡張モジュールを用いずに侵入者が設置した隠れたプログラムを検出することは難しいです。ですが、単純に rkdet が隠されたかどうかは "ps ax|grep rkdet" や "locate rkdat" あるいは "find /proc -name exe -exec grep -l md5sum {} \;" といった方法で調べることは出来るのです。システム防衛のためには、このドキュメントやインストール時に使用したファイル群をインストール後は削除されたほうが良いでしょう。それから、インストール時の名前も変えた方が良いかもしれません( makefile 中の変数 "ME" はコンパイル時に生成する実行ファイル名です。この部分は RPC .spec ファイルの "name" に相当します。任意の名前でコンパイルすることができます)。xstrings.txt では警告メッセージやコマンドのリスト、表示メッセージの調整が可能です。また、xstrings.txt に含まれる2つめの番号は XPAT と rkdet.c(と mkfil.pl)で定義されている異なったパターンでコンパイルする時に用います。コンパイルによって作成された実行ファイルは、設定時の状況において異なった長さやチェックサムを持つようになります。不正アクセス者が解析を試みようとしてもパターンマッチといった手法では解析させません。 このプログラムを改良することで softdog.o といった監視モジュールとして、異常検出時にリブートを行うようにすることも出来るでしょう。考え過ぎかもしれませんが、監視モジュールによって cookie やチャレンジパスワード、そして LIDS といったパッケージのロックまで出来るようになるかもしれません。LIDS は /proc/ ファイルシステムからプログラム情報を見えなくさせることにも使われるからです。 ** Other Security Systems - その他のセキュリティ・システム [#e89af17e] LIDS - LIDS は Linux 組込型検出システムです。モジュールやマウントポイントを固定するカーネルのパッチです。LIDS の情報はこちらをご覧下さい。http://www.soaring-bird.com.cn/oss_proj/lids/ Bastille((バスチーユ)) Linux はパーミッションや機能を無効化することによって Linux システムを引き締めるスクリプトです。極端に言えば、導入によって合法的な作業を妨げるかもしれませんし、むしろログ保存ホストやファイルサーバといった開発システムにふさわしいでしょう。&br; Bastille の情報はこちらから。 http://www.bastille-linux.org/ PortSenty はシステム上の TCP と UDP プロトコルによるアクセスのログをとり、オプションとして通信を遮断する機能も備えています。また、攻撃を受けやすいサービス(古いバージョンの imap や ftp )の検査やトロイの木馬(Back Orifice や Netbus など)の検出も備えています。&br; PortSenty は http://www.psionic.com をご覧下さい。 PortSentry はシステム上の TCP と UDP プロトコルによるアクセスのログをとり、オプションとして通信を遮断する機能も備えています。また、攻撃を受けやすいサービス(古いバージョンの imap や ftp )の検査やトロイの木馬(Back Orifice や Netbus など)の検出も備えています。&br; PortSentry は http://www.psionic.com をご覧下さい。 ** Caveat - 警告 [#sc345e9c] 検査対象となっているファイルの更新やアップグレードの前に rkdet を停止してください(そうしないと自動でネットワークが切断されたりサーバが停止します)。作業後に rkdet サービスを再開してください。 自動アップデートを行うシステムを実装している場合には、特別に対応する手段を設けてください(たとえば apt サービスを使って自動アップグレードを行うようなシステムでは、更新する前に rkdet を停止し、更新後に rkdet を再開するようにしなくてはいけません)。