Wéi ZÀit Synchronisatioun gouf sécher

Wéi ZÀit Synchronisatioun gouf sécher
Wéi sécherzestellen, datt d'ZÀit per se net lÀit, wann Dir eng Millioun grouss a kleng Apparater hutt, déi iwwer TCP / IP kommunizéieren? No all, all vun hinnen huet eng Auer, an der ZÀit muss fir all vun hinnen richteg sinn. Dëse Problem kann net ouni ntp ëmgoen.

Loosst eis fir eng Minutt virstellen, datt an engem Segment vun der industrieller IT Infrastruktur Schwieregkeeten sinn mat Synchroniséierung Servicer iwwer ZÀit. Direkt fÀnkt de Cluster Stack vun der Enterprise Software un ze falen, DomÀnen zerfallen, Masters a Standby Noden streiden ouni Erfolleg de Status Quo ze restauréieren.

Et ass och méiglech datt en UgrÀifer bewosst probéiert d'ZÀit duerch e MiTM oder DDOS Attack ze stéieren. An esou enger Situatioun kann alles geschéien:

  • Benotzerkont Passwierder wĂ€erten oflafen;
  • X.509 Certificaten wĂ€ert oflafen;
  • TOTP Zwee-Faktor Authentifikatioun wĂ€ert ophalen ze schaffen;
  • D'Backups ginn al ginn an de System lĂ€scht se;
  • DNSSec wĂ€ert briechen.

Et ass kloer datt all IT Departement un der zouverlÀsseg Operatioun vun ZÀitsynchroniséierungsservicer interesséiert ass, an et wier flott wann se zouverlÀsseg a sécher an der industrieller Operatioun wieren.

Break NTP a 25 Minutten

Netzwierkprotokoller - Millennials hunn eng Besonderheet, si waren veroudert a si fir nÀischt méi gutt, mee se ersetzen ass net sou einfach och wann eng kritesch Mass vun Enthusiaster a Finanzéierung cumuléiert ass.

D'Haaptrei Plainte iwwer klassesch NTP ass de Mangel u zouverlĂ€sseg Mechanismen fir gĂ©int Attacke vun Intruder ze schĂŒtzen. Verschidde Versuche goufen gemaach fir dĂ«se Problem ze lĂ©isen. Fir dĂ«st z'erreechen, hu mir als Ă©ischt e Pre-Shared Key (PSK) Mechanismus implementĂ©iert fir symmetresch SchlĂ«sselen auszetauschen.

Leider huet dës Method aus engem einfache Grond net bezuelt - et ass net gutt. Manuell Konfiguratioun ass op der Client SÀit erfuerderlech ofhÀngeg vum Server. Dëst bedeit datt Dir einfach net en anere Client esou einfach kënnt derbÀisetzen. Wann eppes um NTP-Server Ànnert, mussen all Clienten nei konfiguréiert ginn.

Duerno koumen se mat AutoKey, awer si hunn direkt eng Rei vu schlëmme SchwÀchen am Design vum Algorithmus selwer entdeckt a si hu missen opginn. D'Saach ass datt d'Somen nëmmen 32-Bit enthÀlt, et ass ze kleng an enthÀlt net genuch computational Komplexitéit fir e frontalen Attack.

  • SchlĂ«ssel ID - symmetresch 32-bĂ«ssen SchlĂ«ssel;
  • MAC (Message Authentifikatiounscode) - NTP Paketchecksum;

Autokey gëtt wéi follegt berechent.

Autokey=H(Sender-IP||Receiver-IP||KeyID||Cookie)

Wou H () eng kryptographesch Hashfunktioun ass.

Déi selwecht Funktioun gëtt benotzt fir d'Kontrollsum vu Pakete ze berechnen.

MAC=H(Autokey||NTP packet)

Et stellt sech eraus datt d'ganz Integritéit vu Packagechecken op der Authentizitéit vun de Cookien hÀnkt. Wann Dir se hutt, kënnt Dir den Autokey restauréieren an dann de MAC spoofen. Wéi och ëmmer, den NTP Server benotzt e Som wann se se generéieren. Dëst ass wou de Fang lÀit.

