私は、リモートコンピュータの特定のポート(たとえばhttp / ftp / ssh)でどのサービスが実行されているかを確認できるコマンドラインユーティリティを探しています。
このようなプログラムが実行されると想像する例は次のとおりです。
kess@KG-PC:~$ portcheck google.com:80
Port 80 of google.com is running a(n) "http" server
答え1
この識別を実行する最も簡単な方法は、このポートに接続を確立してバナーをキャッチすることです。バナーは(通常)これがApache httpd、opensshなどであることを知らせることができます。バナーリストはかなり大きいかもしれません。GET / HTTP/1
サービスが応答していることを確認するなど、いくつかのコマンドを試してみることもできます。プレーンテキストコマンドでtelnet
十分です。暗号化(SSL / TLS)の場合openssl s_client
。
AFAIKnmap
このようなことが可能なので、ソースコードをダウンロードし、そこでどのように実行されるかを確認できます。
1つのツールのみを使用したい場合は、次のものをテストできます。
nmap -A google.com -p 80
答え2
ss
フィルタと一緒にこの-p
オプションを使用して、特定のポートを使用するプロセスを表示できます。
宛先ポートによるフィルタリング:
ss -p dst = :<port>
ソースポートによるフィルタリング:
ss -p src = :<port>
プロセスを取得するには、root 権限が必要な場合があります。
リモートコンピュータにアクセスできない場合は、ポート検索を実行できますnmap
。これには、開いているポートとポートに関連する一般的なサービスが一覧表示されますが、ポートが任意に変更される可能性があるため、そのサービスがコンピュータで実際に使用されるサービスであるという保証はありません。
特定のポート範囲を使用した基本スキャン:
nmap -p <first-port>-<last-port> <host>