Çawa hevdemkirina demê ewle bû

Çawa hevdemkirina demê ewle bû
Heke hûn bi mîlyonek amûrên mezin û piçûk ên ku bi TCP/IP-ê re têkilî daynin hene, meriv çawa pê ewle dibe ku dem bi serê xwe derewan nake? Jixwe, her yek ji wan demjimêrek heye û divê dem ji bo hemîyan rast be. Ev pirsgirêk bêyî ntp nayê dorpêç kirin.

Werin em ji bo hûrdemek bifikirin ku di yek beşê binesaziya IT-ya pîşesaziyê de di hevdemkirina karûbaran de bi demê re dijwarî hene. Tavilê stûna komê ya nermalava Enterprise dest bi têkçûnê dike, domain ji hev belav dibin, serdest û girêkên Standby bêserûber hewl didin ku rewşa quoyê sererast bikin.

Di heman demê de gengaz e ku êrîşkarek bi qestî hewl bide ku wextê bi êrîşek MiTM an DDOS veqetîne. Di rewşeke weha de, her tişt dikare bibe:

  • Şîfreyên hesabê bikarhêner dê biqede;
  • Sertîfîkayên X.509 dê biqedin;
  • Nasnameya du-faktorî ya TOTP dê xebatê rawestîne;
  • paşgir dê kevnar bibin û pergal dê wan jê bibe;
  • DNSSec dê bişkîne.

Eşkere ye ku her beşa IT-ê bi xebata pêbawer a karûbarên hevdemkirina demê re eleqedar e, û dê xweş be ku ew di xebata pîşesaziyê de pêbawer û ewledar bin.

Di 25 hûrdeman de NTP bişkînin

Protokolên torê - hezarsalan yek taybetmendiyek wan heye, ew bûne kevn û êdî ji bo tiştekî ne baş in, lê guheztina wan ne ew qas hêsan e jî dema ku girseyek krîtîk a dilxwaz û darayî were berhev kirin.

Giliyê sereke li ser NTP-ya klasîk nebûna mekanîzmayên pêbawer ên ji bo parastina li dijî êrişên dagirkeran e. Ji bo çareserkirina vê pirsgirêkê gelek hewldan hatin kirin. Ji bo ku em bigihîjin vê yekê, me pêşî mekanîzmayek mifteya pêş-parvekirî (PSK) ji bo veguheztina kilîtên simetrîk bicîh kir.

Mixabin, vê rêbazê ji ber sedemek hêsan drav nekiriye - ew baş pîvaz nake. Veavakirina manual li ser milê xerîdar li gorî serverê hewce ye. Ev tê vê wateyê ku hûn nekarin xerîdarek din bi vî rengî lê zêde bikin. Ger tiştek li ser servera NTP-ê biguhere, divê hemî xerîdar ji nû ve werin mîheng kirin.

Dûv re ew gihîştin AutoKey, lê wan tavilê di sêwirana algorîtmayê de gelek qelsiyên ciddî kifş kirin û neçar man ku dev jê berdin. Tişt ev e ku tov tenê 32 bit dihewîne, ew pir piçûk e û ji bo êrişek pêşiyê têra tevliheviya hesabkirinê nake.

  • Nasnameya Mifteyê - mifteya sîmetrîk 32-bit;
  • MAC (koda rastkirina peyamê) - Kontrola pakêtê ya NTP;

Autokey wekî jêrîn tê hesibandin.

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

Li ku derê H() fonksiyonek hash a krîptografî ye.

Heman fonksiyon ji bo hesabkirina kontrolkirina pakêtan tê bikar anîn.

MAC=H(Autokey||NTP packet)

Derket holê ku tevahiya yekbûna kontrolên pakêtê li ser rastiya cookies ve girêdayî ye. Gava ku we wan hebe, hûn dikarin mifteya otomatîkî sererast bikin û dûv re MAC-ê bixapînin. Lêbelê, servera NTP-ê dema ku wan diafirîne tovek bikar tîne. Ev e ku girtina derewan e.

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

Fonksiyona MSB_32 5 bitên herî girîng ji encama hesabkirina hash md32 qut dike. Heya ku pîvanên serverê neguherin, cookie-ya xerîdar nayê guhertin. Dûv re êrîşkar tenê dikare jimara destpêkê vegerîne û bikaribe serbixwe cookie-yan çêbike.

