Sut i wneud yn siŵr nad yw amser fel y cyfryw yn gorwedd os oes gennych filiwn o ddyfeisiau mawr a bach yn cyfathrebu trwy TCP/IP? Wedi'r cyfan, mae gan bob un ohonynt gloc, a rhaid i'r amser fod yn gywir ar gyfer pob un ohonynt. Ni ellir goresgyn y broblem hon heb ntp.
Dychmygwn am funud bod anawsterau wrth gydamseru gwasanaethau dros amser mewn un rhan o'r seilwaith TG diwydiannol. Ar unwaith mae'r pentwr clwstwr o feddalwedd Menter yn dechrau methu, mae parthau'n chwalu, mae meistri a nodau Wrth Gefn yn ymdrechu'n aflwyddiannus i adfer y status quo.
Mae hefyd yn bosibl bod ymosodwr yn ceisio amharu ar yr amser yn fwriadol trwy ymosodiad MiTM neu DDOS. Mewn sefyllfa o'r fath, gall unrhyw beth ddigwydd:
- Bydd cyfrineiriau cyfrif defnyddiwr yn dod i ben;
- Bydd tystysgrifau X.509 yn dod i ben;
- Bydd dilysu dau ffactor TOTP yn rhoi'r gorau i weithio;
- bydd copïau wrth gefn yn mynd yn hen ffasiwn a bydd y system yn eu dileu;
- Bydd DNSSec yn torri.
Mae'n amlwg bod gan bob adran TG ddiddordeb yng ngweithrediad dibynadwy gwasanaethau cydamseru amser, a byddai'n braf pe baent yn ddibynadwy ac yn ddiogel mewn gweithrediad diwydiannol.
Torri NTP mewn 25 munud
Protocolau rhwydwaith - mae gan millennials un hynodrwydd, maen nhw wedi bod ac nid ydynt bellach yn dda ar gyfer unrhyw beth, ond nid yw eu disodli mor hawdd hyd yn oed pan fydd màs critigol o selogion a chyllid yn cronni.
Y brif gŵyn am NTP clasurol yw diffyg mecanweithiau dibynadwy ar gyfer amddiffyn rhag ymosodiadau gan ymyrwyr. Mae ymdrechion amrywiol wedi'u gwneud i ddatrys y broblem hon. Er mwyn cyflawni hyn, yn gyntaf fe wnaethom weithredu mecanwaith allwedd a rennir ymlaen llaw (PSK) ar gyfer cyfnewid allweddi cymesur.
Yn anffodus, ni wnaeth y dull hwn dalu ar ei ganfed am reswm syml - nid yw'n graddio'n dda. Mae angen cyfluniad llaw ar ochr y cleient yn dibynnu ar y gweinydd. Mae hyn yn golygu na allwch ychwanegu cleient arall yn union fel hynny. Os bydd rhywbeth yn newid ar y gweinydd NTP, rhaid ad-drefnu pob cleient.
Yna fe wnaethant lunio AutoKey, ond fe wnaethant ddarganfod nifer o wendidau difrifol ar unwaith wrth ddylunio'r algorithm ei hun a bu'n rhaid iddynt roi'r gorau iddo. Y peth yw bod yr hedyn yn cynnwys dim ond 32 did, mae'n rhy fach ac nid yw'n cynnwys digon o gymhlethdod cyfrifiannol ar gyfer ymosodiad blaen.
- ID Allwedd - allwedd 32-did cymesur;
- MAC (cod dilysu neges) - checksum pecyn NTP;
Cyfrifir Autokey fel a ganlyn.
Autokey=H(Sender-IP||Receiver-IP||KeyID||Cookie)Lle mae H() yn ffwythiant hash cryptograffig.
Defnyddir yr un swyddogaeth i gyfrifo'r siec o becynnau.
MAC=H(Autokey||NTP packet)Mae'n ymddangos bod cywirdeb cyfan gwiriadau pecyn yn dibynnu ar ddilysrwydd y cwcis. Unwaith y byddwch wedi eu cael, gallwch adfer y autokey ac yna spoof y MAC. Fodd bynnag, mae'r gweinydd NTP yn defnyddio hedyn wrth eu cynhyrchu. Dyma lle mae'r dalfa.
Cookie=MSB_32(H(Client IP||Server IP||0||Server Seed))Mae'r ffwythiant MSB_32 yn torri i ffwrdd y 5 did mwyaf arwyddocaol o ganlyniad cyfrifiad stwnsh md32. Nid yw'r cwci cleient yn newid cyn belled â bod paramedrau'r gweinydd yn aros yr un fath. Yna dim ond y rhif cychwynnol y gall yr ymosodwr ei adfer a gallu cynhyrchu cwcis yn annibynnol.
Yn gyntaf, mae angen i chi gysylltu â'r gweinydd NTP fel cleient a derbyn cwcis. Ar ôl hyn, gan ddefnyddio dull 'n Ysgrublaidd, mae'r ymosodwr yn adfer y rhif cychwynnol yn dilyn algorithm syml.
Algorithm ar gyfer ymosod ar y cyfrifiad o'r rhif cychwynnol gan ddefnyddio'r dull grym 'n ysgrublaidd.
for i=0:2^32 − 1 do
Ci=H(Server-IP||Client-IP||0||i)
if Ci=Cookie then
return i
end if
end forMae'r cyfeiriadau IP yn hysbys, felly y cyfan sydd ar ôl yw creu 2^32 hashes nes bod y cwci a grëwyd yn cyfateb i'r un a dderbyniwyd gan y gweinydd NTP. Ar orsaf gartref reolaidd gydag Intel Core i5, bydd hyn yn cymryd 25 munud.
NTS - Autokey newydd
Roedd yn amhosibl dioddef tyllau diogelwch o'r fath yn Autokey, ac yn 2012 fe ymddangosodd protocol. Er mwyn cyfaddawdu'r enw, fe benderfynon nhw ail-frandio, felly cafodd Autokey v.2 ei alw'n Network Time Security.
Mae'r protocol NTS yn estyniad o ddiogelwch NTP ac ar hyn o bryd dim ond yn cefnogi modd unicast. Mae'n darparu amddiffyniad cryptograffig cryf yn erbyn trin pecynnau, yn atal snooping, yn graddio'n dda, yn wydn i golli pecynnau rhwydwaith, ac yn arwain at y golled fanwl leiaf a achosir yn ystod diogelwch cysylltiad.
Mae cysylltiad NTS yn cynnwys dau gam sy'n defnyddio protocolau haen is. Ar y cyntaf Ar yr adeg hon, mae'r cleient a'r gweinydd yn cytuno ar baramedrau cysylltiad amrywiol ac yn cyfnewid cwcis sy'n cynnwys allweddi gyda'r holl set ddata sy'n cyd-fynd â nhw. Ar ail Ar y cam hwn, mae'r sesiwn NTS gwarchodedig wirioneddol yn digwydd rhwng y cleient a'r gweinydd NTP.

