ネットワークサービス設定の後、どのポートがシステムのネットワークインターフェース をリッスンしているか注意を払う必要があります。 オープンポートは侵入を意味します。
ネットワークをリッスンするポートを確認する基本方法は2つあります。 信頼性の低い方法として、 netstat -an or lsof -iなどのコマンドを入力し、ネットワークスタックをクエリーする方法があります。 プログラムがネットワークからマシーンに接続せず、システム上で実行されているかを 確認する方法のため、信頼性は低いと言えます。 そのため、アプリケーションの置換を試みる攻撃者のいいターゲットとなってしまいます。 クラッカーが不当なネットワークポートをオープンした場合、侵入経路を隠そうとします。
ネットワークをリッスンするポートを確認する信頼性の高い方法として nmapなどのポートスキャナーを使用する方法があります。
コンソールから発信される次のコマンドによって ネットワークのTCP接続をリッスンしているポートを特定することができます。:
nmap -sT -O localhost |
このコマンドの出力は次のようになります。
Starting nmap V. 3.00 ( www.insecure.org/nmap/ ) Interesting ports on localhost.localdomain (127.0.0.1): (The 1596 ports scanned but not shown below are in state: closed) Port State Service 22/tcp open ssh 111/tcp open sunrpc 515/tcp open printer 834/tcp open unknown 6000/tcp open X11 Remote OS guesses: Linux Kernel 2.4.0 or Gentoo 1.2 Linux 2.4.19 rc1-rc7) Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds |
この出力を例としてみると、sunrpcが存在するため、 システムがportmapを実行している状態になっていますが、 未確認のサービスがポート834に存在しています 。このポートが既知サービスと関連があるか 調べるには次を入力して下さい。:
cat /etc/services | grep 834 |
このコマンドからの出力はありませんでした。 これはポートが指定された範囲(0から1023)にあり、オープンするのにルート接続を 必要とし、既知サービスとは関連がないことを示します。
次にnetstat又はlsofを使用し、 ポート情報を確認して下さい。 netstatでポート834を確認するには、 次のコマンドを使用して下さい。:
netstat -anp | grep 834 |
コマンドが次を出力しました。:
tcp 0 0 0.0.0.0:834 0.0.0.0:* LISTEN 653/ypbind |
侵入したシステムで内密にポートをオープンするクラッカーは、このコマンドに よって発見されないようにするため、 netstatのオープンポートの存在が再確認されたことになります。 また、[p]オプションによって、 ポートをオープンしたサービスのプロセスID (PID)が判明しました。 このケースでは、オープンポートはportmapサービスと併せて使用されるRPCサービス ypbind (NIS)に属しています。
lsofコマンドはサービスとオープンポートをリンクする機能があるため、 同様の情報を明らかにしました。:
lsof -i | grep 834 |
このコマンドに該当する出力は次の通りです。:
ypbind 653 0 7u IPv4 1319 TCP *:834 (LISTEN) ypbind 655 0 7u IPv4 1319 TCP *:834 (LISTEN) ypbind 656 0 7u IPv4 1319 TCP *:834 (LISTEN) ypbind 657 0 7u IPv4 1319 TCP *:834 (LISTEN) |
このようなツールを使えばマシンで実行されているサービスの状態を かなり明らかにすることができます。 また、ツールはフレキシブルで、ネットワークサービスや設定に関する豊富な情報 を提供してくれます。 是非lsof、netstat、nmap、 services のman ページを参考してみて下さい。