Por firewall de proceso?

18

He estado leyendo pero parece que no puedo encontrar una manera de crear reglas de firewall por proceso. Lo sé, iptables --uid-ownerpero eso solo funciona para el tráfico saliente. He considerado las secuencias de comandos netstaty iptablesesto parece terriblemente ineficiente, ya que si un proceso solo está activo durante un período de tiempo pequeño, la secuencia de comandos podría perderlo. Básicamente quiero imponer restricciones específicas con respecto al puerto y el dst en un proceso sin dejar otros procesos afectados. ¿Algunas ideas?


Como referencia, selinux puede hacer exactamente esto y funciona bastante bien. Sin embargo, la configuración es un poco molesta.

s3c
fuente
1
¿Quizás LXC (Contenedores de Linux) hará el truco? lxc.sourceforge.net
nsg
¿Qué es tan difícil sobre selinux? Claro que hay una pequeña curva de aprendizaje, pero hay excelentes herramientas, tanto gráficas como de línea de comandos para ayudar con la configuración. El soporte está disponible en IRC en #selinux así como en #fedora
Panther
¿Has intentado usar Douane en su lugar? askubuntu.com/a/330259/46437
Aquarius Power
La GUI firewalld para iptables le permite hacer exactamente eso, y es bastante fácil de usar.
BKilpat01

Respuestas:

10

Su pregunta es muy similar a /programming/5451206/linux-per-program-firewall-similar-to-windows-and-mac-counterparts

Estaba el --cmd-ownermódulo propietario de iptables, pero se eliminó porque no funcionaba correctamente. Ahora está disponible una primera versión beta de Leopard Flower , que resuelve el problema por un demonio de espacio de usuario.

En general, un firewall por proceso no es muy útil a menos que realmente aísle y restrinja los programas. Para esto, debe buscar soluciones de seguridad como TOMOYO Linux, SELinux, AppArmor, grsecurity, SMACK, ...

jofel
fuente
1

Fácil, ejecute su proceso con un usuario diferente y use '--uid-owner' :)

jirib
fuente
1
Ese fue mi primer pensamiento también, pero como noté, no funciona para los procesos de escucha.
s3c
¿Cuál es exactamente tu intención? ¿Para estar seguro de que un propietario / proceso específico tiene sus propios puertos abiertos para la conexión entrante / saliente?
jirib