SSH経由で実行されたすべてのコマンドをログに記録したいと思います。
いう、
ssh [email protected] COMMAND
Server.comに「COMMAND」を記録したい
広範囲にわたって検索しましたが、何も見つかりませんでした。
同様の質問がもう1つありますが、解決策はないと思います。
私はライブビューを得ることができます
pstree -p | grep ssh
私はSnoopy、auditd、sudoshを試しましたが、ssh経由でこれらのコマンドをログに記録できませんでした。
http://freecode.com/projects/shwatchr があります。テストするスクリプトをダウンロードできません。
これを行う他の方法はありますか?
ありがとう…….
SSHに焦点を合わせるのではなく、一歩下がって、auditdの使用を検討してください。他のタイプのログインとは対照的に、SSHから何が行われたかを追跡するのではなく、ユーザーを追跡することが本当に必要だと思います。
man auditctl
が出発点になります。
私は自分のサーバーのsuseラボでこのオプションを使用してテストを行いましたが、うまくいきましたが、もっと良い方法があるかもしれません。
ForceCommand logger -p user.notice "$SSH_ORIGINAL_COMMAND"
私の場合、まったく同じ要件がありました。この方法の唯一の注意点は、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です。
スヌーピーはこれであなたを助けますか? 「実行されたすべてのコマンドをsyslog(別名Snoopy Logger)に記録します。」
これを行う方法を見つけました。 John M. Simpson(https://www.jms1.net)によって書かれたPerlスクリプトがあります/)。
追加するだけです
command="#{path to log-session}"
〜/ .ssh/authorized_keysの各キーの前
パスワードなしのsshを使用している場合にのみ機能しますが、これは私の目的をある程度解決します。