Pêşîn, hûn hewce ne ku wekî xerîdar bi servera NTP-ê ve girêdin û çerezan bistînin. Piştî vê yekê, bi karanîna rêbazek hêza hovane, êrîşkar li gorî algorîtmayek hêsan jimareya destpêkê vedigerîne.

Algorîtmaya êrîşa li ser hesabkirina hejmara destpêkê bi karanîna rêbaza brute-force.

   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

Navnîşanên IP-ê têne zanîn, ji ber vê yekê ya ku dimîne ew e ku meriv 2^32 haşeyan biafirîne heya ku cookie-ya hatî afirandin bi ya ku ji servera NTP-ê hatî wergirtin li hev bike. Li ser qereqolek malê ya birêkûpêk bi Intel Core i5 re, ev ê 25 hûrdem bigire.

NTS - Autokey nû

Ne mumkun bû ku di Autokey de qulên ewlehiyê yên weha rakin, û di sala 2012-an de ew xuya bû guhertoyek nû protokol. Ji bo ku nav lihev bikin, wan biryar da ku ji nû ve binav bikin, ji ber vê yekê Autokey v.2 hate binavkirin Ewlekariya Demjimêra Networkê.

Protokola NTS dirêjkirina ewlehiya NTP-ê ye û niha tenê moda unicast piştgirî dike. Ew parastina krîptografîk a bihêz li dijî manîpulasyona pakêtê peyda dike, pêşî li şopandinê digire, baş dipîve, li hember windabûna pakêta torê berxwedêr e, û di dema ewlehiya pêwendiyê de herî kêm windabûna rastîn çêdibe.

Têkiliyek NTS ji du qonaxan pêk tê ku protokolên qata jêrîn bikar tînin. Li yekem Di vê qonaxê de, xerîdar û server li ser pîvanên cihêreng ên pêwendiyê li hev dikin û çerezên ku kilît hene bi hemî daneyên pêvekirî re diguhezînin. Li duyem Di vê qonaxê de, danişîna NTS ya parastî ya rastîn di navbera xerîdar û servera NTP de pêk tê.

Çawa hevdemkirina demê ewle bû

NTS ji du protokolên qata jêrîn pêk tê: Veguheztina Mifteya Ewlekariya Demjimêra Torgilokê (NTS-KE), ku pêwendiyek ewledar li ser TLS dest pê dike, û NTPv4, teşeya herî paşîn a protokola NTP. A piçekî zêdetir li ser vê li jêr.

Qonaxa yekem - NTS KE

Di vê qonaxê de, xerîdar NTP danişînek TLS 1.2/1.3 li ser pêwendiyek TCP-ya cihê bi servera NTS KE re dide destpêkirin. Di vê rûniştinê de tiştên jêrîn çêdibin.

  • Partî pîvanan diyar dikin AEAD algorîtmaya qonaxa duyemîn.
  • Partî protokolek duyemîn ya jêrîn diyar dikin, lê heya niha tenê NTPv4 piştgirî ye.
  • Partî navnîşana IP-ê û porta servera NTP-ê diyar dikin.
  • Pêşkêşkara NTS KE di bin NTPv4 de çerezan derdixe.
  • Partî cotek mifteyên sîmetrîk (C2S û S2C) ji materyalê kuxikê derdixin.

Ev nêzîkatî xwedan avantajek mezin e ku tevahiya barê veguheztina agahdariya veşartî di derheqê parametreyên girêdanê de dikeve ser protokola TLS ya pejirandî û pêbawer. Ev hewcedariya ji nû ve îcadkirina çerxa xwe ji bo destekek ewledar a NTP-ê ji holê radike.

Qonaxa duyemîn - NTP di bin parastina NTS de

Di gava duyemîn de, xerîdar bi ewlehî wextê bi servera NTP re hevdeng dike. Ji bo vê armancê, ew çar dirêjkirinên taybetî (qavên dirêjkirinê) di avahiya pakêta NTPv4 de vediguhezîne.

  • Berfirehiya Nasnameya Yekane ji bo pêşîlêgirtina êrişên dubarekirinê neyek rasthatî dihewîne.
  • NTS Cookie Extension yek ji çerezên NTP-ê ku ji xerîdar re peyda dibe dihewîne. Ji ber ku tenê xerîdar bişkojkên AAED C2S û S2C yên sîmetrîk hene, pêdivî ye ku servera NTP wan ji materyalê cookie derxe.
  • NTS Cookie Placeholder Extension rêyek e ku xerîdar ji serverê çerezên zêde bixwaze. Ev dirêjkirin pêdivî ye ku pê ewle bibe ku bersiva servera NTP ji daxwazê ​​pir dirêjtir nabe. Ev dibe alîkar ku pêşî li êrîşên amplification bigire.
  • NTS Authenticator û Berfirehkirina Zeviyên Berfirehkirina Şîfrekirî şîfreya AAED ya bi mifteya C2S, sernavê NTP, demjimêr, û EF-ya jorîn wekî daneyên pêvekirî vedihewîne. Bêyî vê dirêjkirinê mimkun e ku îşaretên demê bixapînin.

Çawa hevdemkirina demê ewle bû

Li ser wergirtina daxwazek ji xerîdar, server rastiya pakêta NTP-ê piştrast dike. Ji bo vê yekê, divê ew çerezan deşîfre bike, algorîtmaya AAED û bişkokan derxe. Piştî ku pakêta NTP-ê ji bo derbasdarbûnê bi serfirazî kontrol kir, server di forma jêrîn de bersivê dide xerîdar.

  • Berfirehkirina Nasnameya Unique kopiyek neynikê ya daxwaziya xerîdar e, pîvanek li dijî êrîşên dubarekirinê.
  • NTS Cookie Extension bêtir çerezên ku danişînê bidomînin.
  • NTS Authenticator û Berfirehkirina Zeviyên Berfirehkirina Şîfrekirî şîfreya AEAD ya bi mifteyek S2C vedihewîne.

Desthilatdariya duyemîn dikare gelek caran were dubare kirin, gava yekem derbas bike, ji ber ku her daxwaz û bersivek çerezên zêde dide xerîdar. Vê avantajê heye ku operasyonên TLS-ê yên bi çavkanî-dijwar ên hesabkirin û veguheztina daneyên PKI-yê li gorî hejmara daxwazên dubare têne dabeş kirin. Ev bi taybetî ji bo demjimêrkerên pispor ên FPGA rehet e, dema ku hemî fonksiyonên sereke dikarin ji qada şîfrekirina sîmetrîk di nav çend fonksiyonan de bêne pak kirin, û tevahiya stoka TLS veguherîne amûrek din.

NTPSec

Taybetmendiya NTP-ê çi ye? Tevî vê rastiyê ku nivîskarê projeyê, Dave Mills, hewl da ku koda xwe bi qasî ku pêkan çêtirîn belge bike, ew bernamesazek ​​kêm e ku dê bikaribe tevliheviyên algorîtmayên hevdemkirina demê yên 35 salî fam bike. Hin kod berî serdema POSIX hate nivîsandin, û Unix API wê hingê ji ya ku îro tê bikar anîn pir cûda bû. Digel vê yekê, zanîna statîstîkê hewce ye ku nîşanê ji destwerdana li ser xetên dengbêj paqij bike.

NTS ne hewildana yekem bû ku NTP rast bike. Gava ku êrîşkar fêr bûn ku ji qelsiyên NTP-ê bikar bînin da ku êrişên DDoS zêde bikin, eşkere bû ku guhartinên radîkal hewce ne. Û dema ku pêşnûmeyên NTS dihatin amadekirin û qedandin, Weqfa Zanistî ya Neteweyî ya Dewletên Yekbûyî di dawiya 2014-an de bi lez û bez ji bo nûjenkirina NTP-ê alîkariyek veqetand.

Koma xebatê ne tenê ji aliyê kesekî ve, lê belê Eric Stephen Raymond - yek ji damezrîner û stûnên civaka Çavkaniya Vekirî û nivîskarê pirtûkê ye Katedral û Bazara. Yekem tiştê ku Eric û hevalên wî hewl dan ku bikin ev bû ku koda NTP-ê ji platforma BitKeeper veguhezînin git, lê ew bi vî rengî neçû. Serokê projeyê Harlan Stenn li dijî vê biryarê bû û danûstandin rawestiyan. Dûv re biryar hate girtin ku koda projeyê were darve kirin, û NTPSec çêbû.

