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

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

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のメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。