Bloquer les connexions sortantes pour les uids certaing (root, apache, nobody)

8

Avec iptables dans CentOS 5 et 6 Linux - comment pouvez-vous empêcher les processus s'exécutant en tant que root , apache ou personne d'initier des connexions sortantes?

Sur CentOS 5 Linux, j'ai essayé de mettre ces lignes dans / etc / sysconfig / iptables:

-A OUTPUT -m owner --uid-owner root -j DROP
-A OUTPUT -m owner --uid-owner apache -j DROP
-A OUTPUT -m owner --uid-owner nobody -j DROP

mais malheureusement obtenez l'erreur:

# sudo service iptables restart
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules: iptables-restore v1.4.7: owner: Bad value for "--uid-owner" option: "apache"
Error occurred at line: 27
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
                                                           [FAILED]
Alexander Farber
la source
vous ne pouvez pas le faire en utilisant iptables. iptables ne vérifie que les paquets ip, et il n'y a aucune information sur l'uid / gid dedans. iptables ne peut bloquer les paquets que par les champs source / destination, les ports, ...
Goez
Je sais que le pf d'OpenBSD peut le faire. Et il semble également y avoir le propriétaire -m dans iptables Linux. Alors peut-être que vous vous trompez?
Alexander Farber
si je vérifie ma page de manuel, -m signifie match (module) et non pour le propriétaire, il y a peut-être un module pour le propriétaire du processus, pas sûr.
Goez
D'après ce que je comprends, "-m propriétaire" dit à iptables: "veuillez charger le module" propriétaire ", afin que nous puissions faire les choses"
Alexander Farber
juste vérifié, il y a bien un module propriétaire. Je n'en ai jamais entendu parler auparavant. Mais cela fonctionne avec les identifiants numériques, il devra donc modifier sa règle
Goez

Réponses:

8

Essayez d'utiliser l'UID numérique au lieu du nom. Par exemple:

-A OUTPUT -m owner --uid-owner 400 -j DROP

au lieu de

-A OUTPUT -m owner --uid-owner apache -j DROP

Vous pouvez trouver l'UID en tapant

id user
Goez
la source