Како се уверити да време само по себи не лаже ако имате милион великих и малих уређаја који комуницирају преко ТЦП/ИП? На крају крајева, свако од њих има сат, а време мора бити тачно за све њих. Овај проблем се не може заобићи без нтп-а.
Замислимо на тренутак да у једном сегменту индустријске ИТ инфраструктуре постоје потешкоће са синхронизацијом услуга током времена. Одмах кластерски стог Ентерприсе софтвера почиње да пропада, домени се распадају, мастер и стандби чворови безуспешно покушавају да врате статус кво.
Такође је могуће да нападач намерно покушава да поремети време путем МиТМ или ДДОС напада. У таквој ситуацији може се десити било шта:
- Лозинке корисничких налога ће истећи;
- Кс.509 сертификати ће истећи;
- ТОТП двофакторска аутентификација ће престати да ради;
- резервне копије ће постати застареле и систем ће их избрисати;
- ДНССец ће се прекинути.
Јасно је да је свако ИТ одељење заинтересовано за поуздан рад сервиса временске синхронизације и било би лепо када би они били поуздани и безбедни у индустријском раду.
Прекините НТП за 25 минута
Мрежни протоколи - миленијалци имају једну посебност, били су и више нису добре ни за шта, али њихова замена није тако лака чак ни када се акумулира критична маса ентузијаста и средстава.
Главна замерка класичном НТП-у је недостатак поузданих механизама за заштиту од напада уљеза. Учињени су различити покушаји да се овај проблем реши. Да бисмо ово постигли, прво смо имплементирали механизам унапред дељеног кључа (ПСК) за размену симетричних кључева.
Нажалост, ова метода се није исплатила из једноставног разлога - није добро скалирана. Потребна је ручна конфигурација на страни клијента у зависности од сервера. То значи да једноставно не можете додати другог клијента тек тако. Ако се нешто промени на НТП серверу, сви клијенти морају бити поново конфигурисани.
Затим су смислили АутоКеи, али су одмах открили бројне озбиљне пропусте у дизајну самог алгоритма и морали су да га напусте. Ствар је у томе што семе садржи само 32 бита, премало је и не садржи довољно рачунске сложености за фронтални напад.
- ИД кључа - симетрични 32-битни кључ;
- МАЦ (код за аутентификацију поруке) - контролна сума НТП пакета;
Аутокеи се израчунава на следећи начин.
Autokey=H(Sender-IP||Receiver-IP||KeyID||Cookie)Где је Х() криптографска хеш функција.
Иста функција се користи за израчунавање контролне суме пакета.
MAC=H(Autokey||NTP packet)Испоставило се да цео интегритет провера пакета почива на аутентичности колачића. Када их добијете, можете вратити аутокључ, а затим лажирати МАЦ. Међутим, НТП сервер користи семе када их генерише. Ту лежи квака.
Cookie=MSB_32(H(Client IP||Server IP||0||Server Seed))Функција МСБ_32 одсеца 5 најзначајнија бита из резултата израчунавања хеша мд32. Колачић клијента се не мења све док параметри сервера остају непромењени. Тада нападач може само да врати почетни број и може самостално да генерише колачиће.
Прво, морате се повезати на НТП сервер као клијент и примити колачиће. Након тога, користећи методу грубе силе, нападач враћа почетни број према једноставном алгоритму.
Алгоритам за напад на израчунавање почетног броја методом грубе силе.
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ИП адресе су познате, тако да остаје само да креирате 2^32 хеша док се креирани колачић не поклопи са оним примљеним од НТП сервера. На обичној кућној станици са Интел Цоре и5, ово ће трајати 25 минута.
НТС - нови аутокључ
Било је немогуће поднети такве безбедносне рупе у Аутокеи-у, а појавио се 2012. године протокола. Да би компромитовали име, одлучили су да ребрендирају, па је Аутокеи в.2 назван Нетворк Тиме Сецурити.
НТС протокол је проширење НТП безбедности и тренутно подржава само једноструки режим. Пружа снажну криптографску заштиту од манипулације пакетима, спречава њушкање, добро се прилагођава, отпоран је на губитак мрежних пакета и резултира најмањим губитком прецизности током безбедности везе.
НТС веза се састоји од две фазе које користе протоколе нижег слоја. на први У овој фази, клијент и сервер се договарају о различитим параметрима повезивања и размењују колачиће који садрже кључеве са свим пратећим скупом података. на други У овој фази, стварна заштићена НТС сесија се одвија између клијента и НТП сервера.

НТС се састоји од два протокола нижег слоја: Нетворк Тиме Сецурити Кеи Екцханге (НТС-КЕ), који покреће безбедну везу преко ТЛС-а, и НТПв4, најновије инкарнације НТП протокола. Мало више о овоме у наставку.
Прва фаза - НТС КЕ
У овој фази, НТП клијент покреће ТЛС 1.2/1.3 сесију преко засебне ТЦП везе са НТС КЕ сервером. Током ове сесије дешава се следеће.
- Странке одређују параметре алгоритам за другу фазу.
- Стране дефинишу други протокол нижег слоја, али тренутно је подржан само НТПв4.
- Стране одређују ИП адресу и порт НТП сервера.
- НТС КЕ сервер издаје колачиће под НТПв4.
- Стране извлаче пар симетричних кључева (Ц2С и С2Ц) из материјала колачића.
Овај приступ има велику предност у томе што цео терет преношења тајних информација у вези са параметрима везе пада на проверени и поуздани ТЛС протокол. Ово елиминише потребу да поново измислите сопствени точак за безбедно НТП руковање.
Друга фаза - НТП под НТС заштитом
У другом кораку, клијент безбедно синхронизује време са НТП сервером. У ту сврху преноси четири специјална проширења (поља екстензија) у структури НТПв4 пакета.
- Екстензија јединственог идентификатора садржи насумични једнократни унос за спречавање напада понављања.
- НТС Цоокие Ектенсион садржи један од НТП колачића доступних клијенту. Пошто само клијент има симетричне ААЕД Ц2С и С2Ц кључеве, НТП сервер мора да их издвоји из материјала колачића.
- НТС Цоокие Плацехолдер Ектенсион је начин на који клијент захтева додатне колачиће са сервера. Ово проширење је неопходно да би се осигурало да одговор НТП сервера није много дужи од захтева. Ово помаже у спречавању напада појачања.
- НТС Аутхентицатор и Енцриптед Ектенсион Фиелдс Ектенсион садржи ААЕД шифру са Ц2С кључем, НТП заглављем, временским ознакама и горњим ЕФ као пратећим подацима. Без овог проширења могуће је лажирати временске ознаке.

