¿Qué tan arriesgado es tener un servidor personal con ssh abierto en Internet?

25

La continuación del título sería "mientras se tenga un conocimiento limitado de la seguridad de Internet".

Recientemente configuré un pequeño servidor con una computadora de gama baja que ejecuta debian con el objetivo de usarlo como un repositorio personal de git. He habilitado ssh y me sorprendió bastante la rapidez con la que sufrió ataques de fuerza bruta y similares. Luego leí que esto es bastante común y aprendí acerca de las medidas de seguridad básicas para evitar estos ataques (muchas preguntas y duplicados en el trato por defecto del servidor, vea por ejemplo este o este ).

Pero ahora me pregunto si todo esto vale la pena. Decidí configurar mi propio servidor principalmente para divertirme: podía confiar en soluciones de terceros como las ofrecidas por gitbucket.org, bettercodes.org, etc. Si bien parte de la diversión es aprender sobre seguridad en Internet, no he tiempo suficiente para dedicarlo a ser un experto y estar casi seguro de que tomé las medidas de prevención correctas.

Para decidir si continuaré jugando con este proyecto de juguetes, me gustaría saber qué es lo que realmente arriesgo al hacerlo. Por ejemplo, ¿en qué medida también amenazan las otras computadoras conectadas a mi red? Algunas de estas computadoras son utilizadas por personas con un conocimiento aún menor que el mío que ejecuta Windows.

¿Cuál es la probabilidad de que me meta en problemas si sigo pautas básicas como contraseña segura, acceso raíz deshabilitado para ssh, puerto no estándar para ssh y posiblemente deshabilitar el inicio de sesión con contraseña y usar una de las reglas fail2ban, denyhosts o iptables?

Dicho de otra manera, ¿hay algunos lobos malos que deba temer o se trata principalmente de ahuyentar a los niños del guión?

Alfred M.
fuente
Creo que se dio en el clavo cuando mencionó que no tiene el tiempo o la inclinación para convertirse en un experto en seguridad de $ TECHNOLOGY; Esta es la razón principal para utilizar una solución alojada. El único otro argumento común en la evaluación interna frente al hosting es el costo. Dado que github y similares son gratuitos, esencialmente estás renunciando a tu tiempo personal solo para obtener el conocimiento de cómo ejecutar un repositorio de git. No podemos decirle qué debe hacer con su tiempo personal, pero en una situación profesional esto no tendría sentido. (advertencia: las situaciones complicadas tienen más variables).
Chris S
1
Si decide ejecutar su propio servidor, agregue también a su lista de tareas pendientes comprobando periódicamente actualizaciones y vulnerabilidades de seguridad para cada servicio que ejecute. Solo configurarlo no es suficiente.
semana
Dos palabras: claves públicas, como lo dijo @Stephane. Deshabilite la keyboard-interactiveautenticación y use solo pubkeyautenticación.
kostix

Respuestas:

14

IMO SSH es una de las cosas más seguras para escuchar en Internet abierto. Si realmente le preocupa, escuche en un puerto de gama alta no estándar. Todavía tendría un cortafuegos (nivel de dispositivo) entre su caja e Internet real y solo usaría el reenvío de puertos para SSH, pero eso es una precaución contra otros servicios. SSH en sí es bastante sólido.

Yo he tenido la gente golpea mi servidor SSH de vez en cuando (abierto a Time Warner Cable). Nunca tuvo un impacto real.

Algunas cosas adicionales que puede hacer para hacer que SSH sea más seguro son evitar intentos repetidos desde la misma dirección IP para una máquina doméstica, como

MaxStartups 2:30:10

en / etc / ssh / sshd_config que restringirá cuántas conexiones se pueden crear en una fila antes de iniciar sesión correctamente.

