「自分のサーバーが攻撃者の目にどう見えているか、確認したことがありますか?」攻撃者がネットワークへの侵入を試みるとき、必ず最初に行う作業があります。それが「ポートスキャン」です。
どのポートが開いているか、どのサービスが動いているかを調べ、攻撃の糸口を探す偵察活動——これを知っているかどうかで、防御の精度がまったく変わります。
この記事では、ポートスキャンの仕組み・種類・攻撃者が実際に行う偵察の手順、そして現場のエンジニアがすぐに実施できる検知・防御策を解説します。インフラエンジニアや情シス担当者が「明日から使える知識」としてお伝えします。

ポートスキャンとは?なぜ攻撃の第一歩になるのか
ポートスキャンを理解するには、まず「ポート」の概念を押さえておく必要があります。
ポートとは、1つのIPアドレスに対して複数のサービスを動かすための「番号付きの窓口」です。WebサーバーはHTTP(80番)・HTTPS(443番)を使い、メールサーバーはSMTP(25番)を使います。SSH(リモートログイン)は22番が標準です。ポート番号は0から65535まで存在し、よく使われる番号はIANA(インターネット番号管理機関)が標準として定めています。
ポートスキャンとは、対象のサーバーに対して「どのポートが開いているか(リスニング状態か)」を調べる技術です。攻撃者はこの情報を使って次のことを判断します。
・開いているポートから動いているサービスを特定する: SSH・FTP・Webサーバー・データベース等の存在を把握
・バージョン情報(バナー)を取得する: 使用しているソフトウェアとバージョンから既知の脆弱性を探す
・OSを推測する: レスポンスのパターン(TTL値・TCPウィンドウサイズ等)からOSを特定する
建物への侵入を試みる者が、まずすべての扉と窓を確認して「どこが鍵のかかっていない入口か」を探す——ポートスキャンはその偵察活動に相当します。
攻撃者はどうやってポートスキャンを行うか
攻撃者が使う代表的なツールがnmapです。nmapはオープンソースのネットワーク探索・セキュリティ監査ツールで、管理者が自分のネットワークを点検するためにも広く使われています。ここでは防御のために知っておくべき、攻撃者のスキャン手順を解説します。
1. SYNスキャン(最もよく使われる手法)
TCPのハンドシェイクを完了させずに行うスキャン手法です。「ステルススキャン」とも呼ばれ、接続完了ログに残りにくいという特徴があります。
TCP通信では本来、接続確立まで「SYN → SYN-ACK → ACK」の3ステップ(3ウェイハンドシェイク)を踏みます。SYNスキャンは最初のSYNパケットを送り、相手からSYN-ACKが返ってきたらポートが開いていると判断して即座にRSTパケットで接続を切断します。
# SYNスキャンの通信フロー(防御視点での理解用) # ポートが開いている場合: # スキャナ --SYN--> サーバー # スキャナ <--SYN-ACK-- サーバー(開いている!) # スキャナ --RST--> サーバー(接続を切断して痕跡を消す) # # ポートが閉じている場合: # スキャナ --SYN--> サーバー # スキャナ <--RST-ACK-- サーバー(閉じている)
2. フルコネクトスキャン
3ウェイハンドシェイクを完全に完了させるスキャンです。確実にポートの状態を確認できますが、サーバー側のログに接続記録が残るため、防御側からすると発見しやすいスキャンです。
3. UDPスキャン
DNSサーバー(53番)・NTP(123番)・SNMP(161番)など、UDP通信を使うサービスを調べるスキャンです。TCPスキャンより時間がかかりますが、UDPサービスが稼働しているかどうかを確認するために使われます。
4. バナーグラビング(サービス・バージョン特定)
ポートが開いていることを確認した後、攻撃者はそのポートに接続してサービスのバナー(接続時に返ってくる文字列)を取得します。「Apache/2.4.41 (Ubuntu)」のような情報から、既知の脆弱性を持つバージョンかどうかを調べます。
これが「バージョン情報を外部に公開しない」設定が重要な理由です。バナーを隠すだけで攻撃者の偵察工数を増やせます。
ポートスキャンの種類一覧
| スキャン種別 | 特徴 | ログへの記録 |
|---|---|---|
| SYNスキャン(ハーフオープン) | 最もよく使われる。高速でステルス性が高い | 残りにくい |
| フルコネクトスキャン | 3ウェイハンドシェイク完了。確実だが目立つ | 残りやすい |
| UDPスキャン | UDPサービス(DNS・NTP等)の検出 | 残りにくい |
| FINスキャン | FINパケットを使った迂回型スキャン | 残りにくい |
| バナーグラビング | サービスのバージョン情報を取得 | 残りやすい |
| OSフィンガープリント | レスポンスパターンからOSを推測 | 残りにくい |
ポートスキャンを防ぐ具体的な手順
攻撃者の偵察活動を知ったうえで、防御側として実施すべき対策を順番に解説します。
1. 不要なポートを閉じる(最優先)
開いているポートが多ければ多いほど、攻撃の足がかりになるサービスが増えます。「必要なサービスだけを動かす」という最小権限の原則をネットワーク層にも適用することが基本です。
まず、現在どのポートが開いているかを確認します。
# 自サーバーのリスニングポートを確認(root権限推奨) ss -tlnup # 出力例: # Netid State Local Address:Port Process # tcp LISTEN 0.0.0.0:22 sshd # tcp LISTEN 0.0.0.0:80 nginx # tcp LISTEN 0.0.0.0:3306 mysqld ← 外部に開いていたら即対処
不要なサービスが動いていた場合は、サービスを停止してスタートアップから除外します。
# 不要なサービスを停止・無効化(例: Telnet) sudo systemctl stop telnet.socket sudo systemctl disable telnet.socket # データベースを外部からアクセスさせない(127.0.0.1のみにバインド) # /etc/my.cnf.d/server.cnf の [mysqld] セクションに追加 # bind-address = 127.0.0.1 ← デフォルトから変更
2. ファイアウォールで外部からのアクセスを制限する
サービスを停止できない場合でも、ファイアウォールで外部からのアクセスを制限することで被害を大幅に抑えられます。Linuxではfirewalldまたはufwを使います。
# firewalldを使う場合(CentOS/AlmaLinux/RHEL系) # SSHを特定IPからのみ許可する例 sudo firewall-cmd --zone=public --remove-service=ssh --permanent sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.0/24" service name="ssh" accept' --permanent sudo firewall-cmd --reload # ufwを使う場合(Ubuntu系) # デフォルトで全受信を拒否し、必要なポートのみ開ける sudo ufw default deny incoming sudo ufw allow from 203.0.113.0/24 to any port 22 sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable
3. fail2banでスキャン試行を自動ブロックする
fail2banは、ログを監視してポートスキャンやブルートフォース攻撃のパターンを検出し、送信元IPアドレスを自動的にブロックするツールです。sshのログイン失敗だけでなく、ポートスキャンのパターンも検出できます。
# fail2banのインストール(RHEL系) sudo dnf install fail2ban -y # /etc/fail2ban/jail.local に設定を追加 [sshd] enabled = true port = 22 filter = sshd logpath = /var/log/secure maxretry = 3 findtime = 300 bantime = 3600 # bantime = 3600 は1時間ブロック。繰り返し攻撃には -1(永久BAN)も検討
4. nmapで自分のサーバーを定期スキャンする
「攻撃者と同じ目線でサーバーを確認する」ことが最も有効な点検方法です。nmapを使って外部から見えるポートを自分でスキャンし、不要なサービスが露出していないかを定期的に確認しましょう。
# nmapのインストール(スキャン実行マシンに入れる) sudo dnf install nmap -y # RHEL系 sudo apt install nmap -y # Ubuntu系 # 基本スキャン(TCP上位1000ポート) nmap 192.0.2.10 # サービスバージョンとOSも調べる詳細スキャン(自分のサーバー専用) nmap -sV -O 192.0.2.10 # 全ポートスキャン(65535ポート全確認) nmap -p- 192.0.2.10 # ※ 他者のサーバーを無断でスキャンすることは不正アクセス禁止法に抵触する可能性があります # ※ 必ず自分が管理するサーバーに対してのみ実行してください
スキャン結果に「予期しないポートが開いている」「バージョン情報が外部から見える」状態が確認されたら、速やかに対処することが重要です。
中小企業でも今日からできること
1. クラウドのセキュリティグループ設定を見直す
AWS・Azure・GCPなどのクラウド環境では、セキュリティグループ(仮想ファイアウォール)が「0.0.0.0/0からの全ポート開放」になっているケースがあります。クラウドコンソールにログインして受信ルールを確認し、SSHやRDPが全世界に開放されている設定は今すぐ修正してください。
2. SSHのポートを変更する(補助的な対策)
SSHの標準ポート22番は、自動スキャンbotが24時間365日探し続けています。ポートを22番から10022番などに変更するだけで、自動スキャンbot由来の不正アクセス試行を大幅に減らせます。根本的な対策にはなりませんが、ログの見通しがよくなり管理が楽になります。鍵認証・ファイアウォール・fail2banと組み合わせて使うことで効果を発揮します。
3. バナー情報を隠す設定を入れる
WebサーバーやSSHサーバーがバージョン情報をそのまま返さないよう設定します。攻撃者がバージョンから脆弱性を特定する「バナーグラビング」を困難にします。
# Nginx: バージョン情報を非表示にする # /etc/nginx/nginx.conf の http ブロックに追加 server_tokens off; # Apache: バージョン情報を非表示にする # /etc/httpd/conf/httpd.conf に追加 ServerTokens Prod ServerSignature Off # SSHd: バナー情報を最小化する # /etc/ssh/sshd_config を編集 DebianBanner no
よくある誤解と注意点
【誤解1】ポートスキャンを受けたら即座に侵害される
ポートスキャン自体は「偵察」であり、それだけで侵害が起きるわけではありません。スキャンの後に攻撃が続く可能性はありますが、不要なポートを閉じてファイアウォールを正しく設定していれば、スキャンされても侵入できません。過度に恐れるより、「スキャンされても突破されない設定になっているか」を確認することが重要です。
【誤解2】ポートを変えれば安全になる
SSHを22番から別のポートに変えても、攻撃者は全ポートスキャンで変更後のポートを発見できます。ポート変更は補助的な手段と割り切り、鍵認証・ファイアウォール・fail2banとの組み合わせで初めて意味を持ちます。
【注意】スキャン検知だけで安心しない
fail2banやIDS(侵入検知システム)でポートスキャンを検知・ブロックできても、「攻撃者がスキャンした」という事実は変わりません。スキャンを検知したら「なぜ自分のサーバーが対象になっているか」「他の攻撃の準備段階ではないか」という視点でログを確認することが大切です。
本記事のまとめ
ポートスキャン対策の要点をまとめます。
| 対策項目 | 内容 | 優先度 |
|---|---|---|
| 不要なポートを閉じる | ss -tlnupで確認し、不要なサービスを停止・無効化 | 最高 |
| ファイアウォール設定 | firewalld / ufwで必要なIPとポートのみ許可 | 最高 |
| fail2ban導入 | スキャン・ブルートフォースの自動ブロック | 高 |
| バナー情報の非表示 | Nginx / Apache / SSHdでバージョン情報を隠す | 高 |
| nmapによる自己スキャン | 定期的に外部から見えるポートを自分でチェック | 中 |
| クラウドSG見直し | 0.0.0.0/0への開放ルールを最小化 | 最高(クラウド利用時) |
ポートスキャンは攻撃の「始まり」であり、スキャンそれ自体が直接の被害をもたらすわけではありません。しかし、スキャンによって収集された情報が次のフィッシング攻撃・脆弱性攻撃の素材になります。防御の基本は「開口部を最小化し、残った開口部を監視する」——この原則を、まず足元の設定から実践してみてください。
Linuxのファイアウォール設定(firewalld・iptables)や権限管理の詳細は、姉妹サイトLinuxMaster.JPでも解説しています。
「自分のサーバーが攻撃者の目にどう見えているか」確認したことはありますか?
ポートスキャンをはじめとした攻撃者の偵察手法と、現場ですぐ使える防御策を体系的に学べます。
正しいセキュリティ知識を体系的に身につけたい方へ、メルマガで実践的なセキュリティ対策ノウハウをお届けしています。


コメント