시스템 보안 · 취약점 › B. 계정 · 인증 보안 강화 · 30/50편 (전체 080/450)
학습 단계: 2단계 · 설정 및 점검
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
계정을 새로 만들지 않고 기존 계정을 바꾸는 것도 흔한 공격 방식입니다. 기존 계정은 이미 신뢰받고 있어 눈에 덜 띕니다. usermod의 어떤 옵션이 쓰였는지로 의도를 읽습니다.
usermod 변경 유형과 위험
-s /bin/bash 셸 부여 : 서비스 계정에 로그인 능력 (A영역 003편)
-d /new/home 홈 변경 : 홈 탈취·비정상 경로
-u 0 / -o UID 변경 : 권한 상승(UID 0)
-aG wheel 그룹 추가 : 특권 획득 (054편)
-L / -U 잠금/해제 : 휴면 계정 재활성화 (053편)
-e / -f 만료 변경 : 지속성 (060편)
-l newname 이름 변경 : 추적 회피
| 확인 | 명령 |
|---|---|
| 변경 로그 | `sudo grep -E 'usermod |
| audit 변경 | sudo ausearch -k identity -i | grep usermod |
| 셸 변경 | change user ... shell from ... to ... |
| 그룹 추가 | add '계정' to group '...'(054편) |
| 속성 현황 | getent passwd 계정, chage -l 계정 |
LOG=/var/log/secure # Ubuntu: /var/log/auth.log
# 1) usermod 관련 이벤트 유형별
sudo grep -E 'usermod|change user|add .* to group|lock user|unlock user' $LOG | tail -20
# 2) 셸을 nologin→로그인 셸로 바꾼 서비스 계정
sudo grep 'change user' $LOG | grep -E "shell from '\S*nologin' to '\S*sh'"
# 3) audit로 usermod 옵션·주체 확인
sudo ausearch -k identity -i --start today 2>/dev/null | grep -A1 'comm="usermod"' | tail
Oct 2 10:20:01 rocky9-web01 usermod[13101]: change user 'intern02' shell from '/bin/bash' to '/sbin/nologin'
관리자가 업무 시간에, 퇴사자 계정을 잠그거나 셸을 제거하는 방향(보안 강화)의 변경이면 정상입니다.
Oct 2 02:15:40 rocky9-web01 usermod[11431]: change user 'apache' shell from '/sbin/nologin' to '/bin/bash'
Oct 2 02:16:10 rocky9-web01 usermod[11440]: add 'apache' to group 'wheel'
Oct 2 02:16:30 rocky9-web01 usermod[11445]: change user 'backup' shell from '/sbin/nologin' to '/bin/bash'
$ sudo ausearch -k identity -i | grep usermod
... auid=devops ... comm=usermod ...
apache에 셸 부여 + wheel 그룹 추가 → 기존 계정을 특권 백도어로 전환backup에도 셸 부여 → 여러 계정을 백도어화변경이 권한 확대로 이어지는 흐름입니다(가상의 예시 로그).
02:15:40 usermod: change user 'apache' shell ... to '/bin/bash' (로그인 가능화)
02:16:10 usermod: add 'apache' to group 'wheel' (sudo 권한)
02:20:05 sshd: Accepted publickey for apache from 192.168.56.77 (017편 심은 키로 로그인)
02:21:00 sudo: apache : USER=root ; COMMAND=/bin/bash (특권 사용)
| 단계 | 의미 |
|---|---|
| 셸 부여 | 로그인 가능하게 |
| wheel 추가 | sudo 권한 획득 |
| 로그인 | 변경된 계정 사용 |
| sudo root | 권한 확대 완성 |
변경(usermod) → 로그인 → 권한 사용의 3단 연결이 백도어화를 증명합니다.
<group name="local,syssec_b,account,persistence,">
<rule id="101270" level="12">
<match>change user</match>
<regex type="pcre2">shell from '\S*(nologin|false)' to '\S*(ba|z|k)?sh'</regex>
<description>서비스/비로그인 계정에 로그인 셸 부여(백도어화)</description>
</rule>
<rule id="101271" level="10">
<if_group>audit</if_group>
<match>comm="usermod"</match>
<regex type="pcre2">-u 0|-o</regex>
<description>usermod로 UID 0/중복 UID 변경</description>
</rule>
</group>
054편(그룹 추가 101030), 053편(잠금 해제 101020)과 같은 그룹으로 묶어, 한 계정의 다중 변경을 상관 탐지합니다.
| 변경 유형 | 위험 |
|---|---|
| 셸 부여(nologin→sh) | 서비스 계정 로그인 가능화 |
| UID 0/-o | 권한 상승 |
| 그룹 추가(wheel 등) | 특권 획득(054편) |
| 잠금 해제·만료 변경 | 휴면 재활성화·지속성(053·060편) |
| 면접 포인트 | "기존 계정 변경은 신규 생성보다 눈에 덜 띈다" |
다음 편 081. 계정 · 인증 보안 — 그룹 구성원 변경과 권한 확대 탐지 에서는 권한이 그룹을 통해 퍼지는 그룹 구성원 변경과 권한 확대 탐지를 다룹니다.
이전 편: 079. 계정 · 인증 보안 — 신규 계정 생성 탐지와 검증
📚 시리즈 전체 보기: 시스템 보안 · 취약점