{"id":380,"date":"2012-09-13T14:01:35","date_gmt":"2012-09-13T17:01:35","guid":{"rendered":"http:\/\/blog.abratel.com.br\/?p=380"},"modified":"2012-09-13T14:32:19","modified_gmt":"2012-09-13T17:32:19","slug":"ntp-servidor-hora-certa","status":"publish","type":"post","link":"https:\/\/blog.abratel.com.br\/?p=380","title":{"rendered":"NTP Servidor &#8211; Hora certa"},"content":{"rendered":"<p>O que \u00e9 NTP?<\/p>\n<p>A grosso modo podemos dizer que o NTP \u00e9 um protocolo que visa manter os rel\u00f3gios dos diversos equipamentos de rede sincronizados. http:\/\/pt.wikipedia.org\/wiki\/NTP<\/p>\n<p>Para que rel\u00f3gios sincronizados?<\/p>\n<p>Simples, em caso de ataques ou an\u00e1lise de logs \u00e9 muito importante que todos os equipamentos estejam com os rel\u00f3gios acertados.<\/p>\n<p>Imagine que voc\u00ea precise ver o que um usu\u00e1rio fez, primeiro voc\u00ea olha o firewall, hor\u00e1rio de entrada 09:03:42, depois olha o servidor web, hor\u00e1rio de acesso 09:02:07, depois o servidor de email, 09:15:48, cada maquina com um hor\u00e1rio diferente e que foram acessadas praticamente ao mesmo tempo.<\/p>\n<p>Ao verificar o rel\u00f3gio de cada maquina voc\u00ea v\u00ea uma diferen\u00e7a absurda em cada rel\u00f3gio, voc\u00ea pode fazer isso ai nas suas maquinas para constatar, nenhum ter\u00e1 o hor\u00e1rio igual a outra, a diferen\u00e7a varias em minutos e n\u00e3o em segundos.<\/p>\n<p>Isso \u00e9 muito prejudicial, e no hor\u00e1rio de ver\u00e3o? Ajustar o hor\u00e1rio maquina por maquina?<\/p>\n<p>Todos esse problemas podem ser resolvidos usando o NTP, por exemplo, para sincronizar uma maquina basta utilizar o comando.<\/p>\n<p># ntpdate pcdsh05.on.br<br \/>\n13 Jun 11:16:45 ntpdate[1437]: adjust time server 200.20.186.75 offset -0.032176 sec<br \/>\nCom esse comando eu sincronizo o meu Linux com o servidor NTP pcdsh05.on.br, esse servidor \u00e9 do Observat\u00f3rio Nacional<\/p>\n<p>Essa solu\u00e7\u00e3o \u00e9 totalmente vi\u00e1vel para apenas uma ou duas maquinas mas se voc\u00ea quiser sincronizar todas as maquina da rede isso fica um pouco complicado devido a trafego na Internet, o protocolo \u00e9 bem compacto, usa UDP e cada troca de informa\u00e7\u00e3o s\u00e3o usados poucos pacotes como podemos ver abaixo<\/p>\n<p>11:22:28.967672 IP 10.10.1.7.123 > 10.10.1.1.123: NTPv4, Client, length 48<br \/>\n11:22:28.967888 IP 10.10.1.1.123 > 10.10.1.7.123: NTPv4, Server, length 48<br \/>\n11:22:28.968853 IP 10.10.1.7.123 > 10.10.1.1.123: NTPv4, Client, length 48<br \/>\n11:22:28.969001 IP 10.10.1.1.123 > 10.10.1.7.123: NTPv4, Server, length 48<br \/>\n11:22:28.969550 IP 10.10.1.7.123 > 10.10.1.1.123: NTPv4, Client, length 48<br \/>\n11:22:28.969684 IP 10.10.1.1.123 > 10.10.1.7.123: NTPv4, Server, length 48<br \/>\n11:22:28.970373 IP 10.10.1.7.123 > 10.10.1.1.123: NTPv4, Client, length 48<br \/>\n11:22:28.970516 IP 10.10.1.1.123 > 10.10.1.7.123: NTPv4, Server, length 48<br \/>\nPorem isso sendo feito por algunas centenas de maquina gera bastante trafego no seu link, para contornar isso irei mostrar como montar um servidor NTP em sua pr\u00f3pria rede.<\/p>\n<p>Maquina usada nos testes<\/p>\n<p># cat \/proc\/cpuinfo<br \/>\nprocessor       : 0<br \/>\nvendor_id       : GenuineIntel<br \/>\ncpu family      : 6<br \/>\nmodel           : 7<br \/>\nmodel name      : Pentium III (Katmai)<br \/>\nstepping        : 3<br \/>\ncpu MHz         : 501.212<br \/>\ncache size      : 512 KB<br \/>\nfdiv_bug        : no<br \/>\nhlt_bug         : no<br \/>\nf00f_bug        : no<br \/>\ncoma_bug        : no<br \/>\nfpu             : yes<br \/>\nfpu_exception   : yes<br \/>\ncpuid level     : 2<br \/>\nwp              : yes<br \/>\nbogomips        : 1004.19<br \/>\n# free<br \/>\n           total       used       free     shared    buffers     cached<br \/>\nMem:        254048     230196      23852          0      74748      63128<br \/>\n-\/+ buffers\/cache:      92320     161728<br \/>\nSwap:       522104         96     522008<br \/>\n# cat \/etc\/fedora-release<br \/>\nFedora Core release 4 (Stentz)<br \/>\nSoftwares necess\u00e1rios<\/p>\n<p>Para instalar usando o Fedora Core\/Centos basta digitar o comando<\/p>\n<p>yum install ntp<br \/>\nCom isso ser\u00e1 instalado tanto os softwares clientes como o servidor.<\/p>\n<p>Ou voc\u00ea pode baixar a ultima vers\u00e3o do site oficial do ntop<\/p>\n<p>Configurando o servidor<\/p>\n<p>Para configurar o servidor basta editar apenas um arquivo \/etc\/ntp.conf essa \u00e9 a copia do arquivo que estou usando atualmente.<\/p>\n<p>N\u00e3o vou me estender muito nas configura\u00e7\u00e3o que podem ser feitas no arquivo, para isso voc\u00ea pode ler o arquivo que est\u00e1 dispon\u00edvel no site da [http:\/\/www.rnp.br\/_arquivo\/cais\/manual_ntp_v1b.pdf RPN] essa documenta\u00e7\u00e3o \u00e9 muito boa, nesse arquivos irei centralizar na cria\u00e7\u00e3o r\u00e1pida e f\u00e1cil de um servidor.<\/p>\n<p># Permite acesso ao servidor para sincronizar mas nao permite modificacoes no servico<br \/>\nrestrict default nomodify notrap noquery<br \/>\n# Permite acesso complete para a interface local<br \/>\nrestrict 127.0.0.1<br \/>\n# Libera acesso a minha rede local<br \/>\nrestrict 10.10.1.0 mask 255.255.255.0 nomodify notrap<br \/>\nrestrict 10.1.0.0 mask 255.255.0.0 nomodify notrap<br \/>\n# Servidor para sincronizar o rel\u00f3gio<br \/>\n# Ser\u00e1 usado em ordem<br \/>\n# o pcdsh05.on.br e stratum 1 todos os outros s\u00e3o stratum 2<br \/>\nserver pcdsh05.on.br<br \/>\nserver ntp.cais.rnp.br<br \/>\nserver ntp.puc-rio.br<br \/>\nserver ntp1.pucpr.br<br \/>\nserver ntp.pop-rs.rnp.br<br \/>\nMais servidores podem ser vistos em http:\/\/www.rnp.br\/ntp\/ntp-stratum2.html<\/p>\n<p>para ver como est\u00e3o as suas permiss\u00f5es use o comando ntpdc.<\/p>\n<p>#  ntpdc -nc reslist<br \/>\n   address          mask            count        flags<br \/>\n=====================================================================<br \/>\n0.0.0.0         0.0.0.0             14147  noquery, nomodify, notrap<br \/>\n10.1.0.0        255.255.0.0          2199  nomodify, notrap<br \/>\n10.10.1.0       255.255.255.0       10519  nomodify, notrap<br \/>\n10.10.1.1       255.255.255.255         0  ntpport, interface, ignore<br \/>\n127.0.0.1       255.255.255.255         2  none<br \/>\n127.0.0.1       255.255.255.255         0  ntpport, interface, ignore<br \/>\nOutro comando util \u00e9 o ntpq com ele \u00e9 possivel ver como status dos servidores.<\/p>\n<p>Com ele podemos ver o nivel na hierarquia que o servidor se encontra, o delay e outras informa\u00e7\u00f5es.<\/p>\n<p># ntpq -p<br \/>\n     remote           refid      st t when poll reach   delay   offset  jitter<br \/>\n==============================================================================<br \/>\n   *pcdsh05.on.br   .IRIG.           1 u  292 1024  377   45.989  -12.245   5.186<br \/>\n   -titan.cais.rnp. 3.111.157.113    2 u  159 1024  377  180.385  -73.748 106.281<br \/>\n   +139.82.34.11    200.143.193.3    3 u  208 1024  377   30.473  -15.311   0.586<br \/>\n   +ntp.pucpr.br    192.5.41.209     2 u  249 1024  377   44.354  -23.184   1.113<br \/>\n   -delta.pop-rs.rn 192.5.41.41      2 u  704 1024  377   69.726  -29.118   2.322<br \/>\n    LOCAL(0)        LOCAL(0)        10 l   63   64  377    0.000    0.000   0.004<br \/>\nPronto agora que j\u00e1 configurou o arquivo basta iniciar o servi\u00e7o<\/p>\n<p># service ntpd start<br \/>\ne configurar para que ele seja iniciado todo vez que reiniciar a maquina<\/p>\n<p># chkconfig ntpd on<br \/>\nPronto seu servidor est\u00e1 configurado e funcionando, para isso v\u00e1 em um cliente Linux e digite o comando.<\/p>\n<p># ntpdate SERVIDOR<br \/>\nse voc\u00ea receber uma mensagem do tipo<\/p>\n<p># 13 Jun 12:13:51 ntpdate[6157]: no server suitable for synchronization found<br \/>\nQuer dizer que o seu servidor n\u00e3o est\u00e1 funcionando ainda, para saber o porque digite o comando<\/p>\n<p># ntpdate -d SERVIDOR<br \/>\npara executar o ntpdate em modo debug<\/p>\n<p>Looking for host SERVIDOR and service ntp<br \/>\nhost found : SERVIDOR<br \/>\ntransmit(10.10.1.7)<br \/>\nreceive(10.10.1.7)<br \/>\ntransmit(10.10.1.7)<br \/>\nreceive(10.10.1.7)<br \/>\ntransmit(10.10.1.7)<br \/>\nreceive(10.10.1.7)<br \/>\ntransmit(10.10.1.7)<br \/>\nreceive(10.10.1.7)<br \/>\ntransmit(10.10.1.7)<br \/>\n10.10.1.7: Server dropped: strata too high<br \/>\nserver 10.10.1.7, port 123<br \/>\nstratum 16, precision -18, leap 11, trust 000<br \/>\nrefid [10.10.1.7], delay 0.02612, dispersion 0.00000<br \/>\ntransmitted 4, in filter 4<br \/>\nreference time:    00000000.00000000  Thu, Feb  7 2036  4:28:16.000<br \/>\noriginate timestamp: c83954b4.4aeed890  Tue, Jun 13 2006 12:13:56.292<br \/>\ntransmit timestamp:  c83954b4.4c0b45ae  Tue, Jun 13 2006 12:13:56.297<br \/>\nfilter delay:  0.02629  0.02620  0.02617  0.02612<br \/>\n         0.00000  0.00000  0.00000  0.00000<br \/>\nfilter offset: -0.00467 -0.00466 -0.00466 -0.00467<br \/>\n         0.000000 0.000000 0.000000 0.000000<br \/>\ndelay 0.02612, dispersion 0.00000<br \/>\noffset -0.004673<br \/>\n13 Jun 12:13:56 ntpdate[6158]: no server suitable for synchronization found<br \/>\nCom isso podemos encontrar o problema na linha stratum 16, precision -18, leap 11, trust 000 essa linha fala que o nosso servidor est\u00e1 em stratum 16, esse \u00e9 o stratum m\u00e1ximo de um servidor NTP, ou seja, ele est\u00e1 em um n\u00edvel muito baixo e que n\u00e3o \u00e9 confi\u00e1vel para ser usado para atualiza\u00e7\u00e3o de nossas maquinas.<\/p>\n<p>Mas porque isso est\u00e1 acontecendo se tudo est\u00e1 configurado corretamente?<\/p>\n<p>F\u00e1cil de responder, basta olhar no log do seu servidor.<\/p>\n<p># tail \/var\/log\/messages<br \/>\nJun 13 12:13:16 SERVIDOR ntpd[1688]: ntpd 4.2.0a@1.1196-r Fri May 12 09:51:35 EDT 2006 (1)<br \/>\nJun 13 12:13:17 SERVIDOR ntpd[1688]: precision = 3.000 usec<br \/>\nJun 13 12:13:17 SERVIDOR ntpd[1688]: Listening on interface wildcard, 0.0.0.0#123<br \/>\nJun 13 12:13:17 SERVIDOR ntpd[1688]: Listening on interface wildcard, ::#123<br \/>\nJun 13 12:13:17 SERVIDOR ntpd[1688]: Listening on interface lo, 127.0.0.1#123<br \/>\nJun 13 12:13:17 SERVIDOR ntpd[1688]: Listening on interface eth0, 10.10.1.7#123<br \/>\nJun 13 12:13:17 SERVIDOR ntpd[1688]: kernel time sync status 0040<br \/>\nJun 13 12:13:17 SERVIDOR ntpd[1688]: frequency initialized 0.000 PPM from \/var\/lib\/ntp\/drift<br \/>\nO servidor NTP foi iniciado s\u00f3 que ainda n\u00e3o fez nenhuma sincroniza\u00e7\u00e3o, aguarde um pouco at\u00e9 aparecer algo como.<\/p>\n<p>Jun 13 12:16:33 SERVIDOR ntpd[1688]: synchronized to 200.20.186.75, stratum 1<br \/>\nPronto, pelo que voc\u00ea pode verificar demorou cerca de tr\u00eas minutos para ele fazer a primeira sincroniza\u00e7\u00e3o, o seu pode demorar um pouco mais, isso \u00e9 feito de forma autom\u00e1tica por um algoritimo interno do servidor e n\u00e3o pode ser mudado, ele mesmo calcula quando deve buscar uma sincroniza\u00e7\u00e3o com o servidor de stratum superior.<\/p>\n<p>Pronto agora voc\u00ea pode executar o ntpdate no cliente.<\/p>\n<p># ntpdate SERVIDOR<br \/>\n13 Jun 12:22:23 ntpdate[6187]: adjust time server 10.10.1.7 offset -0.021264 sec<br \/>\nPronto agora sim o nosso cliente foi sincronizado com sucesso, uma diferen\u00e7a de -0.021264 segundos, essa diferen\u00e7a varia muito.<\/p>\n<p>Automatizando com ntpd<\/p>\n<p>Essa configura\u00e7\u00e3o \u00e9 mais recomendada pois o ntpd utiliza um algoritimo interno para determinar a quantidade de vezes que ele precisa sincronizar, diminuindo o trafego de pacotes ntpd em sua rede.<\/p>\n<p>Para fazer uma configura\u00e7\u00e3o mais redonda voc\u00ea pode configurar o arquivo \/etc\/ntp.conf do cliente informando os seguintes parametros.<\/p>\n<p>restrict default nomodify notrap noquery<br \/>\nrestrict 127.0.0.1<br \/>\nserver 10.10.1.1<br \/>\nserver  127.127.1.0     # local clock<br \/>\nfudge   127.127.1.0 stratum 10<br \/>\ndriftfile \/var\/lib\/ntp\/drift<br \/>\nbroadcastdelay  0.008<br \/>\nkeys            \/etc\/ntp\/keys<br \/>\nCom esse simples arquivo de configura\u00e7\u00e3o o cliente ir\u00e1 manter o rel\u00f3gio sincronizado, por\u00e9m somente a pr\u00f3pria maquina poder\u00e1 acessar a interface aonde o NTP est\u00e1 rodando.<\/p>\n<p>Para ativar o servi\u00e7o basta executar os seguintes comandos<\/p>\n<p># chkconfig ntpd on<br \/>\n# service ntpd start<br \/>\nStarting ntpd:                                             [  OK  ]<br \/>\nAutomatizando com ntpdate<\/p>\n<p>Para deixar as maquinas sincronizado a cada hora, basta criar um script no diret\u00f3rio \/etc\/cron.hourly\/ chamado timesync com a seguinte linha.<\/p>\n<p># vi \/etc\/cron.hourly\/timesync<br \/>\n#!\/bin\/sh<br \/>\n\/usr\/sbin\/ntpdate -s 10.10.1.1<br \/>\nA op\u00e7\u00e3o -s server para ele n\u00e3o mostrar nada na saida padr\u00e3o, o retorno ser\u00e1 enviado para o syslog coloco ele como execut\u00e1vel.<\/p>\n<p># chmod +x \/etc\/cron.hourly\/timesync<br \/>\nPronto desta forma a minha maquina ser\u00e1 sincronizada toda hora.<\/p>\n<p>O NTPDate est\u00e1 sendo descontinuado http:\/\/ntp.isc.org\/bin\/view\/Dev\/DeprecatingNtpdate, por\u00e9m eu ainda utilizo ele para fazer os testes iniciais de funcionamento do servidor, essa informa\u00e7\u00e3o foi passada pelo Marcos Vinicius Lazarini.<\/p>\n<p>Hor\u00e1rio de ver\u00e3o<\/p>\n<p>Para evitar problemas com o hor\u00e1rio de ver\u00e3o eu configuro os meus servidor para usarem o rel\u00f3gio de hardware em UTC, para fazer isso no Fedora\/Centos sigo os seguintes passos<\/p>\n<p>Edito o arquivo \/etc\/sysconfig\/clock e altero a linha UTC=false para UTC=true, executo o comando.<\/p>\n<p>hwclock \u2013set \u2013date=&#8221;HH:MM&#8221; \u2013utc<\/p>\n<p>Para poder ajustar o rel\u00f3gio do hardware para UTC, tr\u00eas horas a menos que o nosso hor\u00e1rio.<\/p>\n<p>Como o NTP s\u00f3 configura rel\u00f3gio de software o rel\u00f3gio de hardware ficar\u00e1 com uma refer\u00eancia que pode ser entendida posteriormente.<\/p>\n<p>Para verificar o hor\u00e1rio de Greewich acesse http:\/\/www.timeanddate.com\/worldclock\/city.html?n=45<\/p>\n<p>Cisco IOS<\/p>\n<p>Para configurar o roteador Cisco para utilizar o servidor NTP \u00e9 bem simples, acesso seu roteador e siga os comandos.<\/p>\n<p>Router> enable<br \/>\npassword: *********<br \/>\nRouter# config t<br \/>\nRouter(config)# ntp server 10.10.1.1<br \/>\nRouter(config)# ntp server 10.10.1.2<br \/>\nRouter(config)# exit<br \/>\nRouter# wr mem<br \/>\nMaquinas com Microsoft Windows Windows XP<\/p>\n<p>Duplo clique o rel\u00f3gio na barra de tarefas Clicar na aba hor\u00e1rio na Internet Marcar a op\u00e7\u00e3o sincronizar automaticamente e colocar o endere\u00e7o do seu servidor e clicar em atualizar agora. Pronto<\/p>\n<p>\u00c9 importante lembrar que o servi\u00e7o Hor\u00e1rio do Windows tem que estar iniciado<\/p>\n<p>O Windows s\u00f3 atualiza o rel\u00f3gio a cada 10 dias e n\u00e3o funcionou corretamente em meus testes.<\/p>\n<p>Windows 2000\/2003<\/p>\n<p>No Windows 2000 em diante inclusive o Windows XP existe um servi\u00e7o para sincronizar o rel\u00f3gio interno. para utiliza-lo voc\u00ea deve abrir o Prompt de Comand.<\/p>\n<p>Clique em Inciar \u2192 Executar.<\/p>\n<p>Digite cmd e clique em OK.<\/p>\n<p>No Prompt de Comando digite.<\/p>\n<p>net stop w32time<br \/>\nnet time \/setsntp:SERVIDOR<br \/>\nnet start w32time<br \/>\nLembrando que o servi\u00e7o Hor\u00e1rio do Windows deve estar configurado como autom\u00e1tico.<\/p>\n<p>Outras vers\u00f5es do Windows<\/p>\n<p>Voc\u00ea pode usar o programa SP_TimeSync, que eu uso, ou o About Time ambos s\u00e3o gratuitos e funcionam bem melhor que o do Windows XP por dois motivos, posso usar em outras vers\u00f5es do Windows e tamb\u00e9m posso especificar em que per\u00edodo de tempo dever\u00e1 ocorrer os sincronismos do rel\u00f3gio.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O que \u00e9 NTP? A grosso modo podemos dizer que o NTP \u00e9 um protocolo que visa manter os rel\u00f3gios dos diversos equipamentos de rede sincronizados. http:\/\/pt.wikipedia.org\/wiki\/NTP Para que rel\u00f3gios sincronizados? Simples, em caso de ataques ou an\u00e1lise de logs \u00e9 muito importante que todos&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts\/380"}],"collection":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=380"}],"version-history":[{"count":0,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts\/380\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=380"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=380"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=380"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}