NTP (Network Time Protocol)

📌 NTP(Network Time Protocol) 서버란?

NTP 서버(Network Time Protocol Server)는 컴퓨터 시스템 간에 정확한 시간 동기화를 제공하는 서버입니다. 이를 통해 네트워크 내 모든 장치가 표준 시간을 유지할 수 있도록 도와줍니다.

🔹 NTP 서버의 주요 역할

  1. 시간 동기화 제공
    • 컴퓨터, 네트워크 장비(라우터, 스위치 등), 서버 간 정확한 시간 유지
    • 로그 기록, 금융 거래, 인증 시스템에서 시간 오차 방지
  2. 국제 표준 시간(UTC) 제공
    • NTP 서버는 GPS, 원자시계 등에서 UTC(Coordinated Universal Time) 기준의 시간을 받아 사용자가 요청하면 동기화된 시간을 제공합니다.
  3. 시간 계층 구조(Hierarchy) 유지
    • Stratum(스트라텀) 계층을 기반으로 동작하여, 최상위 계층(원자시계)에서 정확한 시간을 하위 서버로 전달

🔹 NTP 서버 계층 구조 (Stratum Model)

NTP 서버는 계층 구조를 가지며, Stratum(층, 단계) 값이 낮을수록 더 정확한 시간을 제공합니다.

Stratum설명
Stratum 0GPS, 원자시계, 루비 진동자 등 (직접 접근 불가)
Stratum 1Stratum 0과 직접 연결된 NTP 서버 (표준 시간 제공)
Stratum 2Stratum 1과 동기화된 NTP 서버 (일반 기업/기관 서버)
Stratum 3Stratum 2와 동기화된 서버 (일반적인 클라이언트 장치)
  • Stratum 1 서버는 국가 기관이나 대형 데이터센터에서 운영하며, Stratum 2 이상을 일반 기업, 개인이 활용합니다.

🔹 NTP 서버 동작 방식

  1. 클라이언트(PC, 서버 등)가 NTP 서버에 시간 요청 (UDP 123 포트 사용)
  2. NTP 서버가 현재 시간을 응답으로 전송
  3. 클라이언트는 서버의 시간과 자신의 시간을 비교하여 시간 차이 보정

🔹 대표적인 NTP 서버

  • 공식 공공 NTP 서버
    • time.google.com (Google NTP 서버)
    • time.windows.com (Microsoft NTP 서버)
    • pool.ntp.org (전 세계 NTP 서버 풀)
    • time.nist.gov (미국 표준연구소 NTP 서버)
  • 한국의 주요 NTP 서버
    • time.kriss.re.kr (한국표준과학연구원)
    • time.bora.net (KT NTP 서버)
    • ntp.kornet.net (KT NTP 서버)

🔹 NTP 서버 설정 방법 (Linux)

1️⃣ NTP 패키지 설치 (RHEL/CentOS)

yum install -y ntp

2️⃣ NTP 서버 활성화

systemctl enable ntpd
systemctl start ntpd

3️⃣ NTP 서버 확인

ntpq -p

4️⃣ NTP 클라이언트 설정 (/etc/ntp.conf)

server time.kriss.re.kr iburst
server time.google.com iburst

🔹 NTP 서버 보안

NTP 서버는 DDoS 공격, 스푸핑 공격에 악용될 수 있기 때문에 보안 설정이 중요합니다.

✔ 보안 설정 예시 (/etc/ntp.conf)

restrict default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict <내부 네트워크> mask <서브넷> nomodify notrap

✔ 방화벽(iptables) 설정

iptables -A INPUT -p udp --dport 123 -s trusted-ip -j ACCEPT
iptables -A INPUT -p udp --dport 123 -j DROP

🔹 주요 NTP 서버 공격 유형

NTP(Network Time Protocol) 서버 공격은 주로 DDoS 증폭 공격을 목적으로 수행되며, 공격자는 취약한 NTP 서버를 악용하여 대량의 트래픽을 생성할 수 있습니다. 주요 공격 유형은 다음과 같습니다.

1️⃣ NTP 증폭(Amplification) 공격

  • 공격자는 monlist(MON_GETLIST) 기능을 악용하여 작은 요청 패킷으로 대량의 응답을 유도합니다.
  • 요청을 **스푸핑된 IP(희생자 IP)**로 보내, NTP 서버가 희생자에게 대량의 응답을 보내도록 합니다.
  • 결과적으로 희생자는 대량의 트래픽을 받아 서비스가 마비될 수 있습니다.

💡 대응 방법

  • monlist 기능 비활성화 (restrict default noquery 설정)
  • 최신 버전의 NTP 서버 사용 (NTP v4.2.7 이상)
  • 방화벽에서 NTP 관련 트래픽 필터링 (UDP 123 포트 제한)

2️⃣ NTP 리플렉션(Reflection) 공격

  • 공격자가 출발지 주소를 희생자 IP로 위조하여 NTP 서버에 요청을 보냄.
  • 여러 NTP 서버에서 희생자에게 응답을 보내면서 트래픽을 증폭시킴.
  • 공격자는 직접적인 연결 없이 피해를 입힐 수 있음.

💡 대응 방법

  • NTP 서버에서 패킷 응답 제한 및 ACL 설정
  • DDoS 방어 시스템 적용
  • ISP 차원에서 스푸핑된 트래픽 차단 (BCP38 적용)

3️⃣ NTP 클라이언트 대상 공격

  • 공격자가 NTP 서버를 변조하여 클라이언트에게 잘못된 시간 정보를 제공함.
  • 금융 시스템, 로그 시스템 등 시간 동기화가 중요한 서비스에 혼란을 초래함.

💡 대응 방법

  • 신뢰할 수 있는 NTP 서버 사용 (Google, time.windows.com 등)
  • NTP 보안 프로토콜 적용 (NTS: Network Time Security)

🔹 추가적인 보안 설정 방법

  1. NTP 접근 제한 설정
    • restrict default kod nomodify notrap nopeer noquery restrict 127.0.0.1 restrict <내부 네트워크> mask <서브넷> nomodify notrap
  2. NTP 버전 업데이트
    • ntpq -c rv 명령어로 버전 확인 후 최신 버전 유지.
  3. 방화벽(iptables) 설정
    • ptables -A INPUT -p udp --dport 123 -s trusted-ip -j ACCEPT iptables -A INPUT -p udp --dport 123 -j DROP

🔹 결론

NTP 서버는 DDoS 공격에 악용될 가능성이 높은 서비스이므로, 불필요한 기능을 비활성화하고, 최신 버전 유지 및 접근 제한이 필수적입니다. 특히 monlist 기능이 활성화된 경우 반드시 비활성화해야 합니다.

Leave a Comment