TheFiddlerWins
fuente
Mi proveedor de servicios de Internet proporciona un firewall cuyos parámetros vi al abrir un puerto para ssh. ¿Es a lo que te refieres?
Alfred M.
2
Podría ser, algunos ISP le dan un dispositivo tonto, algunos un enrutador con un firewall incorporado. Solo digo que NUNCA es una buena idea poner un SO de propósito general directamente en Internet sin importar las precauciones que tome. Desea algún tipo de dispositivo de hardware (o algo así como DD-WRT) entre usted y el desagradable.
TheFiddler gana el
1
Configure la autenticación de clave pública como se menciona en otra respuesta, y APAGUE ChallengeResponseAuthentication y PasswordAuthentication en / etc / ssh / sshd_config.
Randy Orrison
Sé que esta es una pregunta estúpida, pero ¿necesito comprar un dominio para acceder a mi servidor (a través de ssh o navegador) desde Internet?
TheRookierLearner
@TheRookierLearner: no, puede usar la dirección IP que le proporciona su ISP. Sin embargo, dependiendo de la configuración de su red doméstica, se puede compartir a través de todos sus dispositivos con algo llamado PNAT (la mayoría de las personas simplemente lo llaman NAT). Si es como la mayoría de las personas, necesitará averiguar la IP "NAT" del dispositivo específico al que desea acceder desde Internet (solo ifconfig / ipconfig en el sistema, será un 10.xxx, 172.16. xx o 192.168.xx dirección vea RFC 1918 para más de lo que se preocupan por estos números) y luego decir que el router "puerto hacia adelante" o "zona de distensión" el puerto 22.
TheFiddlerWins
10

La configuración de un sistema de autenticación de clave pública con SSH es realmente trivial y demora aproximadamente 5 minutos en configurarse .

Si obliga a todas las conexiones SSH a usarlo, su sistema será más resistente de lo que puede esperar sin invertir MUCHO en infraestructura de seguridad. Francamente, es tan simple y efectivo (siempre y cuando no tenga 200 cuentas, entonces se vuelve desordenado) que no usarlo debería ser un delito público.

Stephane
fuente
3
Para obligar a las conexiones SSH a usar la autenticación de clave pública después de haberla configurado, APAGUE ChallengeResponseAuthentication y PasswordAuthentication en / etc / ssh / sshd_config. Lo olvidé una vez, para mi pesar (solo una vez, y nunca más).
Randy Orrison
8

También ejecuto un servidor git personal que está abierto al mundo en SSH, y también tengo los mismos problemas de fuerza bruta que tú, por lo que puedo simpatizar con tu situación.

TheFiddlerWins ya ha abordado las principales implicaciones de seguridad de tener SSH abierto en una IP de acceso público, pero la mejor herramienta IMO en respuesta a intentos de fuerza bruta es Fail2Ban , un software que monitorea sus archivos de registro de autenticación, detecta intentos de intrusión y agrega reglas de firewall al iptablescortafuegos local de la máquina . Puede configurar cuántos intentos antes de una prohibición y también la duración de la prohibición (mi valor predeterminado es 10 días).

Craig Watson
fuente
Como decía mi comentario en una publicación anterior, eso es lo que usa mi NAS en casa, y después de un par de meses, la cantidad de intentos se ha reducido significativamente.
mveroone
2

Otra forma de manejar esto es configurar una VPN. En lugar de conectarse directamente a los puertos SSH en su servidor doméstico, primero se conecta a la VPN y luego ejecuta todo su tráfico a través de la conexión encriptada y segura.

La forma ideal de manejar esto es con un firewall que incorpora un punto final VPN, pero también puede configurar una computadora con Windows para que actúe como un servidor VPN.

Aquí hay un ejemplo:

http://www.howtogeek.com/135996/

Ahora tenga en cuenta que una configuración de seguridad adecuada implicaría una computadora pública (o semipública) aislada de su red interna. Un servidor web, o cualquier computadora que aloje servicios disponibles públicamente, debe estar fuera de la red segura de su hogar u oficina. Usaría 2 enrutadores para crear una zona segura, o una DMZ, entre usted e Internet.

De esta manera, si su servidor está pirateado, no puede usarse como un vector para atacar a sus otras computadoras.

Entonces la configuración se vería así:

Configuración DMZ

TomXP411
fuente
Perdón por la pequeña imagen ... No puedo entender cómo editar mi publicación.
TomXP411
2

Las respuestas son muy buenas, solo recomendaría dos cosas:

  • Considere el acceso solo por el sistema de autenticación de clave
  • Use Denyhosts : prohibirá a los hosts que intenten acceder a su servidor con autenticación no válida
Carlos C Soto
fuente