По пријему захтева од клијента, сервер проверава аутентичност НТП пакета. Да би то урадио, мора дешифровати колачиће, издвојити ААЕД алгоритам и кључеве. Након успешне провере исправности НТП пакета, сервер одговара клијенту у следећем формату.
- Проширење јединственог идентификатора је копија захтева клијента, мера против напада поновне репродукције.
- НТС Цоокие Ектенсион још колачића за наставак сесије.
- НТС Аутхентицатор и Енцриптед Ектенсион Фиелдс Ектенсион садржи АЕАД шифру са С2Ц кључем.
Друго руковање се може поновити много пута, заобилазећи први корак, пошто сваки захтев и одговор даје клијенту додатне колачиће. Ово има предност у томе што су релативно захтевне ТЛС операције рачунања и преноса ПКИ података подељене бројем поновљених захтева. Ово је посебно згодно за специјализоване ФПГА мераче времена, када се сва главна функционалност може спаковати у неколико функција из области симетричне криптографије, преносећи цео ТЛС стек на други уређај.
НТПСец
Шта је посебно код НТП-а? И поред тога што се аутор пројекта Дејв Милс потрудио да што боље документује свој код, ретки је програмер који ће моћи да разуме замршености алгоритама за синхронизацију времена старих 35 година. Неки од кодова су написани пре ПОСИКС ере, а Уник АПИ је тада био веома различит од онога што се данас користи. Поред тога, потребно је познавање статистике да би се сигнал очистио од сметњи на шумним линијама.
НТС није био први покушај да се поправи НТП. Када су нападачи научили да искористе рањивости НТП-а да појачају ДДоС нападе, постало је јасно да су потребне радикалне промене. И док су се нацрти НТС-а припремали и финализирали, Национална научна фондација САД-а је крајем 2014. хитно издвојила грант за модернизацију НТП-а.
Радну групу је водио не било ко, већ - један од оснивача и стубова заједнице отвореног кода и аутор књиге . Прва ствар коју су Ериц и његови пријатељи покушали да ураде је да пребаце НТП код са БитКеепер платформе на гит, али то није ишло на тај начин. Вођа пројекта Харлан Стенн био је против ове одлуке и преговори су заустављени. Тада је одлучено да се код пројекта рачва и НТПСец је рођен.
Солидно искуство, укључујући рад на ГПСД-у, математичку позадину и магичну вештину читања древног кода - Ерик Рејмонд је био управо хакер који је могао да изведе такав пројекат. Тим је пронашао стручњака за миграцију кода и за само 10 недеља НТП на ГитЛабу. Радови су били у пуном јеку.
Тим Ерика Рејмонда преузео је задатак на исти начин на који је Огист Роден урадио са каменим блоком. Уклањањем 175 КЛОЦ старог кода, успели су значајно да смање површину напада затварањем многих безбедносних рупа.
Ево непотпуне листе оних који су укључени у дистрибуцију:
- Недокументован, застарео, застарео или покварен рефцлоцк.
- Неискоришћена ИЦС библиотека.
- либоптс/аутоген.
- Стари код за Виндовс.
- нтпдц.
- Аутокеи.
- нтпк Ц код је преписан у Питхон-у.
- Снтп/нтпдиг Ц код је преписан у Питхон-у.
Поред чишћења кода, пројекат је имао и друге задатке. Ево делимичне листе достигнућа:
- Заштита кода од преливања бафера је значајно побољшана. Да би се спречило прекорачење бафера, све небезбедне стринг функције (стрцпи/стрцат/стрток/спринтф/вспринтф/гетс) су замењене сигурним верзијама које примењују ограничења величине бафера.
- Додата подршка за НТС.
- Повећана прецизност временског корака десетоструко повезивањем физичког хардвера. То је због чињенице да су савремени рачунарски сатови постали много тачнији од оних када је рођен НТП. Највеће користи од овога су имали ГПСДО и наменски радио-уређаји.
- Број програмских језика је смањен на два. Уместо Перл, авк, па чак и С скрипти, сада је све Питхон. Због тога постоји више могућности за поновну употребу кода.
- Уместо резанаца скрипти аутотоолс, пројекат је почео да користи систем за прављење софтвера .
- Ажурирана и реорганизована пројектна документација. Од контрадикторне и понекад архаичне збирке докумената створили су сасвим проходну документацију. Сваки прекидач командне линије и сваки конфигурациони ентитет сада имају једну верзију истине. Поред тога, ман странице и веб документација се сада креирају од истих основних датотека.
НТПСец је доступан за бројне Линук дистрибуције. Тренутно је најновија стабилна верзија 1.1.8, за Гентоо Линук претпоследња.
(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]
Цхрони
Постојао је још један покушај да се стари НТП замени безбеднијом алтернативом. Цхрони, за разлику од НТПСец-а, је написан из темеља и дизајниран је да поуздано ради у широком спектру услова, укључујући нестабилне мрежне везе, делимичну доступност или загушење мреже и промене температуре. Поред тога, Цхрони има и друге предности:
- цхрони може да синхронизује системски сат брже са већом прецизношћу;
- цхрони је мањи, троши мање меморије и приступа ЦПУ-у само када је то потребно. Ово је велики плус за уштеду ресурса и енергије;
- цхрони подржава хардверске временске ознаке на Линук-у, омогућавајући изузетно прецизну синхронизацију на локалним мрежама.
Међутим, цхрони-ју недостају неке од карактеристика старог НТП-а, као што су емитовање и мултицаст клијент/сервер. Поред тога, класични НТП подржава већи број оперативних система и платформи.
Да бисте онемогућили функционалност сервера и НТП захтеве за цхронид процес, само упишите порт 0 у датотеку цхрони.цонф. Ово се ради у случајевима када нема потребе да се одржава време за НТП клијенте или колеге. Од верзије 2.0, порт НТП сервера је отворен само када је приступ дозвољен директивом дозволе или одговарајућом командом, или је конфигурисан НТП пеер или се користи директива емитовања.
Програм се састоји од два модула.
- цхронид је услуга која ради у позадини. Прима информације о разлици између системског сата и спољног сервера времена и прилагођава локално време. Такође имплементира НТП протокол и може да делује као клијент или сервер.
- цхрониц је услужни програм командне линије за праћење и контролу програма. Користи се за фино подешавање различитих параметара услуге, на пример омогућавајући вам да додате или уклоните НТП сервере док цхронид наставља да ради.
Од верзије 7 РедХат Линук-а цхрони као услуга синхронизације времена. Пакет је доступан и за друге Линук дистрибуције. Најновија стабилна верзија је 3.5, која се припрема за издавање в4.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]
Како да подесите сопствени удаљени цхрони сервер на Интернету да бисте синхронизовали време на канцеларијској мрежи. Испод је пример подешавања ВПС-а.
Пример подешавања Цхрони-а на РХЕЛ / ЦентОС на ВПС-у
Хајде да сада мало вежбамо и поставимо сопствени НТП сервер на ВПС. Веома је једноставно, само изаберите одговарајућу тарифу на веб локацији РуВДС, набавите готов сервер и унесите десетак једноставних команди. За наше потребе, ова опција је сасвим прикладна.

