¿Cómo puedo aumentar la seguridad de ssh? ¿Puedo requerir una clave y una contraseña?


16

Tengo una pequeña red de servidores y me gustaría aumentar la seguridad general. No tengo suficiente tiempo / dinero / paranoia para configurar una VPN: ¿cuál es una forma básica de aumentar la seguridad de mi sistema?

Una cosa podría ser exigir que los usuarios envíen su clave e ingresen una contraseña. Esto es un poco difícil de google porque todo sobre "contraseña de clave ssh" se trata de sshing sin contraseña. :-)

Un esquema con el que siempre he querido jugar es exigir que las conexiones entrantes solo provengan de una lista blanca de direcciones IP de dyndns. Sé que algunos jefes de seguridad vomitarían al pensar en la idea, pero el hecho es que agregaría una complejidad muy significativa para explotar una caja.

¿Qué piensas? ¿Qué más hay?


También puede restringir la lista de usuarios que pueden conectarse mediante las directivas AllowUsers o DenyUsers. Más detalles en esta publicación .
Fred

Respuestas:


8

El inicio de sesión con contraseña y clave es el mismo que "solo con clave". Durante la creación de la clave, se le solicita que ingrese la frase de contraseña. Si lo deja en blanco, no se le pedirá una contraseña. Si completa alguna frase de contraseña, se le solicitará cada vez que desee iniciar sesión.

Si le preocupa la seguridad, considere algunos de estos consejos mencionados trillones de veces en este foro:

  • Deshabilitar inicio de sesión ssh para root
  • Permitir acceso ssh solo desde direcciones IP definidas (iptables, hosts.allow, ...)
  • Mueva el puerto ssh a otro puerto (más oscuridad que seguridad, pero funciona)
  • Monitoree los intentos de inicio de sesión en el extranjero y reaccione en consecuencia
  • Mantenga su sistema actualizado

Etcétera etcétera.

Actualización: Consulte la respuesta aquí para saber cómo solicitar una clave pública y una contraseña del sistema local con un servidor OpenSSH.


Gracias por todos sus consejos, investigaremos esos. si se requieren clave y contraseña, entonces si un explotador descubre una contraseña (como si el usuario la usa en otro lugar que no es seguro), no puede ingresar sin la clave, y si el explotador roba la clave de la máquina del usuario , no pueden entrar sin saber la contraseña ... ¿verdad?
John Bachir

12
No es lo mismo. Si solo necesita la clave, el servidor no puede aplicar ninguna política de seguridad de contraseña en la clave. Un usuario descuidado podría tener una clave privada sin cifrar en el cliente que deja a su servidor vulnerable si la clave es robada.
200_success

mkudlacek: no sabía sobre hosts. Permitir antes: buscar en Google, parece que mi idea de la lista blanca de Dyndns no es tan tonta después de todo, creo que lo probaré.
John Bachir

1
200_success: entonces, ¿es posible requerir una clave y una contraseña?
John Bachir

También utilizo la aplicación DenyHosts para ayudar a bloquear a las personas que intentan entrar y fallan. Una pequeña forma automatizada y proactiva de incluir en la lista negra a las personas ..
James T Snell

6

Una idea que encontré interesante es el bloqueo de puertos : básicamente, para establecer la conexión ssh, primero debe probar una secuencia de otros puertos, antes de que el servidor ssh reconozca una solicitud de conexión. Si no se utiliza la secuencia correcta de puertos, no hay respuesta, por lo que parece que no hay ningún servidor ssh en ejecución. La secuencia de puertos es personalizable y se puede compartir con los usuarios previstos; todos los demás serían efectivamente incapaces de conectarse.

No lo he intentado yo mismo, pero por lo que he escuchado (que en realidad no es mucho) la sobrecarga es insignificante y disminuye enormemente su perfil de visibilidad.


Iría con esto si solo desea "aumentar la seguridad general" pero probablemente debería tratar de resolver problemas de seguridad particulares.
Stefan Thyberg

Lo uso en todos los sitios en los que ingreso, y es muy efectivo en mi humilde opinión.
Sirex

¿No es lo mismo que tener una contraseña de 4 caracteres más?
John Bachir

realmente no. Hay 65536 puertos y 26 letras. También tiene la secuencia de detonación de cualquier longitud, y puede limitar los reintentos utilizando técnicas de firewall estándar. No es seguridad per se, pero es bueno tenerlo.
Sirex

bueno, entonces 8 o 12 caracteres más :-D
John Bachir

3

Parches relacionados con habilitar directamente en SSH y mucha discusión relevante:

Esto también se puede hacer sin modificación al tener un script de verificación de contraseña combinado con el uso de la ForceCommandopción de configuración.

Finalmente, aunque no existe ningún módulo para ello, si movió la autenticación de clave pública a PAM, entonces podría requerir que se pasen ambos pasos antes de que PAM considere que la autenticación fue exitosa.


2

Solo usa

RequiredAuthentications publickey, password

en sshd_configsi está utilizando sshd de ssh.com. Esta característica no está disponible en OpenSSH.


RequiredAuthenticationsdefinitivamente no es una extensión estándar de OpenSSH
Hubert Kario

¿Sabes qué implementaciones sshd admiten esto?
John Bachir

El servidor Tectia SSH lo admite. Por cierto: use @nameOfUser al responder a sus comentarios, de esta manera se les notificará sobre la respuesta
Hubert Kario

Funcionalidad similar es compatible con OpenSSH a partir de la versión 6.2: serverfault.com/a/562899
Søren Løvborg

1

También puede usar contraseñas de un solo uso para aumentar la seguridad. Esto permitiría a los usuarios iniciar sesión desde una terminal insegura, que puede tener un keylogger, si previamente generaron la siguiente contraseña. También hay generadores de contraseñas que se pueden instalar incluso en teléfonos Java MIDP más antiguos, que lleva consigo todo el tiempo.


Sí, en mi servidor personal utilizo un token Yubikey además de mi contraseña. El token genera una contraseña de un solo uso. Ambos son necesarios para autenticar. Alternativamente, permito eludir el par de contraseña / otp si se autentica con una clave SSH. El Yubikey es barato y hay mucho software para integrarlo con Pam, el sistema de autenticación extensible de Linux.
Martijn Heemels

1

Le recomendaría que nunca ejecute un sshd, rdp o tales servicios de administración sin restricción de IP. De hecho, sugeriría limitar el acceso a dichos servicios a los administradores que se conectan a través de VPN.


1

Con respecto a su pregunta original sobre la necesidad de una clave y una contraseña, si está ejecutando RHEL o CentOS 6.3, esto ahora es posible. Las notas de la versión RHEL 6.3 lo describen, es cuestión de agregar esto a su sshd_config

RequiredAuthentications2 publickey,password

0

Estoy totalmente de acuerdo con 3molo. OpenSSH es el servidor SSH predeterminado de Linux y Unix. No hay razón para que lo cambiemos, especialmente por seguridad. VPN debería ser la mejor solución, que puede encriptar nuestro tráfico y proporcionar la autorización de contraseña de 2 pasos.


0

No estoy seguro de por qué nadie lo ha mencionado, pero debe asegurarse de generar las claves durante más tiempo que los 1024 bits predeterminados que ya no se consideran seguros.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.