reiniciar ejemplos desde configurar comandos cero linux iptables

linux - ejemplos - crear reglas de iptables por proceso/servicio



iptables linux firewall (3)

¿Es posible usar iptables para permitir el tráfico iniciado por un "proceso", es decir, usar el nombre del proceso? Me gustaría, por ejemplo, permitir todo lo que se inicia con el comando ping.


Si hay una manera de obtener el pid de un proceso antes de que comience, entonces nunca he oído hablar de él.

Podría escribir un contenedor que se bifurca primero, luego agrega la regla y ejecuta el proceso (suponiendo que el programa que está ejecutando no se bifurque de nuevo), ya que la llamada exec (3) no modifica el PID.

/* NOTE this contains zero error checking */ int main(int argc, char **argv) { /* Eat argv[0] the name of the wrapper script */ argv++; argc--; pid_t my_pid = getpid(); char *iptables_cmd = NULL; asprintf(&iptables_cmd, "/sbin/iptables -A INPUT -m owner --pid_owner %d -j ACCEPT", my_pid); system(iptables_cmd); execv(argv[0], argv); }



-m owner --pid-owner PID

Consulte http://linuxpoison.blogspot.com/2010/11/how-to-limit-network-access-by-user.html y http://linux.die.net/man/8/iptables

Tenga en cuenta que necesita el módulo ipt_owner, ya que --pid-owner no es compatible con xt_owner.

Por ejemplo (esto es solo una aproximación)

#!/bin/bash $@ & iptables -m owner --pid-owner %1 -j REJECT

Sin embargo, en realidad, es mejor usar --uid-owner y --id-owner. Primero, el criterio --pid-owner solo coincide con el pid exacto, lo que significa que su programa podría generar fácilmente un proceso secundario que no estaría bloqueado por esta regla. (Al menos no he leído lo contrario). En segundo lugar, iptables (8) advierte que --pid-owner está dañado en los sistemas SMP (que pueden o no aplicarse a usted, pero en cualquier caso limita la portabilidad). Tercero, hay una condición de carrera en el script anterior, porque el proceso se inicia antes de que se bloquee. (Si hay una manera de obtener el pid de un proceso antes de que comience, entonces nunca he oído hablar de él).