Por que o NTP requer acesso de firewall bidirecional à porta UDP 123?

17

De Quais são as regras do iptables para permitir o ntp? :

iptables -A INPUT -p udp --dport 123 -j ACCEPT
iptables -A OUTPUT -p udp --sport 123 -j ACCEPT

Além disso, no site do NTP :

... o ntpd requer acesso bidirecional completo à porta UDP privilegiada 123. ...

Minha pergunta é por que? Para alguém não familiarizado com o NTP, isso parece ser uma falha de segurança em potencial, especialmente quando estou pedindo a um cliente meu que abra essa porta no firewall para que meus servidores possam manter o tempo sincronizado. Alguém tem uma justificativa decente que posso dar ao meu cliente para convencê-lo de que preciso desse acesso no firewall? Ajuda é apreciada! :)

DuffJ
fonte
2
Você leu a parte sobre "permitir relacionados / estabelecidos"? Se estiver presente desta regra, não há necessidade para uma regra de entrada geral para a porta UDP 123.
VMai
11
Isso é realmente um buraco de segurança em potencial? Esta é uma frase repetida que acho sem sentido. É 2014, hora de não imbuir portas menores que 1024 com propriedades especiais e bloquear todo o tráfego que não é explicitamente necessário. Você está abrindo uma porta para uma máquina a partir de certos hosts na Internet.
DFC
Concordo que não é realmente uma falha de segurança em potencial, mas trabalho no setor financeiro e as pessoas estão sempre nervosas em abrir firewalls no caso de "algo passar". Sempre vale a pena ter uma boa justificativa em mãos, além disso, estou curioso sobre a resposta - o ntpd em um servidor de horário realmente faz conexões de saída com seus clientes para enviar atualizações de horário? Isso soa estranho e não é particularmente escalável.
DuffJ
Pesquisei no Google alguns dias atrás, ele pode ser gerenciado sem a conexão de entrada.
barlop
@VMai, a pessoa que disse isso em superuser.com/questions/141772/… não deu nenhum exemplo, mas acho que ele pretendia permitir conexões de saída, pacotes entrando nelas. Isso é diferente do conceito de que "o ntpd requer acesso bidirecional completo à porta UDP privilegiada 123. ...", que soa como uma conexão de entrada. Se ele quisesse permitir entrada e saída usando relacionado / estabelecido, ele precisaria de 4 regras. 2 para conexões de entrada, 2 para conexões de saída.
barlop

Respostas:

10

Você só precisa permitir as portas do NTP de tráfego de entrada se estiver atuando como servidor, permitindo que os clientes sejam sincronizados com você.

Caso contrário, a existência de um estado NTP determinará automaticamente se o pacote NTP recebido será bloqueado ou permitido por um estado de firewall existente que iniciamos.

iptables -A OUTPUT -p udp --sport 123 --dport 123 -j ACEITAR

iptables -A INPUT -m state --state ESTABELECIDO, RELACIONADO -j ACEITO

Por favor, deixe-me saber se as regras do iptables são adequadas. Não tenho experiência com iptables. Meu cliente NTP permanece sincronizado no meu roteador pfSense com apenas uma regra de permissão de saída porque o pfSense é um firewall com estado.

Ben Cook
fonte
11
Isso parece sensato! Infelizmente, não estou mais em condições de confirmar a exatidão de sua resposta; no entanto, aceitarei porque parece lógico. Muito Obrigado!
DuffJ
1

NTP requer acesso bi-direcional na porta 123 porque a NTP RFC especifica o seguinte sobre a porta de origem do cliente:

Ao operar nos modos simétricos (1 e 2), este campo deve conter o número da porta NTP PORT (123) atribuído pela IANA.

Como a porta de origem do cliente é 123, quando o servidor enviar a resposta de volta, ela será enviada para a porta 123. Naturalmente, para poder receber essa resposta, o cliente deve permitir respostas de entrada na porta 123. Normalmente, as respostas retornariam em alguma faixa de portas efêmeras .

Como Ben Cook mencionou acima, isso é necessário apenas ao lidar com um firewall sem estado, pois um firewall com estado permitiria que a resposta voltasse sem uma regra explícita.

Gurpreet Atwal
fonte
0

Eu acho que a melhor solução é habilitar a porta 123 para entrada, apenas para os endereços IP esperados para dar ao servidor o sinal ntp.
Dentro do arquivo de configuração ntp, /etc/ntp.conf, existem os endereços de vários servidores ntp nos quais o servidor deve apontar. Você pode usar o comando de pesquisa para encontrar o ip correspondente para cada endereço.

host -t a 0.debian.pool.ntp.org

Em seguida, você pode adicionar a regra ao firewall do servidor:

iptables -I INPUT -p udp -s 94.177.187.22 -j ACCEPT

... e assim por diante.
Isso pode impedir que qualquer pessoa mal-intencionada danifique seu servidor.
Eu acho que não adianta restringir a saída.

Leonardo Gugliotti
fonte
-1

a comunicação servidor a servidor ntp é a porta 123 de origem e de destino. É mais conveniente permitir explicitamente isso pelo menos para os hosts nos quais você está executando um serviço ntp.

Você pode considerar apenas expor um host externo à Internet para obter tempo de fontes externas. Um serviço ntp interno sincronizado com isso pode ser a fonte de todos os dispositivos. Se esses hosts forem dedicados ao objetivo, a possível exposição será limitada: eles aceitam apenas o tráfego ntp e não armazenam outros dados.

Como alternativa, não use uma rede IP externa. Use uma fonte de rádio como GPS por tempo, por exemplo.

http://www.diablotin.com/librairie/networking/firewall/ch08_13.htm http://support.ntp.org/bin/view/Support/Trou TroubleshootingNTP

John Mahowald
fonte
11
Obrigado por esta resposta, mas não responde à pergunta. E se eu for o administrador do sistema e quiser abrir meu firewall para poder configurar o serviço NTP interno? Ninguém ainda parece ter alguma idéia de por que o acesso bidirecional (que é muito mais perigoso que o acesso unidirecional) é necessário para o NTP.
DuffJ