093. 계정 · 인증 보안 — 인증 이벤트 타임라인 작성

changseop lee·5일 전

시스템 보안 · 취약점 › B. 계정 · 인증 보안 강화 · 43/50편 (전체 093/450)
학습 단계: 4단계 · 자동 점검·로그 분석
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

개별 이벤트를 아무리 잘 봐도, 시간순으로 엮지 않으면 공격의 전체 흐름이 보이지 않습니다. 인증 타임라인은 흩어진 인증 이벤트를 하나의 이야기로 재구성합니다.

타임라인 재구성 축: 시각 | 출처 | 계정 | 출발지 | 이벤트 | 단계
흐름:  열거(071) → 돌파(074) → 로그인(019) → 상승(037) → 계정조작(029·030) → 지속성(017·031)

입력 로그원: secure/auth.log(041 정규화) + audit(042) + faillock(015) + wtmp(025)

인증 타임라인은 A영역 049편(설정 변경 중심 타임라인)의 계정·인증 버전이며, 둘을 합치면 사건 전체가 완성됩니다.

2. 왜 중요한가

  • SOC 분석의 산출물은 "Alert 목록"이 아니라 "무슨 일이 있었는지의 서사(타임라인)"입니다. 타임라인이 있어야 영향 범위·대응 범위를 정할 수 있습니다.
  • 인증 이벤트는 여러 로그원에 흩어져 있어, 정규화(041편)와 시간 정렬이 전제됩니다.
  • "언제부터 공격자가 들어왔는가(최초 침입 시점)"를 확정하는 것이 타임라인의 핵심 목표입니다.

3. 핵심 명령어 / 설정

단계이벤트로그원
정찰invalid user 다수secure(071편)
돌파Failed 다수 + Acceptedsecure(074편)
로그인Accepted, USER_LOGIN(ses)secure+audit(019·042편)
상승sudo/su rootsecure+audit(037·039편)
조작useradd/usermod/그룹secure+audit(029·030·031편)
지속성authorized_keys, cron, sudoers.dFIM+audit(017편, A영역)

4. 실습 (실습 예시)

# 인증 타임라인 수집 (한 출발지/계정 기준)
IP=192.168.56.77; U=devops; LOG=/var/log/secure
{
  sudo grep "$IP" $LOG | grep -E 'Invalid user|Failed password|Accepted'
  sudo grep " $U : " $LOG | grep -E 'COMMAND='
  sudo grep -E "add '$U'|new user|usermod" $LOG
} | sort -k1,3 | sed -E 's/^([A-Za-z]+ +[0-9]+ [0-9:]+) .*sshd.*: (.*)/\1 | SSH  | \2/;
                         s/^([A-Za-z]+ +[0-9]+ [0-9:]+) .*sudo.*: (.*)/\1 | SUDO | \2/' | tail -40

# audit으로 세션 기준 보강
sudo ausearch --session 12 -i 2>/dev/null | grep -E 'USER_LOGIN|USER_CMD|ADD_USER' | tail

5. 정상 상태

정상 운영의 인증 타임라인은 단조롭습니다.

09:12:01 | SSH  | Accepted publickey for devops from 192.168.56.5
09:13:40 | SUDO | devops : COMMAND=/usr/bin/systemctl status httpd
14:02:10 | SSH  | Accepted publickey for admin1 from 192.168.56.5

관리망·키 인증·업무 시간·서비스 명령만 시간순으로 이어지는 상태가 정상입니다.

6. 이상 상태

02:09:50 | SSH  | Invalid user oracle from 192.168.56.77         (정찰)
02:10:05 | SSH  | Failed password for devops from 192.168.56.77  (표적 확정)
02:10:44 | SSH  | Accepted password for devops from 192.168.56.77 (돌파·로그인)
02:11:30 | SUDO | devops : USER=root ; COMMAND=/bin/bash          (상승)
02:14:09 | SSH? | new user: name=sysbak, UID=0                    (계정 조작)
02:16:10 | --   | add 'apache' to group 'wheel'                   (권한 확대)
02:20:05 | SSH  | Accepted publickey for apache from 192.168.56.77 (심은 키 지속성)
  • 열거 → 돌파 → 상승 → 계정 조작 → 지속성이 한 출발지·한 세션으로 연결
  • 최초 침입 시점 = 02:10:44 (돌파 성공) → 이 이후 모든 것이 영향 범위
  • A영역 049편(설정 변경)과 합치면 전체 사건이 완성됨

7. 로그 분석 (분석 방법)

인증 타임라인과 설정 타임라인을 합친 통합 뷰입니다(가상의 예시).

02:10:44  [인증] devops 돌파 로그인 (ses=12)
02:11:30  [인증] devops sudo -i
02:13:00  [설정] sshd_config.d/00-tmp.conf (A영역 049)
02:14:09  [인증] useradd sysbak UID=0
02:16:00  [설정] sudoers.d/99-sysupdate (A영역 049)
02:16:10  [인증] apache → wheel
03:30:01  [설정] setenforce 0 (A영역 하드닝 해제)
관점기여
인증(B영역)누가 어떻게 들어와 권한을 얻었나
설정(A영역)무엇을 바꿔 방어를 무력화했나
합치면사건의 완전한 서사

8. SOC 관제 포인트

  • 인증 타임라인은 시각·계정·출발지·단계로 정렬하고, ses로 세션을 묶습니다.
  • 최초 침입 시점(돌파·이상 로그인)을 확정해 영향 범위의 기준으로 삼습니다.
  • A영역 설정 타임라인과 합쳐 통합 사건 타임라인을 만듭니다.

9. 탐지 규칙

타임라인은 룰보다 SIEM의 시간순 뷰·저장 검색으로 구현합니다.

# Kibana: 한 출발지의 모든 인증·권한 이벤트를 시간순
data.srcip : "192.168.56.77" and rule.groups : ("authentication" or "privilege" or "account")
 → 시간 오름차순 정렬, 컬럼: timestamp, rule.description, data.srcuser, data.srcip

# 세션 기준
data.audit.session : "12"  → 시간순

저장 검색(Saved Search)으로 "출발지/계정/세션 기준 타임라인"을 미리 만들어 두면, 사고 시 즉시 서사를 재구성할 수 있습니다.

10. 대응 방법

  1. 초기 확인 — 출발지·계정·세션 기준으로 인증 이벤트를 시간순 정렬합니다.
  2. 범위 확인 — 최초 침입 시점을 확정하고 A영역 설정 타임라인과 합칩니다.
  3. 증거 확보 — 타임라인(쿼리·시간 범위 포함)과 근거 로그를 보존합니다.
  4. 차단/조치 — 타임라인 기준으로 대응 범위(계정·세션·서버)를 정해 조치합니다.
  5. 재발 방지 — 타임라인용 저장 검색을 운영 절차에 포함합니다.

11. 핵심 정리

구분핵심 내용
정렬 축시각 · 계정 · 출발지 · 단계
흐름열거→돌파→로그인→상승→조작→지속성
목표최초 침입 시점 확정, 영향 범위 산정
통합A영역 설정 타임라인과 결합
면접 포인트"산출물은 Alert 목록이 아니라 사건의 타임라인"

12. 다음 편 예고

다음 편 094. 계정 · 인증 보안 — Wazuh 인증 기본 룰 해석 에서는 탐지를 자동화하는 Wazuh 인증 기본 룰 해석을 다룹니다.


이전 편: 092. 계정 · 인증 보안 — auditd 인증 이벤트(USER_AUTH·USER_LOGIN) 분석
📚 시리즈 전체 보기: 시스템 보안 · 취약점

profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글