Cookie=MSB_32(H(Client IP||Server IP||0||Server Seed))

D'MSB_32 Funktioun schneit déi 5 bedeitendste Bits aus dem md32 Hash Berechnungsresultat of. De Client Cookie Ànnert sech net soulaang d'Serverparameter onverÀnnert bleiwen. Da kann den UgrÀifer nëmmen déi initial Zuel restauréieren a kënnen onofhÀngeg Cookien generéieren.

Als éischt musst Dir mam NTP-Server als Client verbannen a Cookien kréien. Duerno, mat enger brute Force Method, restauréiert den UgrÀifer déi initial Zuel no engem einfachen Algorithmus.

Algorithmus fir d'Berechnung vun der initialer Zuel z'attackéieren mat der brute-force Method.

   for i=0:2^32 − 1 do
        Ci=H(Server-IP||Client-IP||0||i)
        if Ci=Cookie then
            return i
        end if 
    end for

D'IP Adresse si bekannt, also alles wat bleift ass 2^32 Hashes ze kreéieren bis de erstallte Cookie mat deem vum NTP-Server entsprécht. Op enger regulÀrer Heemstatioun mat Intel Core i5 wÀert dëst 25 Minutten daueren.

NTS - nei Autokey

Et war onméiglech mat esou SécherheetslÀcher am Autokey opzemaachen, an 2012 ass et erschéngt eng nei Versioun Protokoll. Fir den Numm ze kompromittéieren, hu se décidéiert fir nei ze markéieren, sou datt Autokey v.2 Network Time Security genannt gouf.

Den NTS Protokoll ass eng Ausdehnung vun der NTP Sécherheet an ënnerstëtzt de Moment nëmmen den Unicast Modus. Et bitt e staarke kryptographesche Schutz géint Paketmanipulatioun, verhënnert Snooping, skaléiert gutt, ass resistent géint Netzwierkpaketverloscht, a resultéiert am mannsten PrÀzisiounsverloscht wÀrend der Verbindungssécherheet.

Eng NTS Verbindung besteet aus zwou Etappen dĂ©i mĂ©i niddereg Schichtprotokoller benotzen. Op Ă©ischt Op dĂ«ser Etapp sinn de Client an de Server sech iwwer verschidde Verbindungsparameter eens an austauschen Cookien mat SchlĂ«sselen mat all de begleedenden Dateset. Op dĂ©i zweet Op dĂ«ser Etapp fĂ«nnt dĂ©i aktuell geschĂŒtzt NTS Sessioun tĂ«scht dem Client an dem NTP Server statt.

Wéi ZÀit Synchronisatioun gouf sécher

NTS besteet aus zwee ënneschten Layer Protokoller: Network Time Security Key Exchange (NTS-KE), déi eng sécher Verbindung iwwer TLS initiéiert, an NTPv4, déi lescht Inkarnatioun vum NTP Protokoll. E bësse méi iwwer dëst ënnert.

Éischt Etapp - NTS KE

Op dëser Etapp initiéiert den NTP Client eng TLS 1.2/1.3 Sessioun iwwer eng separat TCP Verbindung mam NTS KE Server. WÀrend dëser Sessioun geschitt déi folgend.

  • D'Parteien bestĂ«mmen d'Parameteren AEAD Algorithmus fir dĂ©i zweet Stuf.
  • D'Parteien definĂ©ieren en zweeten Ă«nneschten Layer Protokoll, awer am Moment gĂ«tt nĂ«mmen NTPv4 Ă«nnerstĂ«tzt.
  • D'Parteien bestĂ«mmen d'IP Adress an den Hafen vum NTP Server.
  • NTS KE Server stellt Cookien Ă«nner NTPv4 eraus.
  • D'Parteien extrahĂ©ieren e Paar symmetresche SchlĂ«sselen (C2S an S2C) aus dem Cookiematerial.

DĂ«s Approche huet de grousse Virdeel datt d'ganz Belaaschtung fir geheim Informatioun iwwer Verbindungsparameter ze vermĂ«ttelen op de bewĂ€hrten an zouverlĂ©issege TLS Protokoll fĂ€llt. DĂ«st eliminĂ©iert de Besoin fir Är eege Rad fir eng sĂ©cher NTP Handshake nei ze erfannen.

Zweet Stuf - NTP ënner NTS Schutz

Am zweete Schrëtt synchroniséiert de Client sécher d'ZÀit mam NTP-Server. Fir dësen Zweck iwwerdréit et véier speziell Extensiounen (Extensiounsfelder) an der NTPv4 Paketstruktur.

  • D'Unique Identifier Extension enthĂ€lt eng zoufĂ€lleg Nonce fir Replay Attacken ze vermeiden.
  • NTS Cookie Extension enthĂ€lt ee vun den NTP Cookien, dĂ©i dem Client verfĂŒgbar sinn. Well nĂ«mmen de Client d'C2S an S2C symmetresch AAED SchlĂ«sselen huet, muss den NTP Server se aus dem Cookie Material extrahĂ©ieren.
  • NTS Cookie Placeholder Extension ass e Wee fir e Client fir zousĂ€tzlech Cookien vum Server ze froen. DĂ«s Extensioun ass nĂ©ideg fir sĂ©cherzestellen datt d'NTP Server Äntwert net vill mĂ©i laang ass wĂ©i d'Ufro. DĂ«st hĂ«lleft amplification Attacken verhĂ«nneren.
  • NTS Authenticator a VerschlĂ«sselte Extensioun Felder Extensioun enthĂ€lt den AAED Chiffer mam C2S SchlĂ«ssel, NTP Header, ZĂ€itstempel, an dĂ©i uewe genannten EF als Begleedungsdaten. Ouni dĂ«s Extensioun ass et mĂ©iglech ZĂ€itstempel ze spoofen.

Wéi ZÀit Synchronisatioun gouf sécher

Wann Dir eng Ufro vun engem Client kritt, verifizéiert de Server d'Authentizitéit vum NTP-Paket. Fir dëst ze maachen, muss hien d'Cookien entschlësselen, den AAED Algorithmus a Schlësselen extrahéieren. Nodeems Dir den NTP-Paket fir d'Gëltegkeet erfollegrÀich iwwerpréift huet, reagéiert de Server op de Client am folgende Format.

  • Eenzegaarteg IdentifizĂ©ierer Extensioun ass eng Spigelkopie vun der Client Ufro, eng Moossnam gĂ©int Replay Attacken.
  • NTS Cookie Extension mĂ©i Cookien fir d'Sessioun weiderzemaachen.
  • NTS Authenticator a verschlĂ«sselte Extensioun Felder Extensioun enthĂ€lt den AEAD Chiffer mat engem S2C SchlĂ«ssel.

DĂ©i zweet Handshake kann vill Mol widderholl ginn, den Ă©ischte SchrĂ«tt Ă«mgoen, well all Ufro an Äntwert dem Client zousĂ€tzlech Cookien gĂ«tt. DĂ«st huet de Virdeel datt dĂ©i relativ ressourceintensiv TLS Operatioune vu Rechen a PKI Daten iwwerdroe ginn duerch d'Zuel vun widderholl Ufroen gedeelt. DĂ«st ass besonnesch praktesch fir spezialisĂ©iert FPGA Timekeepers, wann all d'Haaptfunktioune kĂ«nnen a verschidde Funktiounen aus dem Feld vun der symmetrescher Kryptografie verpackt ginn, de ganze TLS Stack op en aneren Apparat transferĂ©iert.

NTPSec

Wat ass speziell un NTP? Trotz der Tatsaach, datt den Auteur vum Projet, Dave Mills, probĂ©iert sĂ€i Code sou gutt wĂ©i mĂ©iglech ze dokumentĂ©ieren, ass et e rare ProgrammĂ©ierer, deen d'Intricacies vun ZĂ€itsynchronisĂ©ierungsalgorithmen verstoen kann, dĂ©i 35 Joer al sinn. E puer vum Code gouf virun der POSIX Ära geschriwwe, an d'Unix API war dann ganz anescht wĂ©i dat wat haut benotzt gĂ«tt. ZousĂ€tzlech ass WĂ«ssen iwwer Statistike gebraucht fir d'Signal vu StĂ©ierungen op KamĂ©idi Linnen ze lĂ€schen.

