Hardening NTP/Chrony no Linux
A segurança e sincronização de horários tornou-se crítica atualmente.
Hoje, a sincronização de tempo não serve apenas para "deixar o relógio certo", mas é um requisito de segurança e funcionamento para quase tudo em uma rede moderna.
Hoje, a sincronização de tempo não serve apenas para "deixar o relógio certo", mas é um requisito de segurança e funcionamento para quase tudo em uma rede moderna.
Parte 3: CONCLUSÃO
Boas práticas
Use múltiplas fontes: Configure pelo menos 4 servidores NTP.Isolamento: Utilize um servidor NTP interno, por exemplo, o Chrony, sincronizado com os servidores https://ntp.br/.
NTS: Considere o uso de NTS para autenticação criptográfica moderna.
Autenticação NTP: Use chaves simétricas para garantir que o servidor Web sincronize somente com servidores NTP autorizados (O Chrony usa Network Time Security (NTS) nativo que é mais seguro).
Caso tenha firewall (IPTables, NFTables, PFSense, UFW, etc), libere a porta 4460 para o NTS funcionar.
Exemplos:
$ sudo ufw allow out 4460/tcp
$ sudo iptables -A OUTPUT -p tcp --dport 4460 -j ACCEPT
No
nftables.conf:
table inet filter {
chain output {
type filter hook output priority 0; policy drop;
# Tráfego para sincronização de tempo (NTP.br)
tcp dport 4460 accept comment "NTS Key Exchange"
udp dport 123 accept comment "NTP Traffic"
# Permitir tráfego já estabelecido
ct state established,related accept
}
}
Passo a Passo no pfSense:
Vá em Firewall > Rules.
Selecione a aba da interface onde seu servidor está (geralmente LAN).
Clique em Add (seta para cima) para criar uma nova regra:
- Action: Pass
- Interface: LAN
- Address Family: IPv4 (ou IPv4+IPv6 se usar ambos)
- Protocol: TCP
- Source: O IP fixo do seu servidor (recomendado) ou LAN net.
- Destination: Any (ou crie um Alias com os IPs do NTP.br para ser mais rígido).
- Destination Port Range: From 4460 to 4460.
- Description: Permitir NTS Key Exchange (Chrony)
Clique em Save e depois em Apply Changes.
Muitas vezes, além da regra de porta, o pfSense pode ter o pacote pfBlockerNG ou Snort/Suricata instalado. Se eles estiverem ativos, podem estar identificando o tráfego na porta 4460 como "não padrão" e descartando a conexão.
Testando no Chrony
Após aplicar as regras e reiniciar o firewall, teste novamente a conectividade.Reinicie o Chrony:
$ sudo systemctl restart chrony
Teste de rede:
$ nc -zv a.st1.ntp.br 4460
(Deve retornar Connection to ... succeeded).
Caso retornar algo como:
KeyID 0/KLen 0: A conexão segura não foi estabelecida.
Verifique o handshake:
$ sudo chronyc authdata
Atmp (Attempts): O número 2 em Last Atmp mostra que o Chrony tentou, mas não obteve sucesso recente em renovar os cookies de segurança.
Todos os servidores agora devem exibir KeyID maior que 0 e KLen como 256.
Comandos úteis Chrony:
$ sudo systemctl restart chrony
$ sudo service chrony restart
$ sudo chronyc sources
$ sudo chronyc authdata
$ sudo chronyc tracking
$ nc -zv time.cloudflare.com 4460
$ nc -zv nts.netnod.se 4460
$ nc -zv a.st1.ntp.br 4460
$ sudo journalctl -u chrony | grep -i nts
$ ping -s 1400 a.st1.ntp.br
Se você quiser ver em tempo real o que seu Linux está fazendo ao reiniciar, abra um segundo terminal e deixe rodando:
$ sudo journalctl -f -u chrony
Instalação e configuração do Chrony:
Guia de configuração NTS no Linux com Chrony: