[[LinuxSoft]]
 #contents
 ----
 * News [#n601e887]
 
 - 2006年10月10日 chkrootkit [[最新版 Version 0.47 がリリース>http://www.chkrootkit.org/download/]]されました。chkrootkit としては久々のリリースになります。
 - 2006年10月11日 chkrootkit [[公式サイト>http://www.chkrootkit.org/]] 日本語化プロジェクトを正式にスタートします。
 
 * 公式サイト日本語化プロジェクト [#nd428bbb]
 
  [[chkrootkit 公式サイト日本語化]]プロジェクトを開始します(2006年10月11日)。&br;
 - 公式サイト http://www.chkrootkit.org/
 
  詳細な経緯は公式メーリングリスト users@chkrootkit.it.org の "Subject: [crt-users] May I make a translation site? (in Japanese)"に続くスレッドをご覧下さい。アーカイブの閲覧はできないようです。受信されている人しか読めません。ごめんなさい。
 
  開発者である Nelson 氏より許諾を頂きました。jp1.chkrootkit.org が割り当て予定です。
 
  このプロジェクトの目的は公式サイトの忠実なる日本語化にあります。&br;
  最終的には chkrootkit を日本語(UTF-8)対応させるパッチを出したいです(希望的観測)&br;
  参加者&協力者&テスター募集中です。
 
  許諾文章以下抜粋(英語です、、ごめんなさい)。
 
  > My proposal is simple. That is in editing of pure
  > www.chkrootkit.org. In other words, I translate English of HTML
  > of the site into Japanese. A display style there doesn't take
  > its place.
  > 
  > It is inferior to ability in reading and writing because the
  > Japanese most part doesn't make English a main language in being
  > disappointing. Even if you think "Is though it such easy English?"
  > 
  > It is rather another problem that I am anxious. The person who
  > can't discuss English in the Japanese technician of linux is the
  > fact to exist in many, too. (This comes off the main subject. I
  > think that it can have it know as your reference.)
  > 
  > In addition, I will sometimes appear at the site if the one for
  > the Japanese has renewal information. I want to provide a
  > localization patch if it is possible, too.
  
  Don't you care though you think that I will proceed with the
  work with the above contents?
 
  開発者の Nelson 氏からは "No problem. You're welcome. Please, go ahead."(問題ないよ、歓迎します。どうぞ!)と快諾を頂きました。
 
 * chkrootkit を使った不正侵入検知 [#q2f0d073]
 
 ** chkrootkit って何? [#v4ca30f1]
 
  不正侵入検知、というところの chkrootkit (チェック・ルートキット)が私の周りでは一番有名所みたいです。rootkit (ルートきっと) というのは不正アクセス時に不正侵入者がシステムファイルを改竄したり設定を変更したり、バックドア(不正アクセスのための裏口、たとえば標準ではない別ポートで起動させるsshdサーバですとか)の敷設、プロセスの隠蔽(他のサーバ群をポートスキャンしたり、Sniffer というネットワーク上のパケットを解析することで、ユーザ名やパスワードの情報を取得するようなプログラムが一般的に隠されやすいです)を行うような不正侵入ツール群と呼ばれるものです。
 
  chkrootkit は、これら rootkit を迅速に検査して、システムに悪影響がある可能性があれば警告をしてくれるツールです。ツール自体にはシステム改竄時にファイルを修復するような機能はありません。あくまで検出が目的です。システムが原因不明の高負荷に陥ったり、本来使えるはずの ps や ls といった一般的なコマンドが急に使えなくなったりしたら、とりあえず不正アクセスを疑ってみるのも1つの方法です。
 
  不正アクセスなんて関係ないよ?とは思っていませんか。たとえ iptables でガチガチに SSH や FTP といった一般的なポートを守っていても、公開されている一般的なサービスに脆弱性が見つかった場合、そこから不正なアクセスを受けることがあり得るのです。有名なところでは数年前に BIND の脆弱性を利用した ri0n あるいはラーメンと呼ばれるワーム、そして、OpenSSL の脆弱性を利用した不正アクセスがあげられるでしょう。
 
  詳しい経緯をまとめますと、BIND は DNS サービスとして一般的な DNS サーバであればポート 53 を公開しています。BIND 8 の脆弱性が発見されてまもなく、この脆弱性を利用して次々とサーバに不正アクセス・増殖を繰り返す ri0n というワームが出回ったことがあります。named は当時 root ユーザ権限で実行することがありましたので(今日では named という専用ユーザが動作にあたっていると思いますが)、システムに不正なファイルを敷設されるということがありました。
 
  OpenSSL の脆弱性では OpenSSL のライブラリを用いた mod_ssl、つまり https 通信につかうポート 443 番に対する攻撃が行われたことがあります((ログを見ると、今日でも攻撃とおぼしきアクセスは見受けられますが……))。ある方法を使ってポート 443 をたたくと、apache の実行ユーザ権限でサーバへのログインを許してしまうことがあります。一度ログインを許すと、侵入者は exploit(エクスプロイド)と呼ばれる root 権限を奪取するためのプログラムを用いて root 権限を奪取し、システムを改竄したり、MP3 置き場にして遊んだり、他のネットワークを攻撃したり、あとは好き放題やり放題、という事例もありました。
 
  このように、たとえ iptables で固めていようが専用ファイアウォールによって強固なネットワークを構築していても、常に公開されているポートに於いては不正アクセスや攻撃を受けるおそれがあります。
 
  急にネットワークがダウンしたり、急にコマンドが使えなくなって初めて慌てても、もうネットワークから切り離すしか手段は残されていません。一番タチが悪いのはサーバ内に潜伏するタイプの侵入者です。一見見かけ上はふつうのシステムなのですが、カーネルに特殊なモジュールを組み込ませることによって、侵入者の実行するプロセスやネットワーク情報を隠すようなことができます。これにより、もしネットワーク情報をキャプチャ・解析するプログラムが仕込まれていたら、いつのまにかユーザ名とパスワードや情報や、外部に門外不出なデータベースの重要情報が盗まれる可能性だってあるのです。
 
  ですから、保険という意味でも、普段から不正侵入ツール群を実行するテストをしてみることをおすすめします。消防・火災訓練のようなものだと考えてください。だれも本当に火事が起こるなんて思っていません、が、起きるときには起きるものです。不正アクセスと思われる兆候が見えても、一見システムは平静を保ったままかもしれません。それこそ、侵入者の思うつぼ。ここで紹介する chkrootkit を使って、定期的にシステムに異常が発生していないか確認をするような習慣づけをしておくことを強くおすすめします。気がついてからでは遅いのです。
 
  chkrootkit は判明している((存在が知られている有名なもの)) rootkit やワーム、LKM(Lodable Kernel Module) といったシステム組込型の不正ツール群を検知するためのソフトです。今日現在 version 0.45 が最新のものです。
  chkrootkit は判明している((存在が知られている有名なもの)) rootkit やワーム、LKM(Lodable Kernel Module) といったシステム組込型の不正ツール群を検知するためのソフトです。今日現在(2006-10) version 0.47 が最新のものです。
 
 (同様な rootkit 検出ツールとして [[Rootkit Hunter:http://pocketstudio.jp/linux/?Rootkit%20Hunter]] というソフトも紹介しておきます。こちらは chkrootkit 以上に細かなレポートを出してくれます)
 
 ** で、chkrootkit の情報はどこから? [#u47b1e2d]
 
  chkrootkit の公式ページはこちらです
 
  http://www.chkrootkit.org/
 
 - 著作権
  COPYRIGHT   1.2 (Pangeia Informatica) 2/21/97
  Copyright 1996-2003 -  Pangeia Informatica, All rights reserved.
 
 ** 対応 OS [#f08791bf]
 
 >Linux 2.0.x, 2.2.x, 2.4.x and 2.6.x,
 >FreeBSD 2.2.x, 3.x, 4.x and 5.x, OpenBSD 2.x and 3.x., NetBSD 1.6.x,
 >Solaris 2.5.1, 2.6, 8.0 and 9.0, HP-UX 11, Tru64 and BSDI.
 >(README より)
 
 ** chkrootkit のインストール [#te964bd5]
 
  インストール方法は至って簡単です。
  $ wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
  公開されている [[MD5 チェックサム:ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.md5]]を比較して、正規ファイルであることを念のために確認しておきます。
  $ md5sum chkrootkit.tar.gz
  57493e24ca81750a200d8bcb4049e858  chkrootkit.tar.gz
  4c6455d202cef35395a673386e4bf01a8  chkrootkit.tar.gz
  次にファイルを展開してディレクトリを移動します。
  $  tar xfz chkrootkit.tar.gz
  $ cd chkrootkit-0.45
  $ cd chkrootkit-0.47
  次に make します。
  $ make sense
  これでバイナリの作成は終わりました。実行はそのディレクトリ内で行います。chkrootkit は本体ですが、そのほかのプログラムと連動して動作する必要があるためです。一応 chkrootkit 単体でも動作は行われます。
 
 ** chkrootkit の実行 [#l93b6bdd]
 
  ソースを make したディレクトリで chkrootkit を実行します。
 
  注意点としては実行時には root ユーザ権限が必要となります。一般ユーザではすべての検査を行うことができません。
  # ./chkrootkit
  ちなみに以下が Fedora Core 4 で実行してみた結果です。
 
  ROOTDIR is `/'
  Checking `amd'... not found
  Checking `basename'... not infected
  Checking `biff'... not found
  Checking `chfn'... not infected
  Checking `chsh'... not infected
  Checking `cron'... not infected
  Checking `date'... not infected
  Checking `du'... not infected
  Checking `dirname'... not infected
  Checking `echo'... not infected
  Checking `egrep'... not infected
  Checking `env'... not infected
  Checking `find'... not infected
  Checking `fingerd'... not found
  Checking `gpm'... not infected
  Checking `grep'... not infected
  Checking `hdparm'... not infected
  Checking `su'... not infected
  Checking `ifconfig'... not infected
  Checking `inetd'... not tested
  Checking `inetdconf'... not found
  Checking `identd'... not found
  Checking `init'... not infected
  Checking `killall'... not infected
  Checking `ldsopreload'... not infected
  Checking `login'... not infected
  Checking `ls'... not infected
  Checking `lsof'... not infected
  Checking `mail'... not infected
  Checking `mingetty'... not infected
  Checking `netstat'... not infected
  Checking `named'... not infected
  Checking `passwd'... not infected
  Checking `pidof'... not infected
  Checking `pop2'... not found
  Checking `pop3'... not found
  Checking `ps'... not infected
  Checking `pstree'... not infected
  Checking `rpcinfo'... not infected
  Checking `rlogind'... not found
  Checking `rshd'... not found
  Checking `slogin'... not infected
  Checking `sendmail'... not infected
  Checking `sshd'... not infected
  Checking `syslogd'... not infected
  Checking `tar'... not infected
  Checking `tcpd'... not infected
  Checking `tcpdump'... not infected
  Checking `top'... not infected
  Checking `telnetd'... not infected
  Checking `timed'... not found
  Checking `traceroute'... not infected
  Checking `vdir'... not infected
  Checking `w'... not infected
  Checking `write'... not infected
  Checking `aliens'... no suspect files
  Searching for sniffer's logs, it may take a while... nothing found
  Searching for HiDrootkit's default dir... nothing found
  Searching for t0rn's default files and dirs... nothing found
  Searching for t0rn's v8 defaults... nothing found
  Searching for Lion Worm default files and dirs... nothing found
  Searching for RSHA's default files and dir... nothing found
  Searching for RH-Sharpe's default files... nothing found
  Searching for Ambient's rootkit (ark) default files and dirs... nothing found
  Searching for suspicious files and dirs, it may take a while...
  /usr/lib/perl5/5.8.6/i386-linux-thread-multi/.packlist /usr/lib/perl5/vendor_perl/5.8.6/
  i386-linux-thread-multi/auto/NKF/.packlist
  
  Searching for LPD Worm files and dirs... nothing found
  Searching for Ramen Worm files and dirs... nothing found
  Searching for Maniac files and dirs... nothing found
  Searching for RK17 files and dirs... nothing found
  Searching for Ducoci rootkit... nothing found
  Searching for Adore Worm... nothing found
  Searching for ShitC Worm... nothing found
  Searching for Omega Worm... nothing found
  Searching for Sadmind/IIS Worm... nothing found
  Searching for MonKit... nothing found
  Searching for Showtee... nothing found
  Searching for OpticKit... nothing founde
  Searching for T.R.K... nothing found
  Searching for Mithra... nothing found
  Searching for LOC rootkit... nothing found
  Searching for Romanian rootkit... nothing found
  Searching for HKRK rootkit... nothing found
  Searching for Suckit rootkit... nothing found
  Searching for Volc rootkit... nothing found
  Searching for Gold2 rootkit... nothing found
  Searching for TC2 Worm default files and dirs... nothing found
  Searching for Anonoying rootkit default files and dirs... nothing found
  Searching for ZK rootkit default files and dirs... nothing found
  Searching for ShKit rootkit default files and dirs... nothing found
  Searching for AjaKit rootkit default files and dirs... nothing found
  Searching for zaRwT rootkit default files and dirs... nothing found
  Searching for Madalin rootkit default files... nothing found
  Searching for Fu rootkit default files... nothing found
  Searching for ESRK rootkit default files... nothing found
  Searching for anomalies in shell history files... nothing found
  Checking `asp'... not infected
  Checking `bindshell'... INFECTED (PORTS:  465)
  Checking `lkm'... chkproc: nothing detected
  Checking `rexedcs'... not found
  Checking `sniffer'... eth0: not promisc and no PF_PACKET sockets
  eth1: not promisc and no PF_PACKET sockets
  Checking `w55808'... not infected
  Checking `wted'... chkwtmp: nothing deleted
  Checking `scalper'... not infected
  Checking `slapper'... not infected
  Checking `z2'... chklastlog: nothing deleted
  Checking `chkutmp'... chkutmp: nothing deleted
 
  内訳を細かく見ていくと
 
  ROOTDIR is `/'
 
  1行目の ROOTDIR は / 配下すべてを検索対象としているという意味です。
 
  Checking `basename'... not infected
  Checking `biff'... not found
  Checking `chfn'... not infected
  Checking `chsh'... not infected
 
  2行目以降の Checking は主なシステムファイルです。"not found"というのはファイルがありませんし、"not infected" とでていれば改竄されている可能性はないといえます。
 
  ちなみに改竄されていると、そのファイルに対しては "INFECTED" と表示されます。
 
  Searching for sniffer's logs, it may take a while... nothing found
  Searching for HiDrootkit's default dir... nothing found
  Searching for t0rn's default files and dirs... nothing found
  Searching for t0rn's v8 defaults... nothing found
 
  引き続き Searching と続いているのはワームやルートキットが組み込まれていないかの検出です。"nothing found" とでているのが当たり前です。FOUND となったら、何か仕込まれている可能性が非常に高いです。
 
  Searching for suspicious files and dirs, it may take a while...
 
  ここではファイル名の先頭に . がついていて、怪しいと思われるファイルの一覧を表示します。システムが用いるものであれば問題はありません。見慣れないファイルが於かれていたら要注意です。
  Checking `asp'... not infected
  Checking `bindshell'... INFECTED (PORTS:  465)
  おっと、ここで bindshell が INFECTED とでてしまいました。詳しい情報はわからないのですが、一昔前に bindshell というツールの中にポート 465 を使うようなものがあったみたいですね。ま、落ち着いてポート 465 を確認しましょう。
  # /usr/sbin/lsof -i tcp:465
  COMMAND   PID USER   FD   TYPE DEVICE SIZE NODE NAME
  sendmail 1996 root    6u  IPv4   5783       TCP *:smtps (LISTEN)
  ポートの確認は lsof コマンドです。こちらはみての通り sendmail が Submission Port(メール送信用のサブミッション・ポート)として smtps 通信用に用いているものですから、全く問題ありません。
 
  Checking `sniffer'... eth0: not promisc and no PF_PACKET sockets
  eth1: not promisc and no PF_PACKET sockets
  Checking `w55808'... not infected
  Checking `wted'... chkwtmp: nothing deleted
  Checking `scalper'... not infected
  Checking `slapper'... not infected
  Checking `z2'... chklastlog: nothing deleted
  Checking `chkutmp'... chkutmp: nothing deleted
  最後の方はネットワークがスキャン可能な状態ではないか(PROMICUS モードかどうか)の確認や utmp といったログイン情報やログの改竄がみられないかチェックしています。
 
  ちなみに、私は Vine 2.1.5(結構古いですが現役サーバです) 環境で確認していますが、ps コマンドの引数か何かのバグで次のような警告がでてしまうようです。
  OooPS!
  chkproc: Warning: Possible LKM Trojan installed
 
  とりあえず実行してみて、システムに異常が見受けられないようなら安心です。もし INFECTED や 〜 installed とでたら、あわてずにシステムファイルの日付や md5sum コマンドによるチェックサムを比較したりし、不正アクセスが認められるなら速やかにネットワークから切り離して対処することになります。
 
 ** chkrootkit の実行オプション [#ufd37b25]
 
 - "-h" ヘルプを表示します
 
  # ./chkrootkit -h
  Usage: ./chkrootkit [options] [test ...]
  Options:
          -h                show this help and exit
          -V                show version information and exit
          -l                show available tests and exit
          -d                debug
          -q                quiet mode
          -x                expert mode
          -r dir            use dir as the root directory
          -p dir1:dir2:dirN path for the external commands used by chkrootkit
          -n                skip NFS mounted dirs
 
 - "-V" バージョン番号を表示します
  # ./chkrootkit -V
  chkrootkit version 0.45
 - "-l" chkktootkit の検査対象となるファイル一覧を表示します。
  # ./chkrootkit -l
  ./chkrootkit: tests: aliens asp bindshell lkm rexedcs sniffer w55808 wted
  scalper slapper z2 chkutmp amd basename biff chfn chsh cron date du dirname
  echo egrep env find fingerd gpm grep hdparm su ifconfig inetd inetdconf 
  identd init killall ldsopreload login ls lsof mail mingetty netstat named
  passwd pidof pop2 pop3 ps pstree rpcinfo rlogind rshd slogin sendmail sshd
  syslogd tar tcpd tcpdump top telnetd timed traceroute vdir w write
 - "-q" 静かなモード。問題となった項目しか表示しません。
  # ./chkrootkit -q
  
  /usr/lib/perl5/5.8.6/i386-linux-thread-multi/.packlist
  /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi/auto/NKF/.packlist
  
  INFECTED (PORTS:  465)
 - "-x" エキスパート(上級者向け)モードです。非常に膨大な検査記録が表示されますので、実用的な方法としては以下のようにログを出すようにしたほうが良いです。
  # ./chkrootkit -x > check.log
 - "-r" 検査対象となるディレクトリの指定です。たとえば、不正アクセスによりシステムが改竄されたドライブが /mnt にマウントしてある場合、調査のために使う場合もあります(警告:不正なツール群の中には chkrootkit ファイルを実行するだけでも現行のシステムを再汚染するようなものも存在しています。くれぐれも、実稼働中の重要なサーバでは検査を行わないでください。)。
  # ./chkrootkit -r /mnt
 - "-p" はオリジナルの /bin や /usr/bin 配下のファイルが汚染されている可能性があるとき( chkrootkit 自身がだまされる可能性があるとき)、実行ファイルのディレクトリを指定する時のオプションです。たとえば、オリジナルのファイルが /media/cdrom/bin にある時は次のようにします。
  # ./chkrootkit -p /media/cdrom/bin
 >
  "-r"と"-p"の違いは、"-r" が指定したディレクトリ配下を一括して検査するのに対して、"-p" では複数のディレクトリのみチェックできます。たとえば /bin と /sbin のみチェックをさせたい時は
  # ./chkrootkit -p /bin:/sbin
  このように、パスを ":" 記号で区切って指定します。
 <
 
 - "-n" NFS マウントされたディレクトリは検査対象外とします。
  また、特定のプロセスやファイルのみチェックさせることもできます。たとえば ps と ls だけ検査したいときは、次のように引数としてファイル名を記述します。
  # ./chkrootkit ps ls
  ROOTDIR is `/'
  Checking `ps'... not infected
  Checking `ls'... not infected
 
  表示結果の詳細は[[README 日本語訳>chkrootkit README 日本語訳]]を、あるいは[[FAQ 日本語版:http://pocketstudio.jp/linux/?chkrootkit%20FAQ%20%C6%FC%CB%DC%B8%EC%CC%F5]]をご覧ください。
 
 ** chkrootkit の定期的な実行で監視体制を整える [#f13a0315]
 
  せっかく便利なツールなので、毎日自動実行させるような体制をととのえましょう。cron で実行するためのスクリプトを作ります。注意点としては chkrootkit がコンパイルされた環境をカレントのディレクトリと実行されなくてはいけない、ということです。要は make したところで実行、という意味です。
 
  ここでは /usr/local に chkrootkit のコピーを置くようにする例を記述します。
 
  なお、ソースは /usr/local/chkrootkit-0.45 に展開したものとします。
 
  まず、ソースのシンボリックリンクを /usr/local/chkrootkit にはります。リンクしておくのは、将来 chkrootkit のバージョンが変わることがあっても、リンク先を変更するだけで他のスクリプト群には手を加えないようにするためです。
  # ln -s /usr/local/src/chkrootkit-0.45 /usr/local/chkrootkit
  次にスクリプトファイルを作成します。
  # vi /usr/local/bin/chkrootkit.sh
  ファイルの中身は次のようなものです。
  #!/bin/sh
  cd /usr/local/chkrootkit
  ./chkrootkit | mail -s "[chkrootkit] HOSTNAME `date +%Y-%m-%d`" admin@example.jp
  このように記述してください。HOSTNAME は自分のホスト名を、末尾の admin@example.jp は自分(あるいはサーバ管理者)のメールアドレスを記述します。
 
  異常がでたときだけメッセージを出させたいときは以下のようなオプションをつけるほうが良いでしょう。
  ./chkrootkit -q | mail -s "[chkrootkit] HOSTNAME `date +%Y-%m-%d`" admin@example.jp
 
  次に実行権限を与えます。
  # chmod +x /usr/local/bin/chkrootkit.sh
  次は cron への登録です。
 
  # crontab -e
 
 と実行します。vi の cron 編集画面になりますので、
  00 01 * * *     /usr/local/bin/chkrootkit.sh > /dev/null 2>&1
  この記述例では、毎日午前1時に chkrootkit.sh (先ほど記述したスクリプト) を実行して、メールを admin@example.jp 宛に題名『[chkrootkit] HOSTNAME 2005-07-20』(最期は年月日)として送信させるものです。題名の部分は必要に応じて適当に書き換えて使ってみてください。
 
  この段階で試しにスクリプトを実行してみると、メールが届くはずです。
  # /usr/local/bin/chkrootkit.sh
 
  あとは、毎日軽くチェックして、異常が見受けられないか確認するように習慣づけておくことが良いでしょう。
 
 
 * chkrootkit 関連の日本語ドキュメント [#j14afb16]
 
 - [[README 日本語訳>chkrootkit README 日本語訳]]
 - [[FAQ 日本語版>chkrootkit FAQ 日本語訳]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS