069. 계정 · 인증 보안 — SSH 인증 성공 로그 분석

changseop lee·5일 전

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

선행 학습

1. 개념

인증 성공 로그는 실패 로그보다 더 중요합니다. 공격이 성공했는지를 알려주기 때문입니다. 성공 한 줄에는 판단에 필요한 정보가 모두 담겨 있습니다.

Accepted publickey for devops from 192.168.56.5 port 51010 ssh2: ED25519 SHA256:Qm9v...
   │          │        │       │              │                        │        │
  방식      인증유형   계정    출발지 IP      포트                     키타입   지문
  password / publickey / keyboard-interactive(2FA 등)

성공 로그를 볼 때 확인할 축: 인증 방식 · 출발지 · 시간 · 직전 실패 · 이어지는 세션.

2. 왜 중요한가

  • 계정 탈취의 결정적 증거는 "비인가 성공 로그인"입니다. 하지만 성공 로그는 정상과 형식이 같아, 맥락으로만 구분됩니다.
  • 정책상 키 전용 서버에서 Accepted password가 나오면, 그 자체로 정책 위반이자 우회 신호입니다(A영역 009편).
  • 성공 직후 어떤 세션·행위가 이어졌는지(ses)를 봐야 탈취 여부를 확정할 수 있습니다.

3. 핵심 명령어 / 설정

확인명령
성공 로그sudo grep 'Accepted' /var/log/secure
방식별 집계... | grep -oE 'Accepted (password|publickey|keyboard-interactive)' | sort | uniq -c
계정·출발지별... | sed -E 's/.for ([^ ]+) from ([0-9.]+)./\1 \2/' | sort | uniq -c
시간대 분포... | awk '{print $3}' | cut -d: -f1
세션 연결ausearch -m USER_LOGIN -i의 ses → 이후 행위

4. 실습 (실습 예시)

LOG=/var/log/secure        # Ubuntu: /var/log/auth.log
# 1) 성공 로그인의 방식·계정·출발지
sudo grep 'Accepted' $LOG | sed -E 's/.*Accepted ([a-z-]+) for ([^ ]+) from ([0-9.]+).*/\1 \2 \3/' | sort | uniq -c | sort -rn

# 2) 키 전용 정책 서버에서 password 성공 찾기 (정책 위반)
sudo grep 'Accepted password' $LOG | tail

# 3) 성공 직전 실패가 있었는지 (같은 계정·출발지)
sudo grep -E 'Failed password for devops|Accepted .* for devops' $LOG | tail -10

5. 정상 상태

     40 publickey devops 192.168.56.5
     22 publickey admin1 192.168.56.5
$ sudo grep 'Accepted password' $LOG
$

모든 성공이 키 인증(publickey), 관리망 출발지, password 성공이 없는 상태가 정상입니다(키 전용 정책 서버 기준).

6. 이상 상태

      1 password devops 192.168.56.77
$ sudo grep -E 'Failed password for devops|Accepted .* for devops' $LOG | tail
02:10:41 Failed password for devops from 192.168.56.77 port 50110 ssh2
02:10:44 Accepted password for devops from 192.168.56.77 port 50110 ssh2
신호의미
password 인증 성공키 전용 정책 서버에서 정책 위반
비관리망 출발지(.77)평소 출발지와 다름
직전 Failed 1회추측 끝에 성공했을 가능성
새벽 시각업무 외 시간

네 신호가 겹치면 단건 성공이라도 계정 탈취로 다뤄야 합니다(A영역 049편 시작점).

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

성공 로그를 세션·이후 행위와 연결한 예시입니다(가상의 예시 로그).

Oct  2 02:10:44 rocky9-web01 sshd[11201]: Accepted password for devops from 192.168.56.77 port 50110 ssh2
type=USER_LOGIN ... auid=devops ses=12 addr=192.168.56.77 res=success
Oct  2 02:11:30 rocky9-web01 sudo[11701]:  devops : TTY=pts/1 ; USER=root ; COMMAND=/bin/bash
단계연결
성공 로그방식·출발지·시각
USER_LOGIN ses=12이 성공에 세션 번호 부여
이후 sudo(ses 12)같은 세션의 행위 → 탈취 후 권한 상승

성공 로그 하나를 세션 번호로 이후 모든 행위와 묶는 것이 탈취 확정의 핵심입니다.

8. SOC 관제 포인트

  • 성공 로그는 방식·출발지·시간·직전 실패·이후 세션 다섯 축으로 본다.
  • 키 전용 서버의 password 성공, 비관리망 관리계정 성공은 단건이라도 확인한다.
  • 성공을 ses로 이후 행위와 연결해 탈취 여부를 확정한다.

9. 탐지 규칙

<group name="local,syssec_b,authentication,">
  <rule id="101170" level="10">
    <if_sid>5715</if_sid>
    <match>Accepted password</match>
    <description>키 인증 전용 환경에서 password 인증 성공</description>
  </rule>
  <rule id="101171" level="11">
    <if_sid>5715</if_sid>
    <srcip>!192.168.56.0/28</srcip>
    <time>18:00-08:00</time>
    <description>업무 외 시간 비관리망 SSH 로그인 성공</description>
  </rule>
</group>

<time> 조건은 Wazuh에서 지원하는 업무 시간 외 탐지 방식입니다. 051편의 101000(비관리망 관리계정)과 조합하면 정확도가 올라갑니다.

10. 대응 방법

  1. 초기 확인 — 성공 로그인의 방식·출발지·시간·직전 실패를 확인합니다.
  2. 범위 확인 — 세션 번호로 이후 행위를 재구성하고 같은 계정의 다른 서버 성공을 확인합니다.
  3. 증거 확보 — 성공·실패 로그, USER_LOGIN, 세션 행위 로그를 보존합니다.
  4. 차단/조치 — 탈취 확정 시 세션 종료·계정 잠금·출발지 차단·비밀번호/키 교체를 진행합니다.
  5. 재발 방지 — 키 전용·업무시간·관리망 기준의 성공 탐지 룰을 운영합니다.

11. 핵심 정리

축확인 내용
방식publickey / password / 2FA — 정책과 일치하는가
출발지관리망 vs 비관리망, 평소 출발지와 비교
시간업무 시간 vs 새벽·주말
직전 실패성공 직전 실패 = 추측 성공 가능성(072편)
이후 세션ses로 이후 행위 연결 → 탈취 확정
면접 포인트"성공 로그는 형식이 정상 — 다섯 축의 맥락으로 판단"

12. 다음 편 예고

다음 편 070. 계정 · 인증 보안 — SSH 인증 실패 로그 분석 에서는 공격 시도의 대부분을 차지하는 SSH 인증 실패 로그 분석을 다룹니다.


이전 편: 068. 계정 · 인증 보안 — SSH 키 지문으로 접속 키 추적하기
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글