Actualizado el martes, 22 mayo, 2018
Configuración básica de Iptables en Linux.
Este articulo donde realizamos una configuración básica de Iptables en Linux, tiene como propósito ser un paso previo a nuestro próximo tutorial, «Proteger un servidor de ataques DDoS con Iptables«.
Iptables es una aplicación que nos permite la administración de las tablas incluidas en el firewall del kernel Linux, implementando los módulos de Netfilter, reglas e indicaciones.
Aun que existen intentos de suplantar Iptables por otras aplicaciones, la verdad es que ninguna a llegado a cuajar definitivamente. Iptables sigue siendo la herramienta más usada y la preferida por los sysadmin, tal vez por su seguridad y robustez junto con su facilidad de uso.
Vamos al articulo (ejemplos de Iptables creados en un servidor CentOS 7 Minimal ya configurado y operativo).
Configurar Iptables en Linux
Comprobamos la versión de iptables que tenemos instalada.
iptables -V
ejemplo…
iptables -V iptables v1.4.21
Vemos el estado de Iptables.
yum info iptables
ejemplo…
yum info iptables Paquetes instalados Nombre : iptables Arquitectura : x86_64 Versión : 1.4.21 Lanzamiento : 24.el7 Tamaño : 1.5 M Repositorio : installed Desde el repositorio : base Resumen : Tools for managing Linux kernel packet filtering capabilities URL : http://www.netfilter.org/ Licencia : GPLv2 Descripción :The iptables utility controls the network packet filtering code in : the Linux kernel. If you need to set up firewalls and/or IP : masquerading, you should install this package. Paquetes disponibles Nombre : iptables Arquitectura : i686 Versión : 1.4.21 Lanzamiento : 24.el7 Tamaño : 423 k Repositorio : base/7/x86_64 Resumen : Tools for managing Linux kernel packet filtering capabilities URL : http://www.netfilter.org/ Licencia : GPLv2 Descripción :The iptables utility controls the network packet filtering code in : the Linux kernel. If you need to set up firewalls and/or IP : masquerading, you should install this package.
Nota: Si tienes algún problema puedes instalar iptables con:
yum install iptables -y
La configuración por defecto de Iptables en CentOS no permite ni el acceso HTTP (puerto tcp 80), ni el HTTPS (puerto tcp 443) que son los que se usan por ejemplo en un servidor Apache.
Eliminar las reglas predefinidas de Iptables.
iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X
Establecemos nuevas reglas predeterminadas y agregamos el acceso al puerto 80 y 443.
iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -p icmp -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
Habilitamos el inicio de Iptables con el sistema, guardamos las reglas y reiniciamos.
chkconfig iptables on
service iptables save
service iptables restart
Nota: Puedes iniciar o detener iptables con:
# Iniciar service iptables start # Detener service iptables stop
Como preámbulo al próximo articulo activaremos una protección contra ataques synflood.
Editaremos el archivo «/etc/sysctl.conf».
nano /etc/sysctl.conf
Copia y pega lo siguiente:
net.ipv4.tcp_syncookies = 1 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.tcp_max_syn_backlog = 8192 net.ipv4.netfilter.ip_conntrack_max = 1048576
Guarda el archivo y cierra el editor.
De nuevo en la consola, ejecuta las siguientes reglas.
iptables -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 --syn -m recent --set --name CHECK --rsource iptables -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 --syn -m recent --update --seconds 5
Recuerda visitar el siguiente articulo: «Proteger un servidor de ataques DDoS con Iptables«.