Главная
Главная Руководства FreeBSD › Настройка ntpd (FreeBSD 9+).



Автор:

Статья опубликована: 2018-06-03 17:11:31
Последние правки: 2020-01-30 18:09:42

ntpd - это сервер времени. С его помощью наш сервер синхронизирует своё время с серверами, заданными в настройках, а также и сам может отдавать время клиентам.

По большому счету, настраивать до недавних пор там было нечего, но 13 января 2014 года компьютерная команда экстренной готовности США (US-CERT) выпустила предупреждение о новом способе DDoS-атак - NTP amplification attack (CVE-2013-5211). Зараженные компьютеры отправляют запрос monlist с поддельным IP-адресом отправителя к NTP-серверу. Запрос monlist возвращает список из последних 600 клиентов ntpd. Таким образом, небольшим запросом от зараженного компьютера к жертве отправляется большой поток UDP.

Проверить свой сервер на уязвимость очень просто:
ntpdc -c monlist внешний_адрес_сервера
Если команда выдает список клиентов (а не «timed out, nothing received»), значит система уязвима.
  • Настраиваем

    Отключаем команду monlist в /etc/ntp.conf:
    disable monitor
    
    Разрешаем получение времени только клиентами из внутренней сети и localhost. Смотрим в /etc/ntp.conf список серверов для синхронизации, в моем файле их три:
    server 0.freebsd.pool.ntp.org iburst maxpoll 9
    server 1.freebsd.pool.ntp.org iburst maxpoll 9
    server 2.freebsd.pool.ntp.org iburst maxpoll 9
    
    Редактируем или добавляем строчки в /etc/ntp.conf. Сервера, с которыми синхронизируемся, должны быть разрешены при помощи restrict:
    restrict default ignore
    restrict -6 default ignore
    restrict 0.freebsd.pool.ntp.org noquery notrap
    restrict 1.freebsd.pool.ntp.org noquery notrap
    restrict 2.freebsd.pool.ntp.org noquery notrap
    restrict 127.0.0.1 nomodify notrap
    restrist -6 ::1 nomodify notrap
    restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
    
    restrict default ignore - по умолчанию всех посылаем в лес
    restrict -6 default ignore - в том числе и с ipv6 адресов
    restrict X.freebsd.pool.ntp.org noquery notrap - разрешаем менять время с этих пулов
    192.168.0.0 - это наша внутренняя сеть, с неё клиенты могут получать время, но не менять.

    Добавляем свой лог файл, чтобы не ковыряться в общем:
    logfile /var/log/ntp.log
    


  • /etc/rc.conf
    ntpd_enable="YES"
    


  • Перезапускаем:
    # /etc/rc.d/ntpd restart
    


  • Проверяем
    # ntpq -p
         remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
     0.freebsd.pool. .POOL.          16 p    -   64    0    0.000    0.000   0.000
    -91.206.16.3 (tm 89.109.251.22    2 u  129  128  377   74.392   22.078   6.348
    *ntp1.doorhan.ru .SOCK.           1 u   44   64  377    6.750    6.688   5.255
    +rnis-app.rnis66 89.109.251.23    2 u   56   64  377   25.272    7.775   4.201
    +89.221.207.113  194.190.168.1    2 u   55   64  377   18.993    7.525   3.687
    
    * - сервер, с которым наш сервер синхронизировался в последний раз
    + - сервер, синхронизация с которыи возможна
    - - сервер, синхронизация с которыи невозможна
    # ntpdate -q localhost
    server ::1, stratum 2, offset 0.000011, delay 0.02567
    server 127.0.0.1, stratum 2, offset 0.000019, delay 0.02568
    20 Dec 15:35:00 ntpdate[39927]: adjust time server ::1 offset 0.000011 sec
    


  • Синхронизируем время на сервере со своего ntp

    Для автоматизации данную команду рекомендуется выполнять через cron раз в сутки.
    # ntpdate -u localhost