Mae NTS yn cynnwys dau brotocol haen is: Cyfnewid Allwedd Diogelwch Amser Rhwydwaith (NTS-KE), sy'n cychwyn cysylltiad diogel dros TLS, ac NTPv4, yr ymgnawdoliad diweddaraf o'r protocol NTP. Ychydig mwy am hyn isod.
Cam cyntaf - NTS KE
Ar y cam hwn, mae'r cleient NTP yn cychwyn sesiwn TLS 1.2/1.3 dros gysylltiad TCP ar wahân â gweinydd NTS KE. Yn ystod y sesiwn hon mae'r canlynol yn digwydd.
- Mae'r partïon yn pennu'r paramedrau algorithm ar gyfer yr ail gam.
- Mae'r partïon yn diffinio ail brotocol haen is, ond ar hyn o bryd dim ond NTPv4 a gefnogir.
- Mae'r partïon yn pennu cyfeiriad IP a phorthladd y gweinydd NTP.
- Mae gweinydd NTS KE yn cyhoeddi cwcis o dan NTPv4.
- Mae'r partïon yn tynnu pâr o allweddi cymesuredd (C2S ac S2C) o'r deunydd cwci.
Mae gan y dull hwn y fantais fawr bod y baich cyfan o drosglwyddo gwybodaeth gyfrinachol am baramedrau cysylltiad yn disgyn ar y protocol TLS profedig a dibynadwy. Mae hyn yn dileu'r angen i ailddyfeisio'ch olwyn eich hun ar gyfer ysgwyd llaw NTP diogel.
Ail gam - NTP o dan amddiffyniad NTS
Yn yr ail gam, mae'r cleient yn cydamseru'r amser yn ddiogel gyda'r gweinydd NTP. At y diben hwn, mae'n trosglwyddo pedwar estyniad arbennig (meysydd ymestyn) yn strwythur pecyn NTPv4.
- Mae'r Estyniad Dynodydd Unigryw yn cynnwys nonce ar hap i atal ymosodiadau ailchwarae.
- Mae Estyniad Cwci NTS yn cynnwys un o'r cwcis NTP sydd ar gael i'r cleient. Gan mai dim ond y cleient sydd â'r allweddi AAED cymesur C2S ac S2C, rhaid i'r gweinydd NTP eu tynnu o'r deunydd cwci.
- Mae Estyniad Dalfan Cwcis NTS yn ffordd i gleient ofyn am gwcis ychwanegol gan y gweinydd. Mae angen yr estyniad hwn i sicrhau nad yw ymateb y gweinydd NTP yn llawer hirach na'r cais. Mae hyn yn helpu i atal ymosodiadau chwyddo.
- Mae Authenticator NTS ac Estyniad Caeau Estyniad Amgryptio yn cynnwys y cipher AAED gyda'r allwedd C2S, pennawd NTP, stampiau amser, a'r OTE uchod fel data cysylltiedig. Heb yr estyniad hwn mae'n bosibl ffugio stampiau amser.

