すべてのユーザーが実行したすべてのコマンドを記録する方法

すべてのユーザーが実行したすべてのコマンドを記録する方法

1つのログ行に次の形式のログをインポートしたいと思います。

user_x executed command_y

次の解決策が見つかりました。

ただし、ここではユーザーが実行したコマンドのみを保存しますroot

また、監査ルールを試しましたが、上記の解決策は私のユースケースでより正確でした。

SYSCALL監査ルールは、(ユーザー情報)、EXECVE(実行されたコマンドパラメータ)など、さまざまな種類のさまざまな行にログを保存します。代わりに、この情報をログ行に保存する必要があります。

私は次のステップに従いました。

  1. 編集する/etc/rsyslog.d/bash.conf

    vim /etc/rsyslog.d/bash.conf
    

    そして、以下を追加してください:

    local6.*    /var/log/commands.log
    
  2. 開いている/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]\+[ ]*//" )"'
    
  3. 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を使用している)に基づいて、私の場合に従った手順を公開しています。

  1. 編集する/etc/bashrc

    sudo -e /etc/bashrc
    

    そして次の行を追加してください:

    export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" )"'
    
  2. 次のコマンドを実行して変更をロードします。

    source /etc/bashrc
    
  3. 編集する/etc/rsyslog.d/bash.conf

    sudo -e /etc/rsyslog.d/bash.conf
    

    そして次の行を追加してください:

    local6.*    /var/log/commands.log
    
  4. 編集する/etc/logrotate.d/syslog

    sudo -e /etc/logrotate.d/syslog
    

    そして次の行を追加してください:

    /var/log/commands.log
    
  5. 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]

関連情報