
¿Cómo podría configurar algún tipo de firewall que solo permita que programas específicos utilicen los puertos abiertos en el sistema (preferiblemente RHEL)?
Por ejemplo, si quiero yum
poder conectarme y actualizar normalmente, pero quiero bloquear las solicitudes web salientes, como la navegación, aún necesitaría que los puertos 80, 443, 53 y UDP-53 estén abiertos.
Sin embargo, necesitaría el firewall para poder distinguir entre yum
un navegador web.
Respuesta1
iptables
tiene la capacidad de verificar el usuario del programa.
Al utilizar las banderas --uid-owner
o, --gid-owner
tiene la capacidad de limitar la red solo a usuarios específicos (¿root?), y www-data
los paquetes de su servidor web (puede ejecutarse como ) se descartarán.
Por supuesto, esto limita por usuario/grupo y no por programa, pero la mayoría de los servicios actuales se ejecutan con sus propios usuarios y grupos.
Ejemplo:
iptables -I OUTPUT -m owner --uid-owner www-data -jDROP
Ejemplo que restringiría las redes salientes a cualquier persona excepto al root:
iptables -P OUTPUT DROP
iptables -I OUTPUT -m owner --uid-owner root -jALLOW
Otro enfoque sería configurar reglas con SELinux
(generalmente incluidas con los productos RedHat). Personalmente creo que sería más difícil de gestionar.