Zoeken op website

Hoe NTP-server en -client op Debian te installeren en configureren


Network Time Protocol (NTP) biedt bedrijven een unieke mogelijkheid om de klokken van alle systemen binnen het bedrijf te synchroniseren. Tijdsynchronisatie is om vele redenen belangrijk, variërend van tijdstempels van applicaties tot beveiliging en correcte logboekvermeldingen.

Wanneer de systemen van een organisatie allemaal verschillende kloktijden hanteren, wordt het vanuit het oogpunt van probleemoplossing erg moeilijk om te bepalen wanneer en onder welke omstandigheden een bepaalde gebeurtenis zich zou kunnen voordoen.

NTP biedt een eenvoudige manier om ervoor te zorgen dat alle systemen de juiste tijd aanhouden, wat op zijn beurt de last voor beheerders/technische ondersteuning aanzienlijk kan vereenvoudigen.

NTP werkt op basis van synchronisatie met referentieklokken, ook bekend als ‘stratum 0‘ servers. Alle andere NTP-servers worden dan een strata-server van een lager niveau, afhankelijk van hoe ver ze verwijderd zijn van een referentieserver.

Het begin van de NTP-keten is een stratum 1 server die altijd direct verbonden is met een stratum 0 referentieklok. Vanaf hier zijn strata-servers op een lager niveau via een netwerkverbinding verbonden met een server op een hoger strata-niveau.

Raadpleeg het onderstaande diagram voor een duidelijker concept.

Hoewel het opzetten van een stratum 0- of stratum 1-server mogelijk is, is het duur om dit te doen en daarom zal deze handleiding zich concentreren op het instellen van servers in lagere strata.

Tecmint heeft een basishostconfiguratie van NTP via de volgende link:

  1. Hoe tijd te synchroniseren met NTP-server

Waar deze handleiding anders zal zijn, is dat in plaats van dat alle hosts op het netwerk query's uitvoeren naar openbare NTP-servers, één (of, beter gezegd, meerdere) server(s) contact zal opnemen met het openbare NTP-systeem en vervolgens tijd zal verstrekken aan alle hosts binnen de lokaal netwerk.

Een interne NTP-server is vaak ideaal om netwerkbandbreedte te besparen en om wat meer beveiliging te bieden via NTP-beperkingen en cryptografie. Om te zien hoe dit verschilt van het eerste diagram, zie het tweede diagram hieronder.

Stap 1: Installatie van NTP-server

1. De eerste stap bij het opzetten van een interne NTP-structuur is het installeren van de NTP-serversoftware. Het softwarepakket in Debian genaamd ‘NTP’ bevat momenteel alle serverhulpprogramma's die nodig zijn om een NTP-hiërarchie op te zetten. Zoals bij alle tutorials over systeemconfiguratie wordt er uitgegaan van Root- of sudo-toegang.

apt-get install ntp
dpkg --get-selections ntp          [Can be used to confirm NTP is installed]
dpkg -s ntp                        [Can also be used to confirm NTP is installed]

Stap 1: Configuratie van NTP-server

2. Zodra NTP is geïnstalleerd, is het tijd om te configureren op welke hogere stratum-servers de tijd moet worden opgevraagd. Het configuratiebestand voor NTP wordt opgeslagen onder ‘/etc/ntp.conf’ en kan met elke teksteditor worden gewijzigd. Dit bestand bevat de volledig gekwalificeerde domeinnamen van de servers op een hoger niveau, de beperkingen die voor deze NTP-server zijn ingesteld en eventuele andere speciale parameters voor hosts die deze NTP-server opvragen.

Om het configuratieproces te starten, moeten de servers op een hoger niveau worden geconfigureerd. Debian zal standaard de Debian NTP-pool in het configuratiebestand plaatsen. Deze zijn prima voor de meeste doeleinden, maar een beheerder kan NIST bezoeken om bepaalde servers te specificeren of om alle servers van NIST op een round robin-manier te gebruiken (voorgestelde methode door NIST).

Voor deze tutorial worden specifieke servers geconfigureerd. Het configuratiebestand is opgedeeld in enkele hoofdsecties en is standaard geconfigureerd voor IPv4 en IPv6 (als u IPv6 wilt uitschakelen, wordt dit later vermeld). Om het configuratieproces te starten, moet het configuratiebestand worden geopend met een teksteditor.

