NTP 서버가 보안되는지 테스트하는 방법

NTP 서버가 보안되는지 테스트하는 방법

우리는 ntp.conf 파일에서 몇 가지 NTP 구성을 시도하고 있으며 NTP 서버가 안전한지 여부를 확인하고 싶습니다.

여기에 제공된 권장 사항을 따르십시오. https://support.ntp.org/Support/AccessRestrictions#Section_6.5.1.2.1.

우리는 다음을 추가했습니다:

IPV4: restrict -4 default limited kod nomodify notrap nopeer noquery

IPv6: restrict -6 default limited kod nomodify notrap nopeer noquery

이제 질문은 다음과 같습니다. 문서에 작성된 줄을 기반으로 합니다.

다른 사람들이 귀하의 ntpd에서 시간을 얻을 수 있도록 허용할 의향이 있으므로 그들이 귀하의 서버 상태 정보를 볼 수 있도록 허용하시겠습니까(비록 이것이 귀하의 OS 및 ntpd 버전에 대한 정보를 공개할 수 있음에도 불구하고)?

서버가 상태나 다른 OS 정보를 보내고 있는지 여부를 어떻게 확인할 수 있습니까?

또한 제한에 'noquery' 옵션을 추가하지 않으면 차이점은 무엇이며 'noquery' 옵션이 있거나 없는 경우, 즉 해당 옵션을 추가하면 반영이 있는지 여부를 어떻게 테스트할 수 있습니까? (보안적인 관점에서 테스트하고 싶습니다)

conf 옵션을 테스트하기 위해 Wireshark를 사용하여 상태나 OS 정보를 검색할 수 있습니까?

답변1

참조 ntpd 구현은 프로그램을 통해 많은 구현 변수를 노출합니다.ntpq(그리고ntpdc이는 저자만이 높이 평가하는 것입니다.) 이는 특수 NTP 패킷에서 제어 프로토콜을 사용합니다. 제어 채널이 ntpd 구성을 변경할 수 있지만 구성 파일을 원하는 수의 호스트에 자동으로 배포할 수 있는 현대에서는 거의 사용되지 않습니다.

ntpd 유지 관리의 위험은 주로 다음과 같습니다.스푸핑된 주소에 대한 IP 증폭 방지, 네트워크의 승인되지 않은 IP 주소 변경으로부터 시간 동기화 구성을 보호합니다.

항상 그렇듯이 패치를 유지하면 일부 결함이 완화됩니다. "monlist" 기능을 통한 증폭 공격으로 인해CVE-2013-5211. 이는 몇 년 전에 업데이트되었어야 했지만 다음 사항을 확인하세요.모두귀하의 호스트는 지원되는 배포판에 있으며 관리자로부터 관심을 받습니다.

monlist에 대한 모든 관심으로 인해 이를 쉽게 검색할 수 있는 몇 가지 도구가 탄생했습니다. 예를 들어,nmap 스크립트 ntp-monlist.

전체 기능 목록은 다음과 같습니다.ntpq에 대해 문서화된 명령. 위키의 자체 선택 구성에 있는 해당 행은 noquery모든 ntpq 쿼리를 완전히 거부하는 것과 다릅니다. 시간 서비스를 계속 실행합니다. 예를 들어 해당 nmap 스크립트는 아무것도 반환하지 않습니다. 이와 대조적으로 nomodfy구성을 변경하는 명령만 제어하는 ​​액세스 규칙이 있습니다. 분명히 nomodify엄격하게 제한되어야 하며 가능하면 localhost로만 제한해야 합니다.

여러분이 선호하는 disto 패키지 등 다른 곳의 예제 구성과 비교해 보세요.RHEL 7의 ntp.conf이를 액세스 제어의 시작점으로 제안합니다.

# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default nomodify notrap nopeer noquery
    
# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
    
restrict 127.0.0.1 
restrict ::1
    
# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
    
# Disable the monitoring facility to prevent amplification attacks using ntpdc  
# monlist command when default restrict does not include the noquery flag. See
# CVE-2013-5211 for more details.
# Note: Monitoring will not be disabled with the limited restriction flag.
disable monitor

지금쯤 ntpd가 패치되었더라도 monlist 완화에 유의하세요. 또한 원격 호스트의 기본값은 쿼리하거나 수정할 수 없습니다. 약간만 수정하면 NTP 호스트가 공용 인터넷을 제공할 준비가 될 수 있습니다.

당연히 원하는 ntp.conf가 무엇인지 알고 나면 이를 배포하십시오. NTP 서버 구성을 자동화하고 모든 호스트의 템플릿 이미지에 합리적인 구성을 가져옵니다.

이 모든 monlist 토론은 ntp를 통한 OS 및 플랫폼 식별에 대한 원래 질문을 다루지 않습니다. ntpq 문서에 따르면 해당 빌드 정보는 readvar제어 명령을 통해 시스템 변수에 나타날 수 있습니다. 마찬가지로 원격 서버에: ntpq -c readvar time.example.net. 여기서 디코딩해야 할 구현 세부 사항이 있지만 문제의 NTP 호스트가 어떤 연결 ID인지와 같습니다.

개인적으로 나는 ntpd에 대한 빌드 정보 노출에 대해 별로 걱정하지 않습니다. 누군가 내 ntpd가 최신 상태이고 일부 상태 시스템이 이를 가지고 할 수 있는 일이 별로 없다는 것을 알게 됩니다. 공격자는 증폭을 기대하면서 가능한 모든 호스트에 위조된 NTP 패킷을 뿌리게 됩니다.

관련 정보