サーバーのポートスキャンは、専用のツールを使って実施する。ここではポートスキャンのツールとして、「Nmap」を利用する。以下では、同一ネットワークに診断対象のサーバーがあり、ファイアウオールによるポート遮断がない想定で解説していく。
* * *
若葉イロハが、先輩の吉野さんにポートスキャンの進め方を相談している。
若葉:各担当者との調整が終わったので、いよいよポートスキャンに取り掛かります。まず何をすればよいでしょうか?
吉野:Nmap▼のインストールから始めよう。Webサイトから無料でダウンロードできるよ。
若葉:Windows用のインストーラーもありますね!
* * *
Nmapは、公式サイトから無料でダウンロードできる▼。LinuxやUNIX系OSに加え、WindowsやMac OS Xなどにも対応している。Windows版については、exe形式のインストーラーをダウンロードして実行し、ウイザードに従っていけば、ものの数分でインストールが完了する。インストール後は、コマンドプロンプトで「nmap」と入力して実行し、エラーは出ていないか、Nmapのヘルプが表示されるかを確認しておこう。
基本オプションを使って診断
Nmapは、オープンポートを洗い出すだけでなく、オプションの設定により、サーバーのOSやソフトウエアのバージョン判定、簡易的なセキュリティ診断などができる。まず、Nmapでよく使うオプション「-sT」「-sU」「-p」の内容を理解して、実際にポートスキャンを実行してみよう。
-sTは、TCP▼ポートに対して精度の高いポートスキャンをするオプションだ。3ウエイハンドシェーク▼を使って通信を確立し、サービスが稼働中かを判断する。セキュリティ診断が目的の場合、-sTを使うのがお勧めだ。一方、「-sS」というオプションもある。このオプションでは3ウエイハンドシェークが完全には確立しない▼。そのため通信相手のログに残りづらい。攻撃者は-sSを使うことが多い。
-sUは、UDP▼ポートについてスキャンするときに使う。TCPのような3ウエイハンドシェークの仕組みはないため、TCPのスキャンに比べて精度は低い。
-pはスキャンするポートの範囲を指定するオプションだ。TCP、UDPともに1~65535番の範囲で指定する。なお、TCPもUDPも、すべてのポートをスキャン対象にすると、とても時間がかかる▼。使用頻度の多いポート番号を効率良く確認したいときは「--top-ports=」というオプションを使うのも手だ。例えば、「--top-ports=100」と指定すると、主要な100ポートに絞ってポートスキャンできる。
無償で利用できるスキャンツールとして最も有名で、機能が充実している。URLはhttps://nmap.org/。
URLはhttps://nmap.org/download.html。
Transmission Control Protocolの略。送受信前にコネクションと呼ばれる仮想的な通信改回線を確立するので、コネクション型プロトコルと呼ばれる。パケットの順序管理や紛失したときの再送ができるので、信頼性が高い。
3つのステップからなる接続方法。接続元Aから接続先Bに接続要求であるSYNパケットを送信すると、接続可能な場合は接続先BからSYN+ACKパケットが返ってくる。最後に、接続元AからACKパケットを送信して、接続が確立される。TCPで用いる接続方法。
SYNパケットを送ってSYN+ACKが返ってくるかを調べる。最後にACKパケットは送らないので、完全には接続が確立しない。
User Datagram Protocolの略。コネクションは確立しないので、コネクションレス型プロトコルと呼ばれる。TCPに比べ信頼性は劣るものの、高速にやり取りできる。
UDPですべてのポートをスキャンすると、接続数などの設定値によっては1日以上かかることもある。