Sé lo que hace, pero no sé por qué . ¿Qué ataque (s) previene?
¿Es relevante para todo tipo de métodos de autenticación? (basado en host, contraseña, clave pública, teclado interactivo ...)
Sé lo que hace, pero no sé por qué . ¿Qué ataque (s) previene?
¿Es relevante para todo tipo de métodos de autenticación? (basado en host, contraseña, clave pública, teclado interactivo ...)
Respuestas:
La UseDNS
opción es en su mayoría inútil. Si las máquinas cliente están disponibles en Internet, existe una gran posibilidad de que no tengan ningún DNS inverso, su DNS inverso no se resuelva, o su DNS no proporcione ninguna información que no sea "pertenece a esto ISP ”, que la dirección IP ya le indica.
En configuraciones típicas, el DNS solo se usa para iniciar sesión. Se puede usar para la autenticación, pero solo si IgnoreRhosts no
se especifica en sshd_config
. Esto es para la compatibilidad con antiguas instalaciones que utilizan rsh, donde se puede decir que “el usuario llamado bob
en la máquina llamada darkstar
puede iniciar sesión como alice
sin mostrar ninguna credencial” (escribiendo darkstar bob
en ~alice/.rhosts
). Solo es seguro si confía en todas las máquinas que posiblemente se estén conectando al servidor ssh. En otras palabras, esto es muy raramente utilizable de manera segura.
Dado que la búsqueda de DNS no proporciona ninguna información útil, excepto en circunstancias muy peculiares, debe desactivarse. Por lo que puedo decir, la única razón por la que está activada de forma predeterminada es que es técnicamente más seguro (si le preocupa la autenticación, no la disponibilidad), aunque eso solo se aplica a un pequeño conjunto de circunstancias.
Otro argumento para desactivar esta función es que cada función superflua es un riesgo de seguridad innecesario .
UseDNS
ni siquiera es útil si usa autenticación de host basada en clave , solo si usa autenticación de host basada en nombre de host (es decir, autenticación extremadamente débil).
UseDNS
es muy útil y crítico. Autentica un usuario basado en la clave y el servidor basado en el nombre de host, asignado a una dirección MAC.
Agregué a un informe de error (antiguo pero aún actual) en Ubuntu sobre esto.
https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/424371
Propuse cambiar el valor predeterminado a No y agregar documentación más reciente:
# 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.
De la 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”.
Al habilitar esto, el acceso desde una ubicación sin DNS adecuado (hacia adelante y hacia atrás) genera una advertencia en los registros.
Por lo tanto, esto no evita ningún ataque, excepto que necesitaría alguna dirección remota calificada del cliente para no registrar ninguna advertencia. Tal advertencia puede ayudarlo a localizar al atacante solo si ese registro PTR tiene algún sentido.
editar: actualizado según el comentario de Andrey Voitenkov .
from=
campo antes de la clave autorizada en cuestión (si se utiliza).
Es necesario cuando usa la opción FROM en un archivo autorizado_keys y desea filtrar por nombres y no solo por IP.
La opción FROM en una línea de un archivo autorizado_keys le permite limitar los hosts que pueden usar una clave específica.
Esto aumenta la capacidad de administrar múltiples servidores que tienen acceso entre sí sin permitir que los clones de una máquina se hagan pasar por su origen, generalmente sin querer (restos de crontabs, error humano).
Me gustaría añadir que en CentOS 7 (07/01/1503) y por lo tanto de Red Hat Enterprise Linux 7, yo era incapaz de iniciar sesión con la configuración predeterminada de yes
para UseDNS
. Después de descomentarlo y configurarlo no
, pude iniciar sesión. Por lo tanto, parece que se le puede negar el servicio si DNS no funciona correctamente. ¡En CentOS 6, parece que el valor predeterminado es no
y, por lo tanto, puedo entrar ssh
sin DNS funcional!
Me gustaría agregar que mi experimentación fue en contenedores LXC y no en máquinas físicas, ¡en caso de que eso marque la diferencia!