ほとんどの人は、開いているポートのチェックは、リッスンしていることさえ知らなかった公開ポートを通じてサーバーが侵害されるまで、セキュリティ専門家だけが行う作業であると考えています。 netstat、ss、lsof、nmap、netcat などの組み込みコマンドを使用して Linux で開いているポートを確認したり、Windows システムから PowerShell を使用してリモートでポートをスキャンしたりできます。各方法は異なる詳細レベルを提供し、必要な権限も異なります。
港湾管理の重要性はこれまで以上に高まっています。自動偵察活動は増え続けており、攻撃者は脆弱な侵入ポイントを絶えず調査しています。運用サーバーを保護する場合でも、ローカル サービスをテストする場合でも、ポート セキュリティを習得することは、安全で機能的なシステムを維持するための基本です。
TL;DR: 概要
- ss または netstat を使用すると、追加のツールをインストールせずにリスニング ポートを簡単にチェックできます
- 詳細なサービス検出による包括的なポート スキャンが必要な場合は、nmap を導入します。
- lsof を使用して、どの特定のプロセスが特定のポートを使用しているかを識別します
- Windows から PowerShell の Test-NetConnection を使用して、リモート Linux サーバーのポートを確認する
ポートとは簡単に言うと何ですか?

ポートは、サーバー上の番号が付けられた出入口と考えてください。各ポートは、ネットワーク トラフィックがシステムに出入りする通信エンドポイントとして機能します。ポート番号の範囲は 0 ~ 65,535 で、ウェルノウン ポート (0 ~ 1023)、登録済みポート (1024 ~ 49151)、および動的ポート (49152 ~ 65,535) の 3 つのカテゴリに分類されます。
簡単に言うと、Web サイトを閲覧するとき、ブラウザは HTTP の場合はポート 80 を、HTTPS の場合はポート 443 をノックします。電子メール サーバーは SMTP の場合はポート 25 で応答し、SSH リモート アクセスはポート 22 で動作します。これらのリスニング ポートは正規のトラフィックのゲートウェイとして機能しますが、保護されないままにしておくと攻撃者のエントリ ポイントになる可能性もあります。
ポートは 2 つの主要なトランスポート プロトコルと連携して動作します。TCP は信頼性の高い接続指向の通信を実現し、UDP はより高速なコネクションレス データ転送を実現します。ポートがどのように機能するかを理解すると、セキュリティを向上させるためにどれを開いたままにし、どれを閉じるかについて情報に基づいた決定を下すのに役立ちます。
Linux で開いているポートを確認する方法

