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名を直接解決するための指示はありません。