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.