ユーザーのホスト名またはユーザー名を使用して、サーバー上のすべてのSSHアクティビティをどのように記録できますか?

ユーザーのホスト名またはユーザー名を使用して、サーバー上のすべてのSSHアクティビティをどのように記録できますか?

Ubuntuサーバーがあり、私のサーバーのすべてのSSHアクティビティを記録したいと思います。

ここでこれに関する良いドキュメントを見つけました。サーバー上のすべてのユーザーのすべてのBashコマンドを記録する方法は?この文書に従ってサーバーでロギングを有効にしました。次の行を使用してコマンドを記録します。

export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"

私のサーバーで実行されたすべてのコマンド(ローカルで実行され、SSHで実行されます)のログを提供します。同じ出力を添付しました。

私にとって必要なのは、ログファイルに自分のローカルサーバーに接続するために使用されるユーザーのユーザー名またはホスト名とパブリックIPアドレスが必要です。

誰でもこれについてどんな考えを持っていますか?

出力ログファイル:

Aug 7 11:03:34 local ajay: ajay [1906]: sudo rm -rf commands.log*
Aug 7 11:03:36 local ajay: ajay [1906]: ll
Aug 7 11:03:59 local ajay: ajay [1906]: sudo rm -rf messages*
Aug 7 11:04:19 local ajay: ajay [1906]: sudo rm -rf usercommands
Aug 7 11:04:49 local ajay: ajay [1906]: sudo rm -rf history.log
Aug 7 11:05:11 local ajay: ajay [1906]: ll
Aug 7 11:05:21 local ajay: ajay [1906]: cat commands.log
Aug 7 11:05:33 local ajay: ajay [1906]: cat commands.log
Aug 7 11:05:46 local ajay: ajay [1906]: sudo chmod -R 777 commands.log
Aug 7 11:05:48 local ajay: ajay [1906]: cat commands.log
Aug 7 11:06:19 local ajay: ajay [1906]: cat commands.log

ベストアンサー1

$SSH_CONNECTION変数は、ユーザーが接続するポートと送信元/宛先IPアドレスを提供します。したがって、loggerコマンドにパラメータとして追加してください。

良い:

 export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$SSH_CONNECTION $(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"

詳細については、以下を確認してください。SSH_TTYとSSH_CONNECTIONとは何ですか?

ホスト名はDNS解決によって異なります。いつでもログのリバースDNSを確認するスクリプトを作成できます。私が知っている限り、DNS名を直接解決するための指示はありません。

おすすめ記事