대상 OS: Rocky Linux 9

침해사고 대응에서 가장 먼저 하는 일이 “타임라인”을 맞추는 것입니다.
그런데 서버 시간이 틀어져 있으면, 로그는 증거가 아니라 퍼즐 조각이 됩니다.
심하면 인증서 검증 실패, 토큰 만료 오판, 크론/배치 오동작으로 2차 사고도 생깁니다.
시간 동기화는 운영 안정성의 문제이면서, 동시에 보안(감사/포렌식)의 뼈대입니다.

이 글은 Rocky Linux 9에서 chrony를 ‘안전한 클라이언트’로 운영하는 하드닝(업스트림 고정, 제어 인터페이스 제한, 방화벽, 로그/모니터링, 장애 대응)을 실전 기준으로 정리합니다.

---

1) 왜 NTP/시간 동기화가 보안 하드닝인가

1) 로그의 순서/상관관계가 신뢰 가능해진다(사고 분석 속도 향상)

2) 인증/암호 영역의 오작동을 줄인다(TLS, Kerberos, JWT 등)

3) 공격자가 시간 왜곡으로 흔적을 흐리는 시도를 어렵게 만든다

4) 모니터링/알림의 기준 시간이 안정화된다

주의
- 시간을 “완벽히 보호”하는 건 어렵습니다.
- 하지만 시간 동기화를 관리 가능한 상태로 만들면, 최소한 ‘방치된 취약점’은 제거됩니다.

---

2) 현재 상태 점검(변경 전 스냅샷)

1) 시간/타임존/동기화 상태 확인

timedatectl status

2) chronyd 동작 확인

systemctl status chronyd --no-pager || true

3) chrony 소스/동기화 상태 확인

chronyc tracking || true
chronyc sources -v || true

4) chrony 설정 파일 위치 확인

ls -la /etc/chrony.conf

---

3) chrony 설치 및 기본 기동

1) 설치

sudo dnf -y install chrony

2) 서비스 활성화

sudo systemctl enable --now chronyd
sudo systemctl status chronyd --no-pager

---

4) 업스트림 NTP 서버를 ‘명시적으로’ 고정하기

가장 흔한 문제는 “어떤 NTP 서버를 보고 있는지”가 환경마다 달라지는 것입니다.
보안/운영 표준이 있다면, 내부 NTP(또는 신뢰 가능한 외부)로 고정하는 게 좋습니다.

1) 기존 server/pool 라인 확인

grep -nE '^(server|pool)\s' /etc/chrony.conf || true

2) 예시: 내부 NTP 2대를 우선 사용(권장)

아래는 예시입니다. 실제 환경의 NTP 주소로 바꾸세요.

sudo cp -a /etc/chrony.conf /etc/chrony.conf.bak.$(date +%F_%H%M%S)
sudo tee /etc/chrony.conf >/dev/null