Tecrûbeya zexm, di nav de xebata li ser GPSD, paşxaneyek matematîkî û jêhatiya efsûnî ya xwendina koda kevnar - Eric Raymond tam hacker bû ku dikaribû projeyek weha derxîne. Tîm pisporek koçberiya kodê û tenê di 10 hefteyan de NTP dît rûniştinli ser GitLab. Xebat bi lez û bez bû.

Tîma Eric Raymond bi heman awayî ku Auguste Rodin bi bloka kevirî kir, peywirê kir. Bi rakirina 175 KLOC kodên kevn, wan karîbûn rûbera êrîşê bi girîngî kêm bikin, gelek kunên ewlehiyê girtin.

Li vir navnîşek bêkêmasî ya kesên ku di belavkirinê de ne hene:

  • Refclock bêbelge, kevnar, kevnar an şikestî.
  • Pirtûkxaneya ICS ya ku nayê bikar anîn.
  • libopts / autoogen.
  • Koda kevn ji bo Windows.
  • ntpdc.
  • Autokey.
  • Koda ntpq C di Python de ji nû ve hatî nivîsandin.
  • Koda sntp/ntpdig C di Python de ji nû ve hatî nivîsandin.

Ji bilî paqijkirina kodê, projeyê karên din jî hebûn. Li vir navnîşek qismî ya destkeftiyan e:

  • Parastina kodê li dijî zêdebûna tamponê bi girîngî çêtir bûye. Ji bo pêşîlêgirtina zêdebûna tamponê, hemî fonksiyonên rêzikên neewle (strcpy/strcat/strtok/sprintf/vsprintf/gets) bi guhertoyên ewledar ên ku sînorên mezinahiya tamponê pêk tînin hatine guheztin.
  • Piştgiriya NTS zêde kir.
  • Bi girêdana nermalava laşî ve rastbûna gavê deh carî çêtir kir. Ev ji ber vê yekê ye ku demjimêrên komputerê yên nûjen ji yên dema ku NTP ji dayik bû pir rasttir bûne. Sûdgirên herî mezin ji vê yekê GPSDO û radyoyên demkî yên taybetî bûn.
  • Hejmara zimanên bernamesaziyê daket duduyan. Li şûna nivîsarên Perl, awk û hetta S, ew naha hemî Python e. Ji ber vê yekê, ji bo ji nû ve karanîna kodê bêtir derfet hene.
  • Li şûna noodên nivîsarên ototools, projeyê dest bi karanîna pergalek avakirina nermalavê kir waf.
  • Dokumentên projeyê nûve kirin û ji nû ve organîze kirin. Ji berhevokek belgeyên nakok û carinan arkaîk, wan belgeyên pir derbasdar afirandin. Her guheztina rêzika fermanê û her sazûmanek vesazkirinê naha guhertoyek yekane ya rastiyê heye. Wekî din, rûpelên mirov û belgeyên malperê naha ji heman pelên bingehîn têne afirandin.

NTPSec ji bo çend belavokên Linux heye. Heya nuha, guhertoya herî dawî ya stabîl 1.1.8 e, ji bo Gentoo Linux ew ya pêşîn e.

(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]

Chrony

Hewldanek din hebû ku NTP-ya kevn bi alternatîfek ewletir biguhezîne. Chrony, berevajî NTPSec, ji erdê ve hatî nivîsandin û tête sêwirandin ku di bin şert û mercên pirfireh de, di nav de girêdanên torê yên ne aram, hebûna torê ya qismî an qerebalix, û guhertinên germahiyê, bi pêbawer kar bike. Wekî din, chrony avantajên din jî hene:

  • chrony dikare demjimêra pergalê zûtir bi rastbûna mezintir hevdeng bike;
  • chrony piçûktir e, bîranîna hindiktir dixwe, û tenê gava hewce dike digihîje CPU. Ev ji bo teserûfkirina çavkanî û enerjiyê plusek mezin e;
  • chrony li ser Linux-ê îşaretên hardware piştgirî dike, ku rê dide hevdengkirina pir rast li ser torên herêmî.

