Mantendo atualizada a hora de seus servidores com ntpd e openntpd
Autor: André Zenun | Publicado: 2008-09-01T17:56:00-03:00

Um servidor NTP é um software que implementa o protocolo Network Time Protocol sendo extremamente útil para manter a data e hora correta nas estações de trabalho e principalmente no servidores! É de grande importancia para arquivos de log pois de nada serve ter um horário errado! Caso seja necessário realizar alguma auditoria nestes arquivos por invasão, acesso a determinados recursos ou qualquer informação na qual se necessite saber  com precisão a hora de acesso, a data contida ali é crucial!Recentemente implementei um servidor NTP em minha rede e consegui ter uma consistencia de horários em meus servidores! Eu tenho alguns servidores Debian e Ubuntu e cada um sincronizava com o servidor que vinha por padrão no programa ntpdate, e  sempre existia uma diferença de tempo (as vezes de alguns minutos) entre eles.A implementação do servidor é simples e não tive problemas com ela. Para meu servidor NTP usei um Debian que tinha ai fazendo outras funções em minha rede e instalei o pacote da seguinte forma:aptitude install ntpA instalação ocorreu sem problemas! O arquivo de configuração no Debian esta localizado em /etc/ntp.conf. Acrescentei algumas linhas no padrão que ele usa e esta funcionando muito bem. As linhas acrescentadas foram as seguintes:restrict 10.11.12.0 mask 255.255.255.0 nomodify notraprestrict 13.14.15.0 mask 255.255.255.0 nomodify notrapEstas linhas basicamente permitem o acesso ao servidor a estas redes! É uma proteção que vai além das regras de firewall que você tiver no seu servidor! Depois de adicionar essas linhas inicie o servidor e com o comando ntpdc você poderá ver a lista de servidores que ele utilizará para se sincronizar! O comando exato é: ntpdc -s.  Atento aos logs você verá mensagens do software como esta:ntpd[6381]: ntpd 4.2.2p4@1.1585-o Sun Mar  4 13:21:35 UTC 2007ntpd[6382]: precision = 2.000 usecntpd[6382]: Listening on interface wildcard, 0.0.0.0#123 Disabledntpd[6382]: Listening on interface lo, 127.0.0.1#123 Enabledntpd[6382]: Listening on interface eth1, 13.14.15.16#123 Enabledntpd[6382]: kernel time sync status 0040ntpd[6382]: frequency initialized 0.000 PPM from /var/lib/ntp/ntp.driftSe você encontrar essas linhas em seu servidor, ele está iniciando o processo de se sincronizar com os servidores que estão no arquivo de configuração. Aqui meu servidor precisou de aproximadamente 5 minutos até que ele estivesse pronto para receber requisições. Quando isso acontecer você verá uma mensagem assim em seu log:ntpd[6382]: synchronized to 208.75.88.4, stratum 2ntpd[6382]: kernel time sync enabled 0001Isso esta indiciando o ip do servidor escolhido para se sincronizar e qual o nivel (stratum) deste na hierarquia NTP. Com isto seu servidor está pronto para receber requisições de seus servidores ou computadores de sua rede interna.Com o servidor instalado, agora é a fase da instalação do cliente ntp nos seus servidores ou computadores com linux! A instalação é tão simples quanto a do servidor e fiz da seguinte maneira:aptitude install openntpdEste programa é em minha opnião, muito melhor do que o ntpdate, pois ele verifica constantemente o horário do seu servidor evitando ter uma hora errada! O que você pode fazer se o horário dos seus servidores estiverem com uma grande diferença é utilizar o ntpdate para a primeira atualização e o openntpd para manter ele sincronizado!Após concluída a instalação, aqui em meus servidores existia uma falha no script de inicialização do serviço que não especificava o arquivo de PID, acarretando em erros na hora de reinicializar o processo ou mesmo de parar-lo. Para arrumar isso é necessário agregar este parâmetro "--pidfile /var/run/openntpd/openntpd.pid" junto ao comando start-stop-daemon! Você pode fazer isso editando o arquivo na mão ou pode usar o sed para mudar isso para você:sed -e 's/start-stop-daemon /start-stop-daemon --pidfile \/var\/run\/openntpd\/openntpd.pid /g' openntpd > openntpd.novoDepois é só mover o novo para o antigo e iniciarlizar o processo! Caso você tenha algum erro na inicialização, pode ser que exista algum processo preso e será necessário executar um kill em seu PID! Com isso tudo no lugar vamos configurar agora nosso cliente para se autenticar no servidor que acabamos de criar! Como no servidor não foi necessário mudar muito para que ele funcionasse, o meu arquivo está assim:listen on 10.11.12.13server 10.11.12.14Ao iniciar o processo você deve ficar atento aos logs para verificar se não existe nenhuma mensagem de erro, você deve ver algo parecido com isto em seus arquivos:ntpd[779]: listening on 10.11.12.13ntpd[779]: ntp engine readyntpd[779]: peer 10.11.12.14 now validNeste ponto você já possui sua estação se sincronizando com seu servidor NTP local! Essa é uma ferramenta muito importante em uma rede! Espero que este artigo ajude a implementar o de vocês!