Bash History 를 Syslog 에 남기기
Bash 쉘은 명령어 히스토리 기능을 제공 합니다. history 명령어를 입력하면 지금까지 사용했던 Bash 명령어들이 모두 보여 줍니다.
이러한 기능은 사용자 홈 디렉토리에 ‘.bash_history’ 파일에 기록되어 집니다. 그러나 여러 사람이 사용하는 서버에서 각 사용자 홈 디렉토리에 히스토리를 남기기 보다는 리눅스의 syslog 에 남기게 함으로써 사용자가 못된 일을 하는지 않하는지를 감시하도록 하면 좋을 것입니다.
이 문서는 Bash History 를 Syslog 에 남기기 에 대한 것입니다.
1. logger 를 이용한 방법
logger 는 쉘 명령어를 syslog 에 적도록하는 모듈 입니다. 이를 이용하면 수동으로 syslog 에 기록을 남기게 할 수 있습니다. 이를 이용해서 다음과 같이 /etc/profile.d/cmd.sh 파일을 작성 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
function history_to_syslog { declare cmd who=$(whoami) cmd=$(history 1) TTY=`tty` HISNAME="`basename $TTY`" ip=`who |grep pts/${HISNAME} |cut -f 2 -d \(|cut -f 1 -d \)` logger -p local7.notice -- IP=$ip USER=$who, PID=$$, PWD=$PWD, CMD=$cmd } trap history_to_syslog DEBUG || EXIT HISTSIZE=10000 HISTFILESIZE=1000000 HISTTIMEFORMAT="%F %T " export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTFILESIZE HISTTIMEFORMAT INPUTRC declare -r HISTFILE |
이제 이를 Source 해 줍니다.
1 |
source /etc/profile.d/cmd.sh |
2. rsyslog 설정
다음과 같이 설정을 해줍니다.
1 2 3 |
#user command log local7.notice /var/log/bash_history local7.notice @192.168.0.2:514 # udp transfer |
이렇게하면 ‘/var/log/bash_history’ 파일에 Bash 쉘 히스토리가 남기며 ‘192.168.0.2’ 서버에 로그를 전송합니다.