Lêbelê, chrony hin taybetmendiyên NTP-ya kevn, wekî weşan û xerîdar / servera pirzimanî kêm e. Wekî din, NTP-ya klasîk hejmareke mezin a pergalên xebitandinê û platforman piştgirî dike.

Ji bo neçalakkirina fonksiyona serverê û daxwazên NTP-ê ji pêvajoya kronydê re, tenê porta 0 di pelê chrony.conf de binivîsin. Ev di rewşên ku ne hewce ye ku ji bo xerîdar an hevalbendên NTP-ê dem were domandin de ev tê kirin. Ji guhertoya 2.0-ê, porta servera NTP vekirî ye tenê dema ku gihîştin ji hêla rêwerzek destûr an fermanê ve tê destûr kirin, an peerek NTP-ê hatî mîheng kirin, an rêwerzek weşanê tê bikar anîn.

Bername ji du modulan pêk tê.

  • chronyd karûbarek e ku di paşerojê de dimeşe. Ew agahdarî li ser cûdahiya di navbera demjimêra pergalê û servera demjimêra derveyî de werdigire û dema herêmî eyar dike. Di heman demê de ew protokola NTP-ê bicîh tîne û dikare wekî xerîdar an serverek tevbigere.
  • chronyc ji bo şopandin û kontrolkirina bernameyê amûrek rêzika fermanê ye. Ji bo birêkûpêkkirina pîvanên karûbarê cihêreng tê bikar anîn, mînakî dihêle hûn dema ku chronyd berdewam dike serverên NTP-ê lê zêde bikin an jê derxînin.

Ji ber guhertoya 7 ya RedHat Linux bikar tîne chrony wekî karûbarê hevdengkirina demê. Pakêt ji bo belavkirinên din ên Linux jî heye. Guhertoya herî dawî ya stabîl 3.5 e, ji bo serbestberdana v4.0 amade dike.

(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]

Meriv çawa servera xweya kronî ya dûr a li ser Înternetê saz dike da ku wextê li ser tora nivîsgehê hevdeng bike. Li jêr mînakek sazkirina VPS-ê ye.

Mînaka sazkirina Chrony li ser RHEL / CentOS li ser VPS

Werin em naha hinekî pratîk bikin û servera xweya NTP-ê li ser VPS-ê saz bikin. Ew pir hêsan e, tenê li ser malpera RuVDS tarîfa guncan hilbijêrin, serverek amade bistînin û bi dehan fermanên hêsan binivîsin. Ji bo armancên me, ev vebijark pir maqûl e.

Çawa hevdemkirina demê ewle bû

Werin em biçin sazkirina karûbarê û pêşî pakêta chrony saz bikin.

[root@server ~]$ yum install chrony

RHEL 8 / CentOS 8 rêveberek pakêtek cûda bikar tîne.

[root@server ~]$ dnf install chrony

Piştî sazkirina chrony, hûn hewce ne ku karûbar dest pê bikin û çalak bikin.

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

Heke bixwaze, hûn dikarin guhertinan li /etc/chrony.conf bikin, serverên NPT bi yên herêmî yên herî nêzîk veguherînin da ku dema bersivê kêm bikin.

# 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

Dûv re, me hevdemkirina servera NTP-ê bi girêkên ji hewza diyarkirî re saz kir.

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

Di heman demê de pêdivî ye ku porta NTP-ê li derve vekin, wekî din dîwarê agir dê girêdanên hatina ji girêkên xerîdar asteng bike.

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

Li ser milê xerîdar, bes e ku meriv qada demjimêrê rast destnîşan bike.

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

Pelê /etc/chrony.conf IP an navê mêvandarê servera meya VPS-ê ku bi kronîka servera NTP-ê dixebitîne diyar dike.

server my.vps.server

Û di dawiyê de, destpêkirina hevdengkirina demê li ser xerîdar.

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

Cara din ez ê ji we re bibêjim ka çi vebijark hene ji bo hevdengkirina demê bêyî Înternetê.

Çawa hevdemkirina demê ewle bû

Çawa hevdemkirina demê ewle bû

Source: www.habr.com

Add a comment