
ネットワークは多くのテクノロジーを支える基盤です。スタンドアロンデバイスはローカル処理能力によって大きな価値を持つものの、ビジネスオペレーションの根幹は通信にあります。つまり、システムやデバイスがネットワークを介して相互に通信し、データへのアクセスや共有、セキュリティの維持、運用の監視を行うことです。
TCP/IPを使用する場合、ポートが正しく設定され、リッスンしてトラフィックを受け入れることを確認するプロセスは、システム管理者やネットワーク管理者にとって標準的な作業です。ポートは、Webサーバー、メールサーバー、Active Directoryドメインコントローラー、その他の集中管理リソースなどの対象システムで実行されるプロセスに関連付けられています。これらのポートに関する情報を収集することは、適切な通信機能を実現するために不可欠です。
参照: Linux 30周年: オープンソースオペレーティングシステムを祝う (無料 PDF) (TechRepublic)
Linux を使用してポートを操作し、問題のトラブルシューティングと運用の維持を行う 10 の方法を紹介します。
特定のサービスに関連付けられているプロトコルとポートを確認する方法
このコマンドは、より詳しい情報が必要な場合に備えて、あらゆるサービスで(理論上)使用されているプロトコルとポート番号を示すリファレンスガイドを表示できます。これは、現在何がリッスンしているかを表示するものではなく、FTPやSSHなど、特定の機能に使用できる、または使用すべきプロトコルを絞り込むのに役立ちます。
走る:
cat /etc/services | less
出力には、数十のサービスとそれらに関連付けられたポートの詳細なリストが表示され、参照ポイントとして役立ちます。
ローカルシステムからまたはローカルシステムにアクティブに接続されているポートを確認する方法
コマンドを実行するss
と、特定のシステムがローカルまたはリモートで接続されているポートのリストが表示されます。詳細は、関連するシステムと機能によって異なります。
nmapを使用してリモートシステムの開いているポートをスキャンする方法
nmapユーティリティ(ncatとも呼ばれる)は、LinuxとWindowsで動作する便利な万能ツールで、リモートシステムで開いているポートを確認できます。ポートスキャンはセキュリティチームの注意を引く可能性があるため、許可された業務目的にのみ使用してください。
Microsoft のリモート システム Web サイトで開いているポートを確認したいとします。
Linux では、次を実行します。
nmap microsoft.com
結果には、次のようなホスト上の開いているポートが表示されます。
Starting Nmap 7.92 ( https://nmap.org ) at 2022-05-05 15:32 Eastern Daylight Time
Nmap scan report for microsoft.com (20.81.111.85)
Host is up (0.018s latency).
Other addresses for microsoft.com (not scanned): 20.84.181.62 20.103.85.33 20.53.203.50 20.112.52.29
Not shown: 998 filtered tcp ports (no-response)
PORT STATE SERVICE
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 47.51 seconds
443 などの特定のポートを確認するには、 を実行しますnmap -p 443 microsoft.com
。
80や443など複数のポートを でチェックできますnmap -p 80,443 microsoft.com
。
ローカルシステムをチェックして、どのアプリケーションがポートに関連付けられているかを確認する方法
ポート 8443 でリッスンしているローカル アプリケーションを確認したいとします。
走る:
netstat -tulpn | grep 8443
これにより、プロセス ID (PID) (たとえば 8971、複数の PID が存在する可能性があります) とアプリケーション名 (この場合は Java) が返されます。
特定のポートに関連付けられたアプリケーションまたはサービスを停止する方法
これは、見覚えのないアプリケーションやサービス、あるいは悪意のあるアプリケーションやサービスが疑われる場合に便利です。上記のコマンドを実行してPIDを取得し、次のコマンドを実行してください。
kill -9 (PID)
必要に応じて各 PID ごとに繰り返してプロセスを終了します。
telnetを使ってリモートシステムをチェックし、ポートがリッスンしていて接続できるかどうかを確認する方法
たとえば、host.company.com というリモート システムがポート 443 でリッスンしていて、接続できるかどうかを確認したいとします。
走る:
telnet host.company com 443
「Connected」応答が表示された場合、ホストはそのポートをリッスンしており、接続可能です。
接続拒否エラーが発生するか、接続がタイムアウトになる場合は、ホストがリッスンしていないか、そのホストからのアクセスがブロックされているか、ホストにアクセスできないかのいずれかです (ファイアウォール アクセスを確認してください)。
telnetを使わずにリモートシステムをチェックして、ポートがリッスンしていて接続できるかどうかを確認する方法
すべてのシステムにTelnetがインストールされているわけではありません。通常はyumリポジトリからyum install telnetでインストールできますが、リポジトリにTelnetパッケージが含まれていなかったり、システムがロックダウンされていてソフトウェアのインストールができない場合もあります。また、yum installを実行する時間があまりない場合もあります。例えば、IPアドレス10.37.39.141のホストがポート636でリッスンしているかどうかを確認したいとします。
echo > /dev/tcp/10.37.39.141/636
皮肉なことに、応答が返ってこない場合、それは実際には良いことであり、アクセスが成功したことを意味します。
接続拒否エラーが発生するか、接続がタイムアウトになる場合は、ホストがリッスンしていないか、そのホストからのアクセスがブロックされているか、ホストにアクセスできないかのいずれかです (ファイアウォール アクセスを確認してください)。
curl を使用してリモート システムの TCP ポートが listen しているかどうかを確認する方法
これにより、前の手順と同じ結果が得られますが、curl アプリケーションに慣れるための便利な方法となります。
IP アドレス 10.37.34.21 のホストがポート 16667 でリッスンしているかどうかを確認したいとします。
走る:
curl -v telnet://10.37.34.21:16667
「Connected」応答が表示された場合、ホストはそのポートをリッスンしており、接続可能です。
接続拒否エラーが発生するか、接続がタイムアウトになる場合は、ホストがリッスンしていないか、そのホストからのアクセスがブロックされているか、ホストにアクセスできないかのいずれかです (ファイアウォール アクセスを確認してください)。
これは TCP ポートに対してのみ機能することに注意してください。
ポートでリッスンしているSSL証明書を確認する方法
これは私のお気に入りの 1 つであり、SSL 証明書の置き換え時に正しく作業が行われたことを確認するために非常に役立っています。
ポート 8000 に SSL 証明書が添付された splunk.company.com という名前のサーバーがあり、これを置き換えたので、存在することを確認したいとします。
走る:
openssl s_client -connect splunk.company.litle.com:8000 2>/dev/null | openssl x509 -noout
これにより、CN や発行者などの SSL 証明書の詳細が返されます。
ポートでリッスンしているSSL証明書の有効期限を確認する方法
問題のサーバーにそのポートに適切な証明書が添付されていることを素早く確認するには、次のコマンドを実行します。
openssl s_client -connect splunk.company.litle.com:8000 2>/dev/null | openssl x509 -noout -dates
次のような出力が返されます。
notBefore=May 31 21:46:06 2021 GMT
notAfter=May 31 21:56:06 2022 GMT
上記の情報を念頭に置いておけば、適切な証明書が用意されているので安心できます。