IBM Cloud Docs
Servidor frontal público y servidor de fondo privado en una nube privada virtual

Servidor frontal público y servidor de fondo privado en una nube privada virtual

Esta guía de aprendizaje puede incurrir en costes. Utilice Estimador de costes para generar una estimación del coste basada en el uso previsto.

En esta guía de aprendizaje se muestra cómo crear de su propia IBM Cloud® Virtual Private Cloud (VPC) con varias subredes y una instancia de servidor virtual (VSI) en cada subred. Una VPC es su propia nube privada en la infraestructura de nube compartida con aislamiento lógico de otras redes virtuales.

Una subred es un rango de direcciones IP. Está enlazado a una sola zona y no puede abarcar varias zonas o regiones. A efectos de VPC, la característica importante de una subred es el hecho de que las subredes se pueden aislar unas de otras, así como interconectar de la forma habitual. El aislamiento de subred se puede lograr mediante el uso de grupos de seguridad que actúan como cortafuegos para controlar el tráfico de entrada y de salida para una o varias instancias de servidor virtual.

Es una buena práctica utilizar una subred para los recursos que deben estar expuestos al mundo exterior. Los recursos con acceso restringido a los que nunca se debe acceder directamente desde el mundo exterior se colocan dentro de una subred distinta. Las instancias de este tipo de subred pueden ser la base de datos de fondo o algún almacén secreto que no desea que sea accesible públicamente. Se definen grupos de seguridad para permitir o denegar el tráfico a las VSI.

En resumen, mediante una VPC puede:

  • crear una red definida por software (SDN),
  • aislar cargas de trabajo,
  • ejercer un control exhaustivo del tráfico de entrada y de salida.

Objetivos

  • Comprensión de los objetos de infraestructura disponibles para nubes privadas virtuales
  • Creación de una nube privada virtual, subredes e instancias de servidor
  • Aplicación de grupos de seguridad para proteger el acceso a los servidores

de arquitectura del

  1. El administrador (DevOps) configura la infraestructura necesaria (VPC, subredes, grupos de seguridad con reglas, VSI) en la nube.
  2. El usuario de Internet realiza una solicitud HTTP/HTTPS al servidor web en la interfaz frontal.
  3. La interfaz frontal solicita recursos privados del programa de fondo protegido y proporciona los resultados al usuario.

Antes de empezar

  • Compruebe los permisos de usuario. Asegúrese de que la cuenta de usuario tiene permisos suficientes para crear y gestionar recursos de VPC. Consulte la lista de permisos necesarios para VPC.
  • Necesita una clave SSH para conectarse a los servidores virtuales. Si no tiene una clave SSH, consulte las instrucciones para crear una clave para VPC.

Crear una nube privada virtual y subredes

Para reforzar la seguridad de los servidores, se recomienda permitir únicamente conexiones con los puertos necesarios para las aplicaciones desplegadas en los servidores. En esta guía de aprendizaje, la aplicación será un servidor web, por lo que solo necesitará conexiones de entrada en el puerto 80.

Para realizar tareas de mantenimiento en estos servidores como la instalación de software o la realización de actualizaciones del sistema operativo, se llevará a cabo a través de un host bastión. Un host bastión es una instancia que se suministra con una dirección IP pública y a la que se puede acceder a través de SSH. Una vez configurado, el host bastión actúa como un servidor de gestión, permitiendo una conexión segura con las instancias suministradas en la VPC.

En esta sección, creará la VPC y el host bastión.

Esta guía de aprendizaje también se proporciona con scripts de shell complementarios y una plantilla de Terraform, que se pueden utilizar para generar los recursos que va a crear utilizando la interfaz de usuario que se muestra a continuación. Están disponibles en este repositorio de Github.

  1. Vaya a la página Virtual Private Clouds y haga clic en Crear.
  2. En la sección Nueva nube privada virtual:
    1. Especifique vpc-pubpriv como nombre para la VPC.
    2. Seleccione un Grupo de recursos.
    3. Si lo desea, añada Etiquetas para organizar los recursos.
  3. Deseleccione Permitir SSH y Permitir ping desde Grupo de seguridad predeterminado. El acceso SSH se añadirá más adelante al grupo de seguridad de mantenimiento. El grupo de seguridad de mantenimiento se debe añadir a una instancia para permitir el acceso SSH desde el servidor bastión. El acceso de ping no es necesario para esta guía de aprendizaje.
  4. En Subredes , cambie el nombre de la subred de la zona 1. Haga clic en el icono de lápiz:
    • Especifique vpc-secure-bastion-subnet como nombre exclusivo de la subred.
    • Seleccione el mismo grupo de recursos que el grupo de recursos de VPC.
    • Deje los valores predeterminados en los demás valores.
    • Pulse Guardar
  5. En Subredes , cambie el nombre de la subred de la zona 2. Haga clic en el icono de lápiz:
    • Especifique vpc-pubpriv-backend-subnet como nombre exclusivo de la subred.
    • Seleccione el mismo grupo de recursos que el grupo de recursos de VPC.
    • Deje los valores predeterminados en los demás valores.
    • Pulse Guardar
  6. En Subredes , cambie el nombre de la subred de la zona 3. Haga clic en el icono de lápiz:
    • Especifique vpc-pubpriv-frontend-subnet como nombre exclusivo de la subred.
    • Seleccione el mismo grupo de recursos que el grupo de recursos de VPC.
    • Deje los valores predeterminados en los demás valores.
    • Pulse Guardar
  7. Pulse Crear nube privada virtual.

