083. 계정 · 인증 보안 — 비활성·휴면 계정 식별과 정리

changseop lee·5일 전

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

선행 학습

1. 개념

휴면(dormant) 계정은 오랫동안 로그인하지 않은 계정입니다. 퇴직자·종료된 프로젝트·테스트 계정이 남은 경우가 많고, 아무도 보지 않아 공격자가 선호하는 지속성 대상입니다.

휴면 판단
 lastlog : 마지막 로그인 시각 (기준: 예 90일 이상 미사용)
 chage -l: 비밀번호 마지막 변경(오래 전 = 관리 안 됨)
 상태     : 잠겨 있나(!), 셸이 있나

휴면 계정의 두 위험
 ① 방치    : 약한·오래된 비밀번호 → 탈취 대상
 ② 재사용  : 휴면이던 계정이 갑자기 로그인 → 탈취·내부자 신호 (053편 재활성화)

2. 왜 중요한가

  • 휴면 계정은 "있는 줄도 몰라" 비밀번호 정책·모니터링에서 빠지기 쉽습니다. 공격자가 재활성화해 쓰면 신규 계정보다 눈에 덜 띕니다(053편).
  • 계정 수가 적을수록 관제 대상이 명확해집니다. 휴면 계정 정리는 공격 표면 축소의 기본입니다.
  • 휴면 계정의 갑작스러운 로그인은 그 자체로 강한 이상 신호입니다(이상 점수, 027편).

3. 핵심 명령어 / 설정

확인명령
마지막 로그인lastlog -b 90 (90일 이상 미로그인)
로그인 이력last -F 계정
비밀번호 나이sudo chage -l 계정
활성 여부sudo passwd -S 계정(잠금), 셸 확인
정리usermod -L -e 1 계정(잠금+만료)

4. 실습 (실습 예시)

# 1) 90일 이상 미로그인 계정 (사람 계정)
lastlog -b 90 | awk 'NR>1 && $0 !~ /Never logged in/ {print}'
# "Never logged in"이면서 셸을 가진 계정도 확인
lastlog | awk '/Never logged in/{print $1}' | while read u; do
  s=$(getent passwd "$u"|cut -d: -f7); echo "$s" | grep -qE 'sh$' && echo "$u never-logged + shell=$s"
done

# 2) 휴면이던 계정의 최근 로그인 (재사용 탐지)
#    기준선(026편)에 없던 계정이 새로 로그인했는지
sudo grep 'Accepted' /var/log/secure | grep -oE 'for [^ ]+' | sort -u

# 3) 정리 예시 (승인 후): 잠금 + 만료
sudo usermod -L -e 1 olduser

5. 정상 상태

$ lastlog -b 90 | awk 'NR>1 && $0 !~ /Never/{print}'
backup   pts/1  192.168.56.5  2026-06-01 10:00   (120일 전)

휴면 계정이 식별되어 잠금·만료 처리 대상 목록으로 관리되고, 재사용이 없는 상태가 정상입니다.

6. 이상 상태

$ last -F backup | head -3
backup pts/1 192.168.56.77 Fri Oct 2 02:25:00 2026   still logged in
backup pts/1 192.168.56.5  Sat Jun 1 10:00:00 2026 - ...
$ sudo passwd -S backup
backup PS 2026-10-02 ...    (최근 비밀번호 설정)
  • 120일간 미사용이던 backup이 새벽·비관리망에서 재로그인 → 휴면 계정 재사용
  • 직전에 잠금 해제·비밀번호 재설정(053편)이 있었음 → 재활성화 후 사용
  • 신규 계정 생성보다 조용한 지속성 → 휴면 계정을 상시 감시해야 하는 이유

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

휴면 재사용의 흐름입니다(가상의 예시 로그).

(과거) backup 마지막 로그인: 2026-06-01 (이후 120일 침묵)
02:25:13 chpasswd: password changed for backup  (053편 재활성화)
02:25:40 usermod: unlock user 'backup'
02:26:05 sshd: Accepted password for backup from 192.168.56.77
관찰해석
120일 침묵 후 활동휴면 → 활성 전환
재활성화(해제+비밀번호) 직후 로그인준비 후 사용
비관리망 출발지탈취·내부자

lastlog의 "갑작스러운 변화"가 핵심 신호입니다.

8. SOC 관제 포인트

  • 휴면 계정 목록을 정기 산출(lastlog 기준)해 잠금·만료로 정리합니다.
  • 휴면이던 계정의 로그인은 기준선(026편)에 없던 계정 로그인으로 탐지해 즉시 확인합니다.
  • "Never logged in + 셸 보유" 계정은 미사용인데 로그인 가능한 위험 상태로 관리합니다.

9. 탐지 규칙

<group name="local,syssec_b,account,">
  <!-- 과거 로그인 이력이 없던(또는 드물던) 계정의 로그인 성공 -->
  <rule id="101300" level="10">
    <if_sid>5715</if_sid>
    <list field="dstuser" lookup="not_match_key">etc/lists/active-users</list>
    <description>휴면/비활성 목록 계정의 로그인 성공</description>
  </rule>
</group>

active-users CDB 리스트(최근 활성 계정)를 두고 "목록에 없는 계정 로그인"을 탐지하는 방식입니다. 리스트는 lastlog 기반으로 주기 갱신합니다. 휴면 식별 자체는 정기 점검(스크립트)으로, 재사용 탐지는 룰로 역할을 나눕니다.

10. 대응 방법

  1. 초기 확인 — 휴면 계정 목록과 각 계정의 마지막 로그인·상태를 확인합니다.
  2. 범위 확인 — 휴면 재사용이면 재활성화 흔적(053편)·출발지·이후 행위를 확인합니다.
  3. 증거 확보 — lastlog·last·chage 출력, 재활성화·로그인 로그를 보존합니다.
  4. 차단/조치 — 재사용이 비인가면 계정 잠금·조사, 미사용 계정은 잠금·만료로 정리합니다.
  5. 재발 방지 — 휴면 계정 정기 식별·정리와 재사용 탐지 룰을 운영합니다.

11. 핵심 정리

구분핵심 내용
휴면 식별lastlog 기준(예: 90일+ 미사용), Never logged in+셸
두 위험방치(약한 비밀번호) / 재사용(조용한 지속성)
정리usermod -L -e 1 (잠금+만료)
재사용 탐지활성 계정 목록 밖 로그인, 이상 점수(027편)
면접 포인트"휴면 계정 재사용은 신규 생성보다 조용하다"

12. 다음 편 예고

다음 편 084. 계정 · 인증 보안 — 서비스 계정 관리와 로그인 차단 에서는 사람이 쓰지 않는 서비스 계정 관리와 로그인 차단을 다룹니다.


이전 편: 082. 계정 · 인증 보안 — 계정 삭제·흔적 정리 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글