セキュリティ · 4 min read · Jan 30, 2026
Chkrootkit-Portsentry-Howto
Chkrootkit-Portsentry-Howto
Version 1.0
Author: Falko Timme
この文書は、chkrootkitとportsentryのインストール方法を説明します。すべての*nixオペレーティングシステムで動作するはずです(パスなどに関して若干の変更が必要な場合があります)。
Chkrootkitは「ルートキットの兆候をローカルでチェックするためのツール」です(http://www.chkrootkit.orgから)。
「SentryツールはUnixプラットフォームのホストレベルのセキュリティサービスを提供します。PortSentry、Logcheck/LogSentry、HostSentryはポートスキャンから保護し、ログファイルの監査を自動化し、継続的に疑わしいログイン活動を検出します」(http://sourceforge.net/projects/sentrytools/から)。
このハウツーは実用的なガイドとして意図されており、理論的な背景はカバーしていません。それらはウェブ上の他の多くの文書で扱われています。
この文書は、いかなる種類の保証もなく提供されます!
1 ソースを取得する
次のソフトウェアが必要です:chkrootkit、portsentry、およびlogcheck。ソフトウェアは/tmpディレクトリからインストールします。
cd /tmp
wget –passive-ftp ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
wget http://heanet.dl.sourceforge.net/sourceforge/sentrytools/portsentry-1.2.tar.gz
wget http://heanet.dl.sourceforge.net/sourceforge/sentrytools/logcheck-1.1.1.tar.gz
2 Chkrootkitをインストールする
mv chkrootkit.tar.gz /usr/local/
cd /usr/local/
tar xvfz chkrootkit.tar.gz
ln -s chkrootkit-0.43/ chkrootkit(0.43を正しいバージョン番号に置き換えます) cd chkrootkit/ make sense*
これで、chkrootkitプログラムが/usr/local/chkrootkitの下に見つかります。次のように入力して実行します。
cd /usr/local/chkrootkit/ && ./chkrootkit
出力は次のようになります:
| ROOTDIR is `/` Checking `amd`... not found Checking `basename`... not infected Checking `biff`... not infected 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 found Checking `grep`... not infected Checking `hdparm`... not found Checking `su`... not infected Checking `ifconfig`... not infected Checking `inetd`... not infected Checking `inetdconf`... not infected 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 found 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 found Checking `timed`... not found Checking `traceroute`... not found 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/perl/5.6.1/auto/Test/Harness/.packlist /usr/lib/perl/5.6.1/auto/DB_File/.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 found Searching for T.R.K... nothing found Searching for Mithra... nothing found Searching for OBSD rk v1... nothing found Searching for LOC rootkit ... nothing found Searching for Romanian 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 anomalies in shell history files... nothing found Checking `asp`... not infected Checking `bindshell`... not infected Checking `lkm`... nothing detected Checking `rexedcs`... not found Checking `sniffer`... eth0: not promisc and no PF_PACKET sockets eth0:0: not promisc and no PF_PACKET sockets eth0:1: not promisc and no PF_PACKET sockets eth0:2: not promisc and no PF_PACKET sockets eth0:3: not promisc and no PF_PACKET sockets eth0:4: not promisc and no PF_PACKET sockets Checking `w55808`... not infected Checking `wted`... nothing deleted Checking `scalper`... not infected Checking `slapper`... not infected Checking `z2`... nothing deleted |
もしワーム、ルートキットなどが見つかった場合、INFECTED(大文字)という文字列で示されます。
chkrootkitの出力を毎日午前3時にメールで受け取りたい場合は、rootのcronファイルに次の行を追加できます(場所はディストリビューションによって異なります。Debianの場合は/var/spool/cron/crontabs/rootの下にあります。/var/spool/cron/tabs/rootや似たような場所にあるかもしれません):
0 3 (cd /usr/local/chkrootkit; ./chkrootkit 2>&1 | mail -s “chkrootkit output” [email protected])*
その後、次を実行します。
chmod 600 /var/spool/cron/crontabs/root
/etc/init.d/cron restart
3 Portsentryをインストールする
cd /tmp
tar xvfz portsentry-1.2.tar.gz
cd portsentry_beta/
make linux
make install
Portsentryは/usr/local/psionic/portsentry/にインストールされます。
/usr/local/psionic/portsentry/portsentry.confを編集し、portsentryが保護するポートを指定します:
| # 本当に厳密にしたい場合はこれをコメント解除してください: #TCP_PORTS="1,7,9,11,15,70,79,80,109,110,111,119,138,139,143,512,513,514,515,540,635,1080,1524,2000,[...]" #UDP_PORTS="1,7,9,66,67,68,69,111,137,138,161,162,474,513,517,518,635,640,641,666,700,2049,31335,[...]" # # ただ気をつけたいだけの場合はこれを使用してください: TCP_PORTS="1,11,15,79,111,119,143,540,635,1080,1524,2000,5742,6667,12345,12346,20034,27665,31337,[...]" UDP_PORTS="1,7,9,69,161,162,513,635,640,641,700,37444,34555,31335,32770,32771,32772,32773,32774,[...]" # # 最小限のためにこれを使用してください #TCP_PORTS="1,11,15,110,111,143,540,635,1080,1524,2000,12345,12346,20034,32771,32772,32773,32774,[...]" #UDP_PORTS="1,7,9,69,161,162,513,640,700,32770,32771,32772,32773,32774,31337,54321" |
システムで使用されていないポートである必要があります。たとえば、サーバーでIMAP(ポート143 TCP)を使用している場合は、上記のリストから143を削除する必要があります。portsentry.confの残りはよくコメントされていますが、通常はデフォルト値で動作するはずです。
次に、portsentryのためのinitスクリプトを作成する必要があります(/etc/init.d/portsentry)。ポートスキャンを検出する最も強力な方法として、portsentryを高度なステルスモードで実行します:
| #!/bin/bash case "$1" in start) echo "Portsentryを開始しています..." ps ax | grep -iw '/usr/local/psionic/portsentry/portsentry -atcp' | grep -iv 'grep' > /dev/null if [ $? != 0 ]; then /usr/local/psionic/portsentry/portsentry -atcp fi ps ax | grep -iw '/usr/local/psionic/portsentry/portsentry -audp' | grep -iv 'grep' > /dev/null if [ $? != 0 ]; then /usr/local/psionic/portsentry/portsentry -audp fi echo "Portsentryは現在稼働中です!" ;; stop) echo "Portsentryをシャットダウンしています..." array=(`ps ax | grep -iw '/usr/local/psionic/portsentry/portsentry' | grep -iv 'grep' \ | awk '{print $1}' | cut -f1 -d/ | tr ' ' ' '`) element_count=${#array[@]} index=0 while [ "$index" -lt "$element_count" ] do kill -9 ${array[$index]} let "index = $index + 1" done echo "Portsentryが停止しました!" ;; restart) $0 stop && sleep 3 $0 start ;; *) echo "使用法: $0 {start|stop|restart}" exit 1 esac exit 0 |
chmod 755 /etc/init.d/portsentry
portsentryをブート時に開始するには、次のようにします:
ln -s /etc/init.d/ portsentry /etc/rc2.d/S20 portsentry
ln -s /etc/init.d/ portsentry /etc/rc3.d/S20 portsentry
ln -s /etc/init.d/ portsentry /etc/rc4.d/S20 portsentry
ln -s /etc/init.d/ portsentry /etc/rc5.d/S20 portsentry
ln -s /etc/init.d/ portsentry /etc/rc0.d/K20 portsentry
ln -s /etc/init.d/ portsentry /etc/rc1.d/K20 portsentry
ln -s /etc/init.d/ portsentry /etc/rc6.d/K20 portsentry*
これでportsentryを開始します:
/etc/init.d/portsentry start
注意: portsentryを実行すると、chkrootkitは感染したバインドシェルについて不満を言うかもしれません:
Checking bindshell… INFECTED (PORTS: 31337)
これは正常であり、心配する必要はありません。
4 Logcheckをインストールする
cd /tmp
tar xvfz logcheck-1.1.1.tar.gz
cd logcheck-1.1.1/systems/
次に、logcheck.shの変数SYSADMINを変更します。SYSADMINは、logcheckの出力をメールで受け取る人です(これはメールアドレスまたはlogcheckをインストールするシステム上のユーザーである可能性があります):
| [...] # 設定セクション PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/ucb:/usr/local/bin # LogcheckはほとんどのBSDライクなシステムで動作するように事前設定されていますが、 # それはかなり単純なプログラムであり、他のシステムで動作するためには # いくつかの助けが必要かもしれません。以下のコマンドパスが正しいことを確認してください。 # ログ活動を送信する人。 [email protected] # logtailプログラムへのフルパス。 # このプログラムはこのスクリプトを実行するために必要で、パッケージに含まれています。 LOGTAIL=/usr/local/bin/logtail [...] |
cd ../../
mkdir -p /usr/local/etc/tmp
make
これにより、logcheckが/usr/local/etcにインストールされます。
次に、logcheckを定期的に実行するためのcronジョブを作成する必要があります。rootのcronファイル(例:/var/spool/cron/crontabs/root、セクション2「Chkrootkitをインストールする」を参照)を編集し、次の行を入力します:
0 3 /usr/local/etc/logcheck.sh*
その後、次を実行します。
chmod 600 /var/spool/cron/crontabs/root
/etc/init.d/cron restart
これにより、logcheckが毎日午前3時に呼び出されます。これにより、異常なシステムイベント、セキュリティ違反、システム攻撃などについて通知されます。システムがインターネットに直接接続されている場合、インターネット上に多くの悪意のある活動があることに気づき、セキュリティが非常に重要である理由を理解することができます。
リンク
Chkrootkit: http://www.chkrootkit.org/
Portsentry: http://sourceforge.net/projects/sentrytools/
この文書の元の場所:
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。