NTS war net den Ă©ischte Versuch fir NTP ze fixĂ©ieren. Eemol UgrĂ€ifer gelĂ©iert hunn NTP Schwachstelle auszenotzen fir DDoS Attacken ze verstĂ€erken, gouf et kloer datt radikal Ännerunge gebraucht goufen. A wĂ€rend d'NTS-Entworf virbereet a finalisĂ©iert goufen, huet d'US National Science Foundation Enn 2014 drĂ©ngend e Subventioun fir d'ModernisĂ©ierung vum NTP verdeelt.

Den Aarbechtsgrupp gouf gefouert net vu jidderengem, mÀ Eric Steven Raymond - ee vun de Grënner a Piliere vun der Open Source Gemeinschaft an Auteur vum Buch Kathedral a Basar. Déi éischt Saach, déi den Eric a seng Frënn probéiert hunn, war den NTP Code vun der BitKeeper Plattform op Git ze réckelen, awer et huet net esou geklappt. De Projet Leader Harlan Stenn war géint dës Decisioun an d'Verhandlunge stoungen. Dunn gouf decidéiert de Projet Code ze Gabel, an NTPSec war gebuer.

Solid Erfahrung, inklusiv Aarbecht op GPSD, e mathemateschen Hannergrond an déi magesch FÀegkeet vum antike Code ze liesen - den Eric Raymond war genau den Hacker deen esou e Projet konnt zéien. D'Team huet e Code Migratioun Spezialist fonnt an an nëmmen 10 Wochen NTP néiergeloossop GitLab. D'Aarbechte ware voll amgaang.

D'Equipe vum Eric Raymond huet d'Aufgab genee esou ugeholl wéi den Auguste Rodin mat engem Steenblock. Andeems se 175 KLOC vum alen Code erofhuelen, konnten se d'AttackflÀch wesentlech reduzéieren andeems se vill SécherheetslÀcher zoumaachen.

Hei ass eng onkomplett Lëscht vun deenen, déi an der Verdeelung abegraff sinn:

  • OndokumentĂ©iert, veroudert, veroudert oder gebrach Refclock.
  • Onbenotzt ICS BibliothĂ©ik.
  • libopts/autogen.
  • Al Code fir Windows.
  • ntpdc.
  • Autokey.
  • Den ntpq C Code gouf am Python nei geschriwwe ginn.
  • De sntp/ntpdig C Code gouf am Python nei geschriwwe ginn.

ZousÀtzlech fir de Code ze botzen, hat de Projet aner Aufgaben. Hei ass eng deelweis Lëscht vun Leeschtungen:

  • Code Schutz gĂ©int Puffer Iwwerschwemmung gouf wesentlech verbessert. Fir Puffer Iwwerschwemmungen ze vermeiden, goufen all onsĂ©cher Stringfunktiounen (strcpy/strcat/strtok/sprintf/vsprintf/gets) mat sĂ©chere Versiounen ersat, dĂ©i PuffergrĂ©isstlimiten Ă«msetzen.
  • NTS ËnnerstĂ«tzung dobĂ€igesat.
  • Verbesserte ZĂ€itschrĂ«ttgenauegkeet zĂ©ngfalt andeems physesch Hardware verbĂ«nnt. DĂ«st ass wĂ©inst der Tatsaach datt modern Computeruhren vill mĂ©i genee ginn wĂ©i dĂ©i wann NTP gebuer gouf. DĂ©i grĂ©isste Beneficer vun dĂ«ser waren GPSDO an engagĂ©ierten ZĂ€it Radios.
  • D'Zuel vun de ProgrammĂ©ierungssprooche gouf op zwee reduzĂ©iert. Amplaz vu Perl, awk a souguer S Scripten, ass et elo alles Python. WĂ©inst dĂ«sem ginn et mĂ©i MĂ©iglechkeete fir Code Wiederverwendung.
  • Amplaz Nuddelen vun Autotools Scripten, huet de Projet ugefaang e Software Build System ze benotzen vuf.
  • AktualisĂ©iert a reorganisĂ©iert Projet Dokumentatioun. Aus enger widdersprĂ©chlecher an heiansdo archaescher Sammlung vun Dokumenter hu si eng ganz passabel Dokumentatioun erstallt. All Kommandozeilschalter an all KonfiguratiounsentitĂ©it huet elo eng eenzeg Versioun vun der Wourecht. ZousĂ€tzlech ginn Mann SĂ€iten a Webdokumentatioun elo aus de selwechte KĂ€rdateien erstallt.

