Hvordan NTP fungerer
Segals lov sier
En mann med klokke vet hva klokka er . En mann med to klokker er aldri sikker.
Datavitenskapsmann David L. Mills opprettet NTP tidlig på 1980-tallet for å synkronisere datamaskinklokker til en standard tidsreferanse. Siden begynnelsen av NTP, en gruppe frivillige med NTP-bassengprosjektet har opprettholdt en stor, offentlig tilgjengelig «virtuell klynge av tidsservere som gir pålitelig brukervennlig NTP-tjeneste for millioner av klienter» over hele verden for mange Linux-distribusjoner og nettverksapparater.
Som beskrevet på NTP .org, NTP fungerer på en hierarkisk måte ved å overføre tid fra ett lag til et annet. For eksempel fungerer Stratum 0 som en referanseklokke og er den mest nøyaktige og høyeste presisjonstidserveren (f.eks. atomur, GPS-klokke og radioklokke .) Stratum 1-servere tar seg tid fra Stratum 0-servere og så videre opp til Stratum 15; Stratum 16 cl ocks blir ikke synkronisert med noen kilde. Tiden til en klient er etablert gjennom utveksling av pakker med en eller flere stratum-servere. Disse pakkene setter tidsstempler på hver melding, og tiden det tar å overføre meldingene er faktorer i algoritmen for å etablere konsensus for tiden som skal være på klienten.
NTP kan gi en nøyaktig tidskilde gjennom konsensus med flere inngangsservere. Det kan også identifisere hvilke tilgjengelige tidsservere som er unøyaktige. En utfordring er at NTP ble bygget i en tid da internettmiljøet var vennligere. Under oppstarten av NTP var NTP-serverne ikke opptatt av brukerbekreftelse. På begynnelsen av 1980-tallet var det vanlig at NTP-servere var offentlig tilgjengelige slik en ressursutvikler kunne bruke til å feilsøke og bekrefte sin egen NTP-løsning.
Standardprotokollen for NTP er User Datagram Protocol (UDP). Denne designbeslutningen skapte muligheter for misbruk. UDP, som er tilkoblingsfri, er en best mulig innsatsprotokoll og derfor mer utsatt for spoofing og tap av pakker enn Transmission Control Protocol (TCP). Mens frivillige fra NTP-bassengprosjektet har fortsatt å fremme NTP, er motivasjonen for mange nettverksadministratorer og bedriftseiere til å lappe sitt eget utstyr ikke like sterk. Siden oppstarten har NTP-nettverksprotokollen blitt integrert i utallige systemer, hvorav mange ikke har blitt lappet og kan kjøre kode som er 20 revisjoner gammel eller mer.
Angrep relatert til NTP-sikkerhetsproblemer
Cory Doctorow skrev nylig om det potensielle nedfallet av utdatert NTP for Boing / Boing:
NTP er hvordan praktisk talt alle datamaskiner du kommuniserer med holder klokken nøyaktig, noe som er en funksjon som er så grunnleggende for fungerer på internett slik at det ikke kan overvurderes … Dessuten hadde sårbarheter i NTP gjort internettets mange tidsservere til tvangsmultiplikatorer for Denial of Service-angrep, noe som bare straffet angrep til nesten ustoppelige. .
Metoden som brukes for nylige DDoS-angrep, er ikke avhengig av sårbarheter, men dårlig konfigurasjon. NTP-tjenester svarer på en forespørsel om en liste over overvåkede servere. En enkelt liten forespørsel med en falsk kilde kan generere en liste med 600 servere og sendes til et mål. Selv om det ikke er noen sårbarhet, når hundrevis eller tusenvis av disse serverne blir omdirigert til et uvitende mål, bryr seg ikke ofrene om semantikken i problemet som forårsaker smerte. de ønsker bare lindring.
Tidssynkronisering på systemer, eller mangel på disse, kan være en betydelig medvirkende faktor til sårbarheter som kan kompromittere systemets grunnleggende funksjoner. I tillegg til NTP-misbruk som bidrar til DDoS-angrep, mangler av tidssynkronisering i et nettverk skaper en mulighet for repriseangrep (dvs. avspillingsangrep) som involverer falsk eller ondskapsfull gjentatt forsinkelse av en autentisk dataoverføring.
For eksempel kan et repriseangrep oppstå når en bruker prøver å bevise identitet til en annen bruker. En ondsinnet aktør i midten vil fange opp meldingen og forhindre at den kommer til sitt tiltenkte mål. Den ondsinnede brukeren sender deretter en forespørsel om identitetsbekreftelse og inkluderer stjålet bevis som en validering. tid ikke synkroniseres, kan vinduet som utveksling er tillatt økes utover det som anses som trygt og tillater forstyrrelse. Som et resultat kan gyldige brukere bli lurt til å tro at de har vellykket bekreftet identiteten til en bedrager som utgjør en legitim bruker. For å være rettferdig er denne typen replay-angrep uvanlig og ekstremt utfordrende å utføre med suksess uten tilgang til nettverket, kommunikasjonsstien og en kompromittert maskin i den banen.
Mange sikkerhetseksperter, som Shaun Kelly , har bemerket at NTP har blitt brukt til å manipulere logger og endre tiden på et datasystem, og endre hendelsesforløpet.Når klokker ikke synkroniseres, har nettverksanalytikere mye vanskeligere å utføre loggkorrelasjon på tvers av forskjellige systemer. Manipuleringen av NTP kan gjøre identifikasjonen av nettverksaktiviteter og hendelsesforløp som fører til et angrep mye vanskeligere å finne ut.
Andre applikasjoner som kan være i fare fordi tiden ikke fungerer som den skal, inkluderer høyhastighets trading- og sikkerhetskameraer. Mange tidssensitive krypteringsalgoritmer som involverer nøkkelutveksling og tokens er også i fare på grunn av NTP-svakheter.
NTP Best Practices
Resten av dette innlegget beskriver beste fremgangsmåter for å konfigurere din egen NTP-server og be om en offentlig NTP-server.
Bruk Public NTP for eksterne verter. bygger evner, tjenester eller andre innebygde plattformer som er ment å distribueres utenfor bedriften, kan nettverksadministratorer vurdere å be om en offentlig NTP-server fra bassenget av tilgjengelige servere som er nevnt tidligere.
Det er viktig å merke seg at de fleste av de offentlige NTP-serverne spesifiserer regler for engasjement. Hvis en bedrift har flere enheter i bedriften som skal bruke NTP, vil det være fornuftig å sette opp sitt eget hierarki som skal synkroniseres med i stedet for å konkurrere om tilgang til de offentlig tilgjengelige serverne.
Konfigurer din egen interne NTP hierarkisk tjeneste for nettverket ditt. Det er mulig å kjøpe Stratum 1 eller Stratum 0 NTP-apparater for å bruke internt til mindre enn kostnaden for en typisk server. Det er også mulig å sette opp en privat NTP-server til en veldig lav kostnad. Muligheten for å sette opp en kommersiell NTP-server (COTS) er bevist i et nylig forsøk på å konfigurere en Raspberry Pi-datamaskin som en Stratum-1-server. Hvis du bestemmer deg for å konfigurere din egen, kan du vurdere følgende beste fremgangsmåter:
- Standardiser til UTC-tid. Innen en bedrift, standardiser alle systemene til koordinert universell tid (UTC). Standardisering til UTC forenkler loggkorrelasjonen i organisasjonen og med eksterne parter, uansett hvilken tidssone enheten som synkroniseres ligger i.
- Sikring av nettverkets tidstjeneste. Begrens kommandoene som kan brukes på stratum-serverne. Ikke tillat offentlige spørsmål om stratum-serverne. Tillat kun kjente nettverk / verter å kommunisere med sine respektive stratum-servere.
- Vurder bedriftens behov for kryptografi. Mange administratorer prøver å sikre nettverkene sine med kryptert kommunikasjon og kryptert autentisering. Jeg vil innføre en advarsel her, for selv om det er kryptografiske tjenester tilknyttet NTP for å sikre NTP-kommunikasjon, innfører bruk av kryptering flere kilder for problemer, for eksempel å kreve nøkkeladministrasjon, og det krever også en høyere beregningsomkostning.
- Husk Segals lov. Ideelt sett fungerer det å ha tre eller flere Stratum 0- eller Stratum 1-servere og bruke disse serverne som primære mestere. Husk Segals lov: å ha to NTP servere gjør det vanskelig å vite hvilken som er nøyaktig. To Stratum 0-servere vil gi en mer nøyaktig tidsstempel fordi de bruker en tidskilde som anses som endelig.
Tilstedeværelsen av tre eller flere tidskilder vil gjøre det mulig for nettverket å opprettholde nøyaktig tid selv om en av de primære mestrene mislykkes. Ideelt sett ville NTP-servere være lokalisert på tre geografisk forskjellige steder. Denne gruppen primære mestere vil være kilden til tiden for bedriften. De ville bli betraktet som skjulte mestere fordi de bare ville tilby tjenester til de sekundære stratum-serverne. Denne konfigurasjonen vil tillate disse serverne å gi tid til samlokaliserte sekundære mestere som faktisk leverer tjenester til en organisasjon. De primære mestrene forblir skjulte og er kun tilgjengelig av NTP-infrastrukturen som tilbyr tjenester andre steder. Denne forsyningskjeden bør tillate deg å gi nøyaktig tid i hele organisasjonen din og ha flere kilder som bekrefter en nøyaktig tidskilde.
Steder som har flere enheter som trenger å få synkronisert tid, kan legge til flere Stratum 2- eller Stratum 3–servere og få dem til å stole på sekundære mestere så vel som hverandre for å distribuere belastningen på et system ytterligere og tilby tjenester til en større gruppe NTP-klienter.
Ved å sette opp en intern NTP-tjeneste på den siste revisjonen av stabil kode og standardisering av bruken, er det vanskeligere å kooperere levedyktigheten til tidsbaserte nettverksangrep eller prosesser som er avhengig av tid. Identifiseringen av rekkefølgen av hendelser i et kompromiss blir lettere fordi tidene i loggene nå kan være registrerte systemer. For rettshåndhevelse og andre etterforskningsbyråer kan nøyaktige NTP-tjenester være veldig konstruktive i å evaluere bevis og sekvensere en kjede av hendelser.
Innpakning og blikk fremover
Etter hvert som angrep blir mer sofistikerte, finner vårt team av nettverksanalytikere i CERT i økende grad internettvendte tjenester som ikke er godt utplassert i et nettverk. Langston skrev i sitt nylige innlegg om DNS Best Practices, mange av disse tjenestene utgjør grunnlaget for sikkerhet og drift av interne og eksterne nettverksapplikasjoner.
Dette er det siste i en serie blogginnlegg som gir best praksis for disse grunnleggende strukturene for å hjelpe offentlige etater og andre virksomheter med å løse skjulte kilder til sårbarheter i deres nettverk. Teamledelsen vår, Rachel Kartch, publiserte det første innlegget i denne serien, Distribuert Denial of Service Attacks: Four Best Practices for Prevention and Respons.