077. 계정 · 인증 보안 — 비정상 시간대·신규 출발지 로그인 탐지

changseop lee·5일 전

시스템 보안 · 취약점 › B. 계정 · 인증 보안 강화 · 27/50편 (전체 077/450)
학습 단계: 2단계 · 설정 및 점검
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

026편의 기준선을 기준으로, 로그인이 평소 패턴에서 얼마나 벗어나는지 점수화합니다. 하나의 축만 벗어나면 정상일 수 있지만, 여러 축이 동시에 벗어나면 이상 가능성이 급격히 올라갑니다.

이상 점수 = 벗어난 축의 수
 시간   : 기준선 시간대 밖 (예: 새벽)         +1
 출발지 : 계정 기준선에 없던 IP/대역          +1
 지역   : 비관리망·해외 IP                    +1
 방식   : 평소와 다른 인증 방식                +1
 빈도   : 평소보다 비정상적으로 많은 로그인    +1

1점: 참고 / 2점: 확인 / 3점 이상: 높은 우선순위

핵심은 "새벽 로그인 = 무조건 이상"이 아니라, 그 계정의 기준선 대비 판단한다는 점입니다. 교대 근무자라면 새벽이 정상입니다.

2. 왜 중요한가

  • 계정 탈취의 흔한 신호가 "평소와 다른 곳·시간에서의 로그인"입니다. 돌파(074편) 없이 유효한 키·비밀번호로 바로 들어온 경우, 이 이탈 탐지가 유일한 신호일 수 있습니다.
  • 단일 축 탐지는 오탐이 많습니다(출장, 재택). 다축 결합으로 정확도를 높입니다.
  • "불가능한 이동"(짧은 시간에 지리적으로 먼 두 곳에서 로그인)은 강한 탈취 신호입니다(028편의 동시 세션과 연계).

3. 핵심 명령어 / 설정

축비교 기준
시간계정 기준선 시간대 / 업무 시간 정책
출발지계정별 허용 IP 집합(기준선 CDB)
지역관리망 대역, 국가(지리정보)
방식계정 기준선의 publickey/password
빈도계정 일평균 대비

4. 실습 (실습 예시)

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 기능을 사용합니다.

5. 정상 상태

$ (업무 외 시간)
$ (신규 출발지)
$ (비관리망)

성공 로그인이 모두 기준선 안(업무 시간·관리망·등록 출발지)인 상태가 정상입니다.

6. 이상 상태

$ (신규 출발지)
NEW: devops from 192.168.56.77
$ (업무 외 시간)
02:10:44 Accepted password for devops from 192.168.56.77
  • devops 로그인이 신규 출발지 + 새벽 + (019편) password 방식 → 3축 동시 이탈
  • 교대 근무가 아닌 계정이므로 새벽 자체가 이탈
  • 이상 점수 3점 → 높은 우선순위, 세션 이후 행위 즉시 추적

7. 로그 분석 (분석 방법)

다축 이탈을 점수화한 예시입니다(가상의 예시).

로그인: 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탈취 의심 → 즉시 대응

8. SOC 관제 포인트

  • 이상 로그인은 다축 결합 점수로 판정해 단일 축 오탐을 줄입니다.
  • 계정 기준선을 기준으로 판단합니다("새벽=이상"이 아니라 "그 계정에 새벽이 이상").
  • 3축 이상 이탈·불가능한 이동은 즉시 세션 추적으로 넘깁니다.

9. 탐지 규칙

<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 기반 해외 로그인 탐지도 함께 운영합니다.

10. 대응 방법

  1. 초기 확인 — 이탈한 축(시간·출발지·방식·지역)을 세어 이상 점수를 산정합니다.
  2. 범위 확인 — 고점수 로그인의 세션 이후 행위와 같은 계정의 다른 서버 로그인을 확인합니다.
  3. 증거 확보 — 로그인 로그·기준선 대조 결과를 보존합니다.
  4. 차단/조치 — 탈취 의심 시 세션 종료·계정 잠금·자격증명 교체·출발지 차단을 진행합니다.
  5. 재발 방지 — 다축 이탈 룰과 계정별 허용 출발지 CDB를 운영합니다.

11. 핵심 정리

축이탈 기준
시간계정 기준선 시간대 밖
출발지계정 허용 IP 집합 밖
지역비관리망·해외
방식평소와 다른 인증 방식
판정벗어난 축 수로 점수화(3+ = 높음)
면접 포인트"'새벽=이상'이 아니라 '그 계정에 새벽이 이상' — 기준선 상대 판단"

12. 다음 편 예고

다음 편 078. 계정 · 인증 보안 — 동시 세션·다중 출발지 로그인 탐지 에서는 한 계정이 여러 곳에서 동시에 쓰이는 동시 세션·다중 출발지 로그인 탐지를 다룹니다.


이전 편: 076. 계정 · 인증 보안 — 로그인 시간·출발지 기준선 만들기
📚 시리즈 전체 보기: 시스템 보안 · 취약점

profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글