nano /etc/ntp.conf

De eerste paar secties (driftfile, statsdir en statistics) zijn prima ingesteld op de standaardwaarden. Het volgende gedeelte bevat de servers op een hoger niveau via welke deze server tijd moet aanvragen. De syntaxis voor elk serveritem is heel eenvoudig:

server <fully qualified domain name> <options>
server time.nist.gov iburst â     [sample entry]

Normaal gesproken is het een goed idee om uit meerdere hogere strata-servers in deze lijst te kiezen. Deze server zal alle servers in de lijst doorzoeken om te bepalen welke het meest betrouwbaar is. De servers voor dit voorbeeld zijn verkregen van: http://tf.nist.gov/tf-cgi/servers.cgi.

Stap 3: Configuratie van NTP-beperkingen

3. De volgende stap is het configureren van NTP-beperkingen. Deze worden gebruikt om hosts toe te staan of niet toe te staan om te communiceren met de NTP-server. De standaardinstelling voor NTP is servicetijd voor iedereen, maar configuratie op zowel IPv4- als IPv6-verbindingen is niet toegestaan.

Deze server wordt momenteel alleen gebruikt op een IPv4-netwerk, dus IPv6 is op twee manieren uitgeschakeld. Het eerste dat werd gedaan om IPv6 op de NTP-server uit te schakelen, was het wijzigen van de standaardinstellingen waarmee de daemon start. Dit werd bereikt door de regel in ‘/etc/default/ntp‘ te wijzigen.

nano /etc/default/ntp
NTPD_OPTS='-4 -g' [Add the ' -4 ' to this line to tell NTPD to only listen to IPv4]

Terug in het hoofdconfiguratiebestand (/etc/ntp.conf) wordt de NTP-daemon automatisch geconfigureerd om tijd te delen met alle IPv4/6-hosts, maar staat configuratie niet toe. Dit is te zien aan de volgende twee regels:

NTPD werkt op basis van toegestaan, tenzij geweigerd. Omdat IPv6 is uitgeschakeld, kan de regel ‘restrict -6’ worden verwijderd of van commentaar worden voorzien met een ‘ #

Dit verandert het standaardgedrag voor NTP om alle berichten te negeren. Dit lijkt misschien vreemd, maar blijf lezen, aangezien restrict-clausules zullen worden gebruikt om de toegang tot deze NTP-server te verfijnen voor de hosts die toegang nodig hebben.

Nu moet de server weten wie de server om tijd mag vragen en wat ze nog meer met de NTP-server mogen doen. Voor deze server wordt een privénetwerk van 172.27.0.0/16 gebruikt om de restrictieregel op te bouwen.

Deze regel informeert de server om elke host uit het 172.27.0.0/16 netwerk tijdelijk toegang te geven tot de server. De parameters na het masker helpen bepalen wat een van de hosts in dit netwerk kan doen bij het opvragen van de server. Laten we even de tijd nemen om elk van deze beperkingsopties te begrijpen:

  1. Beperkt: geeft aan dat als een client misbruik maakt van de snelheidscontrole voor het aantal pakketten, de pakketten door de server worden verwijderd. Als het Kiss of Death-pakket is ingeschakeld, wordt het teruggestuurd naar de misbruikende host. De tarieven kunnen door een beheerder worden geconfigureerd, maar hier worden de standaardwaarden aangenomen.
  2. KOD: Kus des doods. Als een host de limiet van pakketten naar de server overtreedt, zal de server reageren met een KoD-pakket naar de overtredende host.
  3. Notrap: controleberichten voor weigermodus 6. Deze besturingsberichten worden gebruikt voor programma's voor logboekregistratie op afstand.
  4. Nomodify: Voorkomt ntpq- en ntpdc-query's die de configuratie van de server zouden wijzigen, maar informatieve queries zijn nog steeds toegestaan.
  5. Noquery: deze optie voorkomt dat hosts de server om informatie vragen. Zonder deze optie kunnen hosts bijvoorbeeld ntpdc of ntpq gebruiken om te bepalen waar een bepaalde tijdserver zijn tijd vandaan haalt, of andere peer-tijdservers waarmee deze mogelijk communiceert.