NTPSec ass verfĂŒgbar fir eng Rei vu Linux Verdeelungen. Am Moment ass dĂ©i lescht stabil Versioun 1.1.8, fir Gentoo Linux ass et dĂ©i lescht lescht.

(1:696)$ sudo emerge -av ntpsec
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild   R    ] net-misc/ntpsec-1.1.7-r1::gentoo  USE="samba seccomp -debug -doc -early -gdb -heat -libbsd -nist -ntpviz -rclock_arbiter -rclock_generic -rclock_gpsd -rclock_hpgps -rclock_jjy -rclock_local -rclock_modem -rclock_neoclock -rclock_nmea -rclock_oncore -rclock_pps -rclock_shm -rclock_spectracom -rclock_trimble -rclock_truetime -rclock_zyfer -smear -tests" PYTHON_TARGETS="python3_6" 0 KiB
Total: 1 package (1 reinstall), Size of downloads: 0 KiB
Would you like to merge these packages? [Yes/No]

Chronie

Et gouf en anere Versuch den alen NTP duerch eng mĂ©i sĂ©cher Alternativ ze ersetzen. Chrony, am GĂ©igesaz zu NTPSec, ass aus dem Buedem geschriwwe ginn an ass entwĂ©ckelt fir zouverlĂ€sseg Ă«nner enger breeder Palette vu Konditiounen ze bedreiwen, dorĂ«nner onbestĂ€nneg Netzwierkverbindungen, deelweis NetzwierkverfĂŒgbarkeet oder Stau, an TemperaturĂ€nnerungen. ZousĂ€tzlech huet Chronie aner Virdeeler:

  • chrony kann d'System Auer mĂ©i sĂ©ier mat mĂ©i Genauegkeet synchronisĂ©ieren;
  • chrony ass mĂ©i kleng, verbraucht manner ErĂ«nnerung, an Zougang zu der CPU nĂ«mmen wann nĂ©ideg. DĂ«st ass e grousse Plus fir Ressourcen an Energie ze spueren;
  • chrony Ă«nnerstĂ«tzt Hardware ZĂ€itstempel op Linux, erlaabt extrem korrekt SynchronisĂ©ierung op lokalen Netzwierker.

Wéi och ëmmer, Chrony fehlt e puer vun de Funktiounen vum alen NTP, wéi Broadcast a Multicast Client / Server. ZousÀtzlech ënnerstëtzt klassesch NTP eng méi grouss Zuel vu Betribssystemer a Plattformen.

Fir d'Funktionalitéit vum Server an NTP-Ufroen un de Chronyd-Prozess auszeschalten, schreift just den Hafen 0 an der chrony.conf Datei. Dëst gëtt gemaach a FÀll wou et net néideg ass ZÀit fir NTP Clienten oder Peer z'erhalen. Zënter Versioun 2.0 ass den NTP-Serverport nëmmen op wann den Zougang erlaabt ass duerch eng erlaabt Direktiv oder e passende Kommando, oder en NTP Peer konfiguréiert ass, oder eng Emissiounsdirektiv benotzt gëtt.

De Programm besteet aus zwee Moduler.

  • chronyd ass e Service deen am Hannergrond leeft. Et kritt Informatioun iwwer den Ënnerscheed tĂ«scht der Systemuhr an dem externen ZĂ€itserver a passt d'lokal ZĂ€it un. Et implementĂ©iert och den NTP Protokoll a kann als Client oder Server handelen.
  • chronyc ass e Kommandozeil Utility fir Programm Iwwerwaachung a Kontroll. Benotzt fir verschidde Serviceparameter ze feinjustĂ©ieren, zum Beispill erlaabt Iech NTP-Server ze addĂ©ieren oder ze lĂ€schen wĂ€rend Chronyd weider leeft.