Ar ôl derbyn cais gan gleient, mae'r gweinydd yn gwirio dilysrwydd y pecyn NTP. I wneud hyn, rhaid iddo ddadgryptio'r cwcis, echdynnu'r algorithm AAED a'r allweddi. Ar ôl gwirio'r pecyn NTP yn llwyddiannus am ddilysrwydd, mae'r gweinydd yn ymateb i'r cleient yn y fformat canlynol.
- Mae Estyniad Dynodwr Unigryw yn gopi drych o gais y cleient, mesur yn erbyn ymosodiadau ailchwarae.
- Estyniad Cwci NTS mwy o gwcis i barhau â'r sesiwn.
- Mae Authenticator NTS a Fields Extension Extension yn cynnwys y seiffr AEAD gydag allwedd S2C.
Gellir ailadrodd yr ail ysgwyd llaw lawer gwaith, gan osgoi'r cam cyntaf, gan fod pob cais ac ymateb yn rhoi cwcis ychwanegol i'r cleient. Mantais hyn yw bod gweithrediadau TLS cymharol ddwys o ran adnoddau o gyfrifiadura a throsglwyddo data PKI yn cael eu rhannu â nifer y ceisiadau a ailadroddir. Mae hyn yn arbennig o gyfleus i geidwaid amser FPGA arbenigol, pan ellir pecynnu'r holl brif swyddogaethau i sawl swyddogaeth o faes cryptograffeg cymesur, gan drosglwyddo'r pentwr TLS cyfan i ddyfais arall.
NTPSec
Beth sy'n arbennig am NTP? Er gwaethaf y ffaith bod awdur y prosiect, Dave Mills, wedi ceisio dogfennu ei god orau â phosibl, mae'n rhaglennydd prin a fydd yn gallu deall cymhlethdodau algorithmau cydamseru amser sy'n 35 mlwydd oed. Ysgrifennwyd peth o'r cod cyn y cyfnod POSIX, ac roedd yr API Unix bryd hynny yn wahanol iawn i'r hyn a ddefnyddir heddiw. Yn ogystal, mae angen gwybodaeth am ystadegau i glirio'r signal rhag ymyrraeth ar linellau swnllyd.
Nid NTS oedd yr ymgais gyntaf i drwsio NTP. Unwaith y dysgodd ymosodwyr i fanteisio ar wendidau NTP i chwyddo ymosodiadau DDoS, daeth yn amlwg bod angen newidiadau radical. Ac er bod drafftiau'r NTS yn cael eu paratoi a'u cwblhau, ar ddiwedd 2014 dyrannodd Sefydliad Gwyddoniaeth Cenedlaethol yr UD grant ar frys ar gyfer moderneiddio NTP.
Nid dim ond unrhyw un oedd yn arwain y gweithgor - un o sylfaenwyr a phileri'r gymuned Ffynhonnell Agored ac awdur y llyfr . Y peth cyntaf y ceisiodd Eric a'i ffrindiau ei wneud oedd symud y cod NTP o'r platfform BitKeeper i git, ond ni weithiodd allan felly. Roedd Harlan Stenn, arweinydd y prosiect, yn erbyn y penderfyniad hwn a daeth y trafodaethau i stop. Yna penderfynwyd fforchio cod y prosiect, a ganwyd NTPSec.
Profiad cadarn, gan gynnwys gwaith ar GPSD, cefndir mathemategol a'r sgil hudolus o ddarllen cod hynafol - Eric Raymond oedd yr union haciwr a allai roi'r gorau i brosiect o'r fath. Daeth y tîm o hyd i arbenigwr ymfudo cod ac mewn dim ond 10 wythnos NTP ar GitLab. Roedd y gwaith yn ei anterth.
Cymerodd tîm Eric Raymond y dasg yn yr un modd ag y gwnaeth Auguste Rodin gyda bloc o garreg. Trwy gael gwared ar 175 KLOC o hen god, roeddent yn gallu lleihau'r wyneb ymosodiad yn sylweddol trwy gau llawer o dyllau diogelwch.
Dyma restr anghyflawn o'r rhai sydd wedi'u cynnwys yn y dosbarthiad:
- Refclock heb ei ddogfennu, wedi dyddio, wedi dyddio neu wedi torri.
- Llyfrgell ICS nas defnyddir.
- libopts/autogen.
- Hen god ar gyfer Windows.
- ntpdc.
- Autokey.
- Mae'r cod ntpq C wedi'i ailysgrifennu yn Python.
- Mae'r cod sntp/ntpdig C wedi'i ailysgrifennu yn Python.
Yn ogystal â glanhau'r cod, roedd gan y prosiect dasgau eraill. Dyma restr rannol o gyflawniadau:
- Mae amddiffyniad cod rhag gorlif byffer wedi'i wella'n sylweddol. Er mwyn atal gorlifoedd byffer, mae'r holl swyddogaethau llinynnol anniogel (strcpy/strcat/strtok/sprintf/vsprintf/gets) wedi'u disodli gan fersiynau diogel sy'n gweithredu terfynau maint byffer.
- Ychwanegwyd cefnogaeth NTS.
- Gwell cywirdeb cam amser ddeg gwaith trwy gysylltu caledwedd ffisegol. Mae hyn oherwydd y ffaith bod clociau cyfrifiadurol modern wedi dod yn llawer mwy cywir na'r rhai pan aned NTP. Y rhai a gafodd fwyaf o fudd o hyn oedd GPSDO a radios amser penodedig.
- Mae nifer yr ieithoedd rhaglennu wedi'i ostwng i ddau. Yn lle Perl, sgriptiau lletchwith a hyd yn oed S, Python yw'r cyfan bellach. Oherwydd hyn, mae mwy o gyfleoedd i ailddefnyddio cod.
- Yn lle nwdls o sgriptiau autotools, dechreuodd y prosiect ddefnyddio system adeiladu meddalwedd .
- Dogfennaeth prosiect wedi'i diweddaru a'i haildrefnu. O gasgliad o ddogfennau sy'n gwrth-ddweud ei gilydd ac weithiau'n hynafol, fe wnaethon nhw greu dogfennaeth eithaf goddefadwy. Bellach mae gan bob switsh llinell orchymyn a phob endid cyfluniad un fersiwn o wirionedd. Yn ogystal, mae tudalennau dyn a dogfennaeth gwe bellach yn cael eu creu o'r un ffeiliau craidd.
Mae NTPSec ar gael ar gyfer nifer o ddosbarthiadau Linux. Ar hyn o bryd, y fersiwn sefydlog ddiweddaraf yw 1.1.8, ar gyfer Gentoo Linux dyma'r un olaf ond un.
(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]
Crony
Cafwyd ymgais arall i ddisodli'r hen NTP gyda dewis arall mwy diogel. Mae Chrony, yn wahanol i NTPSec, wedi'i ysgrifennu o'r gwaelod i fyny ac wedi'i gynllunio i weithredu'n ddibynadwy o dan ystod eang o amodau, gan gynnwys cysylltiadau rhwydwaith ansefydlog, argaeledd rhwydwaith rhannol neu dagfeydd, a newidiadau tymheredd. Yn ogystal, mae gan chrony fanteision eraill:
- gall chrony gydamseru cloc y system yn gyflymach gyda mwy o gywirdeb;
- mae chrony yn llai, yn defnyddio llai o gof, ac yn cyrchu'r CPU dim ond pan fo angen. Mae hyn yn fantais fawr ar gyfer arbed adnoddau ac ynni;
- Mae chrony yn cefnogi stampiau amser caledwedd ar Linux, gan ganiatáu cydamseru hynod gywir ar rwydweithiau lleol.
Fodd bynnag, nid oes gan chrony rai o nodweddion yr hen NTP, fel cleient / gweinydd darlledu ac aml-ddarlledu. Yn ogystal, mae NTP clasurol yn cefnogi nifer fwy o systemau gweithredu a llwyfannau.
I analluogi ymarferoldeb y gweinydd a cheisiadau NTP i'r broses chronyd, ysgrifennwch porth 0 yn y ffeil chrony.conf. Gwneir hyn mewn achosion lle nad oes angen cynnal amser ar gyfer cleientiaid NTP neu gyfoedion. Ers fersiwn 2.0, mae porthladd gweinydd NTP ar agor dim ond pan ganiateir mynediad trwy gyfarwyddeb caniatáu neu orchymyn priodol, neu fod cymar NTP wedi'i ffurfweddu, neu pan ddefnyddir cyfarwyddeb darlledu.
Mae'r rhaglen yn cynnwys dau fodiwl.
- gwasanaeth sy'n rhedeg yn y cefndir yw chronyd. Mae'n derbyn gwybodaeth am y gwahaniaeth rhwng cloc y system a'r gweinydd amser allanol ac yn addasu'r amser lleol. Mae hefyd yn gweithredu'r protocol NTP a gall weithredu fel cleient neu weinydd.
- Mae chronyc yn gyfleustodau llinell orchymyn ar gyfer monitro a rheoli rhaglenni. Fe'i defnyddir i fireinio paramedrau gwasanaeth amrywiol, er enghraifft caniatáu i chi ychwanegu neu ddileu gweinyddwyr NTP tra bod chronyd yn parhau i redeg.
Ers fersiwn 7 o RedHat Linux chrony fel gwasanaeth cydamseru amser. Mae'r pecyn hefyd ar gael ar gyfer dosbarthiadau Linux eraill. Y fersiwn sefydlog ddiweddaraf yw 3.5, sy'n paratoi ar gyfer rhyddhau v4.0.
(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]
Sut i sefydlu eich gweinydd croni anghysbell eich hun ar y Rhyngrwyd i gydamseru amser ar rwydwaith swyddfa. Isod mae enghraifft o sefydlu VPS.
Enghraifft o sefydlu Chrony ar RHEL / CentOS ar VPS
Gadewch i ni nawr ymarfer ychydig a sefydlu ein gweinydd NTP ein hunain ar VPS. Mae'n syml iawn, dewiswch y tariff priodol ar wefan RuVDS, mynnwch weinydd parod a theipiwch ddwsin o orchmynion syml. At ein dibenion ni, mae'r opsiwn hwn yn eithaf addas.

