Skip to content
Home » Reglas básicas con iptables

Reglas básicas con iptables

iptables es, básicamente el firewall de Linux. Existen algunas reglas básicas que tenemos que seguir y tener en un servidor web que está online:

Podemos utilizar herramientas como fail2ban que nos va permitir activar determinadas barreras para evitar ataques a servicios como ssh, correo, ftp, DDoS…

Además, no estaría demás incluir unas reglas básicas contra ataques contra SSH:

iptables -A INPUT -p tcp --dport ssh -m conntrack --ctstate NEW -m recent --name SSH --rcheck --seconds 3600 --hitcount 10 -j DROP

Ataques al puerto que ftp utiliza normalmente:

iptables -A INPUT -p tcp --dport 21 -m recent --name ftp_attacks --update --seconds 300 --hitcount 10 -j DROP

y, como no, evitar ataques por denegación de servicio (DDoS):

iptables -t mangle -A PREROUTING -m conntrack --ctstate INVALID -j DROP
iptables -t mangle -A PREROUTING -p tcp ! --syn -m conntrack --ctstate NEW -j DROP
iptables -t mangle -A PREROUTING -p tcp -m conntrack --ctstate NEW -m tcpmss ! --mss 536:65535 -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,ACK FIN -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,URG URG -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,PSH PSH -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL NONE -j DROP

Una vez tenemos las reglas en el firewall deberíamos guardarlas para que, si necesitamos reiniciar el servidor se carguen de forma automática. Para ello necesitamos tener instalado: iptables-persistent. Así ejecutaremos:

apt install iptables-persistent

Ahora procederemos a guardar las reglas de iptables (si no existe el directorio /etc/iptables lo creamos):

iptables-save > /etc/iptables/rules.v4

De esta forma, cada vez que reniciemos el sistema, las reglas que teníamos activas, volverán a cargarse de forma automática. Siempre es bueno comprobar si tenemos iptables-persisten corriendo. Para ello ejecutaremos:

systemctl is-enabled netfilter-persistent.service

que nos debería devolver enabled.