Para confirmar la creación de la subred, vaya a la página Subredes y espere hasta que el estado cambie a Disponible.

Creación y configuración del grupo de seguridad de bastión

Siga los pasos descritos en esta sección de la guía de aprendizaje del bastión para crear un grupo de seguridad y configurar reglas de entrada para la instancia de servidor virtual del bastión.

Creación de una instancia de bastión

Siga los pasos descritos en esta sección de la guía de aprendizaje del bastión para crear la instancia de servidor virtual del bastión.

Configuración de un grupo de seguridad con reglas de acceso de mantenimiento

Siga los pasos descritos en esta sección de la guía de aprendizaje del bastión para crear el grupo de seguridad vpc-secure-maintenance-sg. Este grupo de seguridad se utilizará al realizar tareas de mantenimiento sobre las instancias de servidor virtual, como la instalación de software o la actualización del sistema operativo.

Crear un grupo de seguridad de fondo y VSI

En esta sección, creará un grupo de seguridad y una instancia de servidor virtual para el programa de fondo.

Creación de un grupo de seguridad de programa de fondo

El grupo de seguridad de fondo controla las conexiones de entrada y de salida de los servidores de fondo.

Para crear un nuevo grupo de seguridad para el programa de fondo:

  1. Seleccione Grupos de seguridad en Red y, a continuación, haga clic en Crear.
  2. Especifique vpc-pubpriv-backend-sg como nombre y seleccione la VPC que ha creado anteriormente.
  3. Seleccione un grupo de recursos que sea igual que VPC.
  4. Pulse Crear grupo de seguridad.

Más adelante editará el grupo de seguridad para añadir las reglas de entrada y de salida.

Creación de una instancia de servidor virtual de programa de fondo

Para crear una instancia de servidor virtual en la subred recién creada:

  1. Haga clic en la subred backend en Subredes.
  2. Pulse Recursos conectados, en Instancias conectadas pulse Crear.
  3. Para configurar la instancia:
    1. Elige una ubicación y asegúrate de volver a utilizarla más tarde.
    2. Establezca el nombre en vpc-pubpriv-backend-vsi.
    3. Seleccione el grupo de recursos como antes.
    4. En Imagen, pulse Cambiar imagen. Utilice el campo de búsqueda para seleccionar Ubuntu Linux como su Sistema operativo. Puede elegir cualquier versión de la imagen.
    5. Pulse Cambiar perfil, seleccione Calcular como categoría y elija cx2-2x4 (2 vCPUs y 4 GB de RAM) como perfil.
    6. Establezca Claves SSH en la clave SSH que ha creado anteriormente.
    7. En Opciones avanzadas, establezca Datos de usuario en
      #!/bin/bash
      apt-get update
      apt-get install -y nginx
      echo "I'm the backend server" > /var/www/html/index.html
      service nginx start
      
      Esto instalará un servidor web simple en la instancia.
  4. En Gestión de redes, seleccione la VPC que ha creado.
  5. Asegúrese de que la Interfaz de red virtual está seleccionada y de que vpc-pubpriv-backend-subnet aparece como subred. Pulse el icono de edición para esa subred.
    1. En primer lugar, en Detalles de conexión de red e interfaz de red virtual, verifique que se haya seleccionado vpc-pubpriv-backend-subnet. Pulse Siguiente.
    2. Deseleccione el grupo de seguridad predeterminado y marque vpc-pubpriv-backend-sg y vpc-secure-maintenance-sg.
    3. En el diálogo Configuración de IP deje todo tal cual y pulse Siguiente.
    4. Por último, revise todo y finalice pulsando Guardar.
  6. Pulse Crear instancia de servidor virtual.

Crear un grupo de seguridad frontal y VSI

De forma similar al programa de fondo, creará una instancia de servidor virtual frontal y un grupo de seguridad.

Creación de un grupo de seguridad frontal

