連載
» 2008年08月22日 16時54分 公開

セキュリティ対策の「ある視点」(11):ハニーポットによるウイルス捕獲から見えてくるもの (2/4)

[辻 伸弘(ソフトバンク・テクノロジー株式会社),@IT]

nepenthesのインストールの前に

 ロー・インタラクションのハニーポットとはいえ、この動作には当然土台となるOSが必要である。nepenthesは「Linux系」「BSD系」「Mac OS X」「Windows(要Cygwin)」とさまざまなOSで動作することが可能となっている。

 今回は、Red Hatとも互換性の高い「CentOS」の5.2 FINALを用いる。OSのインストールについては、詳細な記事がインターネット上に存在するため今回は割愛させていただき、nepenthesに関する部分のみを取り上げさせていただく。

 OSのインストール完了後、nepenthes本体のインストールに入る前に、各種モジュールの準備などが必要となる。nepenthesのREADMEによると、動作に必要とされる、モジュールは以下のとおりであるが、これ以外にtftpコマンドが必要となる。

【nepenthesの動作に必要とされるモジュール】


 ほとんどのモジュールは、yum(Yellow Dog Updater Modified)コマンドを用いることでインストールできるが、インストールの前に現在のシステムに必要なモジュールがインストールされているかどうかの確認を行うことをお勧めする。インストールされているかどうかを確認するには、それぞれ以下のように実行するとよい(libadnsについては、yumではなく、ソースからインストールする必要があるためインストール方法は別途紹介する)。

# rpm -qa | grep tftp
# rpm -qa | grep curl
# rpm -qa | grep pcre
# rpm -qa | grep pcap

 上記コマンドそれぞれを実行後、何も結果が表示されない場合は、そのモジュールはインストールされていないということである。以下は、筆者が作成した環境でのインストール確認ログである。

# rpm -qa |grep tftp
# rpm -qa |grep curl
curl-7.15.5-2.el5
# rpm -qa |grep pcre
pcre-6.6-1.1
# rpm -qa |grep pcap
libpcap-0.9.4-11.el5
# rpm -qa | grep ^file-
file-4.17-9.0.1.el5

 上記結果から、「tftp」がシステム内にインストールされていないことが分かる。また、nepenthesの動作には、devel版も必要となるので「curl-devel」「pcre-devel」について、別途、インストールが必要である。

 上記ログにおいて、インストールされていないと判明したものに対して、yumを用いてインストールを行う。インストールの際のコマンドは下記のように実行する。

yum install <ソフトウェア、モジュール名>


 例えば、tftpの場合であれば下記のようなログになる。

yum install tftp


 上記の要領でインストールされていなかったモジュールのインストールを行っていただきたい。

 それでは、最後のモジュール、libadnsのインストールを行う。特に気を付ける点などはなく、下記のような方法でインストール可能だ。

# wget  http://www.chiark.greenend.org.uk/~ian/adns/adns.tar.gz
# tar zxvf adns.tar.gz
# cd adns-1.2/
# ./configure
# make
# make install

 インストールが完了したら、モジュールのロードを行うためのファイルとコマンドの実行が必要になる。まず、下記の内容を記述したファイル(ファイル名は任意)を/etc/ld.so.conf.d/以下に作成する。

/usr/local/lib

リスト1 /etc/ld.so.conf.d/以下に作成すべきファイルの内容

 作成が完了したら、「ldconfig」を実行してモジュールのロードを行う。この作業は初回のみ必要となるので、OSの再起動などが発生しても、実行する必要はない。ファイルの作成からモジュールのロードは下記手順である(任意の名前のファイルは「nep_mod.conf」とした)。

# vi /etc/ld.so.conf.d/nep_mod.conf
"/etc/ld.so.conf.d/nep_mod.conf"  [New] 2L, 16C written
# ldconfig

 nepenthes本体のインストール準備の最後は、nepenthes起動用グループとユーザーの作成である。

# groupadd nepenthes
# useradd -g nepenthes -d /dev/null -s  /sbin/nologin nepenthes

nepenthesのインストール

 それでは、nepenthes本体のインストールである。前述した環境が整っていれば以下の手順でスムーズにインストールが進むだろう。./configureの時点で何かのモジュールが存在しないといったエラーが返された場合は適宜yumなどを使用し、モジュールを追加していただきたい。

# wget http://nchc.dl.sourceforge.net/sourceforge/nepenthes/nepenthes-0.2.2.tar.gz
# tar zxvf nepenthes-0.2.2.tar.gz
# cd nepenthes-0.2.2
# ./configure
# make
# make install

 上記コマンドでインストールが完了するとnepenthesは「/opt/nepenthes」以下に作成される。

 これで起動の準備は整ったのだが、起動前に注意することがある。それは、nepenthesが脆弱性をエミュレートするに当たって、nepenthesが使用するポートが事前に使われているかどうかである。OSをインストールする際に、サーバ系ソフトウェア、例えばApacheなどをインストールしていて自動で起動していた場合はそちらが優先され、nepenthesがポート開放に失敗する。そのような場合は、オープンポートが競合するサービスを停止するか、ポート番号を変更すればよい。

 nepenthes起動前(サーバ系ソフトウェアのSSHのみ)と起動後のnetstatの結果を掲載(LISTENステータスのみ)しておくので、事前の確認を行う参考としてほしい。

【nepenthes起動前】
# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address       Foreign Address       State 
tcp              0          0 *:ssh                    *:*                         LISTEN 
udp              0          0 *:63 


【nepenthes起動後】
# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address       Foreign Address       State 
tcp             0           0 0.0.0.0:1025          0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:993            0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:995            0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:3140          0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:135            0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:5000          0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:42              0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:139            0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:3372          0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:110            0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:143            0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:80              0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:10000         0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:6129           0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:465            0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:5554           0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:27347         0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:17300         0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:21              0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:3127           0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:2103           0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:2105           0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:2745           0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:25              0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:2107           0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:443             0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:220             0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:445             0.0.0.0:*                 LISTEN 
tcp             0           0 0.0.0.0:1023           0.0.0.0:*                 LISTEN 
tcp             0           0 :::22                       :::*                        LISTEN 
udp             0           0 0.0.0.0:1434           0.0.0.0:* 
udp             0           0 0.0.0.0:68              0.0.0.0:*
リスト2 nepenthesがオープンするポートの一覧

 nepenthesがかなりの数のポートをオープンしていることが分かるだろう。nepenthes起動前と後を比較するとtcp/22番とudp/68番以外はnepenthesが脆弱性をエミュレートするために開放しているポートであるということが分かる。

 それでは、nepenthesを起動しよう。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。