Aunque Linux es uno de los sistemas operativos más fiables y seguros gracias a sus características siempre existirá algún tipo de vulnerabilidad ya sea propia del sistema o de forma no intencional por parte del usuario. Para incrementar la seguridad de Linux contamos con diversas herramientas diseñadas para proteger servicios, procesos, perfiles o archivos y hoy nos centraremos en una especial llamada Iptables.
Gracias a Iptables podremos administrar de forma precisa y directa todas las conexiones entrantes y salientes del servidor. Iptables está desarrollado para el direccionamiento Ipv4 mientras que para Ipv6 contamos con Ip6tables.
1. Estructura de Iptables en Linux
La estructura que encontramos en Iptables es la siguiente:
2. Estructura del comando en Iptables en Linux
En Iptables cada regla es un comando que indica la forma como debe ser manejado el tráfico de los paquetes de red.
Podemos usar la siguiente estructura:
-A INPUT -i eth0 -p tcp -m state -- ESTABLISHED,RELATED --sport 80 -j ACCEPT
- -A: Indica que serán agregadas las reglas a Iptables
- -i: Indica la interfaz en la cual será aplicada la regla
- -p: Hace referencia al protocolo donde aplicara la regla
- -m: Hace referencia a que existe una condición que debe cumplirse para aplicar la regla
- --state: Permite la aceptación de nuevas conexiones
- --sport: Indica el puerto de origen
- -j: (Jump) indica que pueden aceptar todo el tráfico que cumple las condiciones dadas.
3. Creación de reglas usando Iptables en Linux
Aunque podemos agregar las reglas de forma manual es mucho más practico crear un archivo de reglas y posteriormente realizar su importación. En este caso crearemos el archivo en la ruta /tmp/iptables-ip4 y podemos usar algún editor para su respectivo ajuste:
sudo nano /tmp/iptables-ip4La sintaxis será la siguiente:
*filter # Reglas a agregar COMMITAhora crearemos las siguientes reglas dentro de dicho archivo:
-A INPUT -i lo -j ACCEPT -A OUTPUT -o lo -j ACCEPT
-A INPUT -i eth0 -p icmp -m state --state NEW --icmp-type 8 -j ACCEPT -A INPUT -i eth0 -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT -A OUTPUT -o eth0 -p icmp -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state ESTABLISHED,RELATED --sport 80 -j ACCEPT -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED,RELATED --sport 443 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m tcp --dport 80 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -i ens3 -s 192.168.0.1 -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT -A OUTPUT -o ens3 -d 192.168.0.1 -p udp --dport 53 -m udp -j ACCEPT
-A INPUT -i eth0 -p udp -m state --state ESTABLISHED,RELATED --dport 123 -j ACCEPT -A OUTPUT -o eth0 -p udp -m udp --sport 123 -j ACCEPT
-A INPUT -p udp -m udp --dport 631 -j ACCEPT -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A OUTPUT -p udp -m udp --sport 631 -j ACCEPT -A OUTPUT -p tcp -m tcp --sport 631 -j ACCEPT
# IMAP -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED,RELATED --sport 993 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m tcp --dport 993 -j ACCEPT
# POP3 -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED,RELATED --sport 995 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m tcp --dport 995 -j ACCEPT
# SMTP -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED,RELATED --sport 465 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m tcp --dport 465 -j ACCEPT
# Input -A INPUT -i ens3 -p tcp -m state --state NEW,ESTABLISHED --dport 22 -j ACCEPT -A OUTPUT -o ens3 -p tcp -m state --state ESTABLISHED --sport 22 -j ACCEPT
# Output -A OUTPUT -o ens3 -p tcp -m state --state NEW,ESTABLISHED --dport 22 -j ACCEPT -A INPUT -i ens3 -p tcp -m state --state ESTABLISHED --sport 22 -j ACCEPT
-A INPUT -i eth0 -p udp -m state --state ESTABLISHED,RELATED --sport 67:68 -j ACCEPT -A OUTPUT -o eth0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -j REJECT -A FORWARD -j REJECT -A OUTPUT -j REJECT
Todas estas líneas serán agregadas en el archivo mencionado:
Ctrl + O
Ctrl + X
4. Importación de las reglas usando Iptables Linux
Una vez editado el archivo podremos importar dichas reglas en Iptable ejecutando el siguiente comando:
sudo iptables -F && sudo iptables -XPodremos ver el estado de las reglas usando el comando sudo iptables -S:
En caso de desear restaurar todas las reglas ejecutaremos la siguiente línea:
sudo iptables-restore < /tmp/itpables-ip4Si deseamos que estas reglas sean permanentes ejecutaremos lo siguiente:
sudo apt install iptables-persistentDe esta forma Iptables es nuestra mejor aliada a la hora de configurar el firewall en ambientes Linux.