Quiero ejecutar un servidor web en casa (realmente para la diversión y el aprendizaje de la red / red y otras mejores prácticas de seguridad), ejecutando una aplicación web que planeo escribir con Ruby on Rails y poder acceder a ella desde fuera de. Planeo ejecutarlo en un servidor Linux VM + Apache web (quiero instalarlo desde cero, nuevamente por diversión) en un servidor virtual / VMWare en mi Mac.
Entiendo que necesito reenviar puertos (planea reenviar 80 a 8080 o algún otro puerto sin privilegios, no se abre ningún otro puerto desde mi enrutador), posiblemente obtengo DNS dinámico, etc., para poder acceder a él de manera confiable, etc., y no estoy preocupado acerca de conectarlo con el mundo exterior.
He leído artículos y recursos para fortalecer el servidor web Apache. Planeo probar y seguir las mejores prácticas de seguridad para mitigar las amenazas comunes (XSS, CSRF, inyección SQL, etc.) para la propia aplicación web (usando la guía de seguridad Ruby on Rails, que creo que es un buen punto de partida).
-
Ya que lo estoy ejecutando en una máquina virtual, ¿hay alguna manera de que alguien pueda piratear / secuestrar el servidor web / aplicación web para controlar mi máquina host (no me importa si controlan la máquina virtual desde este punto de vista) cosa es para aprender)?
-
¿Qué precauciones adicionales debo tomar para proteger mi máquina host? ¿O es simplemente mejor obtener un sistema separado solo para ejecutar el servidor web?
-
También, ¿qué protección adicional puedo agregar a mi VM para evitar que sea pirateada en primer lugar (firewalls, detección de intrusos como snort?)
-
Si se toma el control de la máquina virtual o del servidor web dedicado, ¿cómo afecta a la seguridad de mi red local / LAN? ¿Cómo puedo mitigar la amenaza?
-
¿Es más seguro crear una VM, crear un servidor web accesible solo a través de una VPN dentro de la VM, donde el servidor VPN está dentro de la VM, y crear inicios de sesión VPN a través de los cuales se puede acceder al servidor web? ¿Similar o exactamente igual a cómo tienes una intranet corporativa? Supongo que ejecutaré OpenVPN como un usuario sin privilegios y no estoy seguro de poder hacerlo escuchar en puertos sin privilegios.
He leído la wiki de autenticación y otras publicaciones relacionadas en Stack Exchange, como la vulnerabilidad de otros sistemas si un sistema está comprometido en la red, etc., pero aún siento la necesidad de hacer la pregunta.