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:
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.driftCriado o arquivo, será necessário configurar o NTP. Para isso deverá ser editado o arquivo de configuração ntp.conf
#vim /etc/ntp.confAltere 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 restartApó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>