본문 바로가기

여러가지/테스트

[참고] 서버 로그 기록

(방법 1) 로그아웃 시, 명령어 히스토리 파일 생성

 

Step1. 파일 수정

(파일) .bashrc or .bash_profile

※ 사용자 쉘 실행 시 (로그인) 실행됩니다.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

export HISTFILE=~/.bash_history_$(date +%Y%m%d%H%M%S)
export PROMPT_COMMAND='history -a'

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

'history -a'  : 현재 세션의 명령어 히스토리를 히스토리 파일에 즉시 추가

 

(파일) ~/.bash_logout

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

#!/bin/bash

# 명령어 기록 파일 경로
HISTORY_FILE=~/.bash_history_$(date +%Y%m%d%H%M%S)

# 로컬 서버로 전송
scp $HISTORY_FILE user@local_server:/path/to/destination/

# 기록 파일 삭제 (선택 사항)
rm $HISTORY_FILE

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Step2. 실행 권한 부여

# chmod +x ~/.bash_logout

 

Step3. 로깅 및 확인

# ls ~/.bash_history_*
/root/.bash_history_20240618162741
# vi /root/.bash_history_20240618162741

 

 

(방법 2) 실시간 명령어 히스토리 파일 생성

 

Step1. 파일 수정

(파일) .bashrc or .bash_profile

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

export HISTFILE=~/.bash_history_$(date +%Y%m%d%H%M%S)
export PROMPT_COMMAND='history -a; bash ~/log_command.sh'

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

(파일) log_command.sh

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

#!/bin/bash

# 로그 파일 경로
HISTORY_FILE=~/.bash_history

# 현재 세션의 마지막 명령어 가져오기
LAST_COMMAND=$(history | tail -n 1 | sed 's/^[ ]*[0-9]\+[ ]*//')

# 명령어가 비어있지 않으면 로컬 서버로 전송
if [[ ! -z "$LAST_COMMAND" ]]; then
    echo "$LAST_COMMAND" | ssh user@local_server 'cat >> /path/to/destination/commands.log'
fi

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Step2. 실행 권한 부여

chmod +x ~/log_command.sh

 

Step3. 로깅 및 확인

# ls ~/.bash_history_*
/root/.bash_history_20240618162741
# vi /root/.bash_history_20240618162741

 

 

(방법 3) 특정 서버로부터 ssh 접속 시에만 로그 남기기

 

Step1. 파일 수정

(파일) .bashrc

※ 사용자 쉘 실행 시 (로그인) 실행됩니다.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

# .bashrc

# 특정 서버 IP 주소
SPECIFIC_SERVER_IP="your_specific_server_ip"

# SSH 접속 여부와 접속한 서버의 IP 주소 확인
if [[ -n "$SSH_CLIENT" ]] || [[ -n "$SSH_TTY" ]]; then
    # 접속한 서버의 IP 주소 가져오기
    SSH_CONNECTION_INFO=$(echo $SSH_CLIENT | awk '{print $1}')
    
    if [[ "$SSH_CONNECTION_INFO" == "$SPECIFIC_SERVER_IP" ]]; then
        export HISTFILE=~/.bash_history_$(date +%Y%m%d%H%M%S)
        export PROMPT_COMMAND='history -a; bash ~/log_command.sh'
    fi
fi

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

.bash_history : 명령어 기록 저장되는 기본 히스토리 파일

'history -a'  : 현재 세션의 명령어 히스토리를 히스토리 파일에 즉시 추가

bash ~/log_command.sh : ~/log_command.sh 스크립트 실행 명령어

 

(파일) log_command.sh

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

#!/bin/bash

# 현재 세션의 마지막 명령어 가져오기
LAST_COMMAND=$(history | tail -n 1 | sed 's/^[ ]*[0-9]\+[ ]*//')

# 명령어가 비어있지 않으면 로컬 서버로 전송
if [[ ! -z "$LAST_COMMAND" ]]; then
    echo "$LAST_COMMAND" | ssh user@local_server 'cat >> /path/to/destination/commands.log'
fi

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Step2. 실행 권한 부여

chmod +x ~/log_command.sh

 

Step3. 로깅 및 확인

# ls ~/.bash_history_*
/root/.bash_history_20240618162741
# vi /root/.bash_history_20240618162741