Gadewch i ni symud ymlaen i sefydlu'r gwasanaeth a gosod y pecyn crony yn gyntaf.
[root@server ~]$ yum install chronyMae RHEL 8 / CentOS 8 yn defnyddio rheolwr pecyn gwahanol.
[root@server ~]$ dnf install chronyAr ôl gosod chrony, mae angen i chi ddechrau ac actifadu'r gwasanaeth.
[root@server ~]$ systemctl enable chrony --nowOs dymunir, gallwch wneud newidiadau i /etc/chrony.conf, gan ddisodli gweinyddwyr NPT gyda'r rhai lleol agosaf i leihau amser ymateb.
# 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
Nesaf, rydym yn sefydlu cydamseriad o'r gweinydd NTP gyda nodau o'r pwll penodedig.
[root@server ~]$ timedatectl set-ntp true
[root@server ~]$ systemctl restart chronyd.service
Mae hefyd angen agor y porthladd NTP i'r tu allan, fel arall bydd y wal dân yn rhwystro cysylltiadau sy'n dod i mewn o nodau cleient.
[root@server ~]$ firewall-cmd --add-service=ntp --permanent
[root@server ~]$ firewall-cmd --reload
Ar ochr y cleient, mae'n ddigon i osod y parth amser yn gywir.
[root@client ~]$ timedatectl set-timezone Europe/MoscowMae'r ffeil /etc/chrony.conf yn nodi IP neu enw gwesteiwr ein gweinydd VPS sy'n rhedeg chrony gweinydd NTP.
server my.vps.serverAc yn olaf, amser dechrau cydamseru ar y cleient.
[root@client ~]$ systemctl enable --now chronyd
[root@client ~]$ timedatectl set-ntp true
Y tro nesaf byddaf yn dweud wrthych pa opsiynau sydd ar gael ar gyfer cydamseru amser heb y Rhyngrwyd.
Ffynhonnell: hab.com
