Linuxサーバーをインターネットに公開するとき、真っ先に確認すべきなのが「いま、どのポートが外向きに開いているか」です。開いているポートは、そのままサービスへの入り口になります。意図せず開いたままの口があれば、それは攻撃者にとっての侵入経路になりかねません。
この記事では、開いているポートを一覧化し、どのサービスが何番を待ち受けているかを対応づけ、不要な口を洗い出すまでの「棚卸し(点検)」の手順を、運用の視点で解説します。点検して不要なポートが見つかったら、次は閉じる作業に進みます(閉じ方は記事末尾からリンクしています)。
ポートの「棚卸し」とは何をすることか
ポートの棚卸しとは、単に開いているポート番号を眺めることではありません。次の3つをセットで確認して初めて「点検した」と言えます。
- 何番が 待ち受けているか(ポート番号)
- どのサービスが その番号を開けているか(プロセス名)
- それは必要な口か(業務で使うか、閉じてよいか)
この3点を突き合わせることで、「動いている理由が説明できないポート」を炙り出せます。これが公開サーバーのセキュリティ点検の第一歩です。
待ち受けているポートを一覧化する
現在の主要ディストリビューションでは、ss コマンドで待ち受けポートを一覧化します。
# 待ち受け(LISTEN)中のTCP/UDPポートを、プロセス付きで一覧化
sudo ss -tulnp
# 出力例
# Netid State Local Address:Port Process
# tcp LISTEN 0.0.0.0:22 users:(("sshd",pid=812,fd=3))
# tcp LISTEN 0.0.0.0:80 users:(("httpd",pid=1240,fd=4))
# tcp LISTEN 127.0.0.1:5432 users:(("postgres",pid=1500,fd=5))
# tcp LISTEN 0.0.0.0:25 users:(("master",pid=980,fd=13))
オプションの意味は、-t がTCP、-u がUDP、-l が待ち受け中のみ、-n が名前解決せず数値表示、-p がプロセス表示です。ss の全オプションはこちらの本体リファレンスで確認できます。
古い環境では同じことを netstat でも行えます。
# netstat 版(古い環境・互換のため)
sudo netstat -tulnp
どのサービスがそのポートを開けているかを対応づける
一覧が出たら、番号とサービスを対応づけます。よく見かける待ち受けポートの例を挙げます。
| ポート | 典型的なサービス | 点検の目安 |
|---|---|---|
| 22/tcp | SSH(sshd) | リモート管理に必要。ただし公開範囲は絞る |
| 80/443 tcp | Web(httpd / nginx) | Webサーバーなら必要 |
| 25/tcp | メール(postfix など) | メールを送受信しないなら不要な可能性 |
| 5432/tcp | PostgreSQL | 127.0.0.1で待ち受けなら外部非公開でよい |
ここで重要なのが 待ち受けアドレスです。0.0.0.0 で待ち受けていれば外部からアクセスできる可能性があり、127.0.0.1 であればそのサーバー自身からしかアクセスできません。上の例の PostgreSQL(5432)は 127.0.0.1 なので、外部に口が開いているわけではない、と読めます。番号だけでなく、この待ち受けアドレスまで見るのが点検の勘所です。
確立中の接続と、待ち受けの違いを読み分ける
ポートの状態には「待ち受け中」と「通信が確立している」があり、この2つを混同しないことが大切です。
| 状態 | 意味 |
|---|---|
| LISTEN | 接続を待ち受けている(=外部から入れる口。点検の主対象) |
| ESTABLISHED | いま通信が成立している(誰かが接続中) |
| TIME_WAIT / FIN_WAIT | 接続の後始末をしている状態 |
# いま確立している接続だけを見る(誰が繋いでいるかの把握)
sudo ss -tunp state established
棚卸しで「閉じるべき口」を探すときに見るのは LISTEN です。ESTABLISHED は現在の接続状況の把握に使います。目的に応じて見る状態を切り替えると、情報が整理しやすくなります。
不要な口を洗い出すチェック観点
一覧とサービスの対応がついたら、次の観点で「この口は要るのか」を判断します。
- 業務で説明できるか:そのポートを開けているサービスの役割を言えるか。言えないものは調査対象
- 外向きである必要があるか:
0.0.0.0で待ち受けているが、実際は内部利用だけなら127.0.0.1に絞れないか - 使っていないサービスではないか:試しに入れたまま放置されたサービスがポートを開けていないか
- SSHの公開範囲:22番を全世界に開けていないか(管理元IPに絞る、鍵認証にする等)
点検は一度きりではなく、サービスを追加・削除したときや、定期的なメンテナンスのたびに回すのが理想です。「開いているポートを全部説明できる状態」を保つことが、公開サーバーを守る基本になります。
2026年の現行環境での違い
- 確認は ss が標準:かつて主流だった
netstatは非推奨扱いとなり、多くのディストリビューションで標準インストールされなくなりました。現在はssを使うのが基本です(オプションはほぼ対応関係にあります)。 - 外部からのスキャンは慎重に:サーバー自身での
ssと、外部ホストからポートが到達するかの確認は別物です。外部からのポートスキャンは、必ず自分の管理下のサーバーに対してのみ、許可を得て行ってください。 - コンテナ環境の注意:Docker などを使っている場合、ホストの
ssにはコンテナが公開したポートも現れます。どのコンテナが開けた口かまで含めて棚卸しすると、抜け漏れが減ります。
まとめ
開いているポートの棚卸しは、番号・サービス・必要性の3点を突き合わせる点検作業です。ss -tulnp で待ち受けを一覧化し、待ち受けアドレス(0.0.0.0 か 127.0.0.1 か)まで読み、LISTEN と ESTABLISHED を区別する。この型で点検すれば、「理由の説明できないポート」を確実に洗い出せます。
点検して不要な口が見つかったら、次は安全に閉じる番です。閉じ方は別記事「Linuxで不要なポートを閉じる運用手順」で、サービス停止とファイアウォール遮断の両面から解説しています。

コメント