Linux にはポート分析用の強力なツールがいくつか用意されており、それぞれに明確な利点があります。プリインストールされているものもありますが、インストールが必要なものもあります。適切なツールの選択は、権限レベル、必要な詳細、および特定の使用例によって異なります。
netstat コマンドの使用
netstat コマンドは、何十年にもわたってネットワーク分析の信頼できるツールとして使用されてきました。開いているポートを確認するには、次を使用します netstat -tuln ここで、各フラグは特定の目的を果たします。 -t は TCP 接続を表示し、-u は UDP 接続を表示し、-l はリスニング ポートのみをフィルタリングし、-n はホスト名を解決するのではなく数値形式で結果を表示します。
このコマンドを実行すると、プロトコル、ローカル アドレスとポート番号、外部アドレス、および接続状態を示す出力が表示されます。例えば、 0.0.0.0:22 SSH がポート 22 のすべてのネットワーク インターフェイスでリッスンしていることを示します。各エントリは、アクティブなサービスとそのネットワーク ステータスを即座に確認できます。
の Linuxのnetstatコマンド は、より詳細な分析のための追加のフラグを提供します。 -p を追加すると、各接続を所有するプロセスが表示されますが、これには root 権限が必要です。例えば、 sudo netstat -tulnp ポートとそれを使用するプロセス ID の両方が明らかになります。
ssコマンドの使用
ss コマンドは netstat の最新の代替として機能し、優れたパフォーマンスとより詳細なソケット統計を提供します。使用 ss -トゥルン netstat と同じフラグを使用すると、同等の出力が得られます。ただし、ss は、特に接続数が多いシステムでは情報をより高速に処理します。
高度なフィルタリングを使用して開いているポートをチェックするために、ss には強力な構文オプションが用意されています。ランニング ss -tulnp | grep:22 SSH 関連の接続のみを示します。コマンド ss -tn 状態が確立されました 確立されたすべての TCP 接続を表示し、アクティブなセッションを監視するのに役立ちます。
ss の利点の 1 つは、特定の条件でフィルタリングできることです。例えば、 ss -t ‘( dport = :80 または スポーツ = :80 )’ には、ポート 80 の Web トラフィックに関連する接続のみが表示されます。この精度により、ss は特定のサービスの問題のトラブルシューティングに非常に役立ちます。
lsof コマンドの使用
lsof コマンドは、どのプロセスが特定のポートを使用しているかを識別するのに優れています。ランニング sudo lsof -i -P -n すべてのネットワーク接続とプロセスの詳細を示します。 -i フラグはインターネット接続をフィルタリングし、-P はポート番号からサービス名への変換を防ぎ、-n は結果を高速化するために DNS 解決をスキップします。
特定のポートを使用しているものを見つける必要がある場合、lsof が答えを提供します。例えば、 sudo lsof -i :3306 MySQL が実行されているかどうか、およびそれを所有しているプロセス ID が明らかになります。これは、ポートの競合のトラブルシューティングを行ったり、不正なサービスを特定したりする場合に非常に重要になります。
特定のアプリケーションごとに結果をフィルタリングすることもできます。特定のプログラムが予期しないポートをリッスンしていると思われる場合は、 sudo lsof -i -a -p [PID] その特定のプロセス ID のすべてのネットワーク接続を示します。
Nmap を使用したポート スキャン

