開いているポートを調べるには -- 不要なサービスを停止するために

文:Chad Perrin 翻訳校正:石橋啓一郎
2008-12-12 08:00:00
  • このエントリーをはてなブックマークに追加

 「10 security tips for all general-purpose OSes」(すべての汎用OSのためのセキュリティのヒント10)という記事でも説明したとおり、不要なサービスは、攻撃対象となりセキュリティ上の脅威になってしまうのを避けるために無効にしておくべきだ。また、別の私の記事「10 services to turn off in MS Windows XP」(Windows XPで無効にすべきサービス10)では、具体的にMicrosoft Windowsで無効にすべきサービスを10件挙げている。ただ、この10件という数は記事で列挙するには適当な大きさだが、網羅的とは言い難い。

 もちろん、本質的には網羅的なリストを作る方法は存在しない。システムが違えば、デフォルトで実行されているサービスは違っている。Windows XPのサービスパックのバージョンが違うだけでも、実行されるサービスは違っており、もし自分が担当者になる前に設定されたコンピュータのセキュリティの責任を負わなくてはならないような状況になれば、そのシステムにはデフォルトでインストールされるものとは異なるサービスが実行されているだろうことはほぼ確実だ。さらに悪いことに、時々新たなサービスが発明され、特定のコンピュータで実行されているサービスの数が増えることもある。

 必要なのは、listenしているサービスと開いているポートを調べるツールだ。この記事では、その目的に使えるツールを、アルファベット順にLinuxディストリビューション、FreeBSD、MS Windowsの順で説明していく。それに加え、他のツールが利用できない可能性がある商用UNIXシステムで使える、補助的なツールも説明する。

FreeBSD

 FreeBSDのシステムでは、他のBSD UNIXのシステムと同様、基本システムがインストールされた状態で、開いているファイル、実行されているプロセス、ネットワークのコネクションを調べるのに利用できるユーティリティを多く備えている。netstatコマンドは、FreeBSDのコア開発者の手によるFreeBSDの基本システムの一部としてメンテナンスされており、システム上の開いているポートを列挙するという、まさにここで必要としている機能を提供している。

netstat

 FreeBSDでnetstatを使い、開いているネットワークのポートと、それらのポートを所有しているプロセスを調べるには、以下のコマンドを実行する。

  netstat -a | egrep 'Proto|LISTEN'

 私のFreeBSDを動かしているラップトップでこのコマンドを実行した場合の出力は、次のようになる。

Proto Recv-Q Send-Q  Local Address      Foreign Address    (state)
tcp4       0      0  localhost.ipp      *.*                LISTEN
tcp6       0      0  localhost.ipp      *.*                LISTEN
tcp4       0      0  *.2200             *.*                LISTEN
tcp6       0      0  *.2200             *.*                LISTEN
tcp4       0      0  *.x11              *.*                LISTEN
tcp6       0      0  *.x11              *.*                LISTEN

 localhost.ippというエントリは、CUPSがネットワークプリンタと通信する際に使うInternet Printing Protocolを参照している。*.2200というエントリはSSHを参照しており、私はこれを標準とは異なるポートに設定している。このため、netstatのポートとサービスの対応を取る機能では認識できていない。*.x11はX Window Systemのプロトコルを参照している。

  • 新着記事
  • 特集
  • ブログ