¿Cuál es la forma más segura de conectarlo a una máquina detrás de un enrutador?

3

Estoy pensando en reenviar el puerto 22, al 22 en la máquina detrás del enrutador, pero ¿es seguro? Cualquiera puede intentar conectarse a mi IP pública en el puerto 22 y luego intentar indefinidamente adivinar el usuario y la contraseña.

No parece una buena idea. ¿Alguna sugerencia? ¿Cómo se hace correctamente?

    
pregunta so_user 12.12.2014 - 01:53
fuente

2 respuestas

6

Hay muchos bots automatizados que intentarán atacar a los servidores SSH, pero si tomas algunas precauciones, puedes hacer que SSH sea muy seguro.

  1. Deshabilite completamente el inicio de sesión basado en contraseña y haga pares de clave pública / privada la única forma de iniciar sesión. Esta página proporciona información sobre cómo puede deshabilitar el inicio de sesión de contraseña y éste le muestra cómo configurar pares de claves. Es básicamente imposible forzar una fuerza bruta, por lo que solo con este paso se incrementará dramáticamente la seguridad de SSH. El único inconveniente es que tendrás que copiar la clave en todas las computadoras desde las que necesitas iniciar sesión.
  2. Configurar límite de velocidad: bloquea una dirección IP después de un cierto número de intentos de contraseña incorrectos. Hay muchas maneras de hacer esto; Yo uso fail2ban pero si Buscar en Google encontrarás muchas alternativas. Esto es importante porque si no bloquea las direcciones IP, tendrá bots que adivinan contraseñas para, literalmente, horas y horas. Por supuesto, si está usando inicios de sesión basados en claves, probablemente nunca lo lograrán, pero seguirán usando una buena parte del ancho de banda al generar mucho tráfico basura SSH (y también llenarán sus registros).
  3. Si sabe que solo va a acceder a este servidor desde ciertas direcciones IP, puede permitir solo esas direcciones IP y bloquear todas las demás .
  4. Deshabilitar el inicio de sesión como root : la gran mayoría de los bots intentarán apuntar al nombre de usuario raíz.
  5. Verifique los registros de inicio de sesión de vez en cuando para el acceso no autorizado.

Si sigue estos pasos, debería estar preparado para abrir SSH a Internet. Mientras mantenga sus llaves seguras y los paquetes de su servidor actualizados, no debería tener ningún problema con la seguridad de SSH.

EDITAR: si tiene dos máquinas a las que necesita acceder pero solo una dirección IP pública, tiene dos opciones: puede configurar el reenvío de puertos a una máquina, y si necesita acceder a la segunda máquina, debe iniciar sesión a la primera y SSH a la dirección IP privada de la segunda desde la primera.

Su otra opción es cambiar el puerto SSH de la segunda máquina de 22 a otra cosa (2222, por ejemplo). Luego puede reenviar el puerto 22 a la primera máquina, y 2222 a la segunda máquina. Si necesita acceder a la segunda máquina, debe especificar el puerto 2222 en su cliente SSH. (Nota: si lo desea, puede usar puertos no estándar en ambas máquinas para reducir el tráfico de bots).

    
respondido por el tlng05 12.12.2014 - 02:19
fuente
1

Si usted es el único que accede a la máquina, creo que es útil mantener limpios los registros ssh seleccionando un puerto no estándar para ssh.

Sí, esto es trivial de omitir si el atacante usa una botnet para hacer un simple escaneo de puertos, por lo que no agrega seguridad contra un atacante serio (aunque te impide ser la fruta más difícil). Aún tiene sentido tener frases / claves de contraseña ssh fuertes y otras mejores prácticas (por ejemplo, deshabilitar los inicios de sesión de raíz). Pero en mi VPS, encontré que redujo los ataques de inicio de sesión fallidos que vería en los registros de direcciones IP aleatorias de miles de intentos diarios a cero en los últimos tres meses.

Básicamente, simplemente elija un puerto que no se esté utilizando para otros fines (y tiendo a elegir puertos que no se usan para nada al verificar /etc/services para asegurarme de que no esté usando un servicio conocido) - y también selecciono puertos en el rango de puertos del sistema menos de 1024), por ejemplo, 501. Luego, simplemente reenvíe los puertos en su enrutador para reenviar las solicitudes TCP entrantes en el puerto 501 al puerto 22 en la máquina local.

Luego te conectas con ssh -p 501 $your_routers_ip del mundo exterior. Si configura un archivo .ssh/config , puede poner el puerto allí:

 host example
      Hostname example.com  # or ip address
      User jimbob
      Port 501
      ForwardAgent no
      ForwardX11 no

y luego solo puede hacer ssh example y automáticamente irá al puerto correcto / nombre de usuario correcto (y deshabilitará el reenvío de X11 / Agente).

    
respondido por el dr jimbob 12.12.2014 - 02:44
fuente

Lea otras preguntas en las etiquetas