시스템 보안 · 취약점 › B. 계정 · 인증 보안 강화 · 36/50편 (전체 086/450)
학습 단계: 2단계 · 설정 및 점검
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
공유 계정은 여러 사람이 같은 자격증명으로 쓰는 계정(팀 공용 ops, 기본 ubuntu)입니다. 가장 큰 문제는 누가 무엇을 했는지 구분할 수 없다는 것, 즉 책임 추적성(accountability)의 상실입니다.
개인 계정 모델: hong → sudo → root (로그: "hong이 했다")
공유 계정 모델: ops(5명 공용) → root (로그: "ops가 했다" → 5명 중 누구?)
기본 계정(배포판·클라우드 이미지)
ubuntu, centos, ec2-user, admin, pi ...
→ 이름이 알려져 있어 brute-force·열거의 1순위 표적(071편)
| 점검 | 방법 |
|---|---|
| 공유 계정 식별 | 여러 출발지·여러 사람이 쓰는 계정(last의 출발지 다양성) |
| 기본 계정 존재 | getent passwd ubuntu centos ec2-user admin pi |
| 기본 계정 상태 | 셸·비밀번호·SSH 키 |
| 전환 방안 | 개인 계정 생성 + sudo, 공유 계정 잠금 |
| 추적 보완 | 불가피하면 접속 전 개인 식별(점프호스트·키별 주석) |
# 1) 기본 계정 존재·상태
for u in ubuntu centos ec2-user admin pi user guest; do
getent passwd $u >/dev/null && echo "$u: $(sudo passwd -S $u 2>/dev/null | awk '{print $2}') shell=$(getent passwd $u|cut -d: -f7)"
done
# 2) 한 계정을 여러 출발지가 쓰는지 (공유 의심)
for u in ops deploy; do
getent passwd $u >/dev/null && { echo "== $u 출발지"; last -i $u 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort | uniq -c; }
done
# 3) 공유 계정 키별 주석으로 사용자 구분 (개선책)
for u in ops; do h=$(getent passwd $u|cut -d: -f6); sudo ssh-keygen -lf "$h/.ssh/authorized_keys" 2>/dev/null; done
ubuntu: LK shell=/sbin/nologin
ec2-user: LK shell=/sbin/nologin
== ops 출발지
(개인 계정 체제로 ops 없음)
기본 계정은 잠겨 있고(LK), 공유 계정 대신 개인 계정+sudo 체제인 상태가 정상입니다.
admin: PS shell=/bin/bash
== ops 출발지
40 192.168.56.5
22 192.168.56.6
18 192.168.56.7
admin 계정이 활성(비밀번호+셸) → brute-force 표적이자 공유 가능성ops 계정이 3개 출발지에서 사용 → 여러 사람 공유 → 사고 시 행위자 특정 불가공유 계정의 추적 한계를 보여주는 예시입니다(가상의 예시 로그).
02:10:44 sshd: Accepted password for ops from 192.168.56.77
02:11:30 sudo: ops : USER=root ; COMMAND=/bin/bash
type=USER_LOGIN auid=ops ses=12 addr=192.168.56.77
→ auid=ops 까지만 추적 가능. "실제 사람"은 알 수 없음
(개인 계정이었다면 auid=hong 으로 특정 가능)
| 구분 | 개인 계정 | 공유 계정 |
|---|---|---|
| auid | 개인 식별 | 공유명까지만 |
| 사고 대응 | 해당 개인 조치 | 전원 비밀번호 교체 |
| 책임 규명 | 가능 | 불가 |
공유 계정은 탈취돼도 "원래 여러 명이 쓰던 것"과 구분이 어려워, 027·028편의 이상 탐지도 정확도가 떨어집니다.
<group name="local,syssec_b,authentication,">
<rule id="101330" level="10">
<if_sid>5715</if_sid>
<list field="dstuser" lookup="match_key">etc/lists/default-accounts</list>
<description>배포판 기본 계정(ubuntu/centos/admin 등) 로그인 성공</description>
</rule>
</group>
default-accounts CDB 리스트에 기본 계정명을 넣어 로그인·시도를 탐지합니다. 공유 계정의 다출발지 사용은 028편(다출발지 로그인)과 겹치므로, 공유 계정은 그 룰의 예외가 아니라 별도 관리 대상으로 둡니다.
| 구분 | 핵심 내용 |
|---|---|
| 공유 계정 | 여러 사람 공용 → 책임 추적성 상실 |
| 기본 계정 | ubuntu/centos/admin 등 → 공격 표적(071편) |
| 해결 | 개인 계정+sudo 전환, 공유 계정 잠금 |
| 불가피 시 | 키별 주석·점프호스트로 개인 식별 |
| 면접 포인트 | "공유 계정은 auid로도 사람을 특정할 수 없다 — 추적성 상실" |
다음 편 087. 계정 · 인증 보안 — sudo 권한 상승 이상 징후 에서는 권한이 비정상적으로 오르는 sudo 권한 상승 이상 징후를 다룹니다.
이전 편: 085. 계정 · 인증 보안 — 서비스 계정 대화형 로그인 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점