Para crear un nuevo grupo de seguridad para la interfaz frontal:

  1. Pulse Grupos de seguridad en Red y, a continuación, pulse Crear.
  2. Especifique vpc-pubpriv-frontend-sg como nombre y seleccione la VPC que ha creado anteriormente.
  3. Seleccione un grupo de recursos que sea igual que VPC.
  4. Pulse Crear grupo de seguridad.

Creación de una instancia de servidor virtual frontal

Para crear una instancia de servidor virtual en la subred recién creada:

  1. Haga clic en la subred del frontend en Subredes.
  2. Pulse Recursos conectados, en Instancias conectadas pulse Crear.
  3. Para configurar la instancia:
    1. Elige una ubicación y asegúrate de volver a utilizarla más tarde.
    2. Establezca el nombre en vpc-pubpriv-frontend-vsi.
    3. Seleccione el grupo de recursos como antes.
    4. En Imagen, pulse Cambiar imagen. Utilice el campo de búsqueda para seleccionar Ubuntu Linux como su Sistema operativo. Puede elegir cualquier versión de la imagen.
    5. Pulse Cambiar perfil, seleccione Calcular como categoría y elija cx2-2x4 (2 vCPUs y 4 GB de RAM) como perfil.
    6. Establezca Claves SSH en la clave SSH que ha creado anteriormente.
    7. En Opciones avanzadas, establezca Datos de usuario en
      #!/bin/bash
      apt-get update
      apt-get install -y nginx
      echo "I'm the frontend server" > /var/www/html/index.html
      service nginx start
      
      Esto instalará un servidor web simple en la instancia.
  4. En Gestión de redes, seleccione la VPC que ha creado.
  5. Asegúrese de que la Interfaz de red virtual está seleccionada y de que vpc-pubpriv-frontend-subnet aparece como subred. Pulse el icono de edición para esa subred.
    1. En primer lugar, en Detalles de conexión de red e interfaz de red virtual, verifique que se haya seleccionado vpc-pubpriv-frontend-subnet. Pulse Siguiente.
    2. Desmarque el grupo de seguridad por defecto y marque vpc-pubpriv-frontend-sg y vpc-secure-maintenance-sg.
    3. En el diálogo Configuración de IP deje todo tal cual y pulse Siguiente.
    4. Por último, revise todo y finalice pulsando Guardar.
  6. Pulse Crear instancia de servidor virtual.

Una vez que la instancia esté activa y en ejecución, seleccione la VSI frontal vpc-pubpriv-frontend-vsi, desplácese a Conexiones de red con interfaz de red virtual y seleccione Editar IP flotantes en el menú de tres puntos para eth0. Pulse Conectar y, a continuación, Reservar nueva IP flotante y utilice vpc-pubpriv-frontend-vsi-ip como nombre. Después de finalizar con Reservar, es posible que tenga que renovar la página para ver la IP recién conectada.

Configuración de la conectividad entre el servidor frontal y el de fondo

Con todos los servidores en ejecución, en esta sección configurará la conectividad para permitir operaciones usuales entre el servidor frontal y el de fondo.

Configuración del grupo de seguridad frontal

La instancia frontal tiene su software instalado, pero todavía no se puede alcanzar debido a la configuración.

  1. Para confirmar que todavía no se puede acceder al servidor web, abra un navegador web que apunte a http://<floating-ip-address-of-the-frontend-vsi> o utilice:

    curl -v -m 30 http://<floating-ip-address-of-the-frontend-vsi>
    

    La conexión debe agotar el tiempo de espera en algún momento.

  2. Para habilitar la conexión de entrada en el servidor web instalado en la instancia frontal, deberá abrir el puerto donde el servidor web está a la escucha.

  3. Vaya a Grupos de seguridad en la sección Red y pulse vpc-pubpriv-frontend-sg.

  4. Pulse la pestaña Reglas y, en Reglas de entrada, pulse Crear. Añade las reglas de la tabla de abajo, permiten peticiones HTTP entrantes y Ping (ICMP). .

    Reglas de entrada
    Protocolo Tipo de origen Origen Valor Descripción
    TCP Cualquiera 0.0.0.0/0 Puertos 80-80 Esta regla permite conexiones de cualquier dirección IP con el servidor web frontal.
    ICMP Cualquiera 0.0.0.0/0 Tipo: 8,Código: Dejar vacío Esta regla permite que cualquier host pueda hacer ping al servidor frontal.
  5. A continuación, añada la regla de salida. El puerto del programa de fondo depende del software que instale en el servidor virtual. En esta guía de aprendizaje se utiliza un servidor web que está a la escucha en el puerto 80. Consulte la tabla Reglas de salida a continuación para ver los valores.

    Reglas de salida
    Protocolo Tipo de destino Destino Valor Descripción
    TCP Grupo de seguridad vpc-pubpriv-backend-sg Puertos 80-80 Esta regla permite que el servidor frontal se pueda comunicar con el servidor de fondo.
  6. Acceda de nuevo a la instancia frontal en http://<floating-ip-address-of-the-frontend-vsi> para ver la página de bienvenida del servidor web.

