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 UseDNSopció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 nose especifica en sshd_config. Esto es para la compatibilidad con antiguas instalaciones que utilizan rsh, donde se puede decir que “el usuario llamado boben la máquina llamada darkstarpuede iniciar sesión como alicesin mostrar ninguna credencial” (escribiendo darkstar boben ~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 .
UseDNSni 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).
UseDNSes 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 yespara 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 noy, por lo tanto, puedo entrar sshsin 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!