시스템 보안 · 취약점 › B. 계정 · 인증 보안 강화 · 28/50편 (전체 078/450)
학습 단계: 2단계 · 설정 및 점검
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
한 계정이 같은 시간에 여러 곳에서 쓰이면, 계정 공유이거나 탈취입니다. 특히 지리적으로 떨어진 두 출발지에서 짧은 간격으로 로그인하면(불가능한 이동), 한 사람일 수 없습니다.
동시 세션: who/last에서 같은 계정이 서로 다른 출발지로 동시에 active
devops pts/0 192.168.56.5 (09:00~ )
devops pts/1 192.168.56.77 (02:10~ ) ← 겹치는 시간, 다른 출발지
불가능한 이동: 같은 계정이
10:00 서울 IP 로그인 → 10:05 해외 IP 로그인 (5분 만에 이동 불가) → 탈취
| 확인 | 명령 |
|---|---|
| 현재 동시 세션 | who, w (같은 계정의 여러 출발지) |
| 세션 중첩 | last -i에서 로그인/로그아웃 시간 겹침 |
| 출발지 다양성 | 계정별 동시 활성 출발지 수 |
| 불가능한 이동 | 연속 로그인의 출발지 지리 거리 ÷ 시간 |
| 세션별 행위 | 각 세션(ses)의 명령 비교 |
# 1) 현재 한 계정이 여러 출발지에서 접속 중인지
who | awk '{print $1, $NF}' | sort | awk '{c[$1]++; ip[$1]=ip[$1]" "$2} END{for(u in c) if(c[u]>1) print u": "c[u]"세션 "ip[u]}'
# 2) wtmp에서 세션 시간 중첩 확인 (계정별)
last -i -F devops | head -10
# 3) 짧은 간격 다출발지 로그인 (불가능한 이동 후보)
sudo grep 'Accepted' /var/log/secure | grep ' for devops ' | sed -E 's/.*(..:..:..).* from ([0-9.]+).*/\1 \2/' | tail
지리 거리 계산은 SIEM의 GeoIP 필드(위도·경도)로 하고, 내부망 환경에서는 "서로 다른 신뢰 구역의 동시 접속"으로 대체 판단합니다.
$ who | ...
(한 계정 다출발지 없음)
$ last -i -F devops
devops pts/0 192.168.56.5 ... 09:12 - 10:30 (01:18)
devops pts/0 192.168.56.5 ... 14:02 - 15:10 (01:08)
같은 계정의 세션이 시간적으로 겹치지 않고, 출발지가 일관된 상태가 정상입니다(여러 터미널이라도 같은 출발지면 정상).
$ who | ...
devops: 2세션 192.168.56.5 192.168.56.77
$ last -i -F devops | head
devops pts/1 192.168.56.77 ... 02:10 - still logged in
devops pts/0 192.168.56.5 ... 09:12 - still logged in
devops가 두 출발지(관리망 56.5 + 비관리망 56.77)에서 동시 활성동시 세션의 행위를 세션별로 분리한 예시입니다(가상의 예시).
ses=8 (192.168.56.5, pts/0) : systemctl status, tail log → 정상 업무(본인)
ses=12 (192.168.56.77, pts/1) : sudo -i, useradd, chage -M 99999 → 탈취 행위
두 세션이 09:12~ 동시 active, 출발지·행위 성격 완전히 다름
→ 56.77 세션이 탈취된 것, 본인은 56.5에서 정상 근무 중
| 세션 | 출발지 | 행위 | 판정 |
|---|---|---|---|
| ses=8 | 관리망 | 조회·업무 | 본인 |
| ses=12 | 비관리망 | 상승·백도어 | 탈취 |
동시 세션 덕분에 "본인은 멀쩡히 근무 중인데 다른 곳에서도 쓰이고 있다"는 탈취의 명확한 증거가 됩니다.
<group name="local,syssec_b,authentication,">
<!-- 같은 계정이 서로 다른 출발지에서 짧은 시간 내 로그인 성공 -->
<rule id="101250" level="12" frequency="2" timeframe="600">
<if_matched_sid>5715</if_matched_sid>
<same_user />
<different_source_ip />
<description>동일 계정의 다출발지 로그인(계정 공유/탈취 의심)</description>
</rule>
</group>
different_source_ip 지원 여부는 버전에 따라 다르므로, 지원하지 않으면 SIEM에서 "계정별 동시 활성 출발지 수 ≥ 2"나 GeoIP 거리/시간 기반 불가능한 이동 규칙으로 구현합니다.
| 구분 | 핵심 내용 |
|---|---|
| 동시 세션 | 같은 계정 · 다른 출발지 · 겹치는 시간 |
| 불가능한 이동 | 짧은 시간 내 지리적으로 먼 두 곳 |
| 공유 vs 탈취 | 출발지·행위 성격으로 구분 |
| 확정 근거 | 본인 세션과 탈취 세션의 공존 |
| 면접 포인트 | "본인이 근무 중인데 다른 곳에서도 쓰이면 탈취의 명확한 증거" |
다음 편 079. 계정 · 인증 보안 — 신규 계정 생성 탐지와 검증 에서는 계정 생애주기의 시작인 신규 계정 생성 탐지와 검증을 다룹니다.
이전 편: 077. 계정 · 인증 보안 — 비정상 시간대·신규 출발지 로그인 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점