Crear reglas de firewall en Google Cloud

Si no tomas las precauciones adecuadas, corres el riesgo de exponer tus sistemas a nuevas vulnerabilidades. Por lo tanto, es fundamental controlar las entradas y salidas de sus instancias en Google Cloud mediante la creación de reglas de firewall. En este codelab, aprenderás sobre las reglas de firewall en Google Cloud y cómo aplicarlas a las instancias de VM de Compute Engine.

¿Qué son las reglas de firewall?

Con las reglas de firewall de Google Cloud, puedes permitir o rechazar el tráfico hacia y desde tus instancias de VM según la configuración que especifiques. Las reglas de firewall habilitadas siempre se aplican, lo que protege tus instancias sin importar su configuración ni sistema operativo, sin importar si se inician.

Cada red de VPC funciona como un firewall distribuido. Mientras que las reglas de firewall se definen a nivel de red, se permiten o rechazan las conexiones por instancia. Puede pensar que las reglas de firewall existen no solo entre sus instancias y otras redes, sino también entre instancias individuales dentro de la misma red.

Qué compilarás

  • Dos instancias de Compute Engine en subredes distintas
  • Prueba de ping en la red
  • Reglas de firewall que usan etiquetas de instancia
  • La siguiente arquitectura:

Qué aprenderás

  • Características de las reglas de firewall
  • Cómo aplicar reglas de firewall a instancias mediante etiquetas de instancias
  • Prácticas recomendadas para las reglas de firewall

Requisitos

  • Una Cuenta de Google
  • Dos instancias de Compute Engine

Configuración del entorno a su propio ritmo

Si no tienes una Cuenta de Google, debes crear una. Accede a Google Cloud Console y crea un proyecto nuevo:

Recuerde el ID del proyecto, un nombre único en todos los proyectos de Google Cloud. En estos codelabs, se hará referencia a él como PROJECT_ID.

A continuación, debes habilitar la facturación en Cloud Console para usar los recursos de Google Cloud.

Ejecutar este codelab debería costar más que unos pocos dólares, pero podría ser más si decides usar más recursos o si los dejas en ejecución (consulta la sección de limpieza al final de este codelab). Los usuarios nuevos de Google Cloud son aptos para obtener una prueba gratuita de USD 300.

Inicializa el entorno de tu proyecto

Navegue a Compute > Compute Engine > VM Instance.

Cuando termine de habilitar la API de Compute Engine, realizará la mayor parte del trabajo con Cloud Shell, que le permite administrar su infraestructura y sus aplicaciones desde la línea de comandos en cualquier navegador. La VM basada en Debian está cargada con todas las herramientas de desarrollo que necesitarás (herramienta de línea de comandos de gcloud, Git y otras) y ofrece un directorio principal persistente de 5 GB. Haga clic en el ícono de la sección superior derecha de la pantalla para abrir Cloud Shell.

También puedes seleccionar y elegir diferentes zonas. Para obtener más información, consulte Regiones y zonas.

Para visualizar las reglas de firewall existentes, vaya a Herramientas de redes > Red de VPC > Reglas de firewall.

Tenga en cuenta que solo se crean reglas de firewall para la red predeterminada.

Debes crear reglas de firewall para tus instancias de Compute Engine existentes a fin de establecer una conexión SSH a ellas, ya que no especificaste ninguna regla de firewall cuando creaste custom-network1.

A continuación, cree una regla de firewall que permita el acceso mediante SSH a instancias etiquetadas.

Permanece en la página de reglas de firewall. Haga clic en Crear regla de firewall.

Agrega las siguientes especificaciones:

  • Nombre: allow-ssh
  • Red: custom-network1
  • Dirección del tráfico: entrada
  • Acción en caso de coincidencia: permitir
  • Destinos: etiquetas de destino especificadas
  • Etiquetas de destino: iperf-access
  • Rangos de IP de origen: 0.0.0.0/0
  • Protocolos y puertos: Protocolos y puertos especificados: tcp: 22

Aplique etiquetas a sus dos instancias existentes.

Vaya a la página de instancias de Compute Engine. Para ello, vaya a Compute > Compute Engine > VM instances.

Haga clic en instance-1 y consulte los detalles de la instancia de VM. Haz clic en Editar.

Desplácese hacia abajo hasta la sección de etiquetas de red y asígnale una etiqueta llamada iperf-access.

Haz clic en Guardar en la parte inferior. Regrese a la página Instancias de VM y repita la instancia-2. Para ello, haga clic en Editar y vuelva a agregar iperf-access como la etiqueta de la instancia.

iPerf

iPerf es una herramienta de prueba de red de uso general que puede crear flujos de datos TCP/UDP y medir la capacidad de procesamiento de la red que los transporta. La usarás para ejecutar una prueba rápida entre tus instancias en diferentes subredes dentro de custom-network1.

Instala iPerf

Navega a la página de la instancia de Compute Engine.

Para dividir las dos VM que creaste en el último codelab, haz clic en el botón SSH junto a cada lista de instancias.

Aparecerán dos ventanas SSH. Instala iPerf en ambas con el siguiente comando:

sudo apt-get install iperf

Cómo ejecutar una prueba de iPerf

