ポートスキャナー
約20個のよく知られたポートに、各1回の TCP 接続を sysosx のサーバーから行います——そして答えは2つではなく、3つの正直な答えです。ポートは開いている(何かが応答する)、閉じている(ホストが能動的に拒否する)、フィルタ済み(沈黙——通常はファイアウォールがパケットを落としているのであって、そこに何もない証拠ではありません)のいずれかです。既定の対象は scanme.nmap.org で、nmap プロジェクトが人々がスキャンを学べるようにまさにその目的で運用している公開ホストです。それ以外のホストについては、自分のサーバーか、テストする権限のあるサーバーをスキャンしてください。
これを継続的に監視したいですか?myeventwatch で無料で監視——期限切れとダウンタイムのアラート、カード不要。
スキャンが測るもの
ポートスキャンはよく「どのドアが開いているかを確認すること」と説明され、この比喩は役に立つ程度には正確です——ただし訂正が1つあります。ドアは開いているか、鍵がかかっているか、あるいは単に応答がないかのいずれかです。ノックして何も聞こえないことは、ドアに鍵がかかっているのを見つけることとは違いますし、開いていると閉じているだけを報告するスキャナーは3つ目のケースを隠しています。そのため、このスキャナーは開いている、閉じている、フィルタ済みを3つの異なる状態として報告します。開いているとは接続が成功したこと、つまりサービスが待ち受けていて接続を受け入れていることです。閉じているとはホストがリセットを送ったこと——ホストは生きていて、そのポートには何もありません。フィルタ済みとは、丸1秒の待ち時間が沈黙のうちに過ぎたことで、パケットを落とすファイアウォールが外から見える姿そのものです。そのポートはそのファイアウォールの背後にサービスを持っているかもしれませんし、スキャンはそうでないとは言えません。フィルタ済みを別に保つことが、行動できる結果と、静かに誤解させる結果の違いです。
スキャンは意図的に狭く作られています。約20個の固定リスト——Web(80、8080、8443、443)、メール(25、110、143、993、995)、DNS(53)、リモートアクセス(22、23、3389、5900)、ファイル共有(445)、データベース(3306、5432、27017)、そしてその他いくつか——を、素の TCP 接続だけで探り、それ以外は何もしません。バナーの読み取りはないので、スキャンがサービスのバージョンを知る(あるいは漏らす)ことは決してありません。UDP もなく、その「フィルタ済み」の答えははるかにノイズが多いのです。そして自分のポートを指定する方法もありません。任意のポート入力は、初見のツールを汎用のマッピングサービスに変えてしまうからです。対象自体は1回だけ解決され、すべての接続はその固定された1つのアドレスへ行くので、スキャン途中で変わる名前がプローブを別の場所へ誘導することはできません。裏側では、このページは sysosx のサーバー上の GET /api/check/port-scan を呼び出し、それが20回の接続を並列に実行して結果を10分間キャッシュします。
結果の読み方
まず開いているポートから見てください——それらが実際の攻撃対象領域であり、インターネットが到達できるサービスです。22 や 3389 が開いていることは、リモートアクセスがどこからでも到達可能であることを意味し、それは意図したもの(あなたが管理するサーバー)かもしれませんし、自分のアドレスだけに制限すべき最初のものかもしれません。インターネットに面して開いているデータベースポート(3306、5432、27017)は、ほぼ決して意図したものではなく、直ちに注意が必要です。データベースはアプリケーションから到達されるためのもので、インターネット全体からではありません。80 と 443 が開いているのは Web サーバーでは正常です。メールポートが開いているのはメールサーバーでは正常です。それ以外に開いているものは、すべて自ら説明できなければなりません。閉じているポートは何も必要ありません。ホストは生きていて拒否しており、それがほとんどのサーバーでリストの大半について期待される状態です。フィルタ済みポートは、そこに何かがあるはずだと思っていた場合にだけ、もう一度見る価値があります——あなたが運用していてスキャンには見えないサービスは、たいていファイアウォール規則がその仕事をしているか、サービスが間違ったインターフェースにバインドされているかで、スキャンだけではその2つを見分けられません。開いているポートがまったくない結果は正常な結果であり、エラーではありません。このサーバーの視点からは20個の一般的なサービスのどれにも到達できないことを意味し、それこそが堅牢化されたホストの姿です。
関連ツール:443 が開いていると分かったら、その TLS 設定にはSSL グレーダーを、到達可能性とレコードを一緒に見るにはウェブサイトヘルスチェックを、問題が名前がどこを指すかであって、その上で何が応答するかではない場合にはDNS 伝播チェッカーをどうぞ。
さらに読む:開いているポートがサーバーについて語ること——運用者のようにスキャンを読む方法、どの開いているポートが正常で、どれが午前3時の呼び出しが起きるのを待っているのか。
よくある質問
これは nmap を実行することとどう違うのですか?
nmap はあらゆる方法であらゆるものをスキャンします。全ポート範囲、UDP、バージョン検出、OS フィンガープリント。このツールは sysosx のサーバーから狭い1つのことだけを行います——約20個のよく知られたポートの固定リストへの TCP 接続、それ以外は何もしません。バナー読み取りなし、バージョン検出なし、UDP なし、カスタムポートなし。その狭さこそが要点です。「一般的なポートで何が待ち受けているか?」に答え、誰もが何にでも向けられる汎用スキャナーにはなりません。
開いている、閉じている、フィルタ済みは実際には何を意味しますか?
開いているとは TCP 接続が成功したことです——何かがそのポートで待ち受けていて接続を受け入れています。閉じているとはホストが接続を能動的に拒否したこと(リセットパケット)で、そのポートに何も持たない生きているホストの応答の仕方です。フィルタ済みとは、そのポートが1秒以内にまったく応答しなかったことです——典型的にはファイアウォールが静かにパケットを落としています。フィルタ済みは閉じているとは違います。フィルタ済みポートはファイアウォールの背後にサービスを持っているかもしれませんし、正直な言い方は「応答なし」だけです。結果表が3つの状態をすべて別々に保つのは、まさにそのためです。
なぜ20ポートだけなのですか?自分のポートを追加できないのはなぜですか?
任意のポート入力を持つポートスキャナーは、インターネット上のあらゆるホストをマッピングするためのツールであり、このサイトはそうはならないからです。リストは初見で重要なポート——Web、メール、DNS、データベース、リモートアクセス、ファイル共有——をカバーし、サーバーはそれ以外のすべてを拒否します。自分の所有するホストの完全なスキャンが必要なら、自分で範囲と結果を管理できる自分のマシンから nmap を実行してください。
なぜ既定が scanme.nmap.org なのですか?
まさにその目的のために存在するからです。nmap プロジェクトは、スキャンの仕組みを学べるよう、誰もがスキャンできる公開対象としてそれを運用しています。スキャンに許可の議論が要らない、インターネット上で唯一のホストです。それ以外のホストについてはルールは簡単です。自分のサーバー、テストする権限のあるサーバー、または公開テスト対象をスキャンすること——見知らぬ人のインフラは決してスキャンしないことです。
なぜ結果は10分間キャッシュされ、1時間に新しいスキャンは5回までなのですか?
1回のスキャンは20回の並列 TCP 接続であり、1回のハンドシェイクではないので、他のチェックよりコストがかかり、一括プローブに悪用されやすいのです。10分間のキャッシュにより、同じホストの再チェックは無料になり、より厳しい新規制限(訪問者1人あたり1時間に5回、最大で1分に2回)により、このツールは自分のサーバーを確認する人にとって使いやすいまま、プローブサービスにはなりません。キャッシュされた結果にはその旨が表示されます。ホストの開いているポートは分単位で変わることはめったにありません。