Linux 로그 경로 정리 · 13/50 · Part 2. RHEL / Rocky Linux 로그 경로

선행 학습 → 12. /var/log/messages 분석 · 기초 49. SSH Brute Force 로그 분석
이번 글 → /var/log/secure 분석
이어서 → 14. /var/log/cron 분석

1. 들어가며

/var/log/secure 는 SOC 분석가가 가장 많이 여는 파일입니다. 기존 기초 49편에서 SSH 무차별 대입을 집계했다면, 이번 글은 secure 에 남는 모든 인증·권한 이벤트의 문자열 패턴을 정리해, 어떤 줄이 어떤 행위를 의미하는지 즉시 읽을 수 있게 합니다.

핵심 요약

  • secure = authpriv.* = sshd · sudo · su · login · passwd · useradd · PAM
  • 분석 순서: 실패 → 성공 → 세션 → 권한 상승 → 계정 변경
  • PID로 세션을 묶고, sudo의 COMMAND로 "무엇을 했는지" 본다.

2. 핵심 개념

프로그램대표 문자열의미
sshdFailed password for (invalid user) X from IP비밀번호 실패 (존재하지 않는 계정 포함)
sshdInvalid user X from IP존재하지 않는 계정 시도
sshdAccepted password / publickey for X from IP로그인 성공 (방식 구분)
sshdConnection closed by authenticating user, Disconnected from인증 중 종료
PAMpam_unix(sshd:session): session opened for user X세션 시작
sudoX : TTY=pts/1 ; PWD=... ; USER=root ; COMMAND=...sudo 실행 성공
sudoX : 3 incorrect password attempts, user NOT in sudoerssudo 실패/권한 없음
supam_unix(su:session): session opened for user root by Xsu 전환
supam_unix(su:auth): authentication failuresu 실패
useraddnew user: name=X, UID=...계정 생성
usermodadd 'X' to group 'wheel'그룹 변경 (권한 상승 경로)
passwdpam_unix(passwd:chauthtok): password changed for X비밀번호 변경

3. 로그 생성 구조

secure = 인증/권한의 단일 창구

sshd ─┐
sudo ─┤  syslog(LOG_AUTHPRIV)    journald     rsyslog
su   ─┼──────────────────────▶ (수집) ──▶ authpriv.* ──▶ /var/log/secure (0600 root)
login ┤  PAM 모듈(pam_unix 등)도
passwd┘  동일 facility 사용

4. 실제 로그 경로

/var/log/secure                 현재
/var/log/secure-YYYYMMDD        순환 파일 (비압축, 주 단위 4세대)
journalctl -u sshd              sshd 원천 (journald)
journalctl _COMM=sudo           sudo 원천
/var/log/btmp  (lastb)          로그인 실패 바이너리 기록

5. 명령어 실습

S=/var/log/secure

# 실패: 출발지 IP 상위
grep 'Failed password' $S | grep -oE 'from [0-9.]+' | sort | uniq -c | sort -rn | head

# 성공: 방식·계정·IP
grep 'Accepted' $S | awk '{for(i=1;i<=NF;i++){if($i=="Accepted")m=$(i+1);if($i=="for")u=$(i+1);if($i=="from")ip=$(i+1)} print $1,$2,$3,m,u,ip}'

# 실패 이력이 있는 IP의 성공 (가장 중요한 질문)
for ip in $(grep 'Failed password' $S | grep -oE 'from [0-9.]+' | awk '{print $2}' | sort -u); do
  grep "Accepted .* from $ip " $S
done

# 권한 상승
grep -E 'sudo:.*COMMAND=' $S | awk -F'COMMAND=' '{print $2}' | sort | uniq -c | sort -rn | head
grep -E 'su:.*session opened|su:.*authentication failure' $S | tail

# 계정 변경
grep -E 'useradd|usermod|userdel|groupadd|password changed' $S

6. 로그 예시

실제 실행 결과 — Rocky Linux 9.8 · root@rocky9-lab — secure 인증 이벤트

위 이미지는 Rocky Linux 9.8 실습 환경의 실제 실행 결과입니다.

