19.8. Аутентификация с использованием ключей NTP
Проблема
Требуется организовать безопасную аутентификацию на локальных серверах NTP. Несмотря на редкие случаи использования уязвимостей в NTP злоумышленниками, важно удостовериться, что клиенты и серверы являются теми, за кого себя выдают. Аутентификация поможет избежать подделки синхронизации и защитит от передачи недостоверного времени.
Решение
Используйте встроенную схему аутентификации ntpkeys
в NTP. Начните с настройки сервера (в нашем примере это server1):
# /etc/ntp.conf
crypto pw seekritword
keysdir /etc/ntp/keys
Пароли хранятся в текстовом виде, поэтому для файла ntp.conf
необходимо установить права chmod 600
.
Создайте ключ на сервере server1
с помощью следующей команды:
# ntp-keygen -T -I -p seekritword
Скопируйте сгенерированный файл ntpkey_IFFpar_server1.4558615255
в директории /etc/ntp
всех клиентов server1
(имя файла будет уникальным и изменится при генерации). Этот ключ является секретным, поэтому передача должна быть защищена. Вы можете использовать безопасный носитель, например флешку или диск, и надёжно хранить его после копирования.
Теперь настройте клиентов. Создайте две символьные ссылки на новый ключ:
# ln -s ntpkey_IFFpar_server1.4558615255 ntpkey_iff_server1
# ln -s ntpkey_IFFpar_server1.4558615255 ntpkey_iff_client1
Отредактируйте запись сервера в файле /etc/ntp.conf
на клиенте, добавив ключевое слово autokey
для активации аутентификации:
server server1 autokey
Перезапустите ntpd
на всех компьютерах. Процесс синхронизации и аутентификации может занять некоторое время, обычно от одного до двух часов, прежде чем все клиенты будут надёжно подключены к серверу.
Комментарий
Команда ntp-keygen
поддерживает несколько ключевых параметров:
- -T — сгенерировать доверенный сертификат;
- -I — применение схемы идентификации IFF с заменой существующих файлов ключей;
- -p — назначение пароля для защиты ключей.
Для использования аутентификации с общедоступными серверами времени нужно:
- Найти серверы, которые поддерживают аутентификацию.
- Указать в
ntp.conf
конкретные адреса серверов (вместо использования пулов NTP).
Текущий список общедоступных серверов времени доступен здесь. Хотя атаки на NTP редки, даже если злоумышленник попытается выдать себя за сервер времени, изменения будут минимальными благодаря пулу серверов. NTP автоматически корректирует любые несоответствия, обеспечивая надёжную синхронизацию времени.
См. также
ssh(1).