|
|
|
La gestión del firewall Proxmox de la nueva plataforma se encuentra automatizada a través del role [firewall_proxmox](https://github.com/UdelaRInterior/ansible-role-firewall-proxmox) para máquinas virtuales KVM y contenedores LXC (en adelante hosts).
|
|
|
|
|
|
|
|
La gestión del firewall del cluster Proxmox también se encuentra automatizada, pero a través de un [playbook independiente](https://git.interior.edu.uy/adminsys/config/blob/master/configurar_firewall_cluster_proxmox.yml), con el objetivo de evitar posibles indisponibilidades de servicios en producción a causa de ejecuciónes con valores desafortunados.
|
|
|
|
|
|
|
|
El firewall para cluster y hosts es gestionado a través de archivos de texto que son copiados tal cual a los nodos Proxmox. Construidos en base a la sintaxis y lineamientos [definidos en su documentación](https://pve.proxmox.com/wiki/Firewall).
|
|
|
|
|
|
|
|
En el proyecto **config**, todos los archivos de configuración de cluster y hosts se ubican en la ruta [`files/firewall_proxmox/etc/pve/firewall/`](https://git.interior.edu.uy/adminsys/config/tree/master/files/firewall_proxmox/etc/pve/firewall)
|
|
|
|
|
|
|
|
## Hosts
|
|
|
|
|
|
|
|
Para los hosts, el archivo definido aquí será copiado a su nodo, [siempre y cuando](https://git.interior.edu.uy/adminsys/config/blob/a97dcba79f84c89a77c2ba11f2b803efcae13a69/config_host.yml#L13) se cuente con la carácterística de firewall [habilitada en alguna de sus interfaces de red](https://git.interior.edu.uy/adminsys/config/blob/a97dcba79f84c89a77c2ba11f2b803efcae13a69/host_vars/guayabo.interior.edu.uy/vars/10_lxc_container.yml#L28). La nomenclatura a respetar para que un archivos sea asociado a su host correspondiente es:
|
|
|
|
```
|
|
|
|
<nombre-canónico-del-host-en-minúsculas>.fw
|
|
|
|
```
|
|
|
|
En caso de que un host tenga el firewall habilitado en sus interfaces pero no se defina un archivo .fw, será copiado el archivo [default.fw](https://git.interior.edu.uy/adminsys/config/blob/master/files/firewall_proxmox/etc/pve/firewall/default.fw) que establece un grupo de reglas genéricas: ping, SSH y HTTP/HTTPS habilitado.
|
|
|
|
|
|
|
|
Una vez definido el archivo de configuración del firewall, corremos el playbook `site.yml` con el tag correspondiente:
|
|
|
|
```
|
|
|
|
ansible-playbook --limit <nombre-host>.interior.edu.uy --tags firewall site.yml
|
|
|
|
```
|
|
|
|
|
|
|
|
## Cluster
|
|
|
|
|
|
|
|
Al igual que para los hosts, toda la configuración de firewall del cluster se concentra en un archivo: [cluster.fw](https://git.interior.edu.uy/adminsys/config/blob/master/files/firewall_proxmox/etc/pve/firewall/cluster.fw)
|
|
|
|
|
|
|
|
Si embargo, la diferencia radica en que las tareas de automatización de la configuración del cluster, fueron separadas al playbook [configurar_firewall_cluster_proxmox.yml](https://git.interior.edu.uy/adminsys/config/blob/master/configurar_firewall_cluster_proxmox.yml).
|
|
|
|
|
|
|
|
Esto se debe a que en el archivo de cluster se manejan directivas que permiten la normalización de la gestión, afectando a más de un host, como los `IP Aliases` y `Security Groups` ([ver documentación Proxmox](https://pve.proxmox.com/wiki/Firewall)). Esta característica es muy beneficiosa, pero debe ser utilizada con cuidado. Ya que por ejemplo, al ejecutar versiones desactualizadas de `config`, podríamos estar aplicando una regresión en reglas de firewall que dejen indisponibles servicios ya declarados en producción.
|
|
|
|
|
|
|
|
**Por esta, entre otras tantas razones, en indispensable estar actualizado a los últimos caombios de la rama master (*git pull*) antes de correr playbooks**
|
|
|
|
|
|
|
|
En principio, la configuración del cluster es muy poco editada, mientras que trabajamos intensivamente sobre los hosts. La separación a otro playbook permite entonces, asegurar que al ejecutar `site.yml` como se indicaba en el paso anterior:
|
|
|
|
> ansible-playbook --limit nombre-host.interior.edu.uy --tags firewall site.yml
|
|
|
|
|
|
|
|
solo estamos aplicando modificaciones sobre el host indicado en el parámetro `--limit`.
|
|
|
|
|
|
|
|
Por el contrario, si deseamos modificar la configuración del cluster, es decir, aplicar nuestros cambios al archivo `cluster.fw`, se deberá ejecutar sobre cualquier nodo del cluster (la configuración es reflejada en los demás nodos automáticamente por Proxmox):
|
|
|
|
```
|
|
|
|
ansible-playbook --limit guri.interior.edu.uy configurar_firewall_cluster_proxmox.yml
|
|
|
|
```
|
|
|
|
|
|
|
|
Una vez con los cambios aplicados y comprobado su correcto funcionamiento, **es indispensable que dichos cambios sean subidos a la rama master**. De lo contario, alguien que simultánea o posteriormente trabaje sobre el cluster no tendrá tus modificaciones, y eventualmente correrá los playbooks sin ellas. |