아래는 이 시리즈의 실습 시나리오 로그(직접 작성한 가상 데이터) 중 일부입니다. 48~50편에서 같은 데이터로 IOC·타임라인·보고서까지 이어집니다.

[실습 시나리오 로그 · 가상 데이터]
Sep 20 02:14:44 web01 sshd[4096]: Failed password for deploy from 203.0.113.45 port 50164 ssh2
Sep 20 02:14:52 web01 sshd[4101]: Accepted password for deploy from 203.0.113.45 port 51188 ssh2
Sep 20 02:14:52 web01 sshd[4101]: pam_unix(sshd:session): session opened for user deploy(uid=1001) by deploy(uid=0)
Sep 20 02:15:30 web01 sudo[4150]:   deploy : TTY=pts/1 ; PWD=/home/deploy ; USER=root ; COMMAND=/bin/bash
Sep 20 02:16:40 web01 useradd[4210]: new user: name=sysbackup, UID=1002, GID=1002, home=/home/sysbackup, shell=/bin/bash, from=/dev/pts/1
Sep 20 02:16:48 web01 passwd[4215]: pam_unix(passwd:chauthtok): password changed for sysbackup

7. 로그 필드 분석

줄핵심 필드해석
Faileddeploy, 203.0.113.45실존 계정 대상 비밀번호 추측
Acceptedpassword 방식, PID 4101실패 이력 IP의 비밀번호 로그인 성공
session openeduid=1001세션 시작, PID 4101로 연결
sudoCOMMAND=/bin/bashroot 셸 획득 — 개별 명령은 sudo 로그에 안 남음 → audit 필요
useraddshell=/bin/bash, from=/dev/pts/1로그인 가능한 백도어 계정 생성, 같은 터미널
passwdsysbackup백도어 계정 비밀번호 설정

8. 보안관점

정상의심
사내 IP 공개키 로그인외부 IP 비밀번호 로그인
sudo로 특정 관리 명령 실행sudo /bin/bash, sudo su -, sudo -i (셸 획득)
변경관리된 계정 생성새벽 시간·원격 세션에서 useradd
실패 1~2회 후 성공(오타)실패 수십 회 후 성공 (무차별 대입 성공)

9. SOC 관점

/var/log/secure
   ↓ Failed password  → Source IP, 계정, 실패 횟수
   ↓ Accepted         → 같은 IP의 성공? 방식?
   ↓ session opened   → PID/세션 연결
   ↓ sudo COMMAND     → 셸 획득 여부
   ↓ useradd/passwd   → 지속성 계정
   ↓ (audit 로 이동)  → root 셸 안에서 실행한 명령

실제 Wazuh 규칙 매칭 결과(47편에서 wazuh-logtest 로 확인): 실패는 5760/5710, 반복 시 5763/5712(level 10), 실패 후 성공은 40112(level 12), 공격 후 계정 추가는 40501(level 15)로 경보됩니다.

10. 실습 체크리스트

[ ] secure 의 12가지 대표 문자열 구분
[ ] 실패 IP 상위 집계
[ ] 실패 이력 IP 의 성공 여부 확인
[ ] sudo COMMAND 집계로 셸 획득 탐지
[ ] 계정 생성/변경 이벤트 확인
[ ] root 셸 이후 행위는 audit 로 넘어가야 함을 설명

11. 핵심 정리

  • secure 는 authpriv 전체를 담는 RHEL 인증 로그다.
  • 가장 중요한 질문은 "실패 이력이 있는 IP가 성공했는가"다.
  • sudo /bin/bash 이후의 명령은 secure 에 남지 않는다 → audit로 보강한다.
  • 계정 생성(useradd)과 비밀번호 설정(passwd)은 지속성 신호다.
  • PID와 시각으로 세션 단위 이벤트를 묶는다.

12. 다음 편 연결

구분글
◀ 이전 글12. /var/log/messages 분석
▶ 다음 글14. /var/log/cron 분석
시리즈Linux 로그 경로 정리 전체 보기
선행 시리즈리눅스 시스템 기초 · 파일 · 권한 · 사용자 관리 · 서비스 · 프로세스 관리 · Linux 시스템 보안 기초
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글