15장. 시간 동기화 구성
IT 환경에서 정확한 시간 유지가 중요합니다. 모든 네트워크 장치의 일관된 시간은 로그 파일 및 특정 프로토콜의 추적 가능성을 향상시킵니다. 예를 들어 Kerberos는 타임스탬프를 사용하여 재생 공격을 방지합니다.
15.1. Chrony 제품군을 사용하여 NTP 구성
IT의 여러 가지 이유로 정확한 시간 유지는 중요합니다. 예를 들어 네트워킹에서는 패킷 및 로그의 정확한 타임스탬프가 필요합니다. Linux 시스템에서 NTP
프로토콜은 사용자 공간에서 실행되는 데몬에 의해 구현됩니다.
사용자 공간 데몬은 커널에서 실행되는 시스템 시계를 업데이트합니다. 시스템 클록은 다양한 시계 소스를 사용하여 시간을 유지할 수 있습니다. 일반적으로TSC( Time Stamp Counter )가 사용됩니다. TSC는 마지막으로 재설정된 이후 사이클 수를 계산하는 CPU 레지스터입니다. 매우 빠르며 해상도가 높으며 중단이 없습니다.
Red Hat Enterprise Linux 8부터 NTP
프로토콜은 chronyd
데몬에서 구현되며 chrony
패키지의 리포지토리에서 사용할 수 있습니다.
다음 섹션에서는 chrony 제품군을 사용하여 NTP를 구성하는 방법을 설명합니다.
15.1.1. Chrony 제품군 소개
Chrony 는 NTP( Network Time Protocol) 구현
입니다. Chrony :
-
NTP
서버와 시스템 시계를 동기화하려면 - 참조 클록과 시스템 클록을 동기화하려면 (예: GPS 수신자)
- 수동 시간 입력과 시스템 시계를 동기화하려면
-
NTPv4(RFC 5905)
서버 또는 피어로서 네트워크의 다른 컴퓨터에 시간 서비스 제공
Chrony 는 간헐적인 네트워크 연결, 과도하게 혼잡한 네트워크, 온도 변경(일반 컴퓨터 클록은 온도에 민감함) 및 지속적으로 실행되지 않거나 가상 시스템에서 실행되지 않는 시스템을 포함하여 다양한 조건에서 원활하게 작동합니다.
인터넷을 통해 동기화된 두 머신 간의 일반적인 정확성은 몇 밀리초 이내이며, 10마이크로초 내에 LAN에 있는 머신의 경우입니다. 하드웨어 타임스탬프 또는 하드웨어 참조 클록은 두 머신 간의 정확도를 1마이크로초 단위로 동기화할 수 있습니다.
Chrony 는 사용자 공간에서 실행되는 데몬인 chronyd와 chronyd
의 성능을 모니터링하고 실행 중인 다양한 운영 매개 변수를 변경하는 데 사용할 수 있는 명령줄 프로그램인 chronyc 로 구성됩니다.
chrony 데몬인 chronyd
는 명령줄 chronyc 에서 모니터링하고 제어할 수 있습니다. 이 유틸리티는 chronyd
의 현재 상태를 쿼리하고 구성을 변경할 수 있도록 여러 명령을 입력할 수 있는 명령 프롬프트를 제공합니다. 기본적으로 chronyd
는 chronyc 의 로컬 인스턴스에서 명령만 수락하지만 원격 호스트에서도 모니터링 명령을 허용하도록 구성할 수 있습니다. 원격 액세스를 제한해야 합니다.
15.1.2. chronyc를 사용하여 chronyd 제어
chronyc 명령줄 유틸리티를 사용하여 chronyd
를 제어할 수 있습니다.
절차
대화형 모드에서 utility chronyc 명령줄을 사용하여
chronyd
의 로컬 인스턴스를 변경하려면root
로 다음 명령을 입력합니다.# chronyc
일부 제한된 명령을 사용하려면 chronyc 를
root
로 실행해야 합니다.chronyc 명령 프롬프트는 다음과 같이 표시됩니다.
chronyc>
-
모든 명령을 나열하려면
help
를 입력합니다. 또는 다음과 같이 명령과 함께 호출되는 경우 비대화형 명령 모드에서 유틸리티를 호출할 수도 있습니다.
chronyc command
chronyc 를 사용하여 변경한 내용은 영구적이지 않으며 chronyd
재시작 후 손실됩니다. 영구 변경을 위해 /etc/chrony.conf
를 수정합니다.
15.1.3. Chrony로 마이그레이션
Red Hat Enterprise Linux 7에서는 사용자가 ntp 와 chrony 중에서 선택하여 정확한 시간 유지를 보장할 수 있습니다. ntp 와 chrony, ntpd
및 chronyd
의 차이점은 ntpd와 chronyd 간의 차이점을 참조하십시오.
Red Hat Enterprise Linux 8부터 NTP는 더 이상 지원되지 않습니다. Chrony 는 기본적으로 활성화되어 있습니다. 따라서 ntp 에서 chrony 로 마이그레이션해야 할 수 있습니다.
ntp 에서 chrony 로의 마이그레이션은 대부분의 경우 간단합니다. 프로그램, 구성 파일 및 서비스의 해당 이름은 다음과 같습니다.
NTP 이름 | Chrony 이름 |
---|---|
/etc/ntp.conf | /etc/chrony.conf |
/etc/ntp/keys | /etc/chrony.keys |
ntpd | Chronyd |
ntpq | Chronyc |
ntpd.service | chronyd.service |
ntp-wait.service | chrony-wait.service |
ntp
배포에 포함된 ntpdate 및 sntp 유틸리티는 -q 옵션 또는 -
t
옵션을 사용하여 chronyd
로 바꿀 수 있습니다. /etc/chrony.conf
를 읽지 않도록 명령줄에서 구성을 지정할 수 있습니다. 예를 들어 ntpdate ntp.example.com
을 실행하는 대신chronyd
를 다음과 같이 시작할 수 있습니다.
# chronyd -q 'server ntp.example.com iburst'
2018-05-18T12:37:43Z chronyd version 3.3 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 +DEBUG)
2018-05-18T12:37:43Z Initial frequency -2.630 ppm
2018-05-18T12:37:48Z System clock wrong by 0.003159 seconds (step)
2018-05-18T12:37:48Z chronyd exiting
이전에 ntp 패키지에 포함되었으며 ntpd만 지원되었던
유틸리티는 이제 ntpd ntp
stat 와
chronyd
를 둘 다 지원합니다. ntpstat
패키지에서 사용할 수 있습니다.
15.1.3.1. 마이그레이션 스크립트
ntp2chrony.py
라는 Python 스크립트는 chrony
패키지(/usr/share/doc/chrony
) 설명서에 포함되어 있습니다. 스크립트는 기존 ntp
구성을 chrony
로 자동으로 변환합니다. ntp.conf
파일에서 가장 일반적인 지시문과 옵션을 지원합니다. 변환에서 무시되는 모든 행은 검토를 위해 생성된 chrony.conf
파일에 주석으로 포함됩니다. ntp 키 파일에 지정되지만 ntp
.conf에서 신뢰할 수 있는 키로 표시되지 않는 키는 생성된
파일에 주석으로 포함되어 있습니다.
chrony.
keys
기본적으로 스크립트는 파일을 덮어쓰지 않습니다. /etc/chrony.conf
또는 /etc/chrony.keys
가 이미 있는 경우 -b
옵션을 사용하여 파일 이름을 백업으로 변경할 수 있습니다. 이 스크립트는 다른 옵션을 지원합니다. --help
옵션은 지원되는 모든 옵션을 인쇄합니다.
ntp 패키지에
제공된 기본 ntp.conf
를 사용하여 스크립트 호출의 예는 다음과 같습니다.
# python3 /usr/share/doc/chrony/ntp2chrony.py -b -v
Reading /etc/ntp.conf
Reading /etc/ntp/crypto/pw
Reading /etc/ntp/keys
Writing /etc/chrony.conf
Writing /etc/chrony.keys
이 경우 무시된 유일한 지시문은 noclientlog
지시문에 chrony가 동일하지만 증폭 공격을 완화하기 위해서만 기본 ntp.conf
에 포함되어 있는 disable monitor
입니다.
생성된 chrony.conf
파일에는 일반적으로 ntp.conf
의 restrict 행에 해당하는 다수의 allow
지시문이 포함되어 있습니다. chronyd
를 NTP
서버로 실행하지 않으려면 chrony.conf
에서 allow 지시문을
모두 제거합니다.