ssh経由で実行されたコマンドをログに記録する


8

SSH経由で実行されたすべてのコマンドをログに記録したい。

いう、

ssh something@server.com COMMAND

server.comに「COMMAND」を記録したい

広範囲にわたって検索しましたが、何も見つかりませんでした。

同様の質問がもう1つありますが、解決策はないと思います。

「SSH経由のリモート実行」をログに記録する方法

私はライブビューを得ることができます

pstree -p | grep ssh

私はSnoopy、auditd、sudoshを試しましたが、sshを介してこれらのコマンドをログに記録できませんでした。

http://freecode.com/projects/shwatchrがあります。テストするスクリプトをダウンロードできません。

これを行う他の方法はありますか?

ありがとう……

回答:


4

SSHに焦点を合わせるのではなく、一歩下がって、auditdの使用を検討してください。他のタイプのログインとは対照的に、SSHから何が行われたかを追跡するのではなく、ユーザーを追跡することが本当に必要だと思います。

man auditctl 出発点を与える必要があります。


いいヒントですが、私にとっては抽象的すぎます。auditctlsshコマンドをログに記録する方法
guettli

3

私は自分のサーバーのsuseラボでこのオプションを使用してテストを行いましたが、うまくいきましたが、もっと良い方法があるかもしれません。

ForceCommand logger -p user.notice "$SSH_ORIGINAL_COMMAND"

これにより、送信されたコマンドはログに記録されますが、リモートシステムでは実行されません。
マイケル・マクガラ、

1

これを行う方法を見つけました。John M. Simpsonhttps://www.jms1.net/)が作成したperlスクリプトがあります

追加するだけです

command="#{path to log-session}"

〜/ .ssh / authorized_keysの各キーの前

パスワードなしのsshを使用している場合にのみ機能しますが、これは私の目的をある程度解決します。

http://www.jms1.net/log-session


1

私の場合、まったく同じ要件がありました。この方法の唯一の注意点は、sshキーを使用しない場合にどのように機能させるかがわからないことです。コマンドを実行する前にログに記録する短いbashスクリプトを作成しました。

#!/bin/bash
echo "$(date -Is) ${SSH_ORIGINAL_COMMAND}" >> ~/sshcommands.log
sh "${SSH_ORIGINAL_COMMAND}"

このコマンドを〜/ bin / log-commandsに保存し、実行可能にしました(chmod +x ~/bin/log-commands)。

authorized_keysファイルで、command=ログを取得したいSSHキーに属する行にパラメーターを追加したので、log-commandsスクリプトを強制的に実行します。

command = "/ home / tricky / bin / log-commands" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ ...... 6J0C1 tricky@tricky-testing.mydomain

誰かがロギングを認識しているが、コマンドを表示したくない場合は、対話型セッションに入るだけです。あなたが言ったように、あなたはすでにあなたのためにそれをするスヌーピーを試しました。私が試していない人気のある代替手段は、rootsh、sudosh、およびlog-user-sessionです。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.