092. 계정 · 인증 보안 — auditd 인증 이벤트(USER_AUTH·USER_LOGIN) 분석

changseop lee·6일 전

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

선행 학습

1. 개념

auditd는 인증을 단계별 이벤트로 기록합니다. secure/auth.log가 "결과 한 줄"이라면, audit은 PAM 각 단계의 성공·실패와 세션 생명주기를 보여줍니다(051편 흐름의 상세 버전).

로그인 1회의 audit 이벤트 순서
 USER_AUTH   : 인증(비밀번호·키) 성공/실패
 USER_ACCT   : 계정 유효성(만료·잠금)
 CRED_ACQ    : 자격증명 획득
 USER_LOGIN  : 로그인 완료 (auid·ses 부여, addr 기록)
 USER_START  : 세션 시작
 ... (세션 중 행위)
 USER_END    : 세션 종료
 CRED_DISP   : 자격증명 반납

실패 로그인은 USER_AUTH에서 res=failed로 끝나고 USER_LOGIN까지 가지 않습니다. 어느 단계에서 멈췄는지로 실패 원인을 알 수 있습니다.

2. 왜 중요한가

  • 텍스트 로그가 지워져도 audit(원격 전송 시)으로 인증을 복원할 수 있습니다(이중화).
  • audit은 auid·ses를 제공해 로그인과 이후 행위를 연결하는 유일한 로그원입니다(038편).
  • PAM 단계별 결과로 "비밀번호 틀림(USER_AUTH fail)"과 "계정 잠김(USER_ACCT fail)"을 구분할 수 있습니다.

3. 핵심 명령어 / 설정

명령용도
ausearch -m USER_LOGIN -i로그인 완료 이벤트(addr·auid·ses)
ausearch -m USER_AUTH -i인증 성공/실패
ausearch -m USER_ACCT -i계정 유효성 결과
ausearch --session N -i세션 전체 생명주기
aureport --auth / --login인증·로그인 요약
ausearch -m USER_LOGIN -sv no -i실패한 로그인만

4. 실습 (실습 예시)

# 1) 오늘 로그인 성공/실패 요약
sudo aureport --login -i --start today | head -20

# 2) 실패한 로그인만 (출발지·계정)
sudo ausearch -m USER_LOGIN -sv no -i --start today 2>/dev/null | grep -oE 'acct=[^ ]+|addr=[^ ]+' | paste - - | sort | uniq -c | sort -rn | head

# 3) 특정 로그인의 PAM 단계별 결과
sudo ausearch -m USER_AUTH,USER_ACCT,USER_LOGIN -ua devops -i --start recent 2>/dev/null | \
  grep -oE 'type=[A-Z_]+|res=[a-z]+|acct=[^ ]+' | paste - - - | tail

5. 정상 상태

$ sudo aureport --login -i --start today
Login Report
============================================
# date time auid host term exe success event
1. ... devops 192.168.56.5 /dev/pts/1 /usr/sbin/sshd yes ...
$ (실패 로그인) (없음)

성공 로그인만 있고(모두 yes), auid·출발지가 기준선과 일치하는 상태가 정상입니다.

6. 이상 상태

$ sudo aureport --login -i --start today | grep ' no '
... devops 192.168.56.77 ... /usr/sbin/sshd no  (다수)
... devops 192.168.56.77 ... /usr/sbin/sshd yes (1건)
$ (PAM 단계)
USER_AUTH res=failed acct=devops   (반복)
USER_AUTH res=success acct=devops
USER_ACCT res=success acct=devops
USER_LOGIN res=success acct=devops addr=192.168.56.77 ses=12
  • 실패(no) 다수 후 성공(yes) 1건 → 돌파(074편)를 audit으로도 확인
  • USER_AUTH 반복 실패 → 비밀번호 추측 (계정 잠김이면 USER_ACCT에서 실패했을 것)
  • 성공 로그인에 ses=12 부여 → 038편 세션 추적으로 연결

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

PAM 단계별 결과로 실패 원인을 구분한 예시입니다(가상의 예시 로그).

[비밀번호 틀림]  USER_AUTH res=failed ... → 여기서 멈춤 (USER_ACCT 없음)
[계정 잠김]      USER_AUTH res=success ... / USER_ACCT res=failed ... → 인증은 됐으나 계정 거부
[접근 제어]      USER_AUTH ... / USER_ACCT ... / USER_LOGIN res=failed ... → 로그인 단계 거부
[정상]          USER_AUTH ok / USER_ACCT ok / USER_LOGIN ok ses=N
멈춘 단계원인
USER_AUTH fail비밀번호·키 틀림
USER_ACCT fail만료·잠금(faillock)
USER_LOGIN fail접근 제어(AllowGroups 등)

텍스트 로그로는 "Failed"만 보이지만, audit은 어느 관문에서 막혔는지까지 알려줍니다.

8. SOC 관제 포인트

  • 인증 분석은 secure/auth.log(결과) + audit(단계·세션)를 함께 봅니다.
  • 실패는 멈춘 PAM 단계로 원인을 분류합니다(비밀번호 vs 잠금 vs 접근 제어).
  • 성공 로그인의 ses로 이후 행위를 연결합니다(038편).

9. 탐지 규칙

<group name="local,syssec_b,authentication,">
  <rule id="101380" level="8">
    <if_group>audit</if_group>
    <match>type=USER_LOGIN</match>
    <regex>res=failed</regex>
    <description>audit USER_LOGIN 실패(로그인 단계 거부)</description>
  </rule>
</group>

Wazuh는 audit USER_* 이벤트를 디코딩하므로, data.audit.acct·data.audit.res·data.audit.session 필드로 룰·검색을 작성합니다. 텍스트 로그 룰(5xxx)과 중복 Alert가 나지 않도록 역할을 나눕니다(audit은 세션 추적용).

10. 대응 방법

  1. 초기 확인 — 로그인의 PAM 단계별 결과(USER_AUTH/ACCT/LOGIN)로 성공·실패 원인을 확인합니다.
  2. 범위 확인 — 성공 로그인의 ses로 이후 행위를 추적하고, 실패 멈춤 단계로 공격 유형을 분류합니다.
  3. 증거 확보 — audit 인증 이벤트(원격 사본 포함)를 보존합니다.
  4. 차단/조치 — 돌파·이상 로그인이면 세션·계정 대응을 진행합니다.
  5. 재발 방지 — audit 인증 이벤트를 세션 추적·교차 확인에 활용하도록 운영합니다.

11. 핵심 정리

이벤트의미
USER_AUTH인증(비밀번호·키) 결과
USER_ACCT계정 유효성(만료·잠금)
USER_LOGIN로그인 완료(auid·ses·addr)
USER_START/END세션 시작/종료
면접 포인트"audit은 어느 PAM 단계에서 막혔는지 + 세션 추적(auid/ses)을 준다"

12. 다음 편 예고

다음 편 093. 계정 · 인증 보안 — 인증 이벤트 타임라인 작성 에서는 여러 인증 이벤트를 시간순으로 엮는 인증 이벤트 타임라인 작성을 다룹니다.


이전 편: 091. 계정 · 인증 보안 — 인증 로그 정규화 — secure·auth.log·journal
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글