Пређимо на подешавање сервиса и прво инсталирамо цхрони пакет.
[root@server ~]$ yum install chronyРХЕЛ 8 / ЦентОС 8 користе други менаџер пакета.
[root@server ~]$ dnf install chronyНакон инсталирања Цхрони-а, потребно је да покренете и активирате услугу.
[root@server ~]$ systemctl enable chrony --nowАко желите, можете да унесете измене у /етц/цхрони.цонф, замењујући НПТ сервере најближим локалним да бисте смањили време одговора.
# 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
Затим смо поставили синхронизацију НТП сервера са чворовима из наведеног базена.
[root@server ~]$ timedatectl set-ntp true
[root@server ~]$ systemctl restart chronyd.service
Такође је неопходно отворити НТП порт према споља, иначе ће заштитни зид блокирати долазне везе са клијентских чворова.
[root@server ~]$ firewall-cmd --add-service=ntp --permanent
[root@server ~]$ firewall-cmd --reload
На страни клијента довољно је правилно подесити временску зону.
[root@client ~]$ timedatectl set-timezone Europe/MoscowДатотека /етц/цхрони.цонф специфицира ИП или име хоста нашег ВПС сервера који користи НТП сервер цхрони.
server my.vps.serverИ коначно, почетак синхронизације времена на клијенту.
[root@client ~]$ systemctl enable --now chronyd
[root@client ~]$ timedatectl set-ntp true
Следећи пут ћу вам рећи које опције постоје за синхронизацију времена без интернета.
Извор: ввв.хабр.цом
