상세 컨텐츠

본문 제목

[Linux]bash_history를 이용한 명령어 모니터링

IT

by Admimistrator 2024. 5. 21. 17:28

본문

728x90
반응형
반응형

💡 Bash history란 Bash Shell은 명령어 히스토리 기능을 제공하고 있습니다. history 명령어를 입력하면 접속한 사용자 홈 디렉토리에 .bash_history 파일에 기록되어 있는 내역을 표시하게 됩니다. .bash_history의 내용을 리눅스의 syslog에 남기게 하여 사용자가 직접 접속 후 사용하는 명령어들을 모니터링 할 수 있게 설정하고자 합니다.

 

logger 명령어를 이용한 모니터링 적용

Logger : 쉘 명령어를 syslog에 적재하도록 하는 모듈

  • logger를 사용하기 위해서는 rsyslog가 필요합니다.
  • rsyslog 가 설치 되지 않았다면 yum 혹은 wget등을 통해 설치 후 사용 가능 합니다.
  1. vi /etc/profile.d/cmd.sh : logger를 설정하기 위해 임의의 스크립트 파일을 생성하고 내용을 입력합니다.
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 logmain.notice -- IP=$ip USER=$who, PID=$$, PWD=$PW
 }
 trap history_to_syslog DEBUG || EXIT
 
HISTSIZE=10000
 HISTFILESIZE=1000000
 HISTTIMEFORMAT="%F %T "
 
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTFILESIZE 
 
declare -r HISTFILE

스크립트 파일의 기본 내용입니다.

function history_to_syslog 설명

  • $whoami : 변수 설정으로 현재 사용자의 로그인 정보 및 원격 주소를 가져옵니다.
  • $history 1 : 변수 설정으로 최근에 실행된 명령어를 가져오고, cut -f 명령어를 통해 각 파일의 섹션을 제거하고 지정된 필드만 출력 되도록 합니다.
  • 위의 스크립트는 이전 명령어와 현재 명령어를 비교하여 변경이 있을 때만 로그를 작성하도록 하였습니다.
  • logger 명령어를 사용하여 syslog에 로그를 적재하도록 합니다.
    • logger -p logmain.notice 는 로그를 적재하는 서버가 다를 경우 대상 서버의 호스트 네임 변수 값을 작성하였습니다.

2. profile.d 수정된 내용 적용을 위해 Source 적용

source /etc/profile.d/cmd.sh

 

3. rsyslog 설정

  • /etc/rsyslog.conf 의 룰을 적용합니다.

  • @udp 전송을 위한 IP 설정시 명령어 이력을 적재하고자 하는 ip를 입력하여 설정할 수 있고 udp / tcp 통신에 따라 아래의 이미지 내용과 같이 rsyslog의 주석 처리가 다를 수 있습니다.

스크립트를 통한 명령어 적재가 확인 되었는지 보겠습니다.

 

 

💡 bash_history 적재 시 사용 명령어나 logger 옵션에 따라서 과도하게 적재 될 수 있으니, 이 점 유의하여 테스트하시길 바랍니다.

 

728x90
반응형

'IT' 카테고리의 다른 글

[Network]HTTP/HTTPS 란?  (0) 2024.06.17
[Network]Switch 란?  (0) 2024.06.17
HDD vs SSD 저장장치  (0) 2024.05.14
[Network] 패킷 Flags란?  (0) 2024.05.03
[네트워크]패킷 헤더가 뭘까?  (0) 2024.05.02

관련글 더보기