시스템 보안 · 취약점 › B. 계정 · 인증 보안 강화 · 29/50편 (전체 079/450)
학습 단계: 2단계 · 설정 및 점검
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
계정 생성은 정상 운영(입사·서비스 추가)에서도 일어나므로, 탐지 자체보다 생성된 계정이 정상 절차를 따랐는가를 검증하는 것이 핵심입니다.
신규 계정 검증 체크리스트
① 승인 : 인사·변경관리 기록이 있나
② 생성 주체 : 누가(auid) 만들었나, 관리 계정인가
③ 시간 : 업무 시간인가
④ 속성 : UID(0/중복?), 셸(서비스인데 bash?), 홈(비정상 경로?), 그룹(특권 그룹?)
⑤ 사용 : 생성 직후 바로 로그인했나(백도어는 즉시 사용되는 경향)
A영역 003편이 "이미 있는 비정상 계정"을 점검했다면, 여기서는 생성 이벤트를 실시간 탐지하고 검증합니다.
| 확인 | 명령 |
|---|---|
| 생성 로그 | sudo grep 'new user' /var/log/secure (Ubuntu: useradd/adduser) |
| 생성 그룹 | sudo grep 'new group' /var/log/secure |
| 최근 생성 계정 | shadow 마지막 변경일이 최근인 계정 |
| 속성 검증 | getent passwd 계정 + 052편 필드 점검 |
| 생성 주체 | audit identity 키의 auid |
LOG=/var/log/secure # Ubuntu: /var/log/auth.log
# 1) 최근 계정·그룹 생성
sudo grep -E 'new user|new group' $LOG | tail
# 2) audit로 생성 주체(auid) 확인
sudo ausearch -k identity -i --start today 2>/dev/null | grep -E 'useradd|adduser' | tail
# 3) 생성 계정 속성 검증 (UID·셸·그룹)
NEWU=sysbak
getent passwd $NEWU
id $NEWU
# 생성 직후 로그인했는지
sudo grep "Accepted .* for $NEWU " $LOG
Oct 2 10:05:02 rocky9-web01 useradd[13001]: new user: name=intern02, UID=1003, GID=1003, home=/home/intern02, shell=/bin/bash, from=/dev/pts/0
$ sudo ausearch -k identity -i | grep useradd
... auid=admin1 ... comm=useradd ... a1=intern02
$ getent passwd intern02
intern02:x:1003:1003:Intern:/home/intern02:/bin/bash
관리자(admin1)가 업무 시간에, 일반 UID·표준 홈·로그인 셸로 생성, 인사 승인(HR-2026-77)과 일치 → 정상입니다.
Oct 2 02:14:09 rocky9-web01 useradd[11301]: new user: name=sysbak, UID=0, GID=0, home=/dev/shm/.c, shell=/bin/bash, from=/dev/pts/1
$ sudo ausearch -k identity -i | grep useradd
... auid=devops ... comm=useradd ... a1=-o a2=-u a3=0 ...
$ sudo grep 'Accepted .* for sysbak ' $LOG
Oct 2 02:20:02 ... Accepted password for sysbak from 192.168.56.77
-o -u 0으로 UID 중복 허용 → root 권한 공유생성 → 사용으로 이어지는 흐름입니다(가상의 예시 로그).
02:14:09 useradd[11301]: new user: name=sysbak, UID=0, ... (auid=devops)
02:14:10 useradd[11301]: new group: name=sysbak, GID=0
type=ADD_USER msg=audit(...): op=add-user id=0 exe="/usr/sbin/useradd" acct="sysbak" res=success
02:20:02 sshd: Accepted password for sysbak from 192.168.56.77
| 이벤트 | 의미 |
|---|---|
new user ... UID=0 | 백도어 계정 생성 |
ADD_USER(audit) | 감사 이벤트로도 기록 |
| 생성 주체 auid=devops | 탈취 계정이 또 다른 계정 생성(030편 연계) |
| 6분 후 Accepted | 생성 계정 즉시 사용 |
<group name="local,syssec_b,account,persistence,">
<rule id="101260" level="12">
<match>new user: name=</match>
<regex type="pcre2">UID=0,|home=/(tmp|dev/shm|var/tmp)/|shell=/(usr/)?bin/(ba|z)?sh.*from=/dev/pts</regex>
<description>비정상 속성 계정 생성(UID 0 / 임시 홈 등)</description>
</rule>
</group>
Wazuh 기본 룰(5902 new user)이 모든 생성을 잡으므로, 위는 속성 기반 상향입니다. 정상 생성이 잦은 환경은 승인 시스템 연동(변경관리 번호 매칭)으로 오탐을 줄입니다.
| 검증 축 | 정상 vs 백도어 |
|---|---|
| 승인 | 인사·변경관리 기록 vs 없음 |
| 주체·시간 | 관리자·업무시간 vs 탈취계정·새벽 |
| 속성 | 일반 UID·표준 홈 vs UID 0·임시 홈·서비스 셸 |
| 사용 | 나중 vs 생성 직후 즉시 |
| 면접 포인트 | "생성 탐지보다 속성·승인 검증이 핵심 — 정상 생성과 구분" |
다음 편 080. 계정 · 인증 보안 — 계정 변경(usermod) 이벤트 분석 에서는 기존 계정을 바꾸는 계정 변경(usermod) 이벤트 분석을 다룹니다.
이전 편: 078. 계정 · 인증 보안 — 동시 세션·다중 출발지 로그인 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점