모든 사용자가 실행한 모든 명령을 기록하는 방법

모든 사용자가 실행한 모든 명령을 기록하는 방법

하나의 로그 줄에 다음 형식의 로그를 가져오고 싶습니다.

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그리고 (루트)를 사용하는 경우에만 명령이 저장됩니다. 종료 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 
    

결과는 다음과 유사하며 루트 및 다른 사용자가 실행한 명령도 볼 수 있습니다.

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]

관련 정보