Nmap は、利用可能な最も包括的なポート スキャン ツールの 1 つです。まず、これをインストールします sudo apt install nmap Ubuntu または Debian システム上。ローカルポートチェックの場合は、次を使用します。 nmapローカルホスト or nmap 127.0.0.1 基本的なスキャンの場合。
リモート サーバーの場合は、IP アドレスを指定します。 nmap 192.168.1.100。 Nmap は、開いているポート、サービスのバージョン、さらには高度なフラグを使用したオペレーティング システムの検出に関する詳細情報を提供します。コマンド nmap -sV ローカルホスト サービス バージョンの検出を実行し、各ポートでどのソフトウェアが実行されているかを正確に明らかにします。
セキュリティ チームは、Nmap のファイアウォール ルールをテストできる機能を高く評価しています。ランニング nmap -Pn [IP] ping がブロックされている場合でもホストをスキャンします。ただし、不正なポート スキャンはセキュリティ ポリシーに違反する可能性があるため、リモート サーバーをスキャンする前に必ず権限があることを確認してください。
Netcat (nc) を使用して開いているポートを確認する
Netcat は、最小限のオーバーヘッドでポート チェックを行うための簡単なアプローチを提供します。コマンド nc -zv ローカルホスト 22-80 ポート範囲 22 ~ 80 をスキャンし、接続を受け入れるポートを表示します。 -z フラグはデータを送信せずにスキャン モードを有効にし、-v は詳細な出力を提供します。
単一ポートの検証の場合、 nc -zv ホスト名 443 HTTPS にアクセスできるかどうかをすぐに確認します。この方法は、スクリプトや自動化ワークフローで役立つことがわかります。 netcat とシェル ループを組み合わせて、より広範囲のスキャンを行うことができます。 {1..1000} のポートの場合; do nc -zv localhost $port 2>&1 | grep は成功しました。終わり
の ネットキャットリスナー この機能はポート チェックを超えて実際のサービス テストやデータ転送まで拡張されており、管理者のツールキットに含まれる多用途のツールとなっています。
PowerShell を使用して開いているポートを確認する
PowerShell を使用すると、Windows ユーザーは追加のソフトウェアをインストールせずに、リモート Linux サーバー上の開いているポートを確認できます。コマンド Test-NetConnection -コンピューター名 [Linux-IP] -ポート 22 Windows マシンからの SSH アクセスを検証します。
複数のポートをスキャンするには、単純な PowerShell ループを作成します。 1..1024 | ForEach-Object { Test-NetConnection -ComputerName 192.168.1.100 -Port $_ -WarningAction SilentlyContinue } | Where-Object { $_.TcpTestSucceeded }。この方法は、Windows システムから Ubuntu、Debian、またはその他の Linux ディストリビューションのポートをチェックする場合に効果的に機能します。
PowerShell の利点は、Windows インフラストラクチャとの統合にあります。結果を CSV にエクスポートしたり、電子メールでアラートを送信したり、ポートのステータスに基づいて自動応答をトリガーしたりできるため、ハイブリッド環境の監視に最適です。
ポートスキャン方式の比較
| 道具 | コマンド構文 | 最適な用途 | 前提条件 |
| ネット統計 | netstat -tuln | リスニングポートの概要 | ほとんどのシステムにプレインストールされています |
| ss | ss -トゥルン | 高速パフォーマンス、詳細なソケット情報 | プリインストール (最新の Linux) |
| lsof | sudo lsof -i -P -n | どのプロセスがポートを使用しているかを調べる | root/sudo アクセスが必要です |
| nmap | nmapローカルホスト | 包括的なポートスキャン | 別途インストールする必要があります |
| ネットキャット | nc -zv ホストポート | 簡単なポート接続テスト | プレインストールまたは簡単インストール |
| パワーシェル | テストネット接続 | Windows からのリモート スキャン | Windowsマシンが必要です |
一般的な Linux ポートとその関連サービス
| ポート | サービス | プロトコル | 共通使用 |
| 22 | SSH | TCP | 安全なリモートアクセス SSHリモート接続 |
| 80 | HTTP | TCP | 暗号化されていない Web トラフィック |
| 443 | HTTPS | TCP | 暗号化された Web トラフィック |
| 21 | FTP | TCP | ファイル転送 |
| 25 | SMTP | TCP | メール送信 |
| 3306 | MySQL | TCP | データベース接続 |
| 5432 | PostgreSQL | TCP | データベース接続 |
ポート構成には、ファイアウォール設定とサービス バインディングに関する知識が必要です。多くの管理者 LinuxでSSHポートを変更する 自動攻撃の試行を減らすために、デフォルトの 22 から非標準のポートに変更します。の Telnet と SSH の比較 この議論では、ポート 22 の暗号化 SSH プロトコルを優先して、ポート 23 (Telnet) を閉じたままにしておく必要がある理由が強調されています。
Linux のオープンポートについて

開いているすべてのポートは、システムへの潜在的なエントリ ポイントを表します。自動ポート スキャン アクティビティが急増し、セキュリティへの影響が増大しています。 全世界で16.7%攻撃者が脆弱なエントリ ポイントを継続的に調査しているためです。これらの偵察活動は毎月数十億のポートをスキャンし、設定が間違っているサービスや古いソフトウェアを検索します。
それは当然ですが、攻撃者が開いているポートを見つけたとき、実際には何が起こっているのでしょうか?港湾諸国が物語を語ります。 LISTEN 状態のポートは着信接続を受け入れ、ESTABLISHED はアクティブなデータ転送を示し、TIME_WAIT は最近閉じられたがまだ追跡されている接続を示します。攻撃者は、SSH (ポート 22) でのブルート フォース攻撃、Web ポート (80/443) を介した SQL インジェクション、脆弱なサービスを介したリモート コード実行など、さまざまな方法でオープン ポートを悪用します。
ポートを安全に開くには、多層防御のアプローチが必要です。デフォルトの拒否ファイアウォール ポリシーから始めます。設定を確認してください iptables はルールを表示します。アクティブに使用するサービスに対してのみポートを開き、不要になったらすぐにポートを閉じます。自動スキャンの成功率を下げるために、共通サービスのデフォルト ポートを変更することを検討してください。
Linux エコシステムは、パッチが必要な数百もの脆弱性により、重大なセキュリティ上の課題に直面していました。定期的なポート監査により、攻撃者が発見する前に、不正なサービスを発見することができます。セキュリティ境界を尊重するファイル転送ツールを使用します。 SSH経由でファイルをコピーする 暗号化されていない FTP の代わりに。システム間でファイルを移動する場合は、 リモート システムからローカル システムにファイルをコピーするための SCP SSH の安全なチャネルを介した暗号化された転送を提供します。
ベスト プラクティスには、機密サービスに対するポート ノッキングの実装、fail2ban を使用した繰り返しの認証失敗のブロック、接続試行の詳細なログの維持などが含まれます。定期的なセキュリティ監査をスケジュールして、開いたままになっているポートと、それらが依然として正当な目的を果たしているかどうかを確認します。
Cloudzy の Linux VPS がポート管理を簡素化する方法
適切に構成されたインフラストラクチャを使用すると、ポートの管理が大幅に容易になります。クラウジーズ Linux VPS これらのソリューションでは、インテリジェントなファイアウォール ルールや直感的なコントロール パネルを介した合理化されたポート管理など、事前に構成されたセキュリティ設定が提供されます。完全な root アクセスにより、どのポートを開いたり閉じたりするかを完全に制御できます。
Web サイトやリモート デスクトップをホストするためのエコノミーまたはプレミアム Linux VPS を最安価格で入手しましょう。 VPS Linux KVM で実行して効率を向上させ、NVMe SSD ストレージを備えた強力なハードウェアで動作して速度を向上させます。
続きを読むポートをチェックおよび管理する場合、パフォーマンスが重要になります。 Cloudzy の NVMe ストレージにより、ポート スキャン ツールが効率的に実行され、最大 10 Gbps の接続でボトルネックなしで大量のトラフィックが処理されます。このインフラストラクチャは、グローバル サーバー インフラストラクチャの重要な部分に Linux が搭載されているという事実から恩恵を受けており、これらの最適化された構成は実証済みで信頼性の高いものになっています。
月額わずか 3.96 ドルから、ポート管理テクニックの練習に最適なプロフェッショナル グレードの環境を手に入れることができます。複数のデータセンターの場所により、地理的に分散されたセットアップをテストできるほか、24 時間年中無休のサポートが複雑なファイアウォール構成やポート関連のトラブルシューティングを支援します。 Linux で開いているポートを確認する方法を学習している場合でも、実稼働サービスを導入している場合でも、柔軟な VPS 環境があればセキュリティの実装が加速されます。
結論
では、開いているポートを確認する最良の方法は何でしょうか?はっきり言って、そんなものはありません。ローカル チェックを迅速に行うには、ss または netstat を使用すると、手間をかけずに作業を完了できます。包括的なセキュリティ監査が必要な場合、Nmap はすべてを明らかにします。どのプロセスがポートを所有しているかを追跡するために、lsof を使用すると、何時間もの推測にかかる時間を節約できます。 PowerShell は、リモート検証が必要な場合に Windows と Linux の橋渡しをします。
ここでの本当の教訓はコマンドを覚えることではありません。それは、ポート監査をパニック対応ではなくルーチン化することです。毎週のスキャンをスケジュールし、未使用のポートを見つけたらすぐに閉じ、どのサービスがどのポートを必要とするかを文書化します。このアプローチにより、港の検査が事後的な消火活動から積極的な防御へと変わります。