Cómo hacer ssh de forma segura en una máquina en casa a través de internet

8

Voy a viajar en breve, y tengo una máquina que se ejecuta ejecuta un montón de trabajos cron, etc. Necesito iniciar sesión de forma remota para verificar los resultados de los trabajos ejecutados y hacer algún trabajo en la máquina.

Aquí están los hechos más destacados:

  1. La máquina a conectar (nave nodriza) está ejecutando Ubuntu 14.0.4 LTS
  2. La nave nodriza está conectada a Internet a través de una LAN en el hogar, por lo que tiene una dirección IP pública.
  3. La dirección IP se asigna dinámicamente.
  4. Me conectaré a la nave nodriza usando una computadora portátil con Ubuntu 15.10

Prefiero usar ssh en lugar de VNC, debido a problemas de ancho de banda, además, todo lo que necesito es la línea de comando de todos modos.

¿Cuál es la mejor manera de conectarse de forma segura y remota a mi máquina?

Homunculus Reticulli
fuente
SSH es seguro. ¿Cuál es tu problema con eso?
Mostafa Ahangarha
VNC es un control remoto gráfico. ¿Te refieres a VPN?
TheWanderer
@techraf ah, lo entiendo. Envié un voto de aprobación
TheWanderer
Solo lea una buena guía, hay una mejor sección de criptografía dedicada a ssh. ¡Y deshabilite la contraseña de inicio de sesión!
Braiam
Desde el chat, veo que pensaste en la autenticación con frases de contraseña en lugar de contraseñas. Lo que podría considerar es permitir solo la autenticación de clave privada / pública.
Oliphaunt - reinstalar Monica

Respuestas:

14

Su mejor opción es probablemente ejecutar un servidor SSH en un puerto no predeterminado, como 2020. Esto evita la mayoría de los intentos de ataques de fuerza bruta desde la web, ya que estos bots tienden a buscar solo en los puertos predeterminados.

También deberá asignar al servidor una dirección IP estática en la LAN, ya que debe estar accesible en todo momento. Puedes configurar esto System Settings --> Network. Para evitar conflictos de direcciones IP, también es recomendable que le diga a su servidor DHCP (el enrutador en la mayoría de los casos) que esta dirección IP está tomada. El método varía según el modelo, pero debe haber un área en algún lugar de la configuración del enrutador que le permita reservar direcciones IP.

La razón de la IP estática es que necesita configurar el reenvío de puertos en la configuración de su enrutador. Esto permite que las conexiones del puerto a su IP externa se enruten a ese puerto en su servidor.

Si su dirección IP pública es dinámica, lo que probablemente sea, querrá configurar algún tipo de servicio DNS dinámico. Mi recomendación para este servicio es No-IP . Le proporciona un subdominio gratuito que siempre apunta a su IP pública. Esta configuración requiere la instalación de un programa en una máquina siempre encendida en su LAN (llamada DUC, proporcionada por No-IP).

Una vez que haya configurado el servidor SSH como desee, ingrese SSH ingresando

ssh user@remotehostip -p XXX

o usando cualquier cliente SSH / SFTP que prefiera.

Si alguna de estas secciones necesita instrucciones más detalladas, comente y las agregaré.

Si alguien más tiene problemas para seguir, aquí hay una sala de chat que tiene pasos adicionales / más detallados: http://chat.stackexchange.com/rooms/37251/discussion-between-homunculus-reticulli-and-zacharee1

El vagabundo
fuente
+1 Gracias @ Zacharee1 por la pronta respuesta. He registrado un dominio para mi propósito, usando no-ip. He seguido todos los pasos. El último paso es donde estoy perdido: configurar el enrutador para el reenvío de puertos. Podría hacer algo de ayuda en esta área si es posible. Gracias
Homunculus Reticulli
@HomunculusReticulli ¿Cuál es su modelo de enrutador?
TheWanderer
Además, no puedo ver dónde / cómo asignar la dirección IP estática. Estoy usando Ubuntu Trusty Tahir
Homunculus Reticulli
1
No hay IP porque tiene una dirección externa dinámica
TheWanderer
1
@BharadwajRaju eso no es algo que pueda explicar en un comentario. Busque cómo configurar una computadora Ubuntu como un enrutador, y encontrará algo
TheWanderer
1

Además de la respuesta de Zacharee1, debe instalar Fail2ban o DenyHosts (obtenga el .deb de los repositorios precisos). No debe autenticarse con claves si viaja. Use una contraseña "segura" también. Tal vez configure una cuenta de usuario dedicada con acceso reducido para las veces que no necesite ser administrador.

No tocaría la configuración de red en el servidor, la IP estática se puede asignar desde el enrutador. La dirección IP del enrutador debe ser la dirección de "puerta de enlace" asignada en DHCP. En los casos en que no lo es (!), La dirección predeterminada debe escribirse debajo de ella en alguna parte. Si ha cambiado esto, debería haber dejado solo el último valor. Entonces, si tiene una red doméstica de clase C, la dirección será abcx, donde abc coincide con todas sus otras direcciones IP y x es el valor final de la etiqueta de su enrutador. El ISP debe tener páginas de ayuda para eso en cualquier caso.

Cuando use un puerto no estándar, evite '22' como dígitos finales (8122, por ejemplo). Deja pistas.

NÓTESE BIEN. puede acceder a aplicaciones basadas en X a través de SSH sin VNC, otro tema completamente diferente.

mckenzm
fuente
¿podría explicar su comentario: "No debe autenticarse con claves si viaja", esto va en contra de todo lo que he leído hasta ahora. ¿Cuál es la razón detrás de ti diciendo eso?
Homunculus Reticulli
¿Por qué no se debe autenticar con llaves cuando se viaja ? A la autenticación no le importa si viaja o no.
UniversallyUniqueID
¿No has cruzado una frontera últimamente? ¿Nunca has perdido un teléfono? Tus llaves serán compartidas. Lo mismo se aplica a los certificados. Instale uno en una máquina de cibercafé bajo su responsabilidad. Las teclas proporcionan acceso instantáneo sin contraseña, el cliente debe estar protegido, no en su bolsillo trasero.
mckenzm