1つのログ行に次の形式のログをインポートしたいと思います。
user_x executed command_y
次の解決策が見つかりました。
ただし、ここではユーザーが実行したコマンドのみを保存しますroot
。
また、監査ルールを試しましたが、上記の解決策は私のユースケースでより正確でした。
SYSCALL
監査ルールは、(ユーザー情報)、EXECVE
(実行されたコマンドパラメータ)など、さまざまな種類のさまざまな行にログを保存します。代わりに、この情報をログ行に保存する必要があります。
私は次のステップに従いました。
編集する
/etc/rsyslog.d/bash.conf
:vim /etc/rsyslog.d/bash.conf
そして、以下を追加してください:
local6.* /var/log/commands.log
開いている
/root/.bashrc
:vim /root/.bashrc
そして以下を入力してください:
# Enable CLI Logging whoami="$(whoami)@$(echo $SSH_CONNECTION | awk '{print $1}')"export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$whoami [$$] $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" )"'
rsyslog
サービスを再起動してください。sudo service rsyslog restart
/var/log/commands.log
上記のように、ログは次の形式で保存されます。
Aug 13 10:10:31 ip-172-31-3-192 ec2-user: root [19399] cat /var/log/commands.log
sudo su
そして、(root)を使用している場合にのみコマンドが保存されます。終了しsudo su
てコマンドを実行すると、そのコマンドが/var/log/commands.log
。
これがはっきりしていることを願っています。
答え1
ありがとうご飯とhttps://askubuntu.com/questions/93566/how-to-log-all-bash-commands-by-all-users-on-a-server/93570#93570上記のソリューション(Amazon Linuxを使用している)に基づいて、私の場合に従った手順を公開しています。
編集する
/etc/bashrc
:sudo -e /etc/bashrc
そして次の行を追加してください:
export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" )"'
次のコマンドを実行して変更をロードします。
source /etc/bashrc
編集する
/etc/rsyslog.d/bash.conf
:sudo -e /etc/rsyslog.d/bash.conf
そして次の行を追加してください:
local6.* /var/log/commands.log
編集する
/etc/logrotate.d/syslog
:sudo -e /etc/logrotate.d/syslog
そして次の行を追加してください:
/var/log/commands.log
rsyslog
サービスを再起動してください。sudo service rsyslog restart
結果は次のようになり、rootや他のユーザーが実行したコマンドも表示できます。
Aug 13 13:39:02 ip-172-31-3-192 ec2-user: root [23275]: rm logrotate.d/rsyslog [0]
Aug 13 13:39:08 ip-172-31-3-192 ec2-user: root [23275]: cat logrotate.d/rsyslog [1]
Aug 13 13:39:23 ip-172-31-3-192 ec2-user: root [23275]: sudo cat /var/log/commands.log [0]
Aug 13 13:39:27 ip-172-31-3-192 ec2-user: root [23275]: sudo cat /var/log/commands.log [0]
Aug 13 13:46:22 ip-172-31-3-192 ec2-user: ec2-user [17012]: sudo su [0]
Aug 13 13:46:54 ip-172-31-3-192 ec2-user: ec2-user [17012]: sudo /etc/rsyslog.d/bash.conf [1]
Aug 13 13:47:00 ip-172-31-3-192 ec2-user: ec2-user [17012]: sudo cat /etc/rsyslog.d/bash.conf [0]
Aug 13 13:47:10 ip-172-31-3-192 ec2-user: ec2-user [17012]: cat /etc/rsyslog.d/bash.conf [0]