반응형
임의 사용자의 history 삭제 방지 및 비정상 접속 시 추적의 용이성을 위해 접속 정보 저장 및 명령어 입력 시 즉시 로그에 저장합니다.
1. history function 작성 및 등록 |
1) /etc/profile.d/history_log.sh 생성
function history_to syslog {
declare cmd # 커맨드로 클리어 불가능
who='whoami'
cmd=$(history | tail -1)
TTY='tty'
HISNAME="'basename $TTY'"
login_tty='who | grep pts/${HISNAME} | awk '{print $2}''
con_time='who | grep pts/${HISNAME} | awk '{print $3, $}''
# who 명령어 결과 뒤에서 2번째 다음 (자르고 뒤에) 자르고 출력
ip='who | grep pts/${HISNAME} cut -f 2 -d \(|cut -f 1 -d \)'
if [ -n "${cmd}" ]; then
if [ -n "${login_tty}" ]; then
# 마지막 cmd와 old cmd가 동일하지 않을 경우 출력
if [ "$cmd" != "$cmd_old" ]; then
logger -p local6.debug -t bash -i -- USER=[$WHO]: ip=[$IP]: pid=[$$]: tty=[$LOGIN_TTY]: conn_time=[$CON_TIME]: pwd=[$pwd]: cmd=[$CMD ] # $$ : 현재 ID
fi
cmd_old=$cmd # 버퍼에 cmd 현재값 저장
fi
fi
}
trap history_to_sslog DEBUG || EXIT # history르르 DEBUG 모드로 수행
HISTSIZE=10000
HISTFILESIZE=1000000
HISTTIMEFORMAT="%F %T "
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTFILESIZE HISTTIMEFORMAT INPUTRC
declare -r HISTFILE
2) /etc/profile.d/history_log.sh 권한 변경
# chmod 644 /etc/profile.d/history_log.sh
3) history fuction 시스템에 등록
# source /etc/profile.d/history_log.sh
2. rsyslog에 등록 및 실행 |
1) /etc/rsyslog.conf 파일에 등록
local6.debug /var/log/history
2) rsyslog 서비스 재실행
OS 버전 | 명령어 | |
RHEL7 | # systemctl restart rsyslog.service | |
RHEL6 | # service rsyslog restart |
3. 로그 로테이션 적용 |
1) /etc/logrotate.d/syslog 파일에 등록
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
/var/log/sulog
/var/log/history
{
sharedscripts
postrotate
/bin/kill -HUP 'cat /var/run/syslogd.pid 2> /dev/null' 2> /dev/null || true
endscript
}
4. history 로그 설명 |
1) /var/log/history 출력 결과
Dec 18 11:33:50 chanchan bash[32781]: USER=[root]: IP=[10.xxx.xxx.xxx]: PID=[20660]: TTY=[pts/1]: CONN_TIME=[2019-12-18 10:30]: pwd=[/var/log]: CMD=[ 1501 2019-12-17 10:30:26 ls ]
2) /var/log/history 항목 설명
항목 | 설명 |
Dec 18 11:33:50 chanchan | 로그 기록 날짜와 호스트명 |
bash[32781]: |
실행쉘의 PID |
USER=[root]: |
접속 계정 |
IP=[10.xxx.xxx.xxx]: |
접속 계정 IP |
PID=[20660]: |
접속계정 PID |
TTY=[pts/1]: |
접속콘솔 번호 |
CONN_TIME=[2019--12-18 10:30]: |
접속 계정의 최초 접속 시간 |
PWD=[/var/log]: |
접속 계정의 명령어 입력 위치(디렉터리) |
CMD=[ 1501 2019-12-18 10:30:26 ls ] |
history 라인, 입력시간, 명령어 |
반응형
'IT 이야기 > Linux' 카테고리의 다른 글
[RHEL 공통] 네트워크 디바이스(NAS) 사용 시 마운트 옵션 (0) | 2020.10.19 |
---|---|
[RHEL6] 데몬이란? (0) | 2020.05.18 |
[RHEL 6, 7] RHEL 6 vs RHEL7 주요 변경 항목 (0) | 2019.12.09 |
[RHEL 공통] SysVinit vs Systemd (0) | 2019.12.09 |
[RHEL7] Systemd 서비스 (0) | 2019.12.09 |
댓글