Чӣ тавр боварӣ ҳосил кардан мумкин аст, ки вақт худаш дурӯғ намегӯяд, агар шумо як миллион дастгоҳи хурду калон дошта бошед, ки тавассути TCP/IP муошират мекунанд? Охир, хар кадоми онхо соат доранд ва барои хамаи онхо вакт бояд дуруст бошад. Ин масъаларо бе ntp бартараф кардан мумкин нест.
Биёед як дақиқа тасаввур кунем, ки дар як сегменти инфрасохтори саноатии IT бо мурури замон бо ҳамоҳангсозии хидматҳо мушкилот вуҷуд дорад. Дарҳол стеки кластери нармафзори Enterprise ба нокомӣ шурӯъ мекунад, доменҳо пароканда мешаванд, магистрҳо ва гиреҳҳои интизорӣ барои барқарор кардани ҳолати кво бомуваффақият мекӯшанд.
Инчунин мумкин аст, ки ҳамлагар қасдан кӯшиш кунад, ки вақтро тавассути ҳамлаи MiTM ё DDOS халалдор кунад. Дар чунин вазъият ҳама чиз метавонад рӯй диҳад:
- Муҳлати паролҳои ҳисоби корбар ба охир мерасад;
- Мӯҳлати сертификатҳои X.509 ба охир мерасад;
- Аутентификатсияи ду-омили TOTP корро қатъ мекунад;
- нусхаҳои эҳтиётӣ кӯҳна мешаванд ва система онҳоро нест мекунад;
- DNSSec вайрон мешавад.
Маълум аст, ки ҳар як шӯъбаи IT ба кори боэътимоди хидматҳои ҳамоҳангсозии вақт манфиатдор аст ва хуб мебуд, агар онҳо дар кори саноатӣ боэътимод ва бехатар бошанд.
NTP-ро дар 25 дақиқа вайрон кунед
Протоколҳои шабакавӣ - millennials як хусусияти хос доранд, онҳо буданд ва дигар барои ҳеҷ чиз хуб нестанд, аммо иваз кардани онҳо ҳатто ҳангоми ҷамъ шудани миқдори муҳими ҳаваскорон ва маблағгузорӣ он қадар осон нест.
Шикояти асосӣ дар бораи NTP классикӣ набудани механизмҳои боэътимоди муҳофизат аз ҳамлаҳои вайронкорон мебошад. Барои ҳалли ин мушкилот кӯшишҳои гуногун анҷом дода шуданд. Барои ноил шудан ба ин, мо аввал механизми калиди пешакӣ (PSK) -ро барои мубодилаи калидҳои симметрӣ татбиқ кардем.
Мутаассифона, ин усул бо як сабаби оддӣ фоида наовард - он хуб нест. Дар тарафи муштарӣ вобаста ба сервер конфигуратсияи дастӣ лозим аст. Ин маънои онро дорад, ки шумо танҳо як муштарии дигарро илова карда наметавонед. Агар чизе дар сервери NTP тағир ёбад, ҳамаи муштариён бояд аз нав танзим карда шаванд.
Сипас онҳо бо AutoKey пайдо шуданд, аммо онҳо дарҳол як қатор осебҳои ҷиддиро дар тарҳрезии худи алгоритм ошкор карданд ва онҳо маҷбур шуданд, ки аз он даст кашанд. Гап дар он аст, ки тухм танҳо 32-бит дорад, он хеле хурд аст ва барои ҳамлаи фронталӣ мураккабии ҳисобкунии кофӣ надорад.
- ID калид - калиди симметрии 32-бит;
- MAC (рамзи аутентификатсияи паём) - маблағи санҷиши бастаи NTP;
Калиди автоматӣ ба таври зерин ҳисоб карда мешавад.
Autokey=H(Sender-IP||Receiver-IP||KeyID||Cookie)Дар куҷо H() функсияи хэш-криптографӣ аст.
Ҳамин функсия барои ҳисоб кардани маблағи назорати бастаҳо истифода мешавад.
MAC=H(Autokey||NTP packet)Маълум мешавад, ки тамоми якпорчагии чекҳои бастаҳо ба ҳаққонияти кукиҳо вобаста аст. Пас аз он ки шумо онҳоро доред, шумо метавонед калиди автоматиро барқарор кунед ва сипас MAC-ро қаллобӣ кунед. Аммо, сервери NTP ҳангоми тавлиди онҳо тухмиро истифода мебарад. Ин аст, ки сайд дар куҷост.
Cookie=MSB_32(H(Client IP||Server IP||0||Server Seed))Функсияи MSB_32 5 битҳои муҳимтаринро аз натиҷаи ҳисобкунии hash md32 бурида мекунад. То он даме, ки параметрҳои сервер бетағйир мемонанд, кукии муштарӣ тағир намеёбад. Он гоҳ ҳамлакунанда метавонад танҳо рақами ибтидоиро барқарор кунад ва мустақилона кукиҳоро тавлид кунад.
Аввалан, шумо бояд ба сервери NTP ҳамчун муштарӣ пайваст шавед ва кукиҳоро қабул кунед. Пас аз ин, бо истифода аз усули қувваи бераҳмона, ҳамлакунанда рақами ибтидоиро пас аз алгоритми оддӣ барқарор мекунад.
Алгоритми ҳамла ба ҳисобкунии рақами ибтидоӣ бо усули қувваи бераҳмона.
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Суроғаҳои IP маълуманд, аз ин рӯ танҳо сохтани 2^32 хэш боқӣ мемонад, то он даме, ки кукии сохташуда ба оне, ки аз сервери NTP гирифта шудааст, мувофиқат кунад. Дар истгоҳи муқаррарии хонагӣ бо Intel Core i5, ин 25 дақиқа мегирад.
NTS - калиди нави худкор
Дар Autokey бо чунин сӯрохиҳои амниятӣ тоқат кардан ғайриимкон буд ва дар соли 2012 он пайдо шуд протокол. Бо мақсади аз байн бурдани ном, онҳо тасмим гирифтанд, ки бренди худро иваз кунанд, аз ин рӯ Autokey v.2 Амнияти шабакавӣ номида шуд.
Протоколи NTS як тавсеаи амнияти NTP мебошад ва дар айни замон танҳо ҳолати unicast дастгирӣ мекунад. Он муҳофизати қавии криптографиро аз коркарди маҷмӯаҳо таъмин мекунад, кофтуковро пешгирӣ мекунад, миқёси хуб дорад, ба талафоти бастаҳои шабака тобовар аст ва ба ҳадди ақали талафоти дақиқ ҳангоми амнияти пайвастшавӣ оварда мерасонад.
Пайвасти NTS аз ду марҳила иборат аст, ки протоколҳои қабати поёниро истифода мебаранд. Дар бораи аввал Дар ин марҳила, муштарӣ ва сервер дар бораи параметрҳои гуногуни пайвастшавӣ мувофиқа мекунанд ва кукиҳои дорои калидҳоро бо тамоми маҷмӯи додаҳои ҳамроҳ мубодила мекунанд. Дар бораи дуюм Дар ин марҳила сеанси воқеии муҳофизатшудаи NTS байни муштарӣ ва сервери NTP сурат мегирад.

