시스템 보안 · 취약점 › B. 계정 · 인증 보안 강화 · 37/50편 (전체 087/450)
학습 단계: 3단계 · 이상 징후
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
sudo는 정상 운영의 핵심이라 "sudo 사용 = 이상"일 수 없습니다. 이상 징후는 "평소와 다른 방식의 권한 상승" 입니다. 056·057편의 분석을 "권한 상승" 관점으로 종합합니다.
sudo 권한 상승의 이상 신호
① 신규 sudoer 첫 사용 : 방금 wheel/sudoers에 추가된 계정이 바로 root 사용(031편)
② 서비스 계정 sudo : apache 등이 sudo (A영역 006편)
③ 비정상 시간·출발지 : 평소 안 쓰던 계정이 새벽에 sudo
④ 셸·인터프리터 상승 : sudo bash/python (057편) → 로그 회피
⑤ 권한 확인 명령 : sudo id / whoami (상승 직후 정찰)
정상 sudo(관리자가 업무 시간에 서비스 관리)와 이들을 구분하는 것이 핵심입니다.
| 징후 | 확인 |
|---|---|
| 신규 sudoer 첫 사용 | 그룹/sudoers 추가 시각 vs 첫 sudo 시각(031편) |
| 서비스 계정 sudo | `sudo ... (apache |
| 시간·출발지 | sudo 세션의 로그인 출발지·시간(051편) |
| 셸·인터프리터 | `COMMAND=.../bash |
| 정찰 명령 | 상승 직후 id, whoami, sudo -l |
LOG=/var/log/secure # Ubuntu: /var/log/auth.log
# 1) 최근 sudo 성공과 실행 계정·명령
sudo grep 'sudo\[.*USER=root' $LOG | sed -E 's/.*sudo\[[0-9]+\]: +([^ ]+) : .*COMMAND=(.*)/\1 | \2/' | tail -20
# 2) 평소 sudo를 쓰지 않던 계정의 사용 (기준선과 대조)
sudo grep 'sudo\[.*USER=root' $LOG | grep -oE '^\S+ : | [a-z_]+ :' 2>/dev/null
sudo grep 'USER=root' $LOG | awk '{for(i=1;i<=NF;i++)if($i==":"){print $(i-1);break}}' | sort | uniq -c
# 3) 상승 직후 정찰 명령
sudo grep -E 'COMMAND=/usr/bin/(id|whoami)$|COMMAND=/usr/bin/sudo -l' $LOG | tail
admin1 | /usr/bin/systemctl restart httpd
admin1 | /usr/bin/dnf update -y
84 admin1
6 devops
평소 sudo를 쓰는 관리자(admin1)가 서비스 관리 명령을 업무 시간에 실행하는, 기준선과 일치하는 상태가 정상입니다.
apache | /bin/bash
devops | /usr/bin/id
devops | /bin/bash
1 newadmin ← 방금 추가된 sudoer
38 devops ← 평소 주 6건이던 계정 급증(056편)
apache의 sudo bash(006·057편)devops가 상승 직후 id로 권한 확인 → 정찰newadmin이 추가되자마자 첫 sudo(031편) → 권한 확대 직후 사용권한 상승 이상 징후를 한 세션에서 본 예시입니다(가상의 예시 로그).
02:16:10 usermod: add 'apache' to group 'wheel' (권한 부여)
02:21:00 sudo: apache : USER=root ; COMMAND=/usr/bin/id (상승 + 정찰)
02:21:05 sudo: apache : USER=root ; COMMAND=/bin/bash (셸 진입)
type=USER_CMD auid=unset uid=48 ... (서비스 계정, 터미널 없음)
| 신호 | 해석 |
|---|---|
| 그룹 추가 직후 sudo | 신규 sudoer 첫 사용 |
| 첫 명령이 id | 상승 확인 정찰 |
| 이어서 bash | 로그 회피용 셸 진입 |
| 서비스 계정 | 006편 백도어 |
여러 이상 신호가 한 세션에 겹치면 권한 상승 공격으로 확정에 가깝습니다.
<group name="local,syssec_b,privilege,">
<!-- 상승 직후 정찰 명령 -->
<rule id="101340" level="9">
<if_sid>5402</if_sid>
<regex type="pcre2">COMMAND=\S*/(id|whoami|groups)$</regex>
<description>sudo 권한 상승 직후 권한 확인 명령(정찰)</description>
</rule>
</group>
이 룰은 056편(101050 급증)·057편(101060 셸)·031편(101280 부여 후 사용)과 함께 privilege 그룹으로 묶여, 한 세션의 다중 징후를 상관 탐지합니다. 정찰 명령 단독은 낮은 레벨, 조합 시 상향합니다.
| 징후 | 내용 |
|---|---|
| 신규 sudoer 첫 사용 | 부여 직후 바로 root 사용(031편) |
| 서비스 계정 sudo | 006편 백도어 |
| 비정상 시간·출발지 | 기준선 이탈(056편) |
| 셸·정찰 | sudo bash(057편), 상승 직후 id/whoami |
| 면접 포인트 | "sudo 사용 자체가 아니라 기준선을 벗어난 상승이 이상" |
다음 편 088. 계정 · 인증 보안 — sudo 실패·권한 없음 로그 분석 에서는 상승 시도가 막힌 흔적인 sudo 실패·권한 없음 로그 분석을 다룹니다.
이전 편: 086. 계정 · 인증 보안 — 공유 계정·기본 계정 위험 분석
📚 시리즈 전체 보기: 시스템 보안 · 취약점