Сегодня вкратце пробежимся по вопросу синхронизации времени, по протоколу NTP (Network Time Protocol)
Сначала определимся, для чего нам синхронизировать время на оборудовании, таком как: коммутаторы, маршрутизаторы, файрволлы, и так далее.
Делается это в первую очередь для того, чтоб отследить по логам когда произошло то или иное событие. И вы можете себе представить, какая польза будет от логов, если время не синхронизированное.. правильно — никакой.
Протокол NTP работает на основе протокола UDP, через 123 порт.
У данного протокола есть некоторая иерархия для синхронизирующих систем, иными словами уровни.
Уровень 1 присваивается системе, которая синхронизируется с высокоточными часами, например через GPS.
Система, которая будет синхронизировать с Уровня 1, будет иметь Уровень 2, и так далее.
Тем самым мы можем определить насколько точным временем обладает станция, с которой мы синхронизируемся.
В нашей ситуации у нас в сети есть машина с точным временем, у меня она настроена на основе FreeBSD, с этой машины, главное сетевое устройство будет брать время (синхронизировать), и тем самым будет становиться главным для других сетевых устройств (в идеологии cisco будет ntp мастером).
Хочу отметить тот факт, что по NTP передается время только в формате UTC (Гринвич), каждая тайм зона настраивается не посредственно на железке.
Давайте рассмотрим пример простой настройки NTP.
Для начала синхронизируем время на нашем главном роутере (который будет раздавать другим сетевым устройствам ).
Для этого заходим в режиме глобальной конфигурации:
ntp server 10.0.100.254
где, 10.0.100.254 в нашем случае это машина с FreeBSD, имеющая точное время.
Этого достаточно для минимальной настройки.
Теперь проверим, смогли ли мы подключиться к серверу времени и получить с него время, для этого используем команду:
show ntp associations
должны увидеть нечто подобное:
Звездочка напротив ip нашего ntp сервера, говорит нам, что все хорошо, связь по крайней мере установлена.
Теперь посмотрим, синхронизировалось ли время?
show ntp status
Если все синхронизировалось, то мы должны увидеть следующее:
Время получено, теперь необходимо установить нужную там тайм зону.
Так же в режиме глобальной конфигурации делаем:
clock timezone MSK/MSD 3
Теперь давайте проверим время:
Все замечательно.
Перейдем к настройке нашего роутера в режим мастера.
Для этой настройки, нам необходимо что данный роутер мастер и указать уровень (в cisco он зовется как stratum number), тот самый, о котором я говорил в начале, я укажу уровень пятый.
ntp master 5
Теперь попробуем настроить на другом сеттером устройстве ntp, чтоб оно синхронизировалось с нашего основного роутера, делается это так же как и здесь выше настраивали синхронизацию с FreeBSD сервера.
ntp server 10.0.100.1 prefer
где, 10.0.100.1 это наш головной роутер.
prefer это ключевое слово, которое указывает что данный ntp сервер является приоритетным (тоесть можно прописать, что синхронизировать можно не с одного сервера, а с нескольких, делается это для того, что если один недоступен, или время слишком отличается от других, что говорит о каких-то проблемах, устройство может переключиться на другой сервер времени, а prefer делает этот сервер более предпочтительным, нежели другие.)
так же мы указываем нужную нам таймзону.
clock timezone MSK/MSD 3
Проверяем:
Все замечательно, все работает.
Теперь рассмотрим вопрос безопасности.
Для начала, разберем вопрос по ограничению с помощью ACL, кто может синхронизировать, а кто нет.
Все достаточно стандартно и прозрачно.
На сервере времени создаем соответствующий ACL:
access-list 20 remark ACCESS to NTP Sync
access-list 20 permit 10.0.100.3
теперь привяжем этот список доступа к ntp.
ntp access-group serve-only 20
Если все настроено верно, то связь с ntp севером установится и синхронизация пройдет успешно.
Так же дополнительно можно прописать на клиентах список доступа. К каким серверам времени можно обращаться. Делается это похожим способом:
access-list 20 remark ACCESS SYNC to NTP Serv
access-list 20 permit 10.0.100.1
Привяжем список доступа к NTP
ntp access-group peer 20
Теперь рассмотрим безопасность на основе аутентификации.
Все также достаточно прозрачно.
В конфигурацию ntp достаточно добавить следующее:
ntp authentication-key 1 md5 15060E1F10243F34 7
ntp authenticate
ntp trusted-key 1
первой командой мы задаем ключ аутентификации, второй включаем аутентификацию, а третей указываем что аутентификацию проводить по первому ключу.
Настраиваем это на каждой из сторон (сервер — клиент).
Вот собственно и все. Получилась небольшой вводный курс по настройке NTP на Cisco устройствах.
Для отладки используем :
ASW-M#debug ntp ?
adjust NTP clock adjustments
authentication NTP authentication
events NTP events
loopfilter NTP loop filter
packets NTP packets
params NTP clock parameters
refclock NTP reference clocks
select NTP clock selection
sync NTP clock synchronization
validity NTP peer clock validity
ASW-M#debug ntp
Включаем все что нам интересно, например events, sync, auth и смотрим что происходит.
Если мы зашли на устройство через ssh/telnet не забываем ter mon 🙂