Probar la conectividad entre el servidor frontal y el servidor de fondo

El servidor de fondo ejecuta el mismo software de servidor web que el servidor frontal. Se podría considerar como un microservicio que expone una interfaz HTTP a la que llamaría el servidor frontal. En esta sección, intentará conectar con el servidor de fondo desde la instancia del servidor frontal.

  1. En la lista Instancias de servidor virtual, recupere la dirección IP flotante del host del servidor bastión (vpc-secure-bastion ) y las direcciones IP privadas de las instancias de servidor frontend (vpc-pubpriv-frontend-vsi ) y backend (vpc-pubpriv-backend-vsi ).

  2. Utilice ssh para conectar con el servidor virtual frontal:

    ssh -J root@<floating-ip-address-of-the-bastion-vsi> root@<private-ip-address-of-the-frontend-vsi>
    

    SSH en la interfaz frontal solo es posible a través del bastión y solo cuando vpc-secure-maintenance-sg se ha conectado a la instancia frontal.

  3. Llame al servidor web de fondo:

    curl -v -m 30 http://<private-ip-address-of-the-backend-vsi>
    

    Después de 30 segundos, la llamada debe agotar el tiempo de espera. Ciertamente, el grupo de seguridad para el servidor de fondo aún no se ha configurado y no permite ninguna conexión de entrada.

Configuración del grupo de seguridad de fondo

Para permitir conexiones de entrada con el servidor de fondo, debe configurar el grupo de seguridad asociado.

  1. Vaya a Grupos de seguridad en la sección Red y pulse vpc-pubpriv-backend-sg.

  2. Pulse la pestaña Reglas y, en Reglas de entrada, pulse Crear. Añada la regla siguiente.

    Reglas de entrada
    Protocolo Tipo de origen Fuente Valor Descripción
    TCP Grupo de seguridad vpc-pubpriv-frontend-sg Puertos 80-80 Esta regla permite conexiones entrantes en el puerto 80 desde el servidor frontal al servidor de fondo.

Confirmar la conectividad

  1. Vuelva a llamar al servidor web de fondo desde el servidor frontal:
    curl -v -m 30 http://<private-ip-address-of-the-backend-vsi>
    
  2. La solicitud vuelve rápidamente y genera el mensaje I'm the backend server del servidor web de fondo. Esto completa la configuración de la conectividad entre los servidores.

Completar el mantenimiento

Con el software del servidor frontal y de fondo instalado correctamente y en funcionamiento, los servidores se pueden quitar del grupo de seguridad de mantenimiento.

  1. Vaya a Grupos de seguridad en la sección Red y pulse vpc-secure-maintenance-sg.
  2. Seleccione Recursos adjuntos.
  3. Pulse Editar interfaces, expanda y desmarque las interfaces vpc-pubpriv-frontend-vsi y vpc-pubpriv-backend-vsi.
  4. Guarde la configuración.
  5. Acceda de nuevo a la instancia frontal en http://<floating-ip-address-of-the-frontend-vsi> para confirmar que sigue funcionando como se esperaba.

Una vez que se eliminen los servidores del grupo de mantenimiento, ya no se podrá acceder a ellos con ssh. Solo permitirán el tráfico a sus servidores web.

En esta guía de aprendizaje, ha desplegado dos niveles de una aplicación, un servidor frontal visible desde Internet público y un servidor de fondo accesible únicamente dentro de la VPC por el servidor frontal. Ha configurado reglas de grupo de seguridad para garantizar que el tráfico solo se permite en los puertos que necesita la aplicación.

Eliminación de recursos

  1. En la consola VPC Infrastructure, haga clic en Floating IPs bajo Network, luego en la dirección IP para sus VSIs, luego en el menú de acciones seleccione Release. Confirme que desea liberar la dirección IP.
  2. Seguidamente, vaya a Instancias de servidores virtuales, Detenga y Suprima las instancias pulsando el correspondiente menú de acción.
  3. Una vez eliminadas las VSI, vaya a Subredes. Si la subred tiene una pasarela pública conectada, pulse en el nombre de la subred. En los detalles de la subred, desconecte la pasarela pública. Las subredes sin una pasarela pública se pueden suprimir desde la página de visión general. Suprima las subredes.
  4. Una vez suprimidas las subredes, conmute al separador VPC y suprima la VPC.

Si utiliza la consola, es posible que tenga que renovar el navegador para ver información de estado actualizada después de suprimir un recurso.