시스템 보안 · 취약점 › B. 계정 · 인증 보안 강화 · 27/50편 (전체 077/450)
학습 단계: 2단계 · 설정 및 점검
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
026편의 기준선을 기준으로, 로그인이 평소 패턴에서 얼마나 벗어나는지 점수화합니다. 하나의 축만 벗어나면 정상일 수 있지만, 여러 축이 동시에 벗어나면 이상 가능성이 급격히 올라갑니다.
이상 점수 = 벗어난 축의 수
시간 : 기준선 시간대 밖 (예: 새벽) +1
출발지 : 계정 기준선에 없던 IP/대역 +1
지역 : 비관리망·해외 IP +1
방식 : 평소와 다른 인증 방식 +1
빈도 : 평소보다 비정상적으로 많은 로그인 +1
1점: 참고 / 2점: 확인 / 3점 이상: 높은 우선순위
핵심은 "새벽 로그인 = 무조건 이상"이 아니라, 그 계정의 기준선 대비 판단한다는 점입니다. 교대 근무자라면 새벽이 정상입니다.
| 축 | 비교 기준 |
|---|---|
| 시간 | 계정 기준선 시간대 / 업무 시간 정책 |
| 출발지 | 계정별 허용 IP 집합(기준선 CDB) |
| 지역 | 관리망 대역, 국가(지리정보) |
| 방식 | 계정 기준선의 publickey/password |
| 빈도 | 계정 일평균 대비 |
LOG=/var/log/secure # Ubuntu: /var/log/auth.log
# 1) 업무 외 시간 성공 로그인 (18~08시)
sudo grep 'Accepted' $LOG | awk '{h=substr($3,1,2)+0; if(h>=18||h<8) print}'
# 2) 기준선에 없는 출발지로의 성공 (기준선 파일과 대조)
sudo grep 'Accepted' $LOG | sed -E 's/.*for ([^ ]+) from ([0-9.]+).*/\1 \2/' | sort -u | \
while read u ip; do grep -q "^$u .*$ip" /root/baseline/login-profile-base.txt || echo "NEW: $u from $ip"; done
# 3) 비관리망 성공 로그인
sudo grep 'Accepted' $LOG | grep -vE 'from 192\.168\.56\.(1?[0-9]|2[0-9]|3[01])\b'
관리망 대역·업무 시간은 조직 정책에 맞게 조정합니다. 지리정보(국가) 판별은 SIEM의 GeoIP 기능을 사용합니다.
$ (업무 외 시간)
$ (신규 출발지)
$ (비관리망)
성공 로그인이 모두 기준선 안(업무 시간·관리망·등록 출발지)인 상태가 정상입니다.
$ (신규 출발지)
NEW: devops from 192.168.56.77
$ (업무 외 시간)
02:10:44 Accepted password for devops from 192.168.56.77
devops 로그인이 신규 출발지 + 새벽 + (019편) password 방식 → 3축 동시 이탈다축 이탈을 점수화한 예시입니다(가상의 예시).
로그인: devops, 192.168.56.77, 02:10, password
기준선: devops {192.168.56.5}, {09-14}, {publickey}
시간 02시 ∉ {09-14} → +1
출발지 56.77 ∉ {56.5} → +1
방식 password ≠ publickey → +1
지역 비관리망 → +1
합계 4점 → 매우 높음
| 계정 | 이탈 축 | 점수 | 판정 |
|---|---|---|---|
| intern01 | 출발지(재택) | 1 | 참고(확인) |
| devops | 시간+출발지+방식+지역 | 4 | 탈취 의심 → 즉시 대응 |
<group name="local,syssec_b,authentication,">
<rule id="101240" level="11">
<if_sid>5715</if_sid>
<time>18:00-08:00</time>
<srcip>!192.168.56.0/28</srcip>
<description>업무 외 시간 + 비관리망 로그인 성공(다축 이탈)</description>
</rule>
</group>
계정별 "허용 출발지" 비교는 Wazuh CDB 리스트(계정→대역)로 구현하거나, SIEM에서 "계정의 과거 출발지 집합에 없는 IP" 질의로 처리합니다. GeoIP 기반 해외 로그인 탐지도 함께 운영합니다.
| 축 | 이탈 기준 |
|---|---|
| 시간 | 계정 기준선 시간대 밖 |
| 출발지 | 계정 허용 IP 집합 밖 |
| 지역 | 비관리망·해외 |
| 방식 | 평소와 다른 인증 방식 |
| 판정 | 벗어난 축 수로 점수화(3+ = 높음) |
| 면접 포인트 | "'새벽=이상'이 아니라 '그 계정에 새벽이 이상' — 기준선 상대 판단" |
다음 편 078. 계정 · 인증 보안 — 동시 세션·다중 출발지 로그인 탐지 에서는 한 계정이 여러 곳에서 동시에 쓰이는 동시 세션·다중 출발지 로그인 탐지를 다룹니다.
이전 편: 076. 계정 · 인증 보안 — 로그인 시간·출발지 기준선 만들기
📚 시리즈 전체 보기: 시스템 보안 · 취약점