Administração de redes NTP Definição O NTP (Network Time Protocol), é um protocolo desenvolvido para sincronizar computadores e equipamentos com horários de um servidor de tempo bem confiável, tal qual o UTC (Universal Time Coordinated), que em português singnifica: Horário Universal Coordenado, que é na verdade um valor padrão oficial que pode ser usado para a sincronização dos servidores, isto é, o seu servidor NTP, na sua LAN pode usá lo para obter o valor preciso do tempo atual para depois usar este tempo para sincronizar os computadores da sua rede local. Para maiores informações consulte o site oficial do Projeto NTP (http://www.ntp.org/). Uma observação importante é que o termo Universal no UTC significa que o horário pode ser usado em qualquer parte do mundo, e o termo Coordenado significa que várias instituições contribuem para a formação deste tempo e o UTC faz uma combinação destes valores. A motivação para a criação de um servidor NTP em uma LAN se dá pelo fato de dar maior facilidade em lidar com as situações comerciais nas empresas ou quaisquer outras instituições que precisem usar o tempo constantemente e de forma confiável. Imagine o que aconteceria se os satélites de defesa de um país estivessem com um atraso de 1 segundo entre os aviões, mísseis e radares e outros. Numa guerra e em muitas situações na vida, 1 segundo pode ser o tempo entre a salvação e a morte! Podemos citar ainda os problemas em algumas operações, tais como: as bancárias, as de logística, as operações de BI (Business Intelligence Inteligência de Negócios) e muitas outras. Além desses problemas, a falta de sincronia leva a problemas de segurança, uma vez que dificulta a análise dos LOGs nos sistemas instalados. O protocolo NTP funciona baseado em um modelo de arquitetura cliente servidor hierárquico, ou seja, existem vários servidores responsáveis pela manutenção do tempo, e é dado o nome a cada um desses de stratum. No topo desta hierarquia existe um pequeno número de máquinas conhecidas como relógios de referência. Um relógio de referência é chamado stratum 0 o nível mais baixo da hierarquia, que tipicamente é um relógio de césio ou um GPS (Global Positioning System) Sistema de Posicionamento Global, que recebem informações diretamente de satélites. Máquinas ligadas a estes últimos são chamados stratum 1, ou seja, são clientes do stratum 0. Estes servidores de tempo, são os de nível mais alto na internet, e são os melhores servidores NTP avaliáveis. Outros servidores que se conectarem a estes servidores receberão os nomes: stratum 2, stratum 3, stratum 4,..., stratum n, stratum n+1, e, claro, de acordo com o modelo hierárquico cliente servidor. A figura abaixo mostra como fica a representação da interconectividade entre os equipamentos:
Fonte: http://tycho.usno.navy.mil/gif/strata.jpg Apresentamos aqui algumas informações interessantes: 1 segundo é o tempo gasto por 9.192.631.770 vibrações de luz ( de um específico comprimento de onda) emitido por um átomo de césio 133. Com esta precisão um relógio de césio demoraria 6000 anos para diferir por mais que 1 segundo. A figura abaixo ilustra um relógio de césio, que pode ser um servidor stratum 0, ou se conectar a servidores stratum 0 oficiais, tendo a capacidade de fornecer 10.000 sincronizações simultâneas.
Fonte: http://www.ntp servers.com/nts 9000.html Observação: Quando tivermos mais do que um servidor NTP operando no mesmo stratum ele ira decidir qual tem o tempo de melhor qualidade e decidirá qual usar para a sincronização. INSTALAÇÃO DO SERVIDORES NTP Para instalar o servidor NTP e criar o seu stratum com tudo funcionando siga os procedimentos abaixo: No Debian: # apt get install ntp No Fedora: # yum install ntp
Agora que o NTP está instalado vamos sincronizar a data e horário atual do nosso servidor com os servidores stratum de nível inferior. Para isso teremos que instalar o programa ntpdate, conforme mostramos a serguir: No Debian: # apt get install ntpdate No Fedora: # yum install ntpdate FIM DA INSTALÇÃO Em seguida, devemos sincronizar o nosso servidor com os stratum de nível mais baixo da internet, executando os seguintes procedimentos para garantir melhores ajustes nas conformidades dos fusos horários: Começaremos escolhendo o link (south america.pool.ntp.org), que fora obtido diretamente do site http://www.pool.ntp.org/zone/@, conforme mostramos abaixo nas imagens de print screen:
Após escolher o link South America, indicado em vermelho na figura acima, o que aparece é uma lista dos servidores da América do Sul São eles: Brazil (br.pool.ntp.org), Chile (cl.pool.ntp.org) e Argentina (ar.pool.ntp.org), conforme mostramos na figura a seguir:
Escolha o link Brasil, é claro, e veja a lista de servidores no Brasil, conforme mostramos a seguir: Copie os endereços grifados acima em vermelho, pois eles serão usados no arquivo ntp.conf.
Além disso o daemon ntpd usa o este arquivo para manter a sincronia com os servidores marcados acima e dessa forma poder ofertar uma marcação de tempo adequada para a LAN. Antes de configurarmos o nosso servidor NTP devemos sincronizar o nosso servidor com o servidor 1.br.pool.ntp.org (vide figura anterior) e, em seguida atualizamos o arquivo ntp.conf, conforme mostrar abaixo: SINCRONIZAÇÃO: 1º) Agora sincronize o com o servidor 1.br.pool.ntp.org com o comando: Observe que o nosso servidor estava fora de sincronia em 0.082225 segundos (valor marcado em vermelho na figura acima) e valor da hora real em verde 17:02:55, 19 de abril FIM DA SINCRONIZAÇÃO Após a sincronização faça a atualização do seu arquivo de configuração do servidor (ntp.conf), colocando as linhas abaixo (em negrito): Obs: As linhas que estiverem com o # são comentários e foram deixadas para dar melhor clareza e aparência com o arquivo ntp.conf que o leitor está vendo no seu computador.
# /etc/ntp.conf, configuration for ntpd driftfile /var/lib/ntp/ntp.drift statsdir /var/log/ntpstats/ statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable # You do need to talk to an NTP server or two (or three). #server ntp.your provider.example # pool.ntp.org maps to more than 300 low stratum NTP servers. # Your server will pick a different set every time it starts up. # *** Please consider joining the pool! *** # *** <http://www.pool.ntp.org/join.html> *** # server 0.debian.pool.ntp.org iburst server 1.br.pool.ntp.org server 1.south america.pool.ntp.org server 3.south america.pool.ntp.org # By default, exchange time with everybody, but don't allow configuration. # See /usr/share/doc/ntp doc/html/accopt.html for details. restrict 4 default kod notrap nomodify nopeer noquery restrict 6 default kod notrap nomodify nopeer noquery # Local users may interrogate the ntp server more closely. restrict 127.0.0.1 restrict ::1 # Clients from this (example!) subnet have unlimited access,
# but only if cryptographically authenticated #restrict 192.168.123.0 mask 255.255.255.0 notrust # restrict 192.168.1.0 mask 255.255.255.0 notrust # If you want to provide time to your local subnet, change the next line. # (Again, the address is an example only.) #broadcast 192.168.123.255 broadcast 192.168.1.255 # If you want to listen to time broadcasts on your local subnet, # de comment the next lines. Please do this only if you trust everybody # on the network! #disable auth #broadcastclient Após ter feito as mudanças no seu arquivo de configuração ntp.conf e as salvado, conforme mostramos acima, e além disso, ter sincronizado o servidor NTP da sua LAN, será necessário inicializá lo para que prosseguir a configuração das máquinas que serão os clientes na sua rede local. Observe que os dados de endereço IP da rede local foram colocados nas linhas: broadcast 192.168.1.255 Já os dados dos servidores stratum de nível mais baixo são apresentados nas linhas: server 1.br.pool.ntp.org server 1.south america.pool.ntp.org server 3.south america.pool.ntp.org Nota: Os endereços acima foram testados numa LAN de teste e servem apenas para ilustrar ao leitor como proceder, sendo necessária a configuração destes endereços IP nas conformidades da sua LAN. Para checar se está tudo certo vamos fazer algumas consultas ao nosso servidor stratum local e verificar qual é o atraso que temos em relação ao servidores stratum de nível inferior os quais
estamos usando para ajustar o nosso relógio. No termial, execute os seguintes comandos (digite o e aperte a tecla Enter ): $ ntpdc ntpdc> Observe que apareceu uma linha de comandos na qual você deverá digitar o comando help + Enter, como mostramos abaixo: $ ntpdc ntpdc>help O resultado é uma lista de vários comandos que podem ser usadas para obter muitas informações sobre o nosso servidor stratum, como apresentamos a seguir: Obtendo informações do nosso servidor stratum: Note que o comando sysinfo nos mostra o nível do nosso servidor (stratum: 3 nível 3) e também o servidor stratum 2 que estamos usando (reference ID: [200.160.0.8]). A fim de melhor
mostrar o que está acontecendo faça um outro teste usando outro servidor stratum, como por exemplo o servidor: time-c.timefreq.bldrdoc.gov #ntpdate u time c.timefreq.bldrdoc.gov Depois de alguns instantes execute o comando $ ntpdc novamente, conforme mostramos na figura abaixo: Obs: ntpq Este utilitário é usado para monitorar o daemon ntpd e determinar o desempenho. ntpd É o daemon em si. ntpdc É um programa que permitem realizar consultas a servidores NTP sobre o estado do mesmo ou re mudanças de tal estado. ntp keygen Gera uma chave privada. ntptime Lê variáveis de tempo do kernel. ntpsweep Varre os servidores NTP e reporta a suas relações. Observe os valores marcados em vermelho e verde e compare com os da sincronização anterior, e depois volte aos valores antigos executando novamente os comandos: # ntpdate u 1.br.pool.ntp.org
SINCRONIZAÇÃO DOS COMPUTADORES CLIENTES: Nas máquinas que serão clientes do seu servidor NTP instale os programas ntpdate, conforme mostramos a seguir: #apt get install ntpdate Verifique a hora e data antes de sincronizar: Agora sincronize o horário da primeira máquina cliente, conforme mostramos abaixo: Observe como a nossa máquina cliente estava fora de sincronia 23734.957303 segundos e também que a data e hora do sistema foi alterada para 17:10:15, 19 de abril. Faça o mesmo procedimento nas demais máquinas da rede e tenha e crie uma cron para cada máquina executar o comando # ntpdate u 192.168.1.30 de 1 em 1 hora. Execute várias vezes o comando anterior de 2 em 2 minutos e veja a mudança no campo offset (veja como a sincronia evolui com o tempo). A criação de cron é abordada no módulo de Linux Intermediário, cabendo ao leitor a sua revisão, se é que a tem esquecido. FIM DA SINCRONIZAÇÃO DOS CLIENTES: Informações adcionais sobre a configuração com segurança como foco serão abordadas no módulo Segurança de Redes Linux.