Linux 로그 경로 정리 · 13/50 · Part 2. RHEL / Rocky Linux 로그 경로
선행 학습 → 12. /var/log/messages 분석 · 기초 49. SSH Brute Force 로그 분석
이번 글 → /var/log/secure 분석
이어서 → 14. /var/log/cron 분석
/var/log/secure 는 SOC 분석가가 가장 많이 여는 파일입니다. 기존 기초 49편에서 SSH 무차별 대입을 집계했다면, 이번 글은 secure 에 남는 모든 인증·권한 이벤트의 문자열 패턴을 정리해, 어떤 줄이 어떤 행위를 의미하는지 즉시 읽을 수 있게 합니다.
핵심 요약
secure=authpriv.*= sshd · sudo · su · login · passwd · useradd · PAM- 분석 순서: 실패 → 성공 → 세션 → 권한 상승 → 계정 변경
- PID로 세션을 묶고, sudo의 COMMAND로 "무엇을 했는지" 본다.
| 프로그램 | 대표 문자열 | 의미 |
|---|---|---|
| sshd | Failed password for (invalid user) X from IP | 비밀번호 실패 (존재하지 않는 계정 포함) |
| sshd | Invalid user X from IP | 존재하지 않는 계정 시도 |
| sshd | Accepted password / publickey for X from IP | 로그인 성공 (방식 구분) |
| sshd | Connection closed by authenticating user, Disconnected from | 인증 중 종료 |
| PAM | pam_unix(sshd:session): session opened for user X | 세션 시작 |
| sudo | X : TTY=pts/1 ; PWD=... ; USER=root ; COMMAND=... | sudo 실행 성공 |
| sudo | X : 3 incorrect password attempts, user NOT in sudoers | sudo 실패/권한 없음 |
| su | pam_unix(su:session): session opened for user root by X | su 전환 |
| su | pam_unix(su:auth): authentication failure | su 실패 |
| useradd | new user: name=X, UID=... | 계정 생성 |
| usermod | add 'X' to group 'wheel' | 그룹 변경 (권한 상승 경로) |
| passwd | pam_unix(passwd:chauthtok): password changed for X | 비밀번호 변경 |

sshd ─┐
sudo ─┤ syslog(LOG_AUTHPRIV) journald rsyslog
su ─┼──────────────────────▶ (수집) ──▶ authpriv.* ──▶ /var/log/secure (0600 root)
login ┤ PAM 모듈(pam_unix 등)도
passwd┘ 동일 facility 사용
/var/log/secure 현재
/var/log/secure-YYYYMMDD 순환 파일 (비압축, 주 단위 4세대)
journalctl -u sshd sshd 원천 (journald)
journalctl _COMM=sudo sudo 원천
/var/log/btmp (lastb) 로그인 실패 바이너리 기록
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

위 이미지는 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
| 줄 | 핵심 필드 | 해석 |
|---|---|---|
| Failed | deploy, 203.0.113.45 | 실존 계정 대상 비밀번호 추측 |
| Accepted | password 방식, PID 4101 | 실패 이력 IP의 비밀번호 로그인 성공 |
| session opened | uid=1001 | 세션 시작, PID 4101로 연결 |
| sudo | COMMAND=/bin/bash | root 셸 획득 — 개별 명령은 sudo 로그에 안 남음 → audit 필요 |
| useradd | shell=/bin/bash, from=/dev/pts/1 | 로그인 가능한 백도어 계정 생성, 같은 터미널 |
| passwd | sysbackup | 백도어 계정 비밀번호 설정 |
| 정상 | 의심 |
|---|---|
| 사내 IP 공개키 로그인 | 외부 IP 비밀번호 로그인 |
| sudo로 특정 관리 명령 실행 | sudo /bin/bash, sudo su -, sudo -i (셸 획득) |
| 변경관리된 계정 생성 | 새벽 시간·원격 세션에서 useradd |
| 실패 1~2회 후 성공(오타) | 실패 수십 회 후 성공 (무차별 대입 성공) |
/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)로 경보됩니다.
[ ] secure 의 12가지 대표 문자열 구분
[ ] 실패 IP 상위 집계
[ ] 실패 이력 IP 의 성공 여부 확인
[ ] sudo COMMAND 집계로 셸 획득 탐지
[ ] 계정 생성/변경 이벤트 확인
[ ] root 셸 이후 행위는 audit 로 넘어가야 함을 설명
secure 는 authpriv 전체를 담는 RHEL 인증 로그다.sudo /bin/bash 이후의 명령은 secure 에 남지 않는다 → audit로 보강한다.useradd)과 비밀번호 설정(passwd)은 지속성 신호다.| 구분 | 글 |
|---|---|
| ◀ 이전 글 | 12. /var/log/messages 분석 |
| ▶ 다음 글 | 14. /var/log/cron 분석 |
| 시리즈 | Linux 로그 경로 정리 전체 보기 |
| 선행 시리즈 | 리눅스 시스템 기초 · 파일 · 권한 · 사용자 관리 · 서비스 · 프로세스 관리 · Linux 시스템 보안 기초 |