web-dev-qa-db-ja.com

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

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

いう、

ssh [email protected] COMMAND

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

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

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

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

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

pstree -p | grep ssh

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

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

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

ありがとう…….

8
Prashanth

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

man auditctlが出発点になります。

4
Jenny D

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

ForceCommand logger -p user.notice "$SSH_ORIGINAL_COMMAND"
3
c4f4t0r

私の場合、まったく同じ要件がありました。この方法の唯一の注意点は、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ファイルで、ログを取得したいSSHキーに属する行にcommand=パラメータを追加したので、log-commandsスクリプトを実行する必要があります。

command = "/ home/tricky/bin/log-commands" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ ...... 6J0C1 [email protected]

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

1
zaTricky

スヌーピーはこれであなたを助けますか? 「実行されたすべてのコマンドをsyslog(別名Snoopy Logger)に記録します。」

https://github.com/a2o/snoopy

1
Ben Lavender

これを行う方法を見つけました。 John M. Simpsonhttps://www.jms1.net)によって書かれたPerlスクリプトがあります/)。

追加するだけです

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

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

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

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

1
Prashanth