「:443」って何?
URL の中に https://example.com:443 や ssh user@host -p 22 のように出てくるポート番号。これが何のために必要で、なぜ「80 = HTTP」「443 = HTTPS」のように決まっているのかを整理します。
ポート番号は「アプリの受付窓口」
IP アドレスは「サーバーマシン本体の住所」を指しますが、1 台のサーバーには複数のサービス(Web、SSH、メール、DB...)が同時に動いていることが普通です。届いたパケットをどのサービスに渡すかを決めるための番号がポート番号です。
example.com (IP: 93.184.215.14)
├─ :22 → SSH デーモン
├─ :80 → HTTP サーバー
├─ :443 → HTTPS サーバー
├─ :3306 → MySQL
└─ :5432 → PostgreSQLポート番号は 0〜65535(16bit)の範囲で、TCP と UDP がそれぞれ独立して持っています。「TCP の 80 番」と「UDP の 80 番」は別物です。
IANA による 3 区分
IANA(Internet Assigned Numbers Authority)はポート番号を以下の 3 区分に分けて管理しています:
| 区分 | 範囲 | 用途 |
|---|---|---|
| Well-known Ports | 0 - 1023 | 定番プロトコル用に予約。Linux/Unix では root 権限が必要 |
| Registered Ports | 1024 - 49151 | 各アプリベンダーが申請して割り当てを受ける |
| Dynamic / Private / Ephemeral | 49152 - 65535 | クライアント側が一時的に使う(OS が自動割当) |
覚えておきたい well-known ポート
| ポート | プロトコル | 用途 |
|---|---|---|
| 20 / 21 | FTP | ファイル転送(古典) |
| 22 | SSH / SFTP | セキュアな遠隔ログイン |
| 25 | SMTP | メール送信 |
| 53 | DNS | 名前解決(UDP/TCP両方) |
| 67 / 68 | DHCP | IP 自動割当 |
| 80 | HTTP | Web 通信(平文) |
| 110 | POP3 | メール受信(古典) |
| 123 | NTP | 時刻同期(UDP) |
| 143 | IMAP | メール受信 |
| 443 | HTTPS | Web 通信(暗号化) |
| 465 / 587 | SMTPS | 暗号化メール送信 |
| 993 / 995 | IMAPS / POP3S | 暗号化メール受信 |
実務でよく使う registered ポートも覚えておくと便利:
- 3000: Node.js / Next.js dev server
- 3306: MySQL
- 5432: PostgreSQL
- 6379: Redis
- 8080 / 8443: 代替 HTTP / HTTPS(管理画面・テスト用)
- 9200: Elasticsearch
- 27017: MongoDB
クライアント側のポート: ephemeral port
ブラウザでサイトにアクセスするとき、「サーバー側のポート」は 443 ですが、「クライアント側(あなたの PC)のポート」も必要です。これは OS が動的に空きポートを選んで割り当てます。
あなたのPC:54321 ←→ example.com:443
└── ephemeral
↑ OS が自動的に割り当てるLinux のデフォルトは 32768-60999、Windows は 49152-65535 あたりです。ブラウザでタブを大量に開くと、このポートが枯渇して通信できなくなる場合もあります(実用上はほぼ起きないが、サーバー側で大量にコネクションを張る用途では考慮が必要)。
ポートスキャンの基本
セキュリティ調査の入口となるのが ポートスキャンです。「サーバーのどのポートが開いているか」を調べる行為で、定番ツールは nmap。
# 一般的なスキャン(top 1000 ポート)
nmap example.com
# 特定ポートのみ
nmap -p 22,80,443 example.com
# UDP スキャン(遅い)
nmap -sU -p 53,123 example.com
# サービス検出 + バージョン特定
nmap -sV example.com⚠ 許可なく他人のサーバーをスキャンするのは法的にグレー〜違法です。学習目的なら自宅 LAN や scanme.nmap.org(Nmap 公式が用意した練習用ホスト)で試してください。
セキュリティ視点: ポートを「閉じる」
サーバー運用で最重要の習慣の 1 つが 「使わないポートを閉じる」 ことです。攻撃者が侵入経路として使えるポートが少ないほど、攻撃面(attack surface)が小さくなります。
- クラウドのセキュリティグループ / ファイアウォール でインバウンドを 22 / 443 のみに絞る
- 管理用ポート(DB の 3306、Redis の 6379 等)は絶対にインターネットに公開しない。VPC 内部 / SSH トンネル経由のみ
- SSH ポート(22)を別番号に変えるのはセキュリティ強化にはならない(運用ノイズが減るだけ)。SSH 鍵認証 / Fail2ban の方が本質
おわりに
ポート番号は「サーバーが家、サービスが家の中の各部屋、ポートが部屋のドア番号」と例えるとイメージしやすいです。アクセス制御を考えるときは、「どのドアを誰に開けるか」を意識すると、ファイアウォール設計の話が腹落ちしやすくなります。