Linux/Unixで、ユーザーがOSへの接続に使用しているクライアントアプリケーションを特定する方法はありますか?私たちの環境では、何千人ものユーザーがWinSCP、Dbvisualizer、PuTTYなどのクライアントアプリケーションを介してシステムに接続しています。ユーザーがサーバーへの接続に使用しているクライアントアプリケーションを確認する必要があります。
簡単な答え:いいえ、確実な方法はありません。ターミナルアプリケーションは、適切なエスケープシーケンスでクエリを実行すると、利用可能な機能を報告することがよくありますが、これは、使用されているアプリケーションを検出するのに十分ではなく、非常に簡単に偽造される可能性があります。
一般に、使用される実際の端末アプリケーションは重要ではないので、おそらく、代わりに解決しようとする実際の問題を述べるために質問を言い換える必要があります。
クライアントが使用するツールはたくさんあるかもしれませんが、これらの「ツール」が使用する基本的な手法やprotocols
は、サーバーに接続するための「SFTP, SSH, telnet
」などと同じです。したがって、そのシステムで表示されるのは、一部のリモートホストがこのサーバーでssh or sftp
セッションを開こうとしていることだけです。詳しくは/var/log/secure
をご覧ください。あなたが遭遇するいくつかの一般的なメッセージは次のとおりです。
ssh
PuTTY or xshell
などのツールを使用:
sshd[19199]: Accepted password for root from 10.10.10.10 port 51162 ssh2
sshd[19199]: pam_unix(sshd:session): session opened for user root by (uid=0)
sftp
経由のwinscp
:
sshd[19238]: Accepted password for root from 10.10.10.10 port 51163 ssh2
sshd[19238]: pam_unix(sshd:session): session opened for user root by (uid=0)
sshd[19238]: subsystem request for sftp
PS:しかし、あなたの仕事をするかもしれない贅沢なツールがいくつかあるかもしれません。