-->

Instalación de software específico de servidor en máquina virtual

Instalación de software específico de servidor en máquina virtual: Desplegar una máquina virtual con un sistema operativo servidor e instalar un servicio específico (ej. servidor web Apache/Nginx o servidor DHCP).

Objetivo:

Desplegar un servicio de red específico (como un servidor web Apache o Nginx) en el interior de una máquina virtual configurada con un sistema operativo orientado a servidores (como Ubuntu Server o Debian), validando su puesta en marcha y la accesibilidad desde la red.

Escenario:

  • Una máquina virtual en ejecución con un sistema operativo servidor instalado y conectividad de red activa (modo Puente o NAT con redirección de puertos).
  • Privilegios de superusuario (root o sudo) en el sistema operativo invitado para instalar paquetes y gestionar servicios del sistema.

Instrucciones:

Fase 1: Actualización del sistema e instalación del servicio web (Ej. Nginx en Ubuntu/Debian)

  1. Inicia sesión en la máquina virtual servidor mediante la consola local o un acceso por SSH.
  2. Actualiza la lista de paquetes locales del gestor de software para garantizar la disponibilidad de las últimas versiones:
    sudo apt update && sudo apt upgrade -y
  3. Instala el paquete del servidor web Nginx ejecutando el siguiente comando:
    sudo apt install nginx -y
  4. Comprueba que el servicio se encuentra activo y ejecutándose correctamente en segundo plano:
    sudo systemctl status nginx

Fase 2: Verificación de la accesibilidad local y exterior

  1. Comprueba que el servidor responde localmente realizando una petición HTTP interna mediante la utilidad curl:
    curl http://localhost
  2. Anota la dirección IP privada de la máquina virtual (ej. obtenida con ip a) y accede a ella desde un navegador web en el equipo anfitrión o desde otro equipo de la red local introduciendo dicha IP en la barra de direcciones.

Verificación:

  • Comprueba que el navegador web muestra la página de bienvenida predeterminada del servidor (ej. "Welcome to nginx!"), confirmando que el servicio atiende peticiones de red con éxito.
  • Verifica que el cortafuegos del sistema invitado (como UFW en Ubuntu) permite el tráfico en los puertos estándar de red (puerto 80 para HTTP y 443 para HTTPS).

Preguntas de reflexión:

  1. ¿Por qué es fundamental gestionar los servicios de servidor mediante herramientas de control de sistemas como systemctl en lugar de ejecutar los binarios de forma manual en una terminal interactiva?
  2. ¿Qué implicaciones de seguridad tiene dejar abierto el puerto 80 sin cifrado (HTTP) frente a configurar un certificado SSL/TLS para habilitar conexiones seguras (HTTPS) en el servidor web virtual?
  3. ¿Qué precauciones de red se deben adoptar en el hipervisor (como reglas de firewall o modos de adaptador) si el servidor virtual desplegado debe ser accesible no solo desde la red local, sino también desde Internet?
Haz clic aquí para ver las soluciones y explicaciones

1. ¿Por qué se utiliza systemctl para gestionar los servicios?

systemctl es la interfaz estándar para interactuar con el sistema de inicio y gestión de demonios (systemd) en los sistemas Linux modernos. Permite que los servicios se ejecuten en segundo plano como demonios persistentes, gestiona su reinicio automático ante caídas del sistema, controla los registros de errores (logs) y asegura que el servicio arranque de forma desatendida cada vez que la máquina virtual se enciende.


2. ¿Qué riesgos implica el uso exclusivo de HTTP sin cifrado?

Todo el tráfico transmitido a través del protocolo HTTP (incluyendo contraseñas, credenciales de acceso y datos de formularios) viaja en texto plano a través de la red, lo que permite que cualquier atacante con acceso al medio físico o local pueda interceptarlo mediante ataques de escucha de red (sniffing). El uso de HTTPS con certificados SSL/TLS cifra de extremo a extremo las comunicaciones, garantizando la confidencialidad e integridad de la información.


3. ¿Qué precauciones se deben tomar si el servidor se expone a Internet?

Es obligatorio configurar un cortafuegos perimetral robusto (como iptables, ufw o firewalls de nube), deshabilitar accesos administrativos innecesarios (como contraseñas directas por SSH reemplazándolas por claves criptográficas), mantener actualizado el software del servidor para parchear vulnerabilidades conocidas, y utilizar proxies inversos o sistemas de prevención de intrusiones (como Fail2ban) frente a ataques de fuerza bruta.