Göm menyn

TDDI41 Grundläggande systemadministration

NTP - Network Time Protocol

Det spelar ofta rätt stor roll om man vet vad klockan är. En del händelser går att ordna genom att bara se hur många klockcykler som gått sedan systemet startade, men i väldigt många andra fall är det relevant med tidsstämplar som går att jämföra system emellan. Om man till exempel vill jämföra loggfiler, utföra någon viss handling vid en viss tid, eller kontrollera om certifikats giltighetstid har gått ut, är det högst relevant.

Att distribuera extremt precisa tidsuppgifter på ett effektivt sätt över nätverk med fördröjningar, och i system som inte utför allt på ett ögonblick är såklart inte ett trivialt problem. Detta utöver frågan om vad som egentligen är rätt tid att distribuera. NTP är ett förhållandevis uråldrigt protokoll som tar sig an denna uppgift. Ni kan läsa mer om detta på wikipedias sida om NTP, eller i RFC 5905 (standarddokumentet för NTP v4). Gör det så att ni får en överblick (ni behöver inte kunna alla detaljer i standarden)! Lite vägledning ges av frågorna nedan.

Som ni inser har tidsstämplar rätt stora säkerhetsimplikationer. NTP litar, i likhet med många gamla protokoll då internet var mindre och snällare, i rätt hög utsträckning på data från omvärlden. Ett nytillskott i standardfloran (2020) är Network Time Security (se RFC 8915) som försöker införa ett säkra kommunikations sätt för NTP . Detta är bredvidläsning för den intresserade.

Inlämning: Beskriv kortfattat (och i era egna ord)
  1. Varför NTP är stratifierat (har strata, som på engelska heter stratum)? Varför talar man inte bara direkt med någon referensserver?
  2. En NTP-klient brukar inte bara ändra systemklockan till en viss tid direkt, utan ökar/minskar hastigheten så att man når målet lite mjukare. Varför?
  3. Kör ntpq -p från en terminal på en IDA-maskin/thinlinc. Förklara vad de olika kolumnerna betyder, och hur ska man tolka att det finns flera rader i tabellen.

Konfiguration av NTP

I denna del av labben ska ni installera en NTP-server på er router (fundera gärna på varför), och se till att era klienter får sin tid därifrån. Det kan vara värt att läsa på till exempel om ntp (programmet), ntpq och ntp.conf. Som vanligt finns det relevanta paket, och man-sidor.

Krav:
  1. Klienterna ska använda routern som NTP-server (antingen explicit, eller genom att lyssna på broadcasts från servern).
  2. Routern ska få tid via se.pool.ntp.org.
  3. Ingen peer får uppdatera routerns klocka!

Inlämning: Relevanta konfigurationsfiler, med eventuella kommentarer om val (där det var möjligt).

Testning och redovisning

Kör ntpq -p på en av klienterna.

Inlämning: Bifoga och förklara utdata! Hur ser man på detta utdata att er output i någon mening är vettig relativt kraven?

Skriv automatiska tester som visar åtminstone att

  • konfigurationen ovan (av routern) är korrekt
  • konfigurationen ovan (av klienter) är korrekt
  • att servern svarar på queries
  • att servern till slut ger tid med någorlunda vettiga marginaler (fundera på vad detta innebär!)

Demonstrera för er labbass, och visa att testerna fungerar.

Skicka sedan innan svar på frågorna, era tester, samt tillräcklig information för att kunna sätta upp ett system identiskt med det ni satt upp (förslagsvis genom en beskrivande text, eller konfigurationsfiler).


Sidansvarig: Anders Fröberg
Senast uppdaterad: 2021-09-03