| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 리눅스
- web hacking
- OverTheWire
- 사이버 보안
- CTF
- Cyber Security
- 해킹
- 해킹 스터디
- http
- 모의해킹
- 해커
- 보안 관제
- TryHackMe
- linux
- THM
- write-up
- 정보보안
- 보안 스터디
- 정보보호
- 블루팀
- cert
- Web
- XSS
- 워게임
- SoC
- Blue Team
- 리눅스 기초
- Cross-Site Scripting
- IR
- Bandit
- Today
- Total
AnbyMata의 해킹 노트
[Blue Team] EP.7 - Linux 로그 구조 및 파일 체계 본문
[Blue Team] EP.7 - Linux 로그 구조 및 파일 체계
AnbyMata 2026. 4. 20. 22:00[7-1] Linux 로그의 기본 지도 - /var/log
인증 및 권한 (Auth & Permission)
- /var/log/auth.log (Ubuntu/Debian) & /var/log/secure (RHEL 계열)
→ 사용자 로그인 성공/실패, sudo 권한 상승, su 전환 등 인증과 관련된 기록들
시스템 및 서비스 (System & Service)
- /var/log/syslog (Ubuntu/Debian) & /var/log/messages (RHEL 계열)
→ 시스템 전반의 운영 메시지 및 커널 로그 기록들
- /var/log/kern.log (Ubuntu/Debian) & /var/log/dmesg (RHEL 계열)
→ 커널 수준에서 발생하는 하드웨어 및 드라이버 관련 메시지
- journalctl
→ systemd 기반의 바이너리 로그를 조회하는 도구.
→ 전통적인 파일 로그에 남지 않은 서비스 단위의 상세 내역 확인에 사용
감사 및 행위 (Audit & Behavior)
- /var/log/audit/audit.log
→ auditd 서비스가 기록하는 커널 수준의 감사 로그 기록들
→ 파일 접근이나 명령어 실행등의 정밀 분석에 사용
- ~/.bash_history
→ 사용자가 shell에서 입력한 명령어 기록들
→ 조작 가능성이 높아 보조 지표로만 사용
세션 및 접속 기록 (Session Records)
- /var/log/wtmp
→ 과거 및 현재의 로그인/로그아웃 전체 기록
- /var/log/btmp
→ 실패한 로그인 시도들만 기록
→ brute force 공격 탐지에 효과적
- /var/log/lastlog
→ 계정별 마지막 로그인 시각
[7-2] auth.log / secure 주요 기록
- SSH 인증 실패 (Failed password, Failed publickey)
+ invalid user(외부 IP가 존재하니 않는 계정)이나 root(관리자 계정)으로 접속 시도
+ brute force (무차별 대입) 공격의 직접적인 증거
- SSH 인증 성공 (Accepted password, Accepted publickey)
+ 인증이 성공하여 세션이 열린 기록
+ 평소와 다른 시간대나 생소한 IP에서의 인증 성공은 계정 탈취의 가능성일 수 있음
- 권한 상승 및 전환 (sudo, su)
+ 일반 사용자가 관리자 권한을 획득하거나 다른 계정으로 전환한 기록
- PAM 및 세션 관련 메시지
+ 계정 잠금, 정책 위반 기록
+ 세션의 시작과 종료 (session opened/closed)를 기록하여 공격자의 체류 시간 파악
[7-3] syslog / messages 주요 기록
- 서비스 운영 및 프로세스 실행 추적
+ systemd나 각종 데몬의 시작/중지 이력 및 서비스 제어 기록
→ auth.log 에서 성공한 로그인 시점 확인 후, 같은 시각 syslog 에서 어떤 서비스나 의심스러운 프로세스가 설행되었는지 대조하여 로그인 직후의 행위를 추적
- 스케줄러 (cron) 기반 지속성 감시
+ 예약된 스케줄러 (cron)가 실행된 시점과 실행된 명령어 기록
→ 야간, 주말 등의 취약 시간대에 실행된 비정상적인 cron 기록을 통해 공격자가 재부팅 후에도 권한 유지를 위해 심어둔 persistence(지속성 유지) 수단을 찾음
- 시스템 이상 징후 및 장애 분석
+ 서비스 장애, 커널 오류, 네트워크 상태 변경 등 시스템의 전반적인 오류와 경고 메시지 기록
→ 서비스의 갑작스런 재시작 또는 로그 삭제 시도 흔적이 공격자의 활동 시간과 일치하는지 확인해 안과관계 증명
- 애플리케이션 계층 공격 탐지
+ Nginx나 Apache 같은 웹 서버가 syslog 로 보내는 상세 에러 메시지 기록
→ 웹 서비스 공격 (access.log) 징후가 보이면, 즉시 syslog 에서 관련 서비스의 비정상 종료나 상세 에러를 확인해 공격의 실체와 성공 여부 파악
[7-4] journalctl
- journalctl = systemd-journald 서비스가 수집한 바이러이 형식의 로그를 조회하는 도구
- 공격자가 흔적 제거를 위해 /var/log/auth.log 같은 텍스트 파일을 삭제해도 바이너리 저널에 원본이 남아 있을 수 있음
- 서비스별 깔끔한 필터링 가능
- 부팅 세션별로 로그가 구분되어 사고 타임라인 구성이 편리
- 기본 설정에 따라 재부팅 시 로그 소실 가능
- 보통 SIEM 수집기는 파일 로그 기반이라, 저널 로그가 텍스트 파일로 정상 전달되는지 점검 필요
journalctl 주요 명령어
1. 침투 흔적 및 실시간 모니터링
- `journalctl -xe`
→ 시스템의 최신 이벤트와 상세 오류 메시지 함께 확인
- `journalctl -u sshd`
→ SSH 서비스 관련 로그만 필터링하여 조회
2. 특정 시간대 및 조건별 추적
- `journalctl -u cron --since "2026-04-20 00:00:00"`
→ 특정 시점 이후의 예약 작업 실행 기록 확인
- `journalctl _COMM=sudo`
→ sudo 명령을 실행한 기록만 필터링하여 조회
- `journalctl -k`
→ kernel에서 발생하는 이벤트만 필터링하여 조회
3. 시스템 부팅 및 오류 세션 분석
- `journalctl -b`
→ 현제 부팅 세션의 전체 로그 확인
- `journalctl -b -1`
→ 재부팅 직전 시점의 로그 확인
- `journalctl -p err -n 50`
→ 가장 최근 발생한 에러(err) 등급 이상의 로그 50줄 조회
[7-5] wtmp / btmp / utmp
- 리눅스는 텍스트 로그 (auth.log, secure)와 별개로, 로그인 세션 정보를 Binary 형식으로 별도 저장함
wtmp ( last 명령어 )
- 시스템의 모든 로그인 및 로그아웃 전체 기록
btmp ( lastb 명령어 )
- 실패한 로그인 시도만 기록
utmp / who ( w 명령어 )
- 지금 현재 시스템에 로그인해 있는 현재 세션 정보 조회
[7-6] auditd / audit.log
auditd 장점
- 실행 명령 및 인자 전체 기록 (type=EXECVE)
→ 실행된 프로그램뿐만 아니라, 실행 시 입력한 옵션과 인자 값까지 모두 보여줌
- 파일 무결성 추적 (type=PATH)
→ 특정 민감 파일 (.ssh/authorized_keys, /etc/shadow...)에 누가 접근했는지, 생성/수정/삭제 여부를 실시간 추적
- 실제 사용자 식별 (auid)
→ 공격자가 sudo를 통해 root 권한으로 활동해도 최초 접속 시의 사용자 ID (Audit User ID)를 끝까지 추적
- 커널 수준 수집 (type=SYSCALL)
→ Shell 레벨을 넘어서는 시스템 콜 (syscall) 단위의 기록 제공 → 로그 신뢰도 매우 높음
주의사항
- 설정의 중요성: 기본 설정만으로는 수집 범위가 제한적 → 보안 규칙 (audit.rules) 설정 필요
- 데이터 폭증: 너무 세밀히 설정 시 로그 양이 너무 많음 → 시스템 성능에 악영향
- 복잡한 형식: 로그가 사람이 읽기엔 복잡 → 전문적인 파싱 도구나 SIEM 솔루션을 통한 시각화 필요
[7-7] logrotate와 압축 로그
- 리눅스는 logrotate 도구를 통해 로그 파일을 주기적으로 관리함
+ auth.log = 현재 기록되고 있는 활성 로그 파일
+ auth.log.1 = 어제 기록되었던 로그가 백업된 상태 (압축 전)
+ auth.log.2.gz = 2일 전 기록된 백업 로그가 압축된 상태 (용량 절감)
+ auth.log.3.gz = 3일 전 기록된 백업 로그가 압축된 상태 (용량 절감)
+ RHEL 계열은 `secure-20260420` 같이 날짜 기반 이름 사용
압축 로그 전용 조회 명령어 (Z-Commands)
- zgrep (= grep) : 압축된 로그 내 특정 키워드 (IP, 계정 등) 검색
- zless (= less) : 압축 파일 내용을 페이지 단위로 확인
- zcat (= cat) : 압축 파일 전체 내용 조회
- zdiff (= diff) : 압축된 두 로그 파일 간의 차이점 비교
[7-8] 리눅스 로그 조회 워크플로우
1. 현재 보기 ( tail -f )
- 실시간으로 발생 중인 최신 로그 동향 파악
→ brute force 공격이나 시스템에러를 실시간 모니터링
2. 문맥 보기 ( less )
- 로그 파일 전체를 보며 흐름 파악
→ 특정 이벤트 발생 전후의 사용자 행위를 파악해 공격의 맥락 파악
3. 필터링 ( grep )
- 특정 키워드(IP, 사용자명, 파일명 등)가 포함된 라인만 조회
→ 알려진 IOC(침해 지표)가 시스템 내에 있는지 확인
4. 패턴 요약 ( awk, sort, uniq )
- 대량의 로그 데이터를 가공해 빈도 집계 및 이상 패턴 발견
→ 공격의 규모와 대상을 수치화
5. 과거 확장 ( zgrep )
- 압축된 과거의 로그 파일들 검색
→ 예전에 발생했을지 모를 초기 침투 흔적 추적
[Blue Team] EP.7 - Linux 로그 구조 및 파일 체계. END.
'Blue Team (SOC) > Linux Log Analysis' 카테고리의 다른 글
| [Blue Team] EP.10 - 프로세스 / 명령 / 파일 / 네트워크 분석 (0) | 2026.05.01 |
|---|---|
| [Blue Team] EP.9 - 권한 상승 분석 (0) | 2026.04.24 |
| [Blue Team] EP.8 - 로그인 및 인증 로그 분석 (0) | 2026.04.22 |
| [Blue Team] EP.6 - Linux 로그 기초 (0) | 2026.04.19 |