Cortafuegos III: Perimetral sobre el escenario
Introducción
En nuestro escenario vamos a configurar un cortafuegos perimetral en la máquina alfa de forma que el escenario siga funcionando completamente teniendo en cuenta una serie de puntos.
Como podemos ver, en la siguiente imagen tenemos un esquema del escenario:
.
| Máquina | Interfaz | IP |
|---|---|---|
| Alfa | ens3 | 10.0.0.249 |
| Alfa | ens8 | 172.16.0.1 |
| Alfa | br-intra | 192.168.0.1 |
Puntos a tener en cuenta
- Vamos a configurar la política por defecto DROP para las cadenas INPUT, FORWARD y OUTPUT.
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
- Se pueden usar las extensiones que creamos adecuadas, pero al menos debe implementarse seguimiento de la conexión.
- Debemos implementar que el cortafuegos funcione después de un reinicio de la máquina.
- Debes indicar pruebas de funcionamiento de todas las reglas.
Reglas
El cortafuego debe cumplir al menos estas reglas:
- La máquina Alfa tiene un servidor ssh escuchando por el puerto 22, pero al acceder desde el exterior habrá que conectar al puerto 2222.
iptables -t nat -A PREROUTING -p tcp --dport 2222 -i ens3 -j DNAT --to 10.0.0.249:22
iptables -A INPUT -i ens3 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ens3 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
Para comprobar su funcionamiento desde el exterior, debemos conectarnos a la máquina alfa por ssh, pero indicando el puerto 2222.
ssh maria@172.22.201.46 -p 2222
- Desde Delta y Bravo se debe permitir la conexión ssh por el puerto 22 a la máquina Alfa.
#Reglas para Bravo
iptables -A INPUT -s 172.16.0.0/16 -p --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d 172.16.0.0/16 -p --sport 22 -m state --state ESTABLISHED -j ACCEPT
#Reglas para Delta
iptables -A INPUT -s 192.168.0.0/24 -p --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/24 -p --sport 22 -m state --state ESTABLISHED -j ACCEPT
Para comprobar su funcionamiento, debemos conectarnos a la máquina alfa por ssh desde la máquina bravo o delta.
ssh maria@172.16.0.1
- La máquina Alfa debe tener permitido el tráfico para la interfaz loopback.
El tráfico de la interfaz loopback se refiere al tráfico que se realiza entre procesos de la misma máquina. Por ejemplo, si queremos hacer un ping a la propia máquina, el tráfico se realiza entre procesos de la misma máquina, por lo que se utiliza la interfaz loopback. Para ello, debemos añadir las siguientes reglas:
iptables -A INPUT -i lo -p icmp -j ACCEPT
iptables -A OUTPUT -o lo -p icmp -j ACCEPT
Y para comprobar su funcionamiento, debemos hacer un ping a la propia máquina.
ping -c 3 127.0.0.1
- A la máquina Alfa se le puede hacer ping desde la DMZ, pero desde la LAN se le debe rechazar la conexión (REJECT) y desde el exterior se rechazará de manera silenciosa.
iptables -A INPUT -s 172.16.0.200/16 -p icmp -m icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -d 172.16.0.200/16 -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -p icmp -m icmp --icmp-type echo-request -j REJECT
iptables -A OUTPUT -d 192.168.0.0/24 -p icmp -m icmp --icmp-type echo-reply -j REJECT
Para probarlo, haremos ping desde la máquina bravo a la máquina alfa.
Y desde la maquina LAN hacia la máquina alfa, podemos ver, que se rechaza la conexión.
Por último, desde el exterior, no se puede hacer ping a la máquina alfa.
- La máquina Alfa puede hacer ping a la LAN, la DMZ y al exterior.
iptables -A OUTPUT -p icmp -m icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
Para probarlo, haremos ping desde alfa hacia el exterior. En mi caso, he hecho ping a mi máquina.
Hacemos ping desde alfa hacia la DMZ
Hacemos ping desde alfa hacia la LAN
- Desde la máquina Bravo se puede hacer ping y conexión ssh a las máquinas de la LAN.
iptables -A FORWARD -s 172.16.0.200/16 -d 192.168.0.0/24 -p icmp -m icmp --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -d 172.16.0.200/16 -s 192.168.0.0/24 -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
iptables -A FORWARD -s 172.16.0.200/24 -d 192.168.0.0/24 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -d 172.16.0.200/24 -s 192.168.0.0/24 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
Para probarlo, haremos ping desde la máquina bravo hacia lan.
Y probamos que podemos conectarnos por ssh a la máquina LAN.
- Desde cualquier máquina de la LAN se puede conectar por ssh a la máquina Bravo.
iptables -A FORWARD -s 192.168.0.0/24 -d 172.16.0.200/32 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 172.16.0.200/16 -d 192.168.0.0/24 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
Para comprobarlo, nos conectaremos a bravodesde charlie.
Y nos conectamos a bravo desde delta.
- Configura la máquina Alfa para que las máquinas de LAN y DMZ puedan acceder al exterior.
iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -o ens3 -j MASQUERADE
iptables -A FORWARD -i ens8 -o ens3 -p icmp -m icmp --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -i ens3 -o ens8 -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ens3 -j MASQUERADE
iptables -A FORWARD -i br-intra -o ens3 -p icmp -m icmp --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -i ens3 -o br-intra -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
Y comprobamos que podemos navegar desde `bravo`y desde `charlie`.
- Las máquinas de la LAN pueden hacer ping al exterior y navegar.
iptables -A FORWARD -i br-intra -o ens3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens3 -o br-intra -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -i br-intra -o ens3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens3 -o br-intra -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
Para probar el funcionamiento de estas reglas, vamos a realizarlo desde delta con el comando curl para comprobar que podemos navegar.
- La máquina Bravo puede navegar. Instala un servidor web, un servidor ftp y un servidor de correos si no los tienes aún.
iptables -A FORWARD -i ens8 -o ens3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens3 -o ens8 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens8 -o ens3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens3 -o ens8 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
Para probar el funcionamiento de estas reglas, vamos a realizarlo desde bravo con el comando curl para comprobar que podemos navegar.
- Configura la máquina Alfa para que los servicios web y ftp sean accesibles desde el exterior.
iptables -t nat -A PREROUTING -p tcp -i ens3 --dport 80 -j DNAT --to 172.16.0.200
iptables -A FORWARD -i ens3 -o ens8 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens8 -o ens3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i ens3 --dport 21 -j DNAT --to 172.16.0.200
iptables -A FORWARD -i ens3 -o ens8 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens8 -o ens3 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
La comprobamos desde delta.
telnet 172.22.201.46 21
- El servidor web y el servidor ftp deben ser accesibles desde la LAN y desde el exterior.
iptables -A FORWARD -i br-intra -o ens8 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens8 -o br-intra -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -i br-intra -o ens8 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens8 -o br-intra -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
- El servidor de correos sólo debe ser accesible desde la LAN.
iptables -A FORWARD -i br-intra -o ens8 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens8 -o br-intra -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
Si comprobamos desde el exterior, no funciona.
Pero si probamos desde delta funciona.
- En la máquina Charlie instala un servidor mysql si no lo tiene aún. A este servidor se puede acceder desde la DMZ, pero no desde el exterior.
iptables -A FORWARD -i ens3 -o ens7 -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens7 -o ens3 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
Y podemos probar que no funciona desde el exterior.
- Evita ataques DoS por ICMP Flood, limitando el número de peticiones por segundo desde una misma IP.
iptables -A INPUT -i ens3 -p icmp -m state --state NEW --icmp-type echo-request -m limit --limit 1/s --limit-burst 1 -j ACCEPT
Y como podemos ver, desde bravo y desde charlie, se evita el ataque.
- Evita ataques DoS por SYN Flood.
iptables -N syn-flood
iptables -A INPUT -p tcp --syn -j syn-flood
iptables -A syn-flood -m limit --limit 1/s --limit-burst 3 -j RETURN
iptables -A syn-flood -j DROP
Y podemos comprobar desde delta que se evitan los ataques DoS y que los paquetes, se descartan.
- Evita que realicen escaneos de puertos a Alfa.
iptables -N antiscan
iptables -A antiscan -j DROP
Desde el exterior, realizamos un escaneo a alfa y como podemos ver, se evita el escaneo.
Extra
- Se podrán realizar peticiones DNS a otros servidores desde el servidor DNS que tenemos en charlie.
iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
- Se podrá navegar desde
alfa.
iptables -A OUTPUT -o ens3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ens3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ens3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ens3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
- En este escenario estamos configurando un servidor LDAP, concretamente en lamáquina
alfa. Por ello, debemos permitir que se realicen consultas desde cualquier máquina que esté en nuestro escenario y desde el exterior.
iptables -t nat -A PREROUTING -p tcp -i ens3 --dport 389 -j DNAT --to 192.168.0.2
iptables -t nat -A PREROUTING -p tcp -i ens3 --dport 636 -j DNAT --to 192.168.0.2
iptables -A OUTPUT -p tcp --dport 389 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --sport 389 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 636 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --sport 636 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --dport 389 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --sport 389 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --dport 636 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --sport 636 -m state --state ESTABLISHED -j ACCEPT
Guardar las reglas
Las reglas que se ejecutan en la consola no se guardan de forma permanente, por lo que si reiniciamos la máquina, se perderán. Para que esto no ocurra, debemos guardar las reglas en un fichero de configuración, que se cargará automáticamente al arrancar el sistema.
Para ello, debemos crear un fichero de configuración en /etc/iptables y añadir las reglas que queramos que se ejecuten al arrancar el sistema.
Lo podemos realizar con el siguiente comando:
iptables-save > /etc/iptables/rules.v4
El fichero con las reglas quedaría de la siguiente forma:
### Limpieza de reglas
iptables -F
iptables -t nat -F
iptables -Z
iptables -t nat -Z
### Política por defecto.
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
### La máquina Alfa debe tener permitido el tráfico para la interfaz loopback.
iptables -A INPUT -i lo -p icmp -j ACCEPT
iptables -A OUTPUT -o lo -p icmp -j ACCEPT
### La máquina Alfa tiene un servidor ssh escuchando por el puerto 22, pero al acceder desde el exterior habrá que conectar al puerto 2222.
iptables -t nat -A PREROUTING -p tcp --dport 2222 -i ens3 -j DNAT --to 10.0.0.219:22
iptables -A INPUT -i ens3 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ens3 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
### Los contenedores lxc de Alfa (que son Charlie y Delta) deben seguir funcionando.
iptables -A POSTROUTING -o lxcbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
iptables -A INPUT -i lxcbr0 -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A INPUT -i lxcbr0 -p udp -m udp --dport 53 -j ACCEPT
iptables -A INPUT -i lxcbr0 -p tcp -m tcp --dport 67 -j ACCEPT
iptables -A INPUT -i lxcbr0 -p udp -m udp --dport 67 -j ACCEPT
iptables -A FORWARD -o lxcbr0 -j ACCEPT
iptables -A FORWARD -i lxcbr0 -j ACCEPT
### Alfa tendrá permitida la conexion ssh a cualquier máquina de la red LAN y la red DMZ (de esta forma podremos seguir trabajando con el escenario en cuanto a la hora de conectarnos por ssh).
iptables -A OUTPUT -d 192.168.0.0/24 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d 172.16.0.0/16 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -s 172.16.0.0/16 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
### Desde Charlie y Bravo se debe permitir la conexion ssh por el puerto 22 a la maquina Alfa.
iptables -A OUTPUT -d 192.168.0.2/24 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.0.2/24 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d 172.16.0.200/16 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -s 172.16.0.200/16 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
### A la maquina Alfa se le puede hacer ping desde la DMZ, pero desde la LAN se le debe rechazar la conexión (REJECT) y desde el exterior se rechazara de manera silenciosa.
iptables -A INPUT -s 172.16.0.200/16 -p icmp -m icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -d 172.16.0.200/16 -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -p icmp -m icmp --icmp-type echo-request -j REJECT
iptables -A OUTPUT -d 192.168.0.0/24 -p icmp -m icmp --icmp-type echo-reply -j REJECT
### La maquina Alfa puede hacer ping a la LAN, la DMZ y al exterior.
iptables -A OUTPUT -p icmp -m icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
### Desde la maquina Bravo se puede hacer ping y conexion ssh a las maquinas de la LAN.
iptables -A FORWARD -s 172.16.0.200/16 -d 192.168.0.0/24 -p icmp -m icmp --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -d 172.16.0.200/16 -s 192.168.0.0/24 -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
iptables -A FORWARD -s 172.16.0.200/24 -d 192.168.0.0/24 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -d 172.16.0.200/24 -s 192.168.0.0/24 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
### Desde cualquier maquina de la LAN se puede conectar por ssh a la maquina Bravo.
iptables -A FORWARD -s 192.168.0.0/24 -d 172.16.0.200/32 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 172.16.0.200/16 -d 192.168.0.0/24 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
### Configura la maquina Alfa para que las maquinas de LAN y DMZ puedan acceder al exterior.
iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -o ens3 -j MASQUERADE
iptables -A FORWARD -i ens8 -o ens3 -p icmp -m icmp --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -i ens3 -o ens8 -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ens3 -j MASQUERADE
iptables -A FORWARD -i br-intra -o ens3 -p icmp -m icmp --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -i ens3 -o br-intra -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
### Las maquinas de la LAN pueden hacer ping al exterior y navegar.
iptables -A FORWARD -i br-intra -o ens3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens3 -o br-intra -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -i br-intra -o ens3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens3 -o br-intra -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
### La maquina Bravo puede navegar.
iptables -A FORWARD -i ens8 -o ens3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens3 -o ens8 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens8 -o ens3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens3 -o ens8 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
### Las consultas DNS estarán permitidas en el escenario (las consultas a Charlie desde el exterior, también).
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -t nat -A PREROUTING -p udp -i ens3 --dport 53 -j DNAT --to 192.168.0.2
iptables -A FORWARD -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
### Al servidor MariaDb en Delta se puede acceder desde la DMZ, pero no desde el exterior.
iptables -A FORWARD -i ens8 -o br-intra -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i br-intra -o ens8 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
### Configura la maquina Alfa para que los servicios web y ftp sean accesibles desde el exterior.
iptables -t nat -A PREROUTING -p tcp -i ens3 --dport 80 -j DNAT --to 172.16.0.200
iptables -A FORWARD -i ens3 -o ens8 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens8 -o ens3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i ens3 --dport 21 -j DNAT --to 172.16.0.200
iptables -A FORWARD -i ens3 -o ens8 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens8 -o ens3 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
### El servidor web y el servidor ftp deben ser accesibles desde la LAN.
iptables -A FORWARD -i br-intra -o ens8 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens8 -o br-intra -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -i br-intra -o ens8 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens8 -o br-intra -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
### El servidor de correos solo debe ser accesible desde la LAN.
iptables -A FORWARD -i br-intra -o ens8 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens8 -o br-intra -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
### Evita ataques DoS por ICMP Flood, limitando el numero de peticiones por segundo desde una misma IP.
iptables -A INPUT -i ens8 -p icmp -m state --state NEW --icmp-type echo-request -m limit --limit 1/s --limit-burst 1 -j ACCEPT
### Evita ataques DoS por SYN Flood.
iptables -N syn_flood
iptables -A INPUT -p tcp --syn -j syn_flood
iptables -A syn_flood -m limit --limit 1/s --limit-burst 3 -j RETURN
iptables -A syn_flood -j DROP
### Evita que realicen escaneos de puertos a Alfa.
iptables -N antiscan
iptables -A antiscan -j DROP
### El servidor DNS de Charlie podrá hacer peticiones DNS a otros servidores.
iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
### Alfa tendrá permitido navegar.
iptables -A OUTPUT -o ens3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ens3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ens3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ens3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
### Se podrán hacer consultas al servidor LDAP desde cualquier maquina del escenario y desde el exterior.
iptables -t nat -A PREROUTING -p tcp -i ens3 --dport 389 -j DNAT --to 192.168.0.2
iptables -t nat -A PREROUTING -p tcp -i ens3 --dport 636 -j DNAT --to 192.168.0.2
iptables -A OUTPUT -p tcp --dport 389 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --sport 389 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 636 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --sport 636 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --dport 389 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --sport 389 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --dport 636 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --sport 636 -m state --state ESTABLISHED -j ACCEPT
### El director Bacula en Delta podrá conectarse a todas las máquinas del escenario.
iptables -A OUTPUT -p tcp -m multiport --sport 9101,9102,9103 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dport 9101,9102,9103 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp -m multiport --dport 9101,9102,9103 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp -m multiport --sport 9101,9102,9103 -m state --state ESTABLISHED -j ACCEPT