ZĂ«nter Versioun 7 vu RedHat Linux benotzt chrony als ZĂ€itsynchronisĂ©ierungsservice. De Package ass och verfĂŒgbar fir aner Linux Verdeelungen. DĂ©i lescht stabil Versioun ass 3.5, bereet sech op d'VerĂ«ffentlechung vu v4.0 vir.

(1:712)$ sudo emerge -av chrony
These are the packages that would be merged, in order:
Calculating dependencies... done!
[binary  N     ] net-misc/chrony-3.5-r2::gentoo  USE="adns caps cmdmon ipv6 ntp phc readline refclock rtc seccomp (-html) -libedit -pps (-selinux)" 246 KiB
Total: 1 package (1 new, 1 binary), Size of downloads: 246 KiB
Would you like to merge these packages? [Yes/No]

WĂ©i Dir Ären eegene Remote Chrony Server um Internet opstellt fir ZĂ€it op engem BĂŒronetz ze synchronisĂ©ieren. DrĂ«nner ass e Beispill fir e VPS opzestellen.

Beispill fir Chrony op RHEL / CentOS op VPS opzestellen

Loosst eis elo e bĂ«ssen ĂŒben an eisen eegenen NTP Server op engem VPS opsetzen. Et ass ganz einfach, wielt just de passenden Tarif op der RuVDS WebsĂ€it, kritt e fĂ€erdege Server a gitt eng Dosen einfache Kommandoen. Fir eis Zwecker ass dĂ«s Optioun ganz gĂ«eegent.

Wéi ZÀit Synchronisatioun gouf sécher

Loosst eis weidergoen fir de Service opzestellen an als éischt de Chrony Package z'installéieren.

[root@server ~]$ yum install chrony

RHEL 8 / CentOS 8 benotzt en anere Package Manager.

[root@server ~]$ dnf install chrony

Nodeems Dir Chrony installéiert hutt, musst Dir de Service starten an aktivéieren.

[root@server ~]$ systemctl enable chrony --now

Wann Dir wĂ«llt, kĂ«nnt Dir Ännerungen op /etc/chrony.conf maachen, NPT-Server mat den nooste lokalen ersetzen fir d'ÄntwertzĂ€it ze reduzĂ©ieren.

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.ru.pool.ntp.org iburst
server 1.ru.pool.ntp.org iburst
server 2.ru.pool.ntp.org iburst
server 3.ru.pool.ntp.org iburst

Als nÀchst setzen mir d'Synchroniséierung vum NTP-Server mat Noden aus dem spezifizéierte Pool.

[root@server ~]$ timedatectl set-ntp true
[root@server ~]$ systemctl restart chronyd.service

Et ass och néideg fir den NTP Hafen no baussen opzemaachen, soss blockéiert d'Firewall erakommen Verbindunge vu Clientnoden.

[root@server ~]$ firewall-cmd --add-service=ntp --permanent 
[root@server ~]$ firewall-cmd --reload

Op der Client SĂ€it ass et genuch fir d'ZĂ€itzone richteg ze setzen.

[root@client ~]$ timedatectl set-timezone Europe/Moscow

D' /etc/chrony.conf Datei spezifizéiert den IP oder den Hostnumm vun eisem VPS Server deen NTP Server chrony leeft.

server my.vps.server

An endlech, Start ZÀit Synchroniséierung op de Client.

[root@client ~]$ systemctl enable --now chronyd
[root@client ~]$ timedatectl set-ntp true

D'nÀchst Kéier wÀert ech Iech soen wéi eng Optiounen et gi fir ZÀit ouni Internet ze synchroniséieren.

Wéi ZÀit Synchronisatioun gouf sécher

Wéi ZÀit Synchronisatioun gouf sécher

Source: will.com

Setzt e Commentaire