Serviço NTP

O que é o NTP?

NTP (Network Time Protocol) é um protocolo utilzado na sincronização dos relógios dos computadores, utilizando a porta 123 UDP para comunicação. Com isso ele define um jeito para um grupo de computadores conversar entre si e acertar seus relógios, baseados em alguma fonte confiável de tempo, como os relógios atômicos do Observatório Nacional, que definem a Hora Legal Brasileira.

Qual a vantagem em utilizar o NTP?

Diferentes softwares e aplicações fazem uso do relógio do computador e podem ter seu funcionamento comprometido se o relógio inesperadamente passar a indicar um horário errado, especialmente se for um horário no passado. Isso se agrava principalmente na internet, com vários computadores trocando informações entre si. Infelizmente os relógios dos computadores são imprecisos e podem atrasar ou adiantar com o passar do tempo, e até mesmo acidentalmente podemos alterar o horário do computador. Esses softwares e aplicações podem ser sensíveis a problemas relativos à sincronização do tempo. Como exemplo de aplicação afetada pelo tempo, podemos citar o agendador de eventos, Cron, dos sistemas unix. No âmbito de segurança de redes, é imprescindível que os relógios dos computadores estejam sincronizados. Investigações relacionadas a incidentes de segurança podem ser inviabilizadas caso os servidores envolvidos e os diversos arquivos de log discordem entre si em relação ao tempo. Vale ressaltar que, para algumas aplicações, exatidão da ordem se segundos pode ser suficiente, porém para outras, é necessário manter os relógios com diferenças na ordem dos milisegundos entre si e em relação à hora certa. O NTP quando corretamente utilizado é capaz de garantir as propriedades necessárias ao relógio do computador para o bom funcionamento das aplicações.

Funcionamento do NTP

Os servidores NTP formam uma topologia hierárquica,dividida em estratos(strata), numerados de 0 a 16, o stratum 0 representa a referência de tempo primária, podendo ser um GPS ou um relógio atômico. O stratum 16 indica que o servidor está inoperante. Exemplo de uma associação em 3 stratums:

clip_image002.jpg

De acordo com a figura observamos que o NTP funciona como servidor e também como cliente.

Instalação e configuração de um servidor NTP no Debian

Obs: o símbolo # indica operação como root

# aptitude update
# aptitude install ntp

Após instalados o pacote ntp e todas as suas dependências, será necessário criar o arquivo ntp.drift, que registra as instabilidades na frequência do relógio do seu computador e o NTP, tomando como base esse registro para sincronizar o relógio local com o servidor remoto. Para isso execute o seguinte comando:

#touch /etc/ntp.drift

Criado o arquivo, será necessário configurar o NTP. Para isso deverá ser editado o arquivo de configuração ntp.conf

#vim /etc/ntp.conf

Altere o arquivo existente por este(Exemplo de uma configuração para um servidor NTP):

#"memoria" para o escorregamento de frequencia do micro
driftfile /etc/ntp.drift

# estatisticas do ntp que permitem verificar o historico
# de funcionamento e gerar graficos
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

# servidores stratum2
# Sintaxe server nome-do-servidor.dominio.br iburst
server ntp.pop-ba.rnp.br iburst
server a.ntp.br iburst
server b.ntp.br iburst
server c.ntp.br iburst
server ntp.ufba.br iburst
# configuracoes de restricao de acesso
restrict default kod notrap nomodify nopeer

Nesta configuração básica de um servidor NTP, a linha "restrict default kod notrap nomodify nopeer" indica que qualquer solicitante poderá sincronizar com o nosso servidor, sem modificação qualquer na configuração do nosso servidor local.

Maiores detalhes sobre configuração do NTP, pode ser obtida através das referências indicadas no fim desta documentação.

Com a conclusão destas etapas será necessário reiniciar o serviço NTP, execute o seguinte comando:

# /etc/init.d/ntp restart

Após este passo, o servidor NTP deverá estar funcionando (lembrando que ele pode demorar alguns minutos para sincronizar com os servidores remotos) Para verificar se o serviço está ativo, digite o comando:

$ ntpq -p (não precisa ser root)

Uma resposta válida deverá ser parecida com essa:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*a.ntp.br        200.160.7.186    2 u   50   64  377   26.580  -62.389   1.510
+b.ntp.br        200.20.186.76    2 u   43   64  377   21.320  -60.631   0.827
+c.ntp.br        200.160.7.186    2 u   39   64  377   34.394  -60.716   0.980

Instalação e Configuração do NTP Cliente(Linux e Windows)

Linux

Podemos utilizar o pacote ntpdate, para isso executamos o seguinte comando:

# aptitude install ntpdate # ntpdate (ip-do-servidor-ntp)

Precisamos criar uma rotina no crontab para que o ntpdate sincronize em um intervalo de tempo, no nosso caso sugerimos 30 min

#[minutos] [horas] [dias do mês] [mês] [dias da semana] [usuário] [comando]
0,30          *             *      *            *        root      /usr/sbin/ntpdate (ip-do-servidor- ntp)
 


Podemos utilizar também o pacote NTP(Deamon) e configurá-lo de modo a atuar somente como cliente

# aptitude install ntp
#touch /etc/ntp.drift

Substitua o arquivo /etc/ntp.conf para este sugerido:


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
 # poderá adicionar mais servidores NTP a sintaxe é  server <ip>
server <ip-do-servidor-NTP>
# Modificando opções de acesso, nesse caso os servidores não estão autorizados a modificar a configuração de tempo de execução do Linux ou consulta ao servidor NTP.
restrict default notrust nomodify nopeer
restrict 127.0.0.1 
restrict <ip-do-servidor-NTP>
#Caso seja adicionado mais que um servidor NTP para sincronização, adicionar a linha restrict <ip-do-servidor-NTP>

Após feito isso , será preciso reiniciar o serviço, execute o comando:

# /etc/init.d/ntp restart

Para testar se está tudo funcionando execute:

$ ntpq -p

Windows

Existem alguns clientes de código aberto para Windows, como é o caso do NetTime, os passos de instalação e configuração estão descritos no site:

http://www.nara.org.br/servicos/ntp/ntp-para-windows/

Referências