(방법 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
'여러가지 > 테스트' 카테고리의 다른 글
[프로젝트] 대상 서버 등록 시, 로그 기록 파일 전송 (0) | 2024.06.24 |
---|---|
[참고] TUI - dialog (0) | 2024.06.21 |
[프로젝트] 접근 제어 - 전체 차단 / 대상 서버 허용 방식 (0) | 2024.06.18 |
[테스트] 프록시 서버 방화벽 및 ssh (0) | 2024.06.18 |
[프로젝트] 접근 제어 - 리스트 분리, 포트 추가 및 css 파일 적용 (0) | 2024.06.17 |