¿Qué debo tener en cuenta al abrir mi servidor doméstico a Internet?

6

He construido un servidor doméstico (prácticamente solo una PC básica con un par de HDD grandes) que me gustaría usar como servidor FTP y como servidor de Minecraft. Ambos serían para miembros de mi comunidad de juego. También me gustaría acceder al terminal de mi servidor doméstico cuando no esté en casa (SSH).

Actualmente no estoy seguro de cómo dar acceso al servidor FTP, pero me gustaría que esté disponible para cualquier persona de la comunidad que quiera acceder, por lo que potencialmente podría ser alguien hostil, pero no lo haría. t ser robots de ataque al azar. Lo más probable es que les envíe los detalles de inicio de sesión de una cuenta de "invitado" compartida o les dé cuentas individuales a los miembros.

No planeo alojar ningún dato importante o personal en el servidor, pero me gustaría protegerlo tanto como sea posible sin hacer que sea un dolor para las personas. Está conectado como un nodo en mi red doméstica y no tiene nada de especial (excepto el puerto que actualmente se reenvía en el enrutador para el servidor de Minecraft).

Está ejecutando el servidor Ubuntu 15.10 y está conectado al enrutador Sky Hub a través de un conmutador no administrado de 5 puertos (al que también está conectada mi PC de escritorio personal). Tiene una IP interna estática.

¿Lo que estoy planeando es una idea terrible y cómo podría mitigarme contra posibles ataques?

    
pregunta BenAdamson 30.11.2015 - 00:04
fuente

3 respuestas

4

Lo primero es lo primero, suponga que su servidor estará bajo ataque tan pronto como lo ponga en línea. Opera bajo esa suposición y evitarás muchos errores que la gente normalmente comete.

Comenzaría poniendo su servidor en un DMZ para que, en caso de que se vea comprometida, la superficie de ataque esté limitada en términos de a lo que puede llegar. Si esto no es posible, no es el fin del mundo pero sí ayuda a mantener las cosas separadas.

A continuación, y probablemente más importante, absolutamente nada que no sea necesario que se esté ejecutando debería estar ejecutándose. Desactive todas las funciones innecesarias (¿realmente necesita un entorno GUI?) Y bloquee los puertos que no se requieren específicamente para funcionar. Me gusta iptables a mí mismo, pero lo importante es que se utiliza algo .

Hay algunas herramientas que puede usar para detectar actividades maliciosas, como el escaneo, el uso de fuerza bruta, los intentos de explotación, etc. No voy a repasar cada uno en detalle, pero aquí hay algunas que he usado a lo largo de los años:

  • tripwire está un poco desactualizado, pero no tanto.
  • ossec tiene un rol similar, pero es más reactivo
  • snort es muy popular, tiene muchas reglas

Más importante que cualquier herramienta específica es que la configures y la uses correctamente. Asegúrese de comprender lo que cubre toda la herramienta, lo que no cubre y lo que sucede cuando falla.

Definitivamente, puede ejecutar un servidor doméstico, y puede ser una buena experiencia de aprendizaje, pero querrá asegurarse de que su sistema esté actualizado y vigilado. No te olvides de verificarlo ocasionalmente solo porque parece estar funcionando bien.

    
respondido por el TactiFail 30.11.2015 - 02:20
fuente
2

Mi principal consejo para ti sería asegurarte de que lo bloquees lo más posible.

Comience en el nivel de transporte. Hay un montón de rutas de Linux para hacer esto, personalmente, creo que ufw es razonablemente fácil de usar. Si hay un puerto que no necesita estar abierto (es decir, no hay una razón específica para que esté abierto a Internet), entonces no debería estar abierto. Si necesita acceso local, solo ábralo a direcciones en su red local. Ha enumerado 3 servicios (FTP, SSH, Minecraft) que deben estar abiertos, así que limite su configuración para que solo permita aquellos que están fuera de su red.

Luego mira la autenticación. Para SSH, ya que permite la ejecución, recomendaría NO abrir esto para el acceso general. Selecciona tu propia cuenta de usuario, dale permisos para SSH y bloquea todos los demás. Personalmente recomiendo usar claves para la autenticación y no permitir las contraseñas en absoluto, pero eso es solo yo.

Desea que el FTP esté abierto, por lo que la solución es restringir su acceso. Dale una cuenta genérica y hazla para que solo pueda acceder a un directorio específico, no importante. No ejecute nada desde aquí, y no tenga nada que lo señale como un directorio de guardado.

Supongo que quieres que Minecraft sea relativamente abierto, lo cual está bien, pero eso requiere más administración para hacer frente al dolor (copias de seguridad mundiales, etc.).

Hay algunos HIDS (sistemas de detección de intrusos basados en host) que ayudarán a mitigar los efectos de cualquiera que intente atacar su servidor.

    
respondido por el Jozef Woods 30.11.2015 - 13:05
fuente
1

Estoy de acuerdo con las respuestas de @Jozef Woods y @TactiFail sobre el bloqueo del servidor, etc.

También agregaría que debería asegurarse de aplicar parches regularmente, y esto no se aplica solo al sistema operativo. Si desea que sea un servidor de Minecraft, entonces se ejecutará Java, supongo. Ese será un componente clave para parchar. Por ejemplo, esta actualización de Java solucionó 8 vulnerabilidades calificadas como de gravedad crítica, así como un montón de otros elementos menos graves:

enlace

También aplicaría el endurecimiento estándar de la industria al servidor. Puede descargar y una excelente guía para varios tipos de Linux, de forma gratuita desde CIS:

enlace

Estas guías cubren:

  • Bloqueo del sistema de archivos
  • Endurecimiento del contexto de ejecución del proceso
  • Eliminación de servicios que no son necesarios
  • configuración de red
  • Registro y auditoría
  • Gestión de cuentas de usuario
respondido por el Mike Goodwin 30.11.2015 - 13:45
fuente

Lea otras preguntas en las etiquetas