A solução é boa, mas mesmo que seu servidor drope tudo perfeitamente com iptables, o link de internet do datacenter já vai cair antes porque os pacotes são descartados depois de terem consumido a banda causando uma sobrecarregando a rede da mesma forma em ataques grandes como TCP, UDP flood, ICMP flood (esses dois últimos nem estão mitigados nas configurações de iptables mandou).
Se sofrer um ataque acima de 10Gbs não adiante somente iptables... para ataques menores pode sim mitigar essas regras estando o seu servidor em um DataCenter razoavelmente bom com BGP bem configurado.
A solução melhor para esses casos acima disso é ainda Cloudflare com Anycast global e o seu servidor estar em um datacenter com proteção DDoS de Banda acima de 50Gbps e regras para BGP Blackhole ( onde seu provedor ou DataCenter anuncia uma rota nula).
Aproveitando atualizei o script para incluir regras de UDP e ICMP segue:
INTERFACE=ens33
IPTABLES=/sbin/iptables
ACTION="DROP"
# Limpeza
$IPTABLES -F
$IPTABLES -t raw -F
$IPTABLES -t mangle -F
$IPTABLES -I INPUT -i $INTERFACE -p tcp --syn -m multiport --dports 80,443 \
-m recent --set --name HTTP
$IPTABLES -I INPUT -i $INTERFACE -p tcp --syn -m multiport --dports 80,443 \
-m recent --update --seconds 60 --hitcount 250 --name HTTP -j $ACTION
$IPTABLES -I INPUT -i $INTERFACE -p udp \
-m recent --set --name UDPFLOOD
$IPTABLES -I INPUT -i $INTERFACE -p udp \
-m recent --update --seconds 1 --hitcount 100 --name UDPFLOOD -j $ACTION
$IPTABLES -I INPUT -i $INTERFACE -p icmp --icmp-type echo-request \
-m recent --set --name PINGFLOOD
$IPTABLES -I INPUT -i $INTERFACE -p icmp --icmp-type echo-request \
-m recent --update --seconds 1 --hitcount 10 --name PINGFLOOD -j $ACTION
$IPTABLES -I INPUT -i $INTERFACE -p icmp \
-m recent --update --seconds 60 --hitcount 50 --name BADGUY -j $ACTION