
SSH 経由で実行されたすべてのコマンドをログに記録したいと思います。
言う、
ssh [email protected] COMMAND
server.com に「COMMAND」をログに記録したい
徹底的に検索しましたが、何も見つかりませんでした。
似たような質問がもう 1 つありますが、そこには解決策がないと思います。
ライブビューを見ることができます
pstree -p | grep ssh
Snoopy、auditd、sudosh を試しましたが、SSH 経由でこれらのコマンドをログに記録できませんでした。
そこにはhttp://freecode.com/projects/shwatchrしかし、テスト用のスクリプトをダウンロードできません。
これを実行する他の方法はありますか?
答え1
私は自分のサーバー SUSE ラボでこのオプションを使用してテストを行い、動作しましたが、もっと良い方法があるかもしれません。
ForceCommand logger -p user.notice "$SSH_ORIGINAL_COMMAND"
答え2
SSH に焦点を当てるのではなく、一歩下がって、auditd の使用を検討してください。本当に必要なのは、他の種類のログインとは対照的に、SSH から行われた操作を追跡することではなく、ユーザーを追跡することだと思います。
man auditctl
出発点となるはずです。
答え3
私はこれを実現する方法を見つけました。Perlスクリプトがあります。ジョン・M・シンプソン(https://www.jms1.net/)。
追加するだけです
command="#{path to log-session}"
~/.ssh/authorized_keys内の各キーの前に
これはパスワードなしの ssh がある場合にのみ機能しますが、これにより私の目的はある程度達成されます。
答え4
私の場合もまったく同じ要件がありました。この方法の唯一の注意点は、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 スクリプトを強制的に実行するようにしました。
コマンド="/home/tricky/bin/log-commands" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ......6J0C1 [メールアドレス]
ログ記録を認識しているが、コマンドを見せたくない場合は、対話型セッションに入るだけで済みます。おっしゃるとおり、snoopy はすでに試されています。snoopy は自動的にログ記録を行います。私が試していない一般的な代替手段としては、rootsh、sudosh、log-user-session などがあります。