NTS аз ду протоколи сатҳи поёнӣ иборат аст: Шабакаи Time Security Key Exchange (NTS-KE), ки пайвасти бехатарро тавассути TLS оғоз мекунад ва NTPv4, охирин таҷассуми протоколи NTP. Дар зер каме бештар дар бораи ин.
Марҳилаи аввал - NTS KE
Дар ин марҳила, муштарии NTP сеанси TLS 1.2/1.3-ро тавассути пайвасти алоҳидаи TCP бо сервери NTS KE оғоз мекунад. Дар рафти ин сессия ходисахои зерин ба амал меоянд.
- Тарафҳо параметрҳоро муайян мекунанд алгоритми марҳилаи дуюм.
- Тарафҳо як протоколи дуввуми сатҳи поёниро муайян мекунанд, аммо дар айни замон танҳо NTPv4 дастгирӣ карда мешавад.
- Тарафҳо суроғаи IP ва порти сервери NTP-ро муайян мекунанд.
- Сервери NTS KE кукиҳоро дар зери NTPv4 мебарорад.
- Тарафҳо аз маводи куки як ҷуфт калидҳои симметриро (C2S ва S2C) мегиранд.
Ин равиш бартарии бузург дорад, ки тамоми бори интиқоли маълумоти махфӣ оид ба параметрҳои пайвастшавӣ ба протоколи исботшуда ва боэътимоди TLS меафтад. Ин зарурати ихтироъ кардани чархи шахсии худро барои дастфишори бехатари NTP аз байн мебарад.
Марҳилаи дуюм - NTP таҳти ҳимояи NTS
Дар қадами дуюм, муштарӣ вақтро бо сервери NTP бехатар ҳамоҳанг мекунад. Бо ин мақсад, он чор васеъшавии махсусро (майдонҳои васеъ) дар сохтори бастаи NTPv4 интиқол медиҳад.
- Васеъгардонии беназири муайянкунанда дорои як норасоии тасодуфӣ барои пешгирии ҳамлаҳои такрорӣ мебошад.
- Васеъ кардани кукиҳои NTS дорои яке аз кукиҳои NTP мебошад, ки барои муштарӣ дастрас аст. Азбаски танҳо муштарӣ калидҳои симметрии AAED C2S ва S2C дорад, сервери NTP бояд онҳоро аз маводи куки истихроҷ кунад.
- Васеъгардонии Ҷойгиркунандаи кукиҳои NTS ин роҳи муштарӣ барои дархост кардани кукиҳои иловагӣ аз сервер мебошад. Ин васеъшавӣ барои он зарур аст, ки посухи сервери NTP аз дархост дарозтар набошад. Ин барои пешгирии ҳамлаҳои амплификация кӯмак мекунад.
- Васеъгардонии NTS Authenticator ва Майдонҳои Extension Encrypted рамзи AAED-ро бо калиди C2S, сарлавҳаи NTP, тамғаҳои вақт ва EF-и дар боло зикршуда ҳамчун маълумоти ҳамроҳ дар бар мегирад. Бе ин тамдид тамғаҳои вақтро қаллобӣ кардан мумкин аст.

