Pare-feu par processus?

18

J'ai lu autour mais je n'arrive pas à trouver un moyen de créer des règles de pare-feu par processus. Je sais iptables --uid-ownermais cela ne fonctionne que pour le trafic sortant. J'ai envisagé de créer des scripts netstat, iptablesmais cela semble terriblement inefficace car si un processus n'est actif que pendant une petite période, le script risque de le manquer. Fondamentalement, je veux appliquer des restrictions spécifiques concernant le port et le dst sur un processus tout en laissant les autres processus inchangés. Des idées?


Pour référence, selinux peut faire exactement cela et cela fonctionne assez bien. La configuration est cependant un peu pénible.

s3c
la source
1
Peut-être que LXC (Linux Containers) fera l'affaire? lxc.sourceforge.net
nsg
Qu'est-ce qui est si difficile avec selinux? Bien sûr, il y a un peu de courbe d'apprentissage, mais il existe d'excellents outils, à la fois graphiques et en ligne de commande pour aider à la configuration. Le support est disponible sur IRC sur #selinux ainsi que #fedora
Panther
avez-vous essayé d'utiliser Douane à la place? askubuntu.com/a/330259/46437
Aquarius Power
L'interface graphique de firewalld pour iptables vous permet de faire exactement cela, et c'est assez facile à utiliser.
BKilpat01

Réponses:

10

Votre question est très similaire à /programming/5451206/linux-per-program-firewall-similar-to-windows-and-mac-counterparts

Il y avait le --cmd-ownermodule propriétaire pour iptables, mais il a été supprimé car il ne fonctionnait pas correctement. Maintenant, une première version bêta de Leopard Flower est disponible, qui résout le problème par un démon de l'espace utilisateur.

En général, un pare-feu par processus n'est pas très utile, sauf si vous isolez et limitez vraiment les programmes. Pour cela, vous devriez regarder des solutions de sécurité comme TOMOYO Linux, SELinux, AppArmor, grsecurity, SMACK, ...

jofel
la source
1

Facile, exécutez votre processus sous différents utilisateurs et utilisez '--uid-owner' :)

jirib
la source
1
C'était aussi ma première pensée, mais comme je l'ai noté, cela ne fonctionne pas pour les processus d'écoute.
s3c
Quelle est exactement ton intention? Pour être sûr qu'un propriétaire / processus spécifique a ses propres ports ouverts pour la connexion entrante / sortante?
jirib