¿Cómo puedo bloquear todos los puertos excepto 22,80,443 para todo el tráfico entrante excepto localhost?

¿Cómo puedo bloquear todos los puertos excepto 22,80,443 para todo el tráfico entrante excepto localhost?

Quiero este comportamiento:

Todas las computadoras externas solo pueden conectarse a los puertos 22(ssh), 80(http) y 443(https) de mi servidor.

Sin embargo, todas las aplicaciones de localhost pueden vincularse a cualquier puerto que deseen.

He buscado y esto es lo que se me ocurrió:

iptables -A INPUT -p tcp -m tcp -m multiport ! --dports 22,80,443 -j DROP

Hace lo que quiero, pero también bloquea todas las aplicaciones de localhost. ¿Qué debo cambiar allí para permitir que las aplicaciones de localhost se vinculen a cualquier puerto?

¿Y entonces cómo puedo hacer que la regla sea permanente?

¡Gracias!

Respuesta1

Las reglas coinciden en orden. Haga uno para permitir el host local antes del que se niegue.

iptables -A ENTRADA -p tcp -s localhost -m tcp -m multipuerto! --dports 22,80,443 -j ACEPTAR

iptables -A ENTRADA -p tcp -m tcp -m multipuerto! --dports 22,80,443 -j GOTA

Lea aquí para saber cómo guardarlos según su sistema operativo. https://www.thomas-krenn.com/en/wiki/Saving_Iptables_Firewall_Rules_Permanfully

información relacionada