Ҳангоми гирифтани дархост аз муштарӣ, сервер ҳаққонияти бастаи NTP-ро тафтиш мекунад. Барои ин, ӯ бояд кукиҳоро рамзкушоӣ кунад, алгоритми AAED ва калидҳоро истихроҷ кунад. Пас аз бомуваффақият тафтиш кардани бастаи NTP барои эътибор, сервер ба муштарӣ дар формати зерин ҷавоб медиҳад.
- Васеъгардонии беназири мушаххас нусхаи оинаи дархости муштарӣ, чораи зидди ҳамлаҳои такрорӣ мебошад.
- Васеъ кардани кукиҳои NTS барои идомаи сессия кукиҳои бештар.
- Authenticator NTS ва васеъшавии Майдонҳои Рамзгузорӣ Рамзи AEAD-ро бо калиди S2C дар бар мегирад.
Дастфишори дуюмро метавон борҳо такрор кард ва қадами аввалро паси сар кард, зеро ҳар як дархост ва посух ба муштарӣ кукиҳои иловагӣ медиҳад. Ин бартарият дорад, ки амалиёти нисбатан захираҳои TLS оид ба ҳисоббарорӣ ва интиқоли маълумоти PKI ба шумораи дархостҳои такрорӣ тақсим карда мешавад. Ин махсусан барои хронометрҳои махсуси FPGA қулай аст, вақте ки тамоми функсияҳои асосиро метавон ба якчанд функсияҳо аз соҳаи криптографияи симметрӣ ворид кард ва тамоми стеки TLS-ро ба дастгоҳи дигар интиқол дод.
NTPSec
Дар бораи NTP чӣ махсус аст? Сарфи назар аз он, ки муаллифи лоиҳа Дэйв Миллс кӯшиш кард, ки рамзи худро то ҳадди имкон ҳуҷҷатгузорӣ кунад, ин як барномасози нодир аст, ки метавонад нозукиҳои алгоритмҳои ҳамоҳангсозии вақтро, ки 35 сол дорад, дарк кунад. Баъзе аз рамзҳо пеш аз давраи POSIX навишта шуда буданд ва API-и Unix он вақт аз он чизе, ки имрӯз истифода мешавад, хеле фарқ мекард. Илова бар ин, дониши омор барои тоза кардани сигнал аз дахолат дар хатҳои пурғавғо лозим аст.
NTS аввалин кӯшиши ислоҳи NTP набуд. Пас аз он ки ҳамлагарон истифода аз осебпазирии NTP-ро барои тақвияти ҳамлаҳои DDoS ёд гирифтанд, маълум шуд, ки тағироти куллӣ лозим аст. Ва дар ҳоле, ки лоиҳаҳои НТС омода ва ниҳоӣ мешуданд, Бунёди Миллии Илми ИМА дар охири соли 2014 ба таври фаврӣ барои навсозии НТП грант ҷудо кард.
Гурухи кориро на танхо касе, балки рохбарй мекард - яке аз асосгузорон ва рукнҳои ҷомеаи Сарчашмаи Кушода ва муаллифи китоб . Аввалин чизе, ки Эрик ва дӯстонаш кӯшиш карданд, ки рамзи NTP-ро аз платформаи BitKeeper ба git интиқол диҳанд, аммо ин тавр нашуд. Роҳбари лоиҳа Ҳарлан Стенн мухолифи ин тасмим буд ва музокирот қатъ шуд. Пас аз он қарор дода шуд, ки рамзи лоиҳаро ҷудо кунед ва NTPSec таваллуд шуд.
Таҷрибаи қавӣ, аз ҷумла кор дар GPSD, заминаи риёзӣ ва маҳорати ҷодугарӣ дар хондани рамзи қадимӣ - Эрик Рэймонд маҳз ҳакере буд, ки метавонад чунин лоиҳаро иҷро кунад. Даста як мутахассиси муҳоҷирати кодро пайдо кард ва танҳо дар 10 ҳафта NTP дар GitLab. Кор дар чушу хуруш буд.
Дастаи Эрик Рэймонд ин вазифаро ҳамон тавре ба ӯҳда гирифт, ки Огюст Роден бо блоки сангӣ иҷро кард. Бо нест кардани 175 KLOC рамзи кӯҳна, онҳо тавонистанд сатҳи ҳамларо тавассути бастани сӯрохиҳои зиёди амниятӣ ба таври назаррас коҳиш диҳанд.
Ин аст рӯйхати нопурраи онҳое, ки ба тақсимот дохил карда шудаанд:
- Соатҳои беҳуҷҷатӣ, кӯҳнашуда, кӯҳнашуда ё шикаста.
- Китобхонаи истифоданашудаи ICS.
- либоптҳо/автоген.
- Рамзи кӯҳна барои Windows.
- ntpdc.
- Калиди автоматӣ.
- Рамзи ntpq C дар Python аз нав навишта шудааст.
- Рамзи sntp/ntpdig C дар Python аз нав навишта шудааст.
Ба гайр аз тоза кардани код, лоиха вазифахои дигар хам дошт. Ин аст рӯйхати қисман дастовардҳо:
- Муҳофизати код аз фаромадани буфер ба таври назаррас беҳтар шудааст. Барои пешгирии фаромадани буфер, ҳама функсияҳои сатри хатарнок (strcpy/strcat/strtok/sprintf/vsprintf/gets) бо версияҳои бехатаре иваз карда шуданд, ки маҳдудиятҳои андозаи буферро амалӣ мекунанд.
- Дастгирии NTS илова карда шуд.
- Дақиқии қадами вақт тавассути пайваст кардани сахтафзори ҷисмонӣ даҳ маротиба беҳтар карда шуд. Ин ба он вобаста аст, ки соатҳои компютерии муосир нисбат ба соатҳои таваллуди NTP хеле дақиқтар шудаанд. Бузургтарин баҳрабардорони ин GPSDO ва радиоҳои вақтбахш буданд.
- Шумораи забонҳои барномасозӣ ба ду адад кам карда шуд. Ба ҷои скриптҳои Perl, awk ва ҳатто S, он ҳоло ҳама Python аст. Аз ин рӯ, барои истифодаи такрории код имкониятҳои бештар вуҷуд доранд.
- Ба ҷои угро аз скриптҳои autotools, лоиҳа ба истифодаи системаи сохтани нармафзор шурӯъ кард .
- Ҳуҷҷатҳои лоиҳавӣ навсозӣ ва аз нав ташкил карда шуданд. Онҳо аз маҷмӯи ҳуҷҷатҳои зиддиятнок ва баъзан бостонӣ ҳуҷҷатҳои хеле қобили қабулро ба вуҷуд оварданд. Ҳар як гузариши сатри фармон ва ҳар як объекти конфигуратсия ҳоло як версияи ягонаи ҳақиқат дорад. Илова бар ин, ҳоло саҳифаҳои ман ва ҳуҷҷатҳои веб аз ҳамон файлҳои аслӣ сохта шудаанд.
NTPSec барои як қатор тақсимоти Linux дастрас аст. Дар айни замон, версияи охирини устувор 1.1.8 аст, барои Gentoo Linux ин охирин охирин аст.
(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]
Хроника
Боз як кӯшиши иваз кардани NTP-и кӯҳна бо алтернативаи бехатартар буд. Chrony, бар хилофи NTPSec, аз ибтидо навишта шудааст ва барои боэътимод кор кардан дар доираи васеи шароитҳо, аз ҷумла пайвастҳои шабакавии ноустувор, мавҷудияти қисман шабака ё бандшавӣ ва тағирёбии ҳарорат тарҳрезӣ шудааст. Илова бар ин, chrony бартариҳои дигар дорад:
- chrony метавонад соати системаро бо дақиқии бештар ҳамоҳанг созад;
- chrony хурдтар аст, хотираи камтар истеъмол мекунад ва танҳо ҳангоми зарурат ба CPU дастрасӣ пайдо мекунад. Ин як плюси калон барои сарфаи захираҳо ва энергия аст;
- chrony вақтҳои сахтафзорро дар Linux дастгирӣ мекунад, ки имкон медиҳад ҳамоҳангсозии хеле дақиқ дар шабакаҳои маҳаллӣ.
Бо вуҷуди ин, chrony баъзе хусусиятҳои NTP-и кӯҳна, аз қабили пахш ва муштарӣ/сервери чандрасонаӣ надорад. Илова бар ин, NTP классикӣ шумораи бештари системаҳои оператсионӣ ва платформаҳоро дастгирӣ мекунад.
Барои хомӯш кардани функсияи сервер ва дархостҳои NTP ба раванди chronyd, танҳо дар файли chrony.conf порти 0-ро нависед. Ин дар ҳолатҳое анҷом дода мешавад, ки зарурати нигоҳ доштани вақт барои муштариёни NTP ё ҳамсолон вуҷуд надорад. Аз версияи 2.0, порти сервери NTP танҳо вақте кушода мешавад, ки дастрасӣ бо дастури иҷозатдиҳӣ ё фармони мувофиқ иҷозат дода мешавад, ё ҳамсолони NTP конфигуратсия карда шудааст ё дастури пахш истифода мешавад.
Барнома аз ду модул иборат аст.
- chronyd хидматест, ки дар замина кор мекунад. Он дар бораи фарқияти байни соати системавӣ ва сервери вақти беруна маълумот мегирад ва вақти маҳаллиро танзим мекунад. Он инчунин протоколи NTP-ро амалӣ мекунад ва метавонад ҳамчун муштарӣ ё сервер амал кунад.
- chronyc як утилитаи сатри фармон барои мониторинг ва назорати барнома мебошад. Барои дуруст танзим кардани параметрҳои гуногуни хидмат истифода мешавад, масалан ба шумо имкон медиҳад, ки серверҳои NTP-ро илова ё хориҷ кунед, дар ҳоле ки chronyd корашро идома медиҳад.
Аз версияи 7 RedHat Linux chrony ҳамчун хидмати ҳамоҳангсозии вақт. Баста барои дигар дистрибюторҳои Linux низ дастрас аст. Версияи охирини устувор 3.5 мебошад, ки барои баровардани 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]
Чӣ тавр сервери дурдасти хронии худро дар Интернет барои ҳамоҳангсозии вақт дар шабакаи офис насб кардан мумкин аст. Дар зер намунаи таъсиси VPS оварда шудааст.
Намунаи насб кардани Chrony дар RHEL / CentOS дар VPS
Биёед ҳоло каме машқ кунем ва сервери NTP-и худро дар VPS насб кунем. Ин хеле содда аст, танҳо дар вебсайти RuVDS тарофаи мувофиқро интихоб кунед, сервери тайёрро гиред ва даҳҳо фармонҳои оддиро ворид кунед. Барои мақсадҳои мо, ин вариант хеле мувофиқ аст.