En instance-2, ingresa lo siguiente en la terminal SSH de instance-2 para especificar que es el servidor iPerf:

iperf -s

En la ventana de SSH de instance-1, ingrese el siguiente comando, incluida la IP interna de instance-2:

iperf -c [INSTANCE-2 INTERNAL IP]

Se bloqueará porque no implementaste otra regla de firewall para permitir la comunicación entre instance-1 y instance-2. Para finalizar el comando, presiona Control + Z (Comando + Z en Macintosh).

Esta vez, crearás la regla de firewall con Cloud Shell.

Asegúrese de estar en Cloud Shell y no de las sesiones SSH de su instancia. Ingrese el siguiente comando para crear una regla de firewall:

gcloud compute firewall-rules create iperf-access --allow tcp:5001 \
      --source-ranges 0.0.0.0/0 \
      --network custom-network1 \
      --target-tags=iperf-access

Confirme que se creó con los siguientes elementos:

gcloud compute firewall-rules list

NAME                         NETWORK          DIRECTION  PRIORITY  ALLOW                         DENY  DISABLED
allow-ssh                    custom-network1  INGRESS    1000      tcp:22                              False
default-allow-icmp           default          INGRESS    65534     icmp                                False
default-allow-internal       default          INGRESS    65534     tcp:0-65535,udp:0-65535,icmp        False
default-allow-rdp            default          INGRESS    65534     tcp:3389                            False
default-allow-ssh            default          INGRESS    65534     tcp:22                              False
iperf-access                 custom-network1  INGRESS    1000      tcp:5001                            False

Regresa a la ventana SSH de instance-2. Su sesión de iperf debería seguir activa. Si no es así, vuelve a ejecutar el siguiente comando.

iperf -s

En la ventana SSH de instance-1, ingresa el siguiente comando, incluida la IP interna de instance-2:

iperf -c [INSTANCE-2 INTERNAL IP]

Deberías ver que iPerf establezca una conexión con instance-2 y muestre un resultado del rendimiento de la red interna entre instance-1 y instance-2.

Ahora, conoce los conceptos básicos de la creación de reglas de firewall en Google Cloud.

Temas que se abordaron

  • Cómo se ven afectadas las instancias por las reglas de firewall
  • Cómo crear una regla de firewall a través de Cloud Console y Cloud Shell
  • Cómo aplicar etiquetas a instancias y reglas de firewall
  • Cómo ejecutar una prueba de iPerf entre instancias

Próximos pasos

Use los siguientes comandos en Cloud Shell para borrar las instancias de Compute Engine:

gcloud compute instances delete instance-1 --zone us-central1-a

The following instances will be deleted. Any attached disks configured
 to be auto-deleted will be deleted unless they are attached to any
other instances or the `--keep-disks` flag is given and specifies them
 for keeping. Deleting a disk is irreversible and any data on the disk
 will be lost.
 - [instance-1] in [us-central1-a]
Do you want to continue (Y/n)?  y
Deleted [https://www.googleapis.com/compute/v1/projects/ypc-demo/zones/us-central1-a/instances/instance-1].
gcloud compute instances delete instance-2 --zone europe-west1-d

The following instances will be deleted. Any attached disks configured
 to be auto-deleted will be deleted unless they are attached to any
other instances or the `--keep-disks` flag is given and specifies them
 for keeping. Deleting a disk is irreversible and any data on the disk
 will be lost.
 - [instance-2] in [europe-west1-d]
Do you want to continue (Y/n)?  y
Deleted [https://www.googleapis.com/compute/v1/projects/ypc-demo/zones/europe-west1-d/instances/instance-2].

Use los siguientes comandos para borrar las reglas de firewall:

gcloud compute firewall-rules delete allow-ssh

The following firewalls will be deleted:
 - [allow-ssh]
Do you want to continue (Y/n)?  y
Deleted [https://www.googleapis.com/compute/v1/projects/vpc-demo-241520/global/firewalls/allow-ssh].
gcloud compute firewall-rules delete iperf-access

The following firewalls will be deleted:
 - [iperf-access]
Do you want to continue (Y/n)?  y
Deleted [https://www.googleapis.com/compute/v1/projects/vpc-demo-241520/global/firewalls/iperf-access].

Borra las subredes con los siguientes comandos:

gcloud compute networks subnets delete subnet-us-central-192 --region us-central1

The following subnetworks will be deleted:
 - [subnet-us-central-192] in [us-central1]
Do you want to continue (Y/n)?  y
Deleted [https://www.googleapis.com/compute/v1/projects/vpc-demo-241520/regions/us-central1/subnetworks/subnet-us-central-192].
gcloud compute networks subnets delete subnet-europe-west-192 --region europe-west1

The following subnetworks will be deleted:
 - [subnet-europe-west-192] in [europe-west1]
Do you want to continue (Y/n)?  y
Deleted [https://www.googleapis.com/compute/v1/projects/vpc-demo-241520/regions/europe-west1/subnetworks/subnet-europe-west-192].

Borra la VPC personalizada con el siguiente comando:

gcloud compute networks delete custom-network1

The following networks will be deleted:
 - [custom-network1]
Do you want to continue (Y/n)?  y
Deleted [https://www.googleapis.com/compute/v1/projects/vpc-demo-241520/global/networks/custom-network1].