Hur NTP fungerar
Segals lag säger
En man med en klocka vet vad klockan är . En man med två klockor är aldrig säker.
Datavetare David L. Mills skapade NTP i början av 1980-talet för att synkronisera datorklockor till en standardtidsreferens. Sedan starten av NTP skapade en grupp volontärer med NTP-poolprojektet har upprätthållit ett stort, offentligt tillgängligt ”virtuellt kluster av tidsservrar som ger tillförlitlig lättanvänd NTP-tjänst för miljontals kunder” runt om i världen för många Linux-distributioner och nätverksapparater.
Som detaljerat på NTP .org, NTP fungerar på ett hierarkiskt sätt genom att överföra tid från ett stratum till ett annat. Till exempel fungerar Stratum 0 som en referensklocka och är den mest exakta och högsta precisionstidservern (t.ex. atomur, GPS-klockor och radioklockor .) Stratum 1-servrar tar sin tid från Stratum 0-servrar och så vidare upp till Stratum 15; Stratum 16 cl ocks synkroniseras inte med någon källa. Tiden på en klient fastställs genom utbyte av paket med en eller flera stratum-servrar. Dessa paket sätter tidsstämplar på varje meddelande och den tid det tar att sända meddelandena är faktorer i algoritmen för att skapa enighet för tiden som ska vara på klienten.
NTP kan ge en exakt tidskälla genom konsensus med flera ingångsservrar. Det kan också identifiera vilka tillgängliga tidsservrar som är felaktiga. En utmaning är att NTP byggdes under en tid då internetgemenskapen var vänligare. Under starten av NTP var NTP-servrarna inte bekymrade över användarverifiering. I början av 1980-talet var det vanligt att NTP-servrar var allmänt tillgängliga eftersom en resursutvecklare kunde använda för att felsöka och bekräfta sin egen NTP-lösning.
Standardprotokollet för NTP är User Datagram Protocol (UDP). Detta designbeslut skapade möjligheter till missbruk. UDP, som är anslutningsfritt, är ett bästa ansträngningsprotokoll och därför mer mottagligt för falska och förlorande paket än Transmission Control Protocol (TCP). Medan volontärer för NTP-poolprojekt har fortsatt att utveckla NTP, är motivationen för många nätverksadministratörer och företagsägare att lappa sin egen utrustning inte lika stark. Sedan starten har NTP-nätverksprotokollet integrerats i otaliga system, av vilka många inte har lappats och kan köra kod som är 20 versioner gamla eller mer.
Attacker relaterade till NTP-sårbarheter
Cory Doctorow skrev nyligen om det potentiella nedfallet av föråldrad NTP för Boing / Boing:
NTP är hur praktiskt taget varje dator du interagerar med håller sin klocka exakt, vilket är en funktion så grundläggande för fungerar på Internet så att det inte kan överdrivas … Dessutom har sårbarheter i NTP förvandlat Internets många tidsservrar till kraftmultiplikatorer för Denial of Service-attacker, vilket bara gjort att straffa attacker till nästan ostoppbara. .
Metoden som används för senaste DDoS-attacker är inte beroende av sårbarheter utan dålig konfiguration. NTP-tjänster svarar på en begäran om en lista med övervakade servrar. En enda liten begäran med en falsk källa kan generera en lista med 600 servrar och skickas till ett mål. Även om det inte finns någon sårbarhet, när hundratals eller tusentals av dessa servrar omdirigeras till ett omedvetet mål bryr sig offren inte om semantiken i problemet som orsakar smärta. de vill bara ha lättnad.
Tidsynkronisering på system eller brist på sådana kan vara en betydande bidragande faktor till sårbarheter som kan äventyra systemets grundläggande funktioner. Förutom NTP-missbruk som bidrar till DDoS-attacker, saknas tidssynkronisering i ett nätverk skapar en möjlighet för omspelningsattacker (dvs. uppspelningsattacker) som involverar falsk eller illvillig upprepad fördröjning av en autentisk dataöverföring.
Till exempel kan en omspelningsattack inträffa när en användare försöker för att tillhandahålla bevis på identitet till en annan användare. En skadlig skådespelare i mitten skulle fånga upp meddelandet och hindra det från att nå sitt avsedda mål. Den skadliga användaren skickar sedan en begäran om identitetsbekräftelse och inkluderar det stulna beviset som en validering. om tiden inte synkroniseras kan fönstret som utbytet tillåts ökas utöver vad som anses säkert och tillåter störningar. Som ett resultat kan giltiga användare luras att tro att de har lyckats bekräftade identiteten på en bedragare som poserar som en legitim användare. I rättvisans namn är denna typ av omspelningsattack ovanlig och extremt utmanande att utföra framgångsrikt utan tillgång till nätverket, kommunikationsvägen och en komprometterad maskin i den vägen.
Många säkerhetsexperter, som Shaun Kelly , har noterat att NTP har använts för att manipulera loggar och ändra tiden i ett datorsystem, och förändrat händelseföljden.När klockor inte synkroniseras har nätverksanalytiker mycket svårare att utföra loggkorrelation mellan olika system. Manipuleringen av NTP kan göra identifieringen av nätverksaktiviteter och händelseförlopp som leder till en attack mycket svårare att hitta.
Andra applikationer som skulle vara i fara eftersom tiden inte fungerar korrekt inkluderar höghastighetshandels- och säkerhetskameror. Många tidskänsliga krypteringsalgoritmer som involverar nyckelutbyten och tokens är också i fara på grund av NTP-svagheter.
NTP Best Practices
I resten av detta inlägg beskrivs bästa metoder för att konfigurera din egen NTP-server och begära en offentlig NTP-server.
Använd Public NTP för externa värdar. bygger kapaciteter, tjänster eller andra inbäddade plattformar som är avsedda att distribueras utanför företaget, kan nätverksadministratörer överväga att begära en offentlig NTP-server från poolen av tillgängliga servrar som nämnts tidigare.
Det är viktigt att notera att de flesta av de offentliga NTP-servrarna anger regler för engagemang. Om ett företag har flera enheter inom företaget som använder NTP, vore det meningsfullt att ställa in sin egen hierarki att synkronisera med istället för att konkurrera om åtkomst till de offentligt tillgängliga servrarna.
Konfigurera din egen Intern NTP hierarkisk tjänst för ditt nätverk. Det är möjligt att köpa Stratum 1 eller Stratum 0 NTP-apparater för att använda internt till mindre än kostnaden för en typisk server. Det är också möjligt att ställa in en privat NTP-server till en mycket låg kostnad. Möjligheten att ställa in en reklamfilm (COTS) NTP-server framgår av ett nyligen genomfört försök att konfigurera en Raspberry Pi-dator som en Stratum-1-server. Om du bestämmer dig för att konfigurera din egen, överväga följande bästa metoder:
- Standardisera till UTC-tid. Inom ett företag, standardisera alla system till samordnad universell tid (UTC). Standardisering till UTC förenklar loggkorrelation inom organisationen och med externa parter oavsett vilken tidszon enheten som synkroniseras ligger i.
- Säkerställer nätverkets tidstjänst. Begränsa kommandona som kan användas på stratum-servrarna. Tillåt inte offentliga frågor om stratum-servrarna. Tillåt endast kända nätverk / värdar att kommunicera med sina respektive stratum-servrar.
- Tänk på företagets behov av kryptografi. Många administratörer försöker säkra sina nätverk med krypterad kommunikation och krypterad autentisering. Jag vill introducera en försiktighetsanmärkning här, för även om det finns kryptografiska tjänster associerade med NTP för att säkra NTP-kommunikation, använder kryptering fler källor för problem, som att kräva nyckelhantering, och det kräver också högre beräkningsomkostnader.
- Kom ihåg Segals lag. Helst skulle det fungera att ha tre eller flera Stratum 0 eller Stratum 1 servrar och använda dessa servrar som primära mästare. Kom ihåg Segals lag: att ha två NTP servrar gör det svårt att veta vilken som är korrekt. Två Stratum 0-servrar skulle ge en mer exakt tidsstämpel eftersom de använder en tidskälla som anses definitiv.
Närvaron av tre eller flera tidskällor skulle göra det möjligt för nätverket att upprätthålla korrekt tid även om en av de primära mästarna misslyckas. Helst skulle NTP-servrar placeras på tre geografiskt olika platser. Denna grupp av primära mästare skulle vara källan till tid för företaget. De skulle betraktas som dolda mästare eftersom de bara skulle tillhandahålla tjänster till de sekundära stratum-servrarna. Denna konfiguration skulle tillåta dessa servrar att ge tid till samlade sekundära mästare som faktiskt tillhandahåller tjänster till en organisation. De primära mastrarna förblir dolda och nås endast av NTP-infrastrukturen som tillhandahåller tjänster någon annanstans. Försörjningskedjan ska tillåta dig att ge korrekt tid i hela din organisation och ha flera källor som bekräftar en exakt tidskälla.
Platser som har fler enheter som behöver ha sin tid synkroniserade kan lägga till ytterligare Stratum 2- eller Stratum 3–servrar och låt dem förlita sig på sekundärmästarna såväl som på varandra för att ytterligare fördela belastningen på ett system och tillhandahålla tjänster till en större grupp NTP-klienter.
Genom att skapa en intern NTP-tjänst vid den senaste versionen av stabil kod och standardisering av dess användning är det svårare att kooperera livskraften för tidsbaserade nätverksattacker eller processer som är beroende av tid. Identifieringen av ordningen på händelserna i en kompromiss blir lättare eftersom tiderna i loggarna nu kan vara registrerade system. För brottsbekämpning och andra utredningsorgan kan exakta NTP-tjänster vara mycket konstruktiva för att utvärdera bevis och sekvensera en händelsekedja.
Att slå sig samman och se framåt
När attacker blir mer sofistikerade, hittar vårt team av nätverksanalytiker på CERT alltmer Internet-riktade tjänster som inte är väl distribuerade i ett nätverk. Langston skrev i sitt senaste inlägg om DNS Best Practices, många av dessa tjänster utgör grunden för säkerhet och drift av interna och externa nätverksapplikationer.
Detta är det senaste i en serie blogginlägg som erbjuder bästa metoder för dessa grundläggande strukturer för att hjälpa myndigheter och andra företag att ta itu med dolda källor till sårbarheter i deras nätverk. Vår teamledare, Rachel Kartch, publicerade det första inlägget i denna serie, Distribuerad Denial of Service Attacks: Four Best Practices for Prevention and Response.