서버 접속에서 삽질하는 애들중에 history 로그를 날리고 나가는 애들이 있어서..
/etc/profile.d/ 안에 파일을 만들어서 쓰는 커멘드를 /var/log/messages 로그에 남기 도록 한다.
보기 좋게 출력을 하도록 약간 수정을 하였다 ‘ㅅ’a
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#!/bin/bash function history_to_syslog() { declare USERCMD USERCMD=$(fc -ln -0 2>/dev/null|sed 's/\t //') declare PP if [ "$USER" == "root" ];then PP="]#" else PP="]$" fi if [ "$USERCMD" != "$OLD_USERCMD" ];then logger -p local3.notice -t bash -i "history2syslog: $USER$(who am i|awk '{print $NF}')$SUDO_USER:$PWD$PP $USERCMD" fi OLD_USERCMD=$USERCMD unset USERCMD PP } trap 'history_to_syslog' DEBUG |
로그는 아래와 같이 찍힌다.
슈퍼유져(root) 권한을 획득한 유져(userA)의 로그
1 2 |
Jul 31 19:31:22 xxxxx bash[18308]: history2syslog: root(111.111.111.111)userA:/home]# tail /var/log/messages Jul 31 19:31:26 xxxxx bash[18316]: history2syslog: root(111.111.111.111)userA:/home]# grep bash /var/log/messages |
일반 유져(userB)의 로그
1 2 |
Jul 31 19:32:29 xxxxx bash[20202]: history2syslog: userB(222.222.222.222):/home/userA]$ ls Jul 31 19:32:30 xxxxx bash[20210]: history2syslog: userB(222.222.222.222):/home/userA]$ cd html/ |
who, sed, awk, logger 명령어가 사용자에게 실행(755)권한이 있어야 한다.
1 |
~]# which who sed awk logger gawk|xargs ls --color=auto -l |