rsyslog 를 이용한 history 실시간 로그 생성

 

리눅스 서버 운영 시 히스토리 커맨드 사용은 매우 필수사항이다.

하지만 실시간으로 반영되지 않고, 캐시메모리에 일시 기억되고 있다가

접속이 종료되어야 그때 히스토리에 기록에 남는다.

다음은 히스토리를 실시간으로 반영하는 작업을 설명 한다.

기준 : CentOS 7

 

 

1. history 실시간 로그 기록 스크립트 생성

 

# vi /etc/rsyslog/conf

function history_to_syslog
 {
        cmd_old=$cmd
        who=$(whoami)
        cmd=$(history 1)
        TTY=`tty`
        HISNAME="`basename $TTY`"
 ip=`who |grep pts/${HISNAME} |cut -f 2 -d \(|cut -f 1 -d \)`
 if [ "$cmd" != "$cmd_old" ]; then  // 커맨드가 두 번씩 출력 되는 현상 수정
 logger -p local3.notice -- IP=$ip USER=$who, PID=$$, PWD=$PWD, CMD=$cmd
 fi
 }
 trap history_to_syslog DEBUG || EXIT

HISTSIZE=10000
HISTFILESIZE=1000000

# source /etc/profile

 


2. rsyslog 설정

 

rsyslog config 파일에 아래 내용을 추가해준다.

*.info;mail.none;authpriv.none;cron.none;local3.!notice                        /var/log/messages

local3.notice                                                                            /var/log/history.log

 

# vi /etc/rsyslog/conf

# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none;local3.!notice                /var/log/messages

# Save history.log
local3.notice                                           /var/log/history.log

# systemctl restart rsyslog

 


3. 작동 확인 테스트

- 터미널 창을 2개 열어놓고, 출력이 잘 되는지 테스트.

터미널 1 : # tail -f /var/log/history.log

터미널 2 : # ls; # top; 등등 커맨드 암거나 입력

 

4. 계정별 확인 방법
백업 된 히스토리 파일 추출

# cat /var/log/)history.log | grep -i "user=blink" > ./blink_history.log

 

끝.

TAGS.

Comments