(Network Time Protocol Server)
O NTP (Network Time Protocal) é um protocolo para a sincronização de hora.
Instalação do servidor NTP
# apt-get update ; apt-get install ntp ntp-doc (ao instalar o "ntp" a porta UDP 123 é aberta é o servidor já pode oferecer o serviço de sincronização de hora a qualquer cliente. Além disso, o servidor já começa a sincronizar a hora com os servidores da Internet e frequentemente essa sincronização é retentada. O pacote "ntp-doc" é uma documentação HTML instalada em "/usr/share/doc/ntp-doc/html/" muito útil para detalhar as opções do "ntpd" que o manual não cobre. Por exemplo, para ver em modo texto a documentação relacionada as opções de acesso digite "w3m /usr/share/doc/ntp-doc/html/accopt.html". Já a página geral digite "w3m /usr/share/doc/ntp-doc/html/index.html")
Obs: para sincronizar a hora com servidores que estão na Internet, o Firewall da rede precisa liberar a porta UDP 123 de origem e destino, pois é essa a porta utilizada por esse servidor e os servidores NTP da Internet.
Arquivo de configuração
# vi /etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift (especifica o arquivo usado para registrar a compensação da frequência do oscilador da hora local)
#statsdir /var/log/ntpstats/ (se descomentar, faz com que as estatisticas sejam registradas/logged. As quatro opções abaixo estão relacionadas com essa)
statistics loopstats peerstats clockstats (define os arquivos que serão criados. Nesse caso serão: loopstats peerstats clockstats)
filegen loopstats file loopstats type day enable (define o conteúdo do arquivo)
filegen peerstats file peerstats type day enable (idem)
filegen clockstats file clockstats type day enable (idem)
#server ntp.your-provider.example (essa linha é comentada por padrão e deve permanecer assim. Ela é usada para apontar um servidor de referência do seu domínio, ou seja, da sua rede interna caso assim deseje)
Obs: apesar desse servidor ser um servidor de hora (ntpd), ele também precisa sincronizar a hora com alguém confiável que nesse artigo chamaremos de servidores de referência.
server 0.debian.pool.ntp.org iburst dynamic (especifica um servidor, geralmente da Internet, que o "ntpd" deve sincronizar)
Obs1: a opção "iburst" é usada quando o servidor de referência não é encontrado, então o "ntpd" envia 8 pacotes consecutivos ao invés de um. Cada pacote é enviado num intervalo de 2 segundos. Esta opção é mais usada para servidores de referência que estão na Internet.
Obs2: a opção "burst" é usada quando o servidor de referência é encontrado, então o "ntpd" envia 8 pacotes consecutivos ao invés de um. Cada pacote é enviado num intervalo de 2 segundos. Esta opção não deve ser usada para servidores de referência que estão na Internet, pois aumenta o tráfego de rede. O "ntpd", depois de (re)iniciado, leva alguns minutos para confiar totalmente nos servidores de referência o qual ele está apontando. Esse confiança é conseguida através de diversas trocas de pacotes e verificações dos dados (horas) oferecidos (se esses dados estão de acordo com certas medição impostas pelo "ntpd"). Antes disso, "ntpd" não vai fornecer a hora a seus próprios clientes enquanto a confiança não estiver estabelecida. É exatamente nesse momento que a opção "burst" pode entrar, acelerando a troca inicial de pacotes, diminuindo para poucos segundos o tempo para confiar nos servidores de referência. Contudo, se deve considerar o impacto do aumento do tráfego.
Obs3: a opção "dynamic" permite que o(s) servidor(es) de referência, mesmo que não encontrado, continue a ser usado. Isso é importante, pois assume que o problema de não encontrar tal servidor é algo temporário e logo será resolvido. Essa opção pode ser bastante útil para mobiles que geralmente tem acesso intermitente as WLANs (Wireless LAN).
server 1.debian.pool.ntp.org iburst dynamic (idem)
server 2.debian.pool.ntp.org iburst dynamic (idem)
server 3.debian.pool.ntp.org iburst dynamic (idem)
restrict -4 default kod notrap nomodify nopeer noquery (a opção "restrict" está relacionada a algumas restrições ou permissões que podem ser usadas tanto para os servidores de referência quanto para os clientes. O "-4" diz que esta restrição é válida somente para o IPv4. O "default" significa 0.0.0.0, ou seja, todas as redes e para visualizar isso use "ntpdc -nc reslist". A "kod" (KissOfDeath) é usada quando ocorre uma violação de acesso, sendo que tais pacotes são limitados não mais que um por segundo e se uma segunda tentativa de violação ocorrer, o pacote e descartado. O "notrap" nega o serviço de trap/captura de mensagens de controle que é usado por programas de logging de eventos remotos. O "nomodify" nega as requisições "ntpq" e "ntpdc" de modificarem o estado do servidor, no entando as requisições que retornam somente informações são permitidas. O "nopeer" nega pacotes como os broadcast, symmetric-active e manycast quando tal configuração não existe. O "noquery" nega as consultas "ntpq" e "ntpdc", no entando, os serviço de hora não é afetado. A opção "noquery" sempre verifica as outras opção linha que começam com "restrict", pois pode haver nelas exceções)
Obs: a flag "ignore" nega todos os tipos de pacotes, incluindo as perguntas ntpq e ntpdc. A flag "noserve" nega todos os tipos de pacotes, exceto as perguntas ntpq e ntpdc. A flag "interface" ficarei devendo o significado. Por fim, a flag "ntpport" significa que somente os pacotes que tiverem como origem a porta 123 UDP serão aceitos.
restrict -6 default kod notrap nomodify nopeer noquery (idem, só que para o IPv6)
restrict 127.0.0.1 (permite aos usuários locais acesso completo ao servidor NTP caso seja acessado pela interface IPv4)
restrict ::1 (permite aos usuários locais acesso completo ao servidor NTP caso seja acessado pela interface local IPv6)
Obs: por padrão o "ntpd" só sincroniza a hora com os servidores de referência e oferece a hora a qualquer um (de qualquer subrede), mas não permite mudanças nas suas configurações, a não ser que sejam usuários locais, usando o endereço local (127.0.0.1 ou ::1). Para mais detalhes sobre as opções de acesso digite "w3m /usr/share/doc/ntp-doc/html/accopt.html".
#restrict 192.168.123.0 mask 255.255.255.0 notrust (permite aos clientes dessa rede acesso completo ao servidor NTP, mas somente estiver criptograficamente autênticados)
#broadcast 192.168.123.255 (esta opção faz com que o "ntpd" envie periodicamente mensagens para os clientes. Usualmente se utiliza o endereço de broadcast da rede ou o de multicast)
#disable auth (se desejar ouvir as mensagens de broadcast da rede para sincronizar a hora, descomente essa linha e a linha a seguir)
#broadcastclient (ver comentário acima)
#interface listen 10.0.0.1 (faz com que o serviço NTP seja levantado somente em certas interfaces de rede)
Arquivo de configuração anterior sem os comentários (veja que não é necessário modificar a configuração original)
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
#server ntp.your-provider.example
server 0.debian.pool.ntp.org iburst dynamic
server 1.debian.pool.ntp.org iburst dynamic
server 2.debian.pool.ntp.org iburst dynamic
server 3.debian.pool.ntp.org iburst dynamic
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1
#restrict 192.168.123.0 mask 255.255.255.0 notrust
#broadcast 192.168.123.255
#disable auth
#broadcastclient
#interface listen 10.0.0.1
-------------------------------------------------------------
ARQUIVO DE CONFIGURAÇÃO (O QUE REALMENTE PRECISA SE MODIFICAR)
NÃO É NECESSÁRIO SE MODIFICAR O ARQUIVO DE CONFIGURAÇÃO, BASTA DAR UM START NO SERVIÇO AO INSTALAR (AS LINHAS INICIADAS POR "server" ESPECIFICAM OS SERVIDORES QUE SÃO OS DE REFERÊNCIA MUNDIAL. A ÚNICA NECESSIDADE É QUE O FIREWALL LIBERE A SAÍDA 123/UDP DESSA MÁQUINA PARA A INTERNET)
-------------------------------------------------------------
Restartando o serviço
/etc/init.d/ntp restart (caso se tenha modificado o arquivo de configuração é necessário digitar esse comando. Por padrão, ao instalar o pacote "ntp" não é necessário modificar o arquivo de configuração)
Comandos interessantes
# ntpq -p (mostra a lista dos servidores referência e também um resumo do seu estado. Apesar desse comando, nada impede olhar a situação também nos logs, com o comando "tail -f /var/log/syslog | grep -i ntpd")

Um outro campo muito importante é "remote", ele informa quais são os servidores de referência. Eles contém sinais como o *, +, -, = etc. O * significa que é o servidor escolhido como o servidor de referência principal e só a partir do momento que aparecer esse * é que os clientes podem sincronizar a hora com o "ntpd". A escolha do servidor de referência principal pode demorar alguns minutos.
# ntpdc -nc reslist (mostra as permissões de acesso dadas aos clientes no arquivo de configuração. O "-n" serve para não consultar o DNS)

Referências Bibliográgicas
http://softwarelivre.org/andre-ferraro/blog/linux-instalando-configurando-e-sincronizando-o-relogio-de-servidores-e-clientes-com-ntp-no-debian-ubuntu-e-windows./