Eu sei o que faz, mas não sei por que . Quais ataques ele impede?
É relevante para todos os tipos de métodos de autenticação? (com base no host, senha, chave pública, teclado interativo ...)
Eu sei o que faz, mas não sei por que . Quais ataques ele impede?
É relevante para todos os tipos de métodos de autenticação? (com base no host, senha, chave pública, teclado interativo ...)
Respostas:
A UseDNS
opção é principalmente inútil. Se as máquinas clientes estiverem disponíveis na Internet, há uma grande chance de que eles não tenham nenhum DNS reverso, o DNS reverso não resolva para frente ou o DNS não forneça nenhuma informação além de "pertence a este ISP ”, que o endereço IP já informa.
Em configurações típicas, o DNS é usado apenas para log. Pode ser usado para autenticação, mas somente se IgnoreRhosts no
for especificado em sshd_config
. Isto é para compatibilidade com instalações antigas que usavam rsh, onde você pode dizer “o usuário chamado bob
na máquina chamada darkstar
pode logar como alice
sem mostrar nenhuma credencial” (escrevendo darkstar bob
em ~alice/.rhosts
). Só é seguro se você confiar em todas as máquinas que possam estar se conectando ao servidor ssh. Em outras palavras, isso raramente é utilizável de maneira segura.
Como a pesquisa de DNS não fornece nenhuma informação útil, exceto em circunstâncias muito peculiares, ela deve ser desativada. Pelo que sei, o único motivo pelo qual está ativado é que ele é tecnicamente mais seguro (se você está preocupado com autenticação, não disponibilidade), mesmo que isso se aplique apenas a um pequeno conjunto de circunstâncias.
Outro argumento para desativar esse recurso é que todo recurso supérfluo é um risco desnecessário à segurança .
UseDNS
nem é útil se você usar autenticação de host com base em chave , apenas se você usar autenticação de host com base em nome de host (ou seja, autenticação extremamente fraca).
UseDNS
é muito útil e crítica. Você autentica um usuário com base na chave e o servidor com base no nome do host, atribuído a um endereço MAC.
Eu adicionei a um relatório de bug (antigo, mas ainda atual) no Ubuntu sobre isso.
https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/424371
Propus alterar o padrão para Não e adicionar documentação mais recente:
# UseDNS - Determines whether IP Address to Hostname lookup and comparison is performed
# Default value is No which avoids login delays when the remote client's DNS cannot be resolved
# Value of No implies that the usage of "from=" in authorized_keys will not support DNS host names but only IP addresses.
# Value of Yes supports host names in "from=" for authorized_keys. Additionally if the remote client's IP address does not match the resolved DNS host name (or could not be reverse lookup resolved) then a warning is logged.
Na página de manual de sshd_config(5)
:
UseDNS Specifies whether sshd(8) should look up the remote host name and
check that the resolved host name for the remote IP address maps
back to the very same IP address. The default is “yes”.
A habilitação faz com que o acesso a partir de um local sem o DNS adequado (para frente e para trás) gere um aviso nos logs.
Portanto, isso não impede nenhum ataque, exceto que seria necessário um endereço remoto qualificado do cliente para não registrar nenhum aviso. Esse aviso pode ajudá-lo a localizar o invasor apenas se esse registro PTR fizer algum sentido.
editar: atualizado de acordo com o comentário de Andrey Voitenkov .
from=
campo antes da chave autorizada em questão (se usada).
É necessário quando você usa a opção FROM em um arquivo allowed_keys e deseja filtrar por nomes e não apenas IPs.
A opção FROM em uma linha de um arquivo allowed_keys permite limitar hosts que podem usar uma chave específica.
Isso aumenta a capacidade de gerenciar vários servidores que têm acesso um ao outro sem permitir que os clones de uma máquina representem sua origem, geralmente sem intenção (sobras de crontabs, erro humano).
Eu gostaria de acrescentar que no CentOS 7 (7.1.1503) e, portanto, no Red Hat Enterprise Linux 7, não consegui efetuar login com a configuração padrão de yes
para UseDNS
. Depois de descomentar e configurá-lo como no
, consegui efetuar login. Portanto, parece que um serviço pode ser negado de fato se o DNS não estiver funcionando corretamente! No CentOS 6, parece que o padrão é no
e, portanto, posso ssh
entrar sem o DNS funcionando!
Gostaria de acrescentar que minha experiência foi em contêineres LXC e não em máquinas físicas, caso isso faça a diferença!