Linuxをサーバーまたはデスクトップとして使用しているかどうかに関係なく、開いているポートまたは使用中のポートを知ることは、さまざまな状況で役立ちます。
たとえば、ApacheまたはNgnixベースのWebサーバーを実行している場合、使用中のポートは80または443である必要があります。ポートを確認すると、それが確認されます。同様に、SMTP、SSH、またはその他のサービスで使用されているポートを確認できます。どのポートが使用されているかを知ることは、ポートを新しいサービスに割り当てるときに役立ちます。
侵入検知用に開いているポートがあるかどうかを確認することもできます。
Linuxでポートをチェックする方法はいくつかあります。このクイックヒントでは、私のお気に入りの2つの方法を紹介します。
方法1:現在ログインしているLinuxシステムで開いているポートを確認する方法lsofコマンド
直接またはSSH経由でシステムにログインしている場合は、lsofコマンドを使用してそのポートを確認できます。
sudo lsof -i -P -n
このlsofコマンドは、ユーザーが使用するファイルとプロセスを検索するために使用されます。ここでのオプションユーザーは次のとおりです。
- -i:IPアドレスが指定されていない場合、このオプションはすべてのネットワークファイルのリストを選択します
- -P:ネットワークファイルのポート番号からポート名への変換を禁止します
- -n:ネットワーク番号からネットワークファイルのホスト名への変換を禁止します
ただし、これは、コンピューターが実際にはリッスンしない多くの追加ポートも示しています。
この出力をgrepコマンドにパイプして、次のようにパターン「LISTEN」に一致させることができます。
sudo lsof -i -P -n | grep LISTEN
これには、コンピュータがアクティブにリッスンしているポートと、その開いているポートを使用しているサービスのみが表示されます。
方法2:netcatコマンドを使用してリモートLinuxサーバーのポートを確認する
nc(Netcat)は、TCPおよびUDPプロトコルを使用してネットワーク経由でコンピューター間でデータを読み書きするコマンドラインユーティリティです。
以下に、nc
の構文を示します。 コマンド:
nc [options] host port
このユーティリティには、気の利いた-z
があります。 国旗。使用すると、nc
になります 実際にポートにデータを送信せずに、リッスンしているデーモンをスキャンします。
これを-v
と組み合わせます フラグを立てて冗長性を有効にすると、詳細な出力を取得できます。
以下は、nc
を使用して開いているポートをスキャンするために使用できるコマンドです。 コマンド:
nc -z -v <IP-ADDRESS> 1-65535 2>&1 | grep -v 'Connection refused'
IP-ADDRESS
を置き換えます ポートをチェックしているLinuxシステムのIPアドレスを使用します。
値を選択した理由は1
65535
へ 、これは、ポート範囲が1
から始まるためです。 65535
で終了します 。
最後に、出力をgrep
にパイプします 指図。 -v
を使用する オプションの場合、一致するパターンとして「接続が拒否されました」を含む行は除外されます。
これにより、ネットワーク上の別のマシンからアクセスできる、コンピューター上で開いているすべてのポートが表示されます。
2つの方法のうち、私はlsofコマンドを好みます。 ncコマンドよりも高速です。ただし、システムにログインし、そのためのsudoアクセス権を持っている必要があります。つまり、システムを管理している場合は、lsofの方が適しています。
ncコマンドには、ログインせずにポートをスキャンする柔軟性があります。
どちらのコマンドも、現在のシナリオに基づいてLinuxで開いているポートを確認するために使用できます。お楽しみください。