하나의 로그 줄에 다음 형식의 로그를 가져오고 싶습니다.
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
그리고 (루트)를 사용하는 경우에만 명령이 저장됩니다. 종료 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
결과는 다음과 유사하며 루트 및 다른 사용자가 실행한 명령도 볼 수 있습니다.
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]