<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivos ntp - Remontti</title>
	<atom:link href="https://blog.remontti.com.br/tag/ntp/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.remontti.com.br/tag/ntp</link>
	<description>rudimar@remontti</description>
	<lastBuildDate>Mon, 29 Aug 2022 15:16:29 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.remontti.com.br/wp-content/uploads/2024/09/icone-rr-80x80.png</url>
	<title>Arquivos ntp - Remontti</title>
	<link>https://blog.remontti.com.br/tag/ntp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>NTS – Mantenha a hora certa em seu servidor com segurança!</title>
		<link>https://blog.remontti.com.br/5691</link>
					<comments>https://blog.remontti.com.br/5691#comments</comments>
		
		<dc:creator><![CDATA[Iulisloi Zacarias]]></dc:creator>
		<pubDate>Sat, 26 Jun 2021 13:32:22 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[hora]]></category>
		<category><![CDATA[ntp]]></category>
		<category><![CDATA[nts]]></category>
		<category><![CDATA[Segurança]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5691</guid>

					<description><![CDATA[<p>Este tutorial foi escrito pelo meu amigo: Iulisloi Zacarias Manter o relógio dos seus servidores corretamente ajustado pode evitar muita dor de cabeça. Alguns softwares simplesmente podem não funcionar com a hora incorreta, como&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/5691">NTS – Mantenha a hora certa em seu servidor com segurança!</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img fetchpriority="high" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/06/Network-Time-Security.png" alt="" width="720" height="340" class="alignnone size-full wp-image-5695" /></p>
<p><strong>Este tutorial foi escrito pelo meu amigo:</strong> <a href="https://telegram.me/izacarias" target="_blank" rel="noopener">Iulisloi Zacarias</a></p>
<p>Manter o relógio dos seus servidores corretamente ajustado pode evitar muita dor de cabeça. Alguns softwares simplesmente podem não funcionar com a hora incorreta, como exemplo cito aqui o DNSSEC e estrutura de chaves RPKI (nada muito grave, não é mesmo?!). Vale lembrar também que rastrear um problema ou conduzir uma auditoria fica muito mais fácil e assertivo se você manter os registros de data e hora nos <em>logs</em> com a informação correta.</p>
<p>O NTP é um protocolo que é utilizado para sincronizar a hora dos seus servidores e computador com uma fonte confiável de informação de hora, como por exemplo os servidores do projeto NTP.br. Há um tutorial muito completo sobre como manter seus servidores com a data correta <a href="https://blog.remontti.com.br/5608" target="_blank" rel="noopener">aqui</a>.</p>
<p>Mas você já parou para pensar sobre a segurança do NTP. As informações trafegam pela rede de forma aberta (isso não é um problema, já que saber a hora não é nenhum segredo) e sem mecanismos que permitam verificar se ela foi modificada, e isto sim pode ser um problema. Este tipo de ataque é chamado de ataque man-in-the-middle e consiste em um indivíduo mal-intencionado modificar a informação enquanto ela trafega pela rede. Além disso outro ataque bem comum é o “replay” de pacotes, ou seja, um atacante captura um pacote da comunicação original, e em seguida cria vários pacotes com as mesmas informações do pacote original, mas manipulando os campos que ele tem interesse e em seguida envia para as máquinas que ele deseja atacar. Pensando em resolver este problema de segurança, o NTS foi proposto (<a href="https://datatracker.ietf.org/doc/rfc8915/" target="_blank" rel="noopener">RFC 8915</a> https://datatracker.ietf.org/doc/rfc8915/).</p>
<p>Neste tutorial vamos utilizar o NTPsec, que é um “fork” da implementação de referência NTP e vêm ganhando popularidade no mundo Linux por ser umas das primeiras implementações NTP a ter suporte ao NTS.</p>
<p><strong><span style="color: red">É importante lembrar que o NTPsec têm a mesma função do pacote ntp no Debian e você não deve usar os dois ao mesmo tempo!</span></strong></p>
<p>Lembrando que utilizei o Debian 10:</p>
<pre class="remontti-code"># cat /etc/os-release</pre>
<pre class="remontti-code">PRETTY_NAME=&quot;Debian GNU/Linux 10 (buster)&quot;
NAME=&quot;Debian GNU/Linux&quot;
VERSION_ID=&quot;10&quot;
VERSION=&quot;10 (buster)&quot;
VERSION_CODENAME=buster
ID=debian
HOME_URL=&quot;https://www.debian.org/&quot;
SUPPORT_URL=&quot;https://www.debian.org/support&quot;
BUG_REPORT_URL=&quot;https://bugs.debian.org/&quot;</pre>
<p><strong>IMPORTANTE:</strong><br />
O uso do TLS 1.3 é obrigatório para o NTS e portanto este tutorial <strong>NÃO funcionará com Debian 9 ou Ubuntu 16.04</strong>.<br />
Neste tutorial uso o repositório <strong>backports</strong> do Debian. As versões dos programas são testadas no Debian stable, no entanto não são testadas tão extensivamente como as versões dos repositórios padrão do Debian.</p>
<p><strong><span style="color: red">Se você for um usuário iniciante no Debian/Linux, não recomendo fazer esta configuração em um servidor em produção!!!!</span></strong></p>
<p>Sem mais delongas, vamos lá…<br />
<strong>Iniciando</strong><br />
Torne-se root no seu sistema utilizando o comando “su -”</p>
<pre class="remontti-code">$ su -</pre>
<p>(OBS: utilize o comando “su menos”)<br />
Vamos garantir que outros clientes NTP não estejam em execução:</p>
<pre class="remontti-code"># systemctl stop ntp
# systemctl stop chrony
# systemctl stop openntpd
# systemctl stop systemd-timesyncd.service
# systemctl disable ntp
# systemctl disable chrony
# systemctl disable openntpd
# systemctl disable systemd-timesyncd.service
</pre>
<p><strong>Instalação do NTPsec e suas dependências</strong></p>
<p>Como o <strong>NTS</strong> é bem recente, vamos precisar instalar o NTPsec 1.2.0. No momento em que estou escrevendo este tutorial a versão do NTPsec nos repositórios padrão do Debian 10 é a 1.1.3. Nós vamos habilitar o repositório backports (stable-bpo) para que seja possível instalar a versão 1.2.0 do NTPsec no nosso Debian 10. Será necessário instalar também o pacote “ca-certificates” para podermos validar os certificados que os servidores vão nos oferecer.</p>
<pre class="remontti-code"># echo &quot;deb http://deb.debian.org/debian buster-backports main&quot; | tee /etc/apt/sources.list.d/buster-backports.list
# apt update
# apt install -y ntpsec/buster-backports ca-certificates</pre>
<p>Vamos ajustar as configurações do NTPsec para utilizar os servidores da Netnod (uma empresa que mantém servidores de hora para o governo da Suécia) e da Cloudflare. Por enquanto não temos servidores oficiais de hora no Brasil com suporte ao NTS (hey <a href="https://ntp.br/" target="_blank" rel="noopener">NTP.br</a>, vamos?!). Você pode incluir outros servidores NTS quando eles forem disponibilizados. Seguindo a metodologia do <a href="https://telegram.me/remontti" target="_blank" rel="noopener">Remontti</a>, vamos criar um arquivo para a nossa configuração e manter cópia do arquivo de configuração original:</p>
<pre class="remontti-code"># mv /etc/ntpsec/ntp.conf /etc/ntpsec/ntp.conf.orig
# vim /etc/ntpsec/ntp.conf</pre>
<p>Conteúdo do arquivo:</p>
<pre class="remontti-code"># /etc/ntpsec/ntp.conf, configuração para o ntpd; veja ntp.conf(5) para ajuda
# Configuraçao do drift file para o NTPsec computar os erros do relógio do seu computador
driftfile /var/lib/ntpsec/ntp.drift
leapfile /usr/share/zoneinfo/leap-seconds.list

# Configuracao do diretório de log
statsdir /var/log/ntpsec/
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

# Lista dos servidores com suporte NTS, você pode adicionar mais servidores à lista
server nts.netnod.se:4460 nts iburst
server sth1.nts.netnod.se:4460 nts iburst
server sth2.nts.netnod.se:4460 nts iburst
server time.cloudflare.com:4460 nts

# Permite trocar informações de hora com qualquer computador mas não permite configuração
# Segundo o guia do netnod essa configuração atende 99% dos casos ;-)
restrict default kod limited nomodify nopeer noquery
restrict -6 default kod limited nomodify nopeer noquery

# Permite consultas locais
restrict 127.0.0.1
restrict -6 ::1</pre>
<p>Crie o arquivo ntp.drift e o diretório para os logs e reinicie o serviço</p>
<pre class="remontti-code"># touch /var/lib/ntpsec/ntp.drift
# chown ntpsec:ntpsec /var/lib/ntpsec/ntp.drift
# mkdir /var/log/ntpsec
# chown -R ntpsec:ntpsec /var/log/ntpsec
# systemctl restart ntpsec</pre>
<p>Vamos verificar com quais servidores estamos tentando sincronizar:</p>
<pre class="remontti-code"># ntpq -p -u -w</pre>
<p>Irá listar algo como</p>
<pre class="remontti-code">     remote                                   refid      st t when poll reach   delay   offset   jitter
=======================================================================================================
+sth-ts.nts.netnod.se                    96.180.207.109   2 8   22   64   77 310.16ms 7.2680ms 10.631ms
*ntsts.sth1.ntp.se                       96.180.207.109   2 8   18   64   77 307.50ms 6.5467ms 13.046ms
+sth2-ts.nts.netnod.se                   156.133.237.214  2 8   22   64   77 305.86ms 4.2228ms 9.6702ms
-162.159.200.1                           10.191.8.4       3 8   23   64   77 61.953ms -31.52ms 19.442ms</pre>
<p>Verifique a coluna “st”. Esta coluna indica o stratum (ou estrato) e o valor 16 indica que o servidor está inoperante. No meu exemplo todos os servidores estão em operação pois os valores são 2, 2, 2, e 3. Veja também que há uma linha que inicia com um asterisco (*ntsts.sth1.ntp.se), esta informação indica que o NTPsec decidiu usar este servidor como principal referência para sincronização.</p>
<p>A coluna “refid” indica o servidor de referência do servidor NTS que você está consultando, isto é, onde o servidor NTS busca sua informação de hora. Se você observar o valor “.NTS.” na coluna “refid” no lugar dos IPs ou nomes de servidores, significa que o NTPsec ainda está negociando a conexão segura com o servidor e ainda não foi capaz de buscar informações de hora. Outra informação importante está na coluna “t” (quarta coluna da esquerda para a direita) que indica a quantidade de “cookies” que seu computador têm para usar com o servidor. Este valor deve ser 8. Números menores na coluna “t” indica conexões interrompidas (o valor 7 pode indicar que uma requisição está em progresso).</p>
<p>Por fim se tudo estiver funcionando corretamente, você pode incluir o NTPsec na inicialização do Linux:</p>
<pre class="remontti-code"># systemctl enable ntpsec</pre>
<p>É isso, agora a sincronização do seu relógio está protegida pela tecnologia mais avançada em termos de NTP <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>OBS:</strong> se a data do computador estiver muito atrasada ou muito adiantada, o NTS pode encontrar problemas em estabelecer uma conexão com o servidor de chaves do NTS e neste caso você precisa ajustar a data do servidor para um valor aproximado do atual (um dia de atraso não chega a ser um problema). Use o comando abaixo para ajustar a data, escrevendo a data no formato YYYYMMDD (Ano com quatro dígitos, Mês com dois dígitos e Dia com dois dígitos).</p>
<pre class="remontti-code">date +%Y%m%d -s &quot;20210617&quot;</pre>
<h4>Criando um servidor NTS</h4>
<p>Como dito anteriormente, o NTS é uma forma segura de sincronizar a hora do seu computador, para tanto ele usa uma camada de segurança baseada em TLS 1.3 e assim é OBRIGATÓRIO que você use um certificado digital. O certificado não pode ser autoassinado pois não funcionará (até funciona, com algumas “gambiarras”). A maneira mais fácil é usando um certificado Let’s Encrypt, mas vai precisar que seu servidor tenham um nome FQDN (ou seja, precisará de um domínio registrado, por exemplo: nts.meuservidor.com.br).<br />
Só para facilitar, lista dos requisitos:</p>
<ul>
<li>Debian 10</li>
<li>Certificado Digital</li>
<li>Um nome FQDN (domínio registrado)</li>
<li>Cliente NTS já configurado e funcionando</li>
</ul>
<p>Se você já tem um certificado válido no seu servidor e você vai usar o mesmo nome de máquina para o servidor NTS, você pode reusar o mesmo certificado. Caso contrário será necessário usar o certbot para solicitar um novo certificado.</p>
<p>Instale o certbot para obtermos o certificado digital:</p>
<pre class="remontti-code"># apt install certbot</pre>
<p><strong>Pare qualquer servidor HTTP antes de solicitar o novo certificado.</strong></p>
<pre class="remontti-code">systemctl stop apache2
systemctl stop nginx</pre>
<p>Solicite um novo certificado:</p>
<pre class="remontti-code"># certbot certonly --standalone</pre>
<p>Preencha os dados do seu certificado (no meu caso eu chamei meu servidor de nts.remontti.com.br, adapte para seu servidor) e responda o resto das perguntas como o modelo abaixo</p>
<pre class="remontti-code">Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Enter email address (used for urgent renewal and security notices) (Enter &#039;c&#039; to
cancel): seumelhoremail@example.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let&#039;s Encrypt project and the non-profit
organization that develops Certbot? We&#039;d like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N
Please enter in your domain name(s) (comma and/or space separated)  (Enter &#039;c&#039;
to cancel): nts.remontti.com.br
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for nts.remontti.com.br
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/nts.remontti.com.br/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/nts.remontti.com.br/privkey.pem
   Your cert will expire on 2021-09-21. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   &quot;certbot renew&quot;
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let&#039;s Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le</pre>
<p><strong>Agora você á pode reiniciar o servidor HTTP, caso tenha parado o serviço antes de solicitar o certificado.</strong></p>
<p>Vamos copiar o certificado para a pasta do NTPsec para garantir a segurança do mesmo, afinal não queremos dar permissões em excesso para o arquivo possibilitando que alguém roube nossa chave privada invalidando toda nossa segurança.<br />
<strong>Não esqueça de ajustar o caminho dos arquivos do certificado digital, pois o certbot usa o nome do domínio para criar a estrutura de pastas utilizada para armazenar estes arquivos.</strong></p>
<pre class="remontti-code"># cp -v /etc/letsencrypt/live/nts.remontti.com.br/privkey.pem /etc/ntpsec/key.pem
# cp -v /etc/letsencrypt/live/nts.remontti.com.br/fullchain.pem /etc/ntpsec/cert-chain.pem
# chown ntpsec:ntpsec /etc/ntpsec/key.pem
# chown ntpsec:ntpsec /etc/ntpsec/cert-chain.pem
# chmod 600 /etc/ntpsec/key.pem
# chmod 600 /etc/ntpsec/cert-chain.pem</pre>
<p>Para ativar o servidor NTS no NTPsec, vamos editar o arquivo de configuração que criamos anteriormente</p>
<pre class="remontti-code"># vim /etc/ntpsec/ntp.conf</pre>
<p>Ao final do arquivo /etc/ntpsec/ntp.conf por volta da linha 28 (ative o número de linhas no vim com o comando &#8220;:set nu&#8221;), adicione as configurações abaixo:</p>
<pre class="remontti-code"># Servidor NTS
nts enable
nts key /etc/ntpsec/key.pem
nts cert /etc/ntpsec/cert-chain.pem
nts cookie /var/lib/ntpsec/nts-keys</pre>
<p>O conteúdo do arquivo ficará semelhante ao reproduzido abaixo:</p>
<pre class="remontti-code"># Configuraçao do drift file para o NTPsec computar os erros do relógio do seu computador
driftfile /var/lib/ntpsec/ntp.drift
leapfile /usr/share/zoneinfo/leap-seconds.list

# Configuracao do diretório de log
statsdir /var/log/ntpsec/
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

# Lista dos servidores com suporte NTS, você pode adicionar mais servidores à lista
server nts.netnod.se:4460 nts iburst
server sth1.nts.netnod.se:4460 nts iburst
server sth2.nts.netnod.se:4460 nts iburst
server time.cloudflare.com:4460 nts

# Permite trocar informações de hora com qualquer computador mas não permite configuração
# Segundo o guia do netnod essa configuração atende 99% dos casos ;-)
restrict default kod limited nomodify nopeer noquery
restrict -6 default kod limited nomodify nopeer noquery

# Permite consultas locais
restrict 127.0.0.1
restrict -6 ::1

nts enable
nts key /etc/ntpsec/key.pem
nts cert /etc/ntpsec/cert-chain.pem
nts cookie /var/lib/ntpsec/nts-keys</pre>
<p>Crie o arquivo utilizado pelo NTPsec para armazenar os cookies dos clientes e configure as permissões do mesmo:</p>
<pre class="remontti-code"># touch /var/lib/ntpsec/nts-keys
# chown ntpsec:ntpsec /var/lib/ntpsec/nts-keys
# chmod 600 /var/lib/ntpsec/nts-keys</pre>
<p>Por fim, reinicie o NTPsec:</p>
<pre class="remontti-code"># systemctl restart ntpsec</pre>
<p>Para verificar se tudo está correto, use o comando abaixo:</p>
<pre class="remontti-code"># systemctl status ntpsec</pre>
<p>Verifique o campo “Active:” a informação “active (running)” indica que o NTPsec está em execução. Não se assuste com algumas linhas em vermelho, se sua saída for semelhante ao texto abaixo (principalmente a última linha “NTSs: Private Key OK”), tudo está bem:</p>
<pre class="remontti-code">jun 18 16:49:44 nts ntpd[54392]: NTSs: starting NTS-KE server listening on port 4460
jun 18 16:49:44 nts ntpd[54392]: NTSs: OpenSSL security level is 2
jun 18 16:49:44 nts ntpd[54392]: NTSs: starting NTS-KE server listening on port 4460
jun 18 16:49:44 nts ntpd[54392]: NTSs: listen4 worked
jun 18 16:49:44 nts ntpd[54392]: NTSs: listen6 worked
jun 18 16:49:44 nts ntpd[54392]: NTSc: Using system default root certificates.
jun 18 16:49:44 nts ntpd[54392]: NTSs: loaded certificate (chain) from /etc/ntpsec/cert-chain.pem
jun 18 16:49:44 nts ntpd[54392]: NTSs: loaded private key from /etc/ntpsec/key.pem
jun 18 16:49:44 nts ntpd[54392]: NTSs: Private Key OK</pre>
<p>Caso não veja estas informações com o comando acima, você pode tentar usar o comando o</p>
<pre class="remontti-code">journalctl -u ntpsec.service</pre>
<p>para verificar as informação de inicialização do NTPsec e rastrear possíveis erros.</p>
<p><strong>Firewall com nftables</strong></p>
<p>Nosso servidor está configurado e funcionando e apesar de o NTS ser muito mais seguro que o NTP, ainda assim não custa nada implementarmos um Firewall. Vamos utilizar o mesmo script do tutorial que o @Remontti preparou para o NTP.<br />
Instale o nftables e o habilite para inciar com o sistema</p>
<pre class="remontti-code"># apt install -y nftables
# systemctl enable nftables</pre>
<p>Crie o arquivo com as regras do nftables. Observe que temos duas listas chamadas acesso-ntp-local-v4 e acesso-ntp-local-v6 onde informamos todos os IPs que podem solicitar informação de hora na nossa rede (Informe os IPs de sua rede!).</p>
<pre class="remontti-code"># vim /etc/nftables.conf</pre>
<pre class="remontti-code">#!/usr/sbin/nft -f

flush ruleset
 
table inet filter {
 
    # Permite os ips da sua rede
    set acesso-ntp-v4 {
        type ipv4_addr
        flags interval
        elements = { 127.0.0.1, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8, 100.64.0.0/10, 200.200.200.0/22 }
    }
    set acesso-ntp-v6 {
        type ipv6_addr
        flags interval
        elements = { ::1,  2804:ff4:bebe::/48 }
    }
 
    chain input {
        type filter hook input priority 0;
 
        # NTP
        ip saddr  @acesso-ntp-v4 tcp dport 4460 counter accept
        ip saddr  @acesso-ntp-v4 udp dport 123 counter accept
        ip6 saddr @acesso-ntp-v6 tcp dport 4460 counter accept
        ip6 saddr @acesso-ntp-v6 udp dport 123 counter accept
        tcp dport 4460 counter drop
        udp dport 123 counter drop
    }
    chain forward {
        type filter hook forward priority 0;
    }
    chain output {
        type filter hook output priority 0;
    }
}</pre>
<p>Reinicie o nftables em seguida verifique se as regras foram carregadas:</p>
<pre class="remontti-code"># systemctl restart nftables
# nft list ruleset</pre>
<h4>Script para renovação automática do certificado</h4>
<p>O certificado digital oferecido gratuitamente pelo Let&#8217;s Encrypt tem validade de 90 dias. Para evitar que o nosso servidor NTS fique com um certificado expirado (vencido), vamos criar um script de renovação que será executado periodicamente pelo cron.</p>
<p>Crie o arquivo renovassl.sh</p>
<pre class="remontti-code"># vim /etc/letsencrypt/renovassl.sh</pre>
<p>com o seguinte conteúdo:</p>
<pre class="remontti-code">#!/bin/bash

# Variaveis
CHAINFILE=$(cat /etc/letsencrypt/renewal/* | awk -F &#039;=&#039; &#039;$1~/fullchain/{print $2;exit}&#039;)
KEYFILE=$(cat /etc/letsencrypt/renewal/* | awk -F &#039;=&#039; &#039;$1~/privkey/{print $2;exit}&#039;)

# Para temporariamente o servidor web
# Precisamos da porta 80 e 443 livre para o certbot conseguir renovar o certificado
# - Remova o comentário (#) da linha correspondente ao seu servidor web
# /usr/bin/systemctl stop apache2
# /usr/bin/systemctl stop nginx

# Permite o certbot se conectar a porta 80 e 443 para renovar o certificado
nft add rule inet filter input tcp dport 80 counter accept
nft add rule inet filter input tcp dport 443 counter accept


# Aguarda 10 seg (tempo do apache parar) 
sleep 10

# Renova o certificado
/usr/bin/certbot -q renew

# Aguarda o certificado renovar
sleep 30

# Aguarda 2 seg
sleep 2
 
# Restarta o servidor web
# Caso você tenha um servidor web (Apache, Nginx, Lighttpd...), reinicie o serviço
# /usr/bin/systemctl restart apache2
# /usr/bin/systemctl restart nginx

# Para o serviço ntpsec
/usr/bin/systemctl stop ntpsec

# Copia cadeia de certificado e chave privada para o diretorio do NTPsec
/usr/bin/cp $CHAINFILE /etc/ntpsec/cert-chain.pem
/usr/bin/cp $KEYFILE /etc/ntpsec/key.pem

# Altera as permissoes para o usuário speedtest conseguir ler os certificados
/usr/bin/chown ntpsec:ntpsec /etc/ntpsec/cert-chain.pem
/usr/bin/chown ntpsec:ntpsec /etc/ntpsec/key.pem
/usr/bin/chmod 600 /etc/ntpsec/cert-chain.pem
/usr/bin/chmod 600 /etc/ntpsec/key.pem

# Reinicia o serviço NTPsec
/usr/bin/systemctl start ntpsec

# Reinicia o nftables para restaurar as regras
/usr/bin/systemctl restart nftables</pre>
<p><strong>Lembre-se de ajustar o script conforme sua necessidade. Você pode ajustar o caminho da chave privada e da cadeia de certificados atribuindo o caminho dos arquivos correspondentes às variávies CHAINFILE e KEYFILE.</strong></p>
<p>Dê permissão de execução ao arquivo renovassl.sh</p>
<pre class="remontti-code"># chmod +x /etc/letsencrypt/renovassl.sh</pre>
<p>E adicione o script ao cron para que a tarefa seja executada periodicamente:</p>
<pre class="remontti-code"># echo &#039;00 00   1 * *   root    /etc/letsencrypt/renovassl.sh&#039; | tee -a /etc/crontab</pre>
<p>Dica, se desejar desativar o TLS1.0 e TLS1.1 após criar um certificado um arquivo é criado /etc/letsencrypt/options-ssl-apache.conf, então edite e inclua no SSLProtocol TLSv1 -TLSv1.1</p>
<pre class="remontti-code"># vim /etc/letsencrypt/options-ssl-apache.conf</pre>
<p>Ficando</p>
<pre class="remontti-code">#SSLProtocol            all -SSLv2 -SSLv3
SSLProtocol             all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1</pre>
<p>Reinicie o Apache:</p>
<pre class="remontti-code"># systemctl restart apache2</pre>
<p>Para testar acesse: <a href="https://www.cdn77.com/tls-test/" rel="noopener" target="_blank">https://www.cdn77.com/tls-test/</a><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste.png" data-rel="lightbox-gallery-CzVAVTk5" data-rl_title="" data-rl_caption="" title=""><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-300x182.png" alt="" width="300" height="182" class="alignnone size-medium wp-image-6158" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-300x182.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-1024x620.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-768x465.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste.png 1099w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Gostou? Quer ajudar o blog? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário ficaremos felizes em saber que ajudamos. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" target="_blank" rel="noopener noreferrer">clique aqui.</a></p>
<p>O post <a href="https://blog.remontti.com.br/5691">NTS – Mantenha a hora certa em seu servidor com segurança!</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5691/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>NTP Server &#8211; Mantenha a hora certa em sua rede!</title>
		<link>https://blog.remontti.com.br/5608</link>
					<comments>https://blog.remontti.com.br/5608#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 28 May 2021 01:31:19 +0000</pubDate>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[clock]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[hora]]></category>
		<category><![CDATA[ntp]]></category>
		<category><![CDATA[ntpd]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5608</guid>

					<description><![CDATA[<p>Que tal nunca mais ver logs com datas e horas erradas?! Esse é um tutorial bem simples, mas que ainda vejo muitas pessoas sofrer para implementarem um servido de horas (NTP) em sua rede.&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/5608">NTP Server &#8211; Mantenha a hora certa em sua rede!</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/05/ntp.png" alt="" width="720" height="340" class="alignnone size-full wp-image-5617" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/05/ntp.png 720w, https://blog.remontti.com.br/wp-content/uploads/2021/05/ntp-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/05/ntp-520x245.png 520w" sizes="(max-width: 720px) 100vw, 720px" /></p>
<h4>Que tal nunca mais ver logs com datas e horas erradas?!</h4>
<p>Esse é um tutorial bem simples, mas que ainda vejo muitas pessoas sofrer para implementarem um servido de horas (NTP) em sua rede. </p>
<p>Está instalação será feira no <strong><a href="https://blog.remontti.com.br/2966" rel="noopener" target="_blank">Debian 10</a></strong>, mas não vejo necessidade de você criar um Servidor/VM só para esta finalidade, o pacote ntp usa praticamente nada de recursos de hardware, então você pode instalar em um de seu servidores, o importante aqui é <strong>FECHAR A PORTA UDP 123</strong> para o mundo, vou ensinar isso também criando um firewall bem simples com nftables.</p>
<p>Mão na massa!</p>
<h3>NTP</h3>
<pre class="remontti-code"># apt install ntp</pre>
<pre class="remontti-code"># sntp --version
sntp 4.2.8p12@1.3728-o (1)</pre>
<p>Vamos dar uma olhada com quais servidores o mesmo está sincronizando:</p>
<pre class="remontti-code"># ntpq -p</pre>
<p>Ira listar algo como:</p>
<pre class="remontti-code">     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
-ntp9.kashra-ser 192.168.100.15   2 u    5   64    1  205.880   -7.287   1.474
+y.ns.gin.ntt.ne 249.224.99.213   2 u    6   64    1  135.825   -0.532   2.092
-ec2-3-121-254-2 192.53.103.108   2 u    8   64    1  239.185   -3.357   1.845
 li290-38.member 209.180.247.49   2 u    9   64    1  162.385    4.319   2.840
-ntp5.flashdance 194.58.202.20    2 u    4   64    1  235.258    3.704   0.929
-main13.ip-conne 118.188.39.164   2 u   10   64    1  255.868   -6.108   3.203
+ntp1.hetzner.de 124.216.164.14   2 u   12   64    1  215.892   -0.202   2.642
-2001:440:1880:5 .PPS.            1 u   14   64    1  246.402    2.843   1.336
#shackleton.red. 147.156.1.135    2 u   22   64    1  236.816   11.631   1.291
-ntp.exact-time. .GPS.            1 u   23   64    1  240.908   -1.950   1.239
#ip.tcp.lv       194.100.2.194    2 u   27   64    1  274.910   20.462   1.673
#2606:6680:8:1:: 107.46.198.112   2 u   26   64    1  147.792    8.065   9.809
*mail.agrogradv. 118.188.39.164   2 u   27   64    1  243.763   -0.331   1.383
#dns1.campus-rv. 31.28.161.68     2 u   26   64    1  240.321    3.779   0.878
#ntp18.kashra-se 192.168.100.15   2 u   26   64    1  228.172  -15.113   0.715
+main.hosting-sk 192.53.103.108   2 u   27   64    1  212.732   -0.447   0.990</pre>
<p>Você conhece o <strong><a href="https://ntp.br/" rel="noopener" target="_blank">ntp.br</a> </strong>?<br />
O projeto NTP.br tem por objetivo oferecer condições para que os servidores Internet no Brasil estejam sincronizados com a Horal Legal Brasileira. Para isso foi firmado um acordo entre o Observatório Nacional (ON) e o NIC.br.</p>
<p>Iremos ajustar nossas configurações para usar o ntp.br. Você pode incluir outros servidores NTPs dependendo de seu país se desejar. Irei criar um arquivo novo. </p>
<pre class="remontti-code"># mv /etc/ntp.conf /etc/ntp.conf.orig
# vim /etc/ntp.conf</pre>
<pre class="remontti-code">driftfile /var/lib/ntp/ntp.drift

# Definição de segundos bissextos fornecida por tzdata
leapfile /usr/share/zoneinfo/leap-seconds.list

# Ative-o se quiser que as estatísticas sejam registradas.
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

# Informe os servidores para sincronizar a hora
server a.st1.ntp.br iburst
server b.st1.ntp.br iburst
server c.st1.ntp.br iburst
server d.st1.ntp.br iburst
server gps.ntp.br iburst
server a.ntp.br iburst
server b.ntp.br iburst
server c.ntp.br iburst

# Configuração de controle de acesso; consulte /usr/share/doc/ntp-doc/html/accopt.html para
# detalhes. A página da web &lt;http://support.ntp.org/bin/view/Support/AccessRestrictions&gt;
# também pode ser útil.
#
# Observe que &quot;restrict&quot; se aplica a servidores e clientes, portanto, uma configuração
# que pode ter como objetivo bloquear solicitações de certos clientes também pode terminar
# bloqueando respostas de seus próprios servidores upstream.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
restrict source notrap nomodify noquery
restrict 127.0.0.1
restrict ::1

# Se desejar deixar a porta 123 UDP sendo ouvida apenas por alguma interface segue ex. comentado.
#interface ignore wildcard
#interface listen 127.0.0.1
#interface listen ::1
#interface listen 192.168.171.2
#interface listen 2001:db8:bebe:cafe::2
</pre>
<p>Crie o arquivo ntp.drift e reinicie o serviço ntp</p>
<pre class="remontti-code"># touch /var/lib/ntp/ntp.drift
# systemctl restart ntp</pre>
<p>Verifique novamente</p>
<pre class="remontti-code"># ntpq -p</pre>
<pre class="remontti-code">     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+a.st1.ntp.br    .ONBR.           1 u   23   64    3   22.847    1.804   2.047
 b.st1.ntp.br    .INIT.          16 u    -   64    0    0.000    0.000   0.000
-c.st1.ntp.br    .ONBR.           1 u   20   64    3   25.247    3.287   1.720
-d.st1.ntp.br    .ONBR.           1 u   18   64    3   28.425    1.562   7.737
*gps.jd.ntp.br   .GPS.            1 u   23   64    3   20.985    0.912   2.678
+a.ntp.br        200.160.7.186    2 u   23   64    3   21.051    0.859   2.229
-b.ntp.br        200.160.7.186    2 u   22   64    3  169.422  -49.325   2.108
-c.ntp.br        200.160.7.186    2 u   20   64    3  129.587   50.390   1.710</pre>
<p>Você pode consultar se a porta foi aberta:</p>
<pre class="remontti-code"># ss -tulpn | grep :123</pre>
<pre class="remontti-code">udp   UNCONN 0      0                  200.200.200.40:123          0.0.0.0:*     users:((&quot;ntpd&quot;,pid=26866,fd=17))                                               
udp   UNCONN 0      0                       127.0.0.1:123          0.0.0.0:*     users:((&quot;ntpd&quot;,pid=26866,fd=16))                                               
udp   UNCONN 0      0        [2001:db8:bebe:cafe::aa]:123             [::]:*     users:((&quot;ntpd&quot;,pid=26866,fd=19))                                               
udp   UNCONN 0      0                           [::1]:123             [::]:*     users:((&quot;ntpd&quot;,pid=26866,fd=18)) </pre>
<p>Consulte também as informações </p>
<pre class="remontti-code"># ntpq -c sysinfo</pre>
<pre class="remontti-code">associd=0 status=0614 leap_none, sync_ntp, 1 event, freq_mode,
system peer:        a.st1.ntp.br:123
system peer mode:   client
leap indicator:     00
stratum:            2
log2 precision:     -23
root delay:         17.453
root dispersion:    5.114
reference ID:       200.160.7.186
reference time:     e4513036.6d7962c1  Thu, May 20 2021 16:00:06.427
system jitter:      0.406513
clock jitter:       2.205
clock wander:       0.000
broadcast delay:    -50.000
symm. auth. delay:  0.000</pre>
<p>Para ver a hora use o comando</p>
<pre class="remontti-code"># date
sex mai 21 18:41:04 -03 2021</pre>
<p>Caso sua instalação tenha o Time Zone (UTC) errado use o comando para <a href="https://en.wikipedia.org/wiki/Time_in_Brazil#IANA_time_zone_database" rel="noopener" target="_blank">ajustar de acordo com sua região</a></p>
<pre class="remontti-code"># dpkg-reconfigure tzdata</pre>
<h3>NFTABLES</h3>
<p>Agora precisamos fechar essa porta urgente, caso contrário irai receber aquele lindo e famoso email do nic.br <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Para isso vamos usar o nftables. Faça a instalação do mesmo e habilite-o para iniciar com o sistema.</p>
<pre class="remontti-code"># apt install nftables
# systemctl enable nftables</pre>
<p>Cri o arquivo, perceba que ele é bem intuitivo, temos uma lista chama acesso-ntp4/acesso-ntp6 onde iremos informar todos os IPs que podem solicitar informação de hora. (IP de sua rede!)</p>
<pre class="remontti-code"># vim /etc/nftables.conf</pre>
<pre class="remontti-code">#!/usr/sbin/nft -f
  
flush ruleset

table inet filter {

    # Permite os ips da sua rede
    set acesso-ntp-local-v4 {
        type ipv4_addr
        flags interval
        elements = { 127.0.0.1, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8, 100.64.0.0/10, 200.200.200.0/22 }
    }
    set acesso-ntp-local-v6 {
        type ipv6_addr
        flags interval
        elements = { ::1,  2804:ff4:bebe::/48 }
    }

    # Permite que os servidores do ntp.br falem com seu servidor!
    set acesso-ntp-br-v4 {
        type ipv4_addr
        flags interval
        elements = { 200.160.7.186, 201.49.148.135, 200.186.125.195, 200.20.186.76, 200.160.7.197, 200.160.0.8, 200.189.40.8, 200.192.232.8 }
    }
    set acesso-ntp-br-v6 {
        type ipv6_addr
        flags interval
        elements = { 2001:12f8:b:1::8, 2001:12ff:0:7::186, 2001:12ff:0:7::197, 2001:12f8:9:1::8, 2001:12ff::8 }
    }

    chain input {
        type filter hook input priority 0;

        # NTP
        ip saddr  @acesso-ntp-local-v4 udp dport 123 counter accept
        ip6 saddr @acesso-ntp-local-v6 udp dport 123 counter accept
        ip saddr  @acesso-ntp-br-v4 udp dport 123 counter ct state related,established accept
        ip6 saddr @acesso-ntp-br-v6 udp dport 123 counter ct state related,established accept
        udp dport 123 counter drop

        type filter hook input priority 0;
    }
    chain forward {
        type filter hook forward priority 0;
    }
    chain output {
        type filter hook output priority 0;
    }
}</pre>
<p>Reinicie o nftables em seguida verifique se as regras foram carregadas:</p>
<pre class="remontti-code"># systemctl restart nftables
# nft list ruleset </pre>
<h3>Configurando os NTP clientes</h3>
<p><strong>Alguns exemplo</strong>, onde 10.20.30.1 seria o IP do nosso servidor NTP (contribuição <strong>#MAFIADOPING)</strong>: </p>
<h4>Linux (deb)</h4>
<pre class="remontti-code"># apt install ntpdate
# ntpdate 10.20.30.1</pre>
<h4>Mikrotik</h4>
<p><a href="https://wiki.mikrotik.com/wiki/Manual:System/Time" rel="noopener" target="_blank">Fonte</a></p>
<pre class="remontti-code">/system clock
set time-zone-autodetect=no time-zone-name=America/Sao_Paulo
/system ntp client
set enabled=yes primary-ntp=10.20.30.1</pre>
<h4>Huawei NE</h4>
<p><a href="https://support.huawei.com/enterprise/br/doc/EDOC1100125843/3a9ab47/configuration-examples-for-ntp" rel="noopener" target="_blank">Fonte</a></p>
<pre class="remontti-code">&lt;NE8000-root&gt; system-view
[~NE8000-root] ntp-service refclock-master 2

[*NE8000-root] ntp-service unicast-server 10.20.30.1

[*NE8000-root] display ntp status
 clock status: synchronized
 clock stratum: 2
 reference clock ID: LOCAL(0) 
 nominal frequency: 100.0000 Hz
 actual frequency: 100.0000 Hz
 clock precision: 2^17
 clock offset: 0.0000 ms
 root delay: 0.00 ms
 root dispersion: 0.00 ms
 peer dispersion: 10.00 ms
 reference time: 18:50:19.981 UTC May 22 2021
 synchronization state: clock set

[*NE8000-root] clock timezone 1 minus 03:00:00

[*NE8000-root] commit

[~NE8000-root] display clock
2021-05-22 15:56:18-03:00
Saturday
Time Zone(1) : UTC-03:00
</pre>
<h4>Juniper</h4>
<p><a href="https://www.juniper.net/documentation/us/en/software/junos/time-mgmt/topics/example/ntp-qfx-series.html" rel="noopener" target="_blank">Fonte</a></p>
<pre class="remontti-code">user@host# set system ntp boot-server 10.20.30.1
user@host# set system ntp server 10.20.30.1
user@host# set time-zone America/Sao_Paulo
user@host# show ntp status
user@host# show ntp associations</pre>
<h4>Cisco</h4>
<p><a href="https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst4000/8-2glx/configuration/guide/ntp.html" rel="noopener" target="_blank">Fonte</a></p>
<pre class="remontti-code">Router(config)# ntp server 10.20.30.1
Router(config-if)# show ntp associations 
switch(config)#clock timezone EST -3
Router# show ntp status
Router# show clock</pre>
<h4>VyOS</h4>
<p><a href="https://docs.vyos.io/en/latest/configuration/system/ntp.html" rel="noopener" target="_blank">Fonte</a></p>
<pre class="remontti-code"># set system ntp server 10.20.30.1
# set system time-zone America/Sao_Paulo</pre>
<h4>Ubiquiti</h4>
<p>Praticamente todos é só buscar o campo:<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/05/ubnt_ntp.png" alt="" width="406" height="102" class="alignnone size-full wp-image-5619" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/05/ubnt_ntp.png 406w, https://blog.remontti.com.br/wp-content/uploads/2021/05/ubnt_ntp-300x75.png 300w" sizes="auto, (max-width: 406px) 100vw, 406px" /></p>
<p>Gostou? Quer me ajudar? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>O post <a href="https://blog.remontti.com.br/5608">NTP Server &#8211; Mantenha a hora certa em sua rede!</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5608/feed</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
	</channel>
</rss>
