ホームページの公開やメールの送受信など、サーバーが提供しているサービスには様々なものがあります。
ネットワーク通信を行うサービスには、通信を行うための「ポート」という窓口があり、これは番号で管理されています。例えば、ホームページをインターネットに公開するHTTPのサービスでは80番、メールの送信には587番など、よく知られたサービスは基本的に固定したポート番号が予め割り振られています。
サーバーがどのようなポートを開放してサービスを行っているのか、外部から調査する行為のことを「ポートスキャン」と言います。今回はポートスキャンの概要とその種類、そしてセキュリティ上の対策方法について紹介します。
ポートスキャンとは
ポートスキャンとは、ネットワークに接続されているサーバー上の稼働サービスを調査するために、外部から特定のデータを送信して、それに対応する応答を調べることです。得られた応答を分析することで、サーバーで動作しているサービスのバージョンやOSなどを特定できます。
ポートスキャンするためのツールとして、コマンドラインで動作する「nmap」やGUIで提供されている「Zenmap」などが有名です。ZenmapはnmapをGUIで使えるようにしてもので、日本語バージョンも公開されています。これらのツールは無料で使うことができます。
ポートスキャンを行うことで得られる情報
サーバーに対してポートスキャンを行うことで、以下のような情報を得ることができます。
- 開いているポート番号
- 閉じているポート番号
- FW(ファイアウォール)によってフィルタリングされているポート情報
- 開いているポートで稼働しているサービス(HTTPやFTP)の情報
- 開いているポートのサービスに関する情報(バージョンなど)
ポート番号は0番から65535まで存在していますが、0から1023まではすでに稼働しているサービスに割り振られています。有名なポート番号としては、以下のように定められています。
20番 | FTP(データ) |
21番 | FTP(制御) |
22番 | SSH |
25番 | SMTP |
53番 | DNS |
80番 | HTTP |
110番 | POP3 |
443番 | HTTPS |
これらはウェルノウンポート(Well-Known Port)番号と呼ばれ、ユーザーはオリジナルのサービスにこれらのポート番号を使うことはできません。
サーバーがどのサービスにどのポートを使っているかは、「Service Name and Transport Protocol Port Number Registry」を参照してください。
参照Service Name and Transport Protocol Port Number Registry
ポートスキャンとサイバー攻撃の関係
ポートスキャンはサーバーなどのネットワーク機器に対して、接続できるサービスを探り、解放されているポート番号を調べる行為です。つまりポートスキャン自体は問題ありません。しかしサイバー攻撃において、攻撃者はこれから行おうとしている攻撃のための調査として、ポートスキャンを行います。
もし自社で稼働しているサーバーに対して、ポートスキャンが行われていることに気づいたら、”サイバー攻撃の予兆”としてとらえ対策をとることが重要です。
ポートスキャンは”サイバー攻撃の予兆”とも言える
ポートスキャンは例えば、家の中にだれも人がいないこと確かめるために、インターフォンを鳴らして確認するようなイメージです。もし自宅にこのような行為が確認できたら、次は犯罪者が自宅に侵入してこないかどうか、注意するでしょう。
ポートスキャンも同様に、これ自体はサイバー攻撃ではなくても、これから被害が発生するかもしれないサイバー攻撃の予兆としてとらえることが重要です。
ツールを使用すれば簡単にポートスキャンができてしまう
先ほどポートスキャンができるツールとして「nmap」や「Zenmap」を紹介しました。これらのツールを使うことで簡単にポートスキャンができることも、ポートスキャンが簡単に行われる要因にもなっています。
そのため、攻撃に結びつかない興味本位のポートスキャンも存在します。しかしそのようなポートスキャンでも無視することは得策ではありません。
ポートスキャンの種類
ポートスキャンはサーバーに対してパケットと呼ばれるデータを送信して、攻撃の目標を探ります。送信されるパケットの種類に応じて、返却されるパケットの種類が決められています。返答された反応を分析することで、ターゲットで稼働しているサービスを調べること可能です。ポートスキャンの種類について、いくか紹介します。
TCPスキャン | 3ウェイハンドシェイク(SYN + SYN/ACK + ACK)が確立したときに、そのポートで通信が成立すると判断します。コネクションが確立するため、サーバーのログに記録されます。 |
---|---|
SYNスキャン | コネクションを確立しないでポートの稼働状態を確認する方法です。完全な3ウェイハンドシェイクを確立しないため、ステルススキャンやハーフオープンスキャンともよばれます。 ポートに対してSYNパケットのみを送信して、応答を確認します。SYN/ACKを受信したときは、サービスは稼働していると判断し、RST/ACKを受信したときは、サービスが非稼働であると判断します。 |
FINスキャン | FINパケットを送信し、RSTパケットを受信したら、そのポートは稼働していると判断します。もし何も帰ってこなかった場合は、そのポートは稼働していないと判断します。 |
クリスマスツリースキャン | FIN、URG(緊急確認)、PUSHのフラグをセットしたパケットを送信します。ターゲットのサービスが稼働していない場合、RSTパケットが返ってきますが、サービスが稼働しているときは、何も帰ってきません。 |
NULLスキャン | どのフラグも立っていないパケットを送信するポートスキャンです。ターゲットのサービスが稼働していない場合、RSTパケットが返ってきますが、サービスが稼働しているときは、何も帰ってきません。 |
UDPスキャン | UDPを使ったポートスキャンです。ターゲットにUDPパケットを送信し、ICMP Port Unreachableメッセージ が返ってこなければサービスは提供されていると判断します。UDPは通信相手への到達保障がなく、途中でICMPパケットをロスする可能性もあります。 |
ポートスキャンの検知、対策方法
もし運用しているサーバーにポートスキャンを検知したら、どうしたらよいのでしょうか。対策方法を3つ紹介します。
1. ファイアウォールのログを確認する
ポートスキャンが発生した場合、ファイアウォールのログを確認すると、ポートスキャンが行われた短時間の間に遮断のログが記録されます。またインターネットルーターによっては警告のログが残る場合もあります。
意図的なポートスキャンではない場合、対策としてポートスキャンの発信元を洗い出して、ファイアウォールの設定で、その通信元からの通信を遮断するように設定しましょう。
2. 脆弱性対策を行う
既知の脆弱性に対して日頃から対策を行っておくことも重要です。修正プログラムの適用を怠らないようにするだけではなく、IDS/IPSやWAFなどの製品も導入しましょう。
サーバーに不要なサービスが起動していないか定期にチェックすることも重要です。意図しないサービスが誤操作などによって起動している可能性もあるからです。サービスを提供しているサーバーで「netstat」コマンドを実行すると、開いているポートが確認できます。そのポートのサービスが不要でしたら、サービスを停止します。
また、サーバーの起動時に不要なサービスが自動的に立ち上がる設定になっていることがあるので、その点についてもしっかりと確認しましょう。
3. WAFを導入する
WAF(Web Application Firewall) の導入もおすすめです。WAFには様々なものがありますが、クラウド型のWAFはコストや手間をかけずに導入できます。クラウド型ですので、自前でハードウェアや仮想サーバーなどの用意をする必要があります。また自社ネットワーク外で動作するため、悪意のある通信が自社ネットワークの内側まで到達しないというメリットもあります。
WAFを導入する際は、機能や料金だけでなく、サポートの体制や実績も加味して、最適なものを選択しましょう。
まとめ
ポートスキャンの概要から、その種類、そして対策方法まで紹介してきました。ポートスキャンはツールを使うことで簡単に実行できるため、インターネット上で動作しているサーバーによっては、頻繁にポートスキャンのログが記録されていることもあるかもしれません。
運営しているサーバーに何度もポートスキャンの記録があっても、実際に攻撃されたことは、これまでなかったかもしれません。しかし、ポートスキャン自体は無害な行為でも、サイバー攻撃の準備段階として実行されることもあり、サービスの適切な運営のためには、無視できるものではありません。
まずはサーバーで不要なサービスが起動していないかチェックすることから始め、サーバーのアクセスログのチェックも丹念に行うなど、攻撃のきっかけとなる兆候に対して、シビアな目線でチェックすることが重要と言えるでしょう。