📌 NTP(Network Time Protocol) 서버란?
NTP 서버(Network Time Protocol Server)는 컴퓨터 시스템 간에 정확한 시간 동기화를 제공하는 서버입니다. 이를 통해 네트워크 내 모든 장치가 표준 시간을 유지할 수 있도록 도와줍니다.
🔹 NTP 서버의 주요 역할
- 시간 동기화 제공
- 컴퓨터, 네트워크 장비(라우터, 스위치 등), 서버 간 정확한 시간 유지
- 로그 기록, 금융 거래, 인증 시스템에서 시간 오차 방지
- 국제 표준 시간(UTC) 제공
- NTP 서버는 GPS, 원자시계 등에서 UTC(Coordinated Universal Time) 기준의 시간을 받아 사용자가 요청하면 동기화된 시간을 제공합니다.
- 시간 계층 구조(Hierarchy) 유지
- Stratum(스트라텀) 계층을 기반으로 동작하여, 최상위 계층(원자시계)에서 정확한 시간을 하위 서버로 전달
🔹 NTP 서버 계층 구조 (Stratum Model)
NTP 서버는 계층 구조를 가지며, Stratum(층, 단계) 값이 낮을수록 더 정확한 시간을 제공합니다.
| Stratum | 설명 |
|---|---|
| Stratum 0 | GPS, 원자시계, 루비 진동자 등 (직접 접근 불가) |
| Stratum 1 | Stratum 0과 직접 연결된 NTP 서버 (표준 시간 제공) |
| Stratum 2 | Stratum 1과 동기화된 NTP 서버 (일반 기업/기관 서버) |
| Stratum 3 | Stratum 2와 동기화된 서버 (일반적인 클라이언트 장치) |
- Stratum 1 서버는 국가 기관이나 대형 데이터센터에서 운영하며, Stratum 2 이상을 일반 기업, 개인이 활용합니다.
🔹 NTP 서버 동작 방식
- 클라이언트(PC, 서버 등)가 NTP 서버에 시간 요청 (
UDP 123 포트 사용) - NTP 서버가 현재 시간을 응답으로 전송
- 클라이언트는 서버의 시간과 자신의 시간을 비교하여 시간 차이 보정
🔹 대표적인 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)
🔹 추가적인 보안 설정 방법
- NTP 접근 제한 설정
restrict default kod nomodify notrap nopeer noquery restrict 127.0.0.1 restrict <내부 네트워크> mask <서브넷> nomodify notrap
- NTP 버전 업데이트
ntpq -c rv명령어로 버전 확인 후 최신 버전 유지.
- 방화벽(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 기능이 활성화된 경우 반드시 비활성화해야 합니다.