Биёед ба танзими хидмат гузарем ва аввал бастаи chrony -ро насб кунем.
[root@server ~]$ yum install chronyRHEL 8 / CentOS 8 мудири бастаи дигарро истифода мебарад.
[root@server ~]$ dnf install chronyПас аз насб кардани chrony, шумо бояд хидматро оғоз ва фаъол созед.
[root@server ~]$ systemctl enable chrony --nowАгар хоҳед, шумо метавонед ба /etc/chrony.conf тағирот ворид кунед ва серверҳои NPT-ро бо серверҳои наздиктарини маҳаллӣ иваз кунед, то вақти посухро кам кунед.
# 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
Баъдан, мо ҳамоҳангсозии сервери NTP-ро бо гиреҳҳои ҳавзи муайяншуда насб кардем.
[root@server ~]$ timedatectl set-ntp true
[root@server ~]$ systemctl restart chronyd.service
Инчунин зарур аст, ки порти NTP-ро ба берун кушоед, вагарна девори девор пайвастҳои воридотӣ аз гиреҳҳои мизоҷро маҳкам мекунад.
[root@server ~]$ firewall-cmd --add-service=ntp --permanent
[root@server ~]$ firewall-cmd --reload
Дар тарафи муштарӣ, дуруст танзим кардани минтақаи вақт кофӣ аст.
[root@client ~]$ timedatectl set-timezone Europe/MoscowФайли /etc/chrony.conf IP ё номи мизбони сервери VPS-и моро, ки chrony сервери NTP дорад, муайян мекунад.
server my.vps.serverВа ниҳоят, оғоз кардани ҳамоҳангсозии вақт дар муштарӣ.
[root@client ~]$ systemctl enable --now chronyd
[root@client ~]$ timedatectl set-ntp true
Дафъаи дигар ман ба шумо мегӯям, ки кадом имконот барои ҳамоҳангсозии вақт бидуни интернет вуҷуд доранд.
Манбаъ: will.com
