
Wie könnte ich eine Art Firewall konfigurieren, die nur bestimmten Programmen die Nutzung der offenen Ports im System erlaubt (vorzugsweise RHEL)?
Wenn ich beispielsweise yum
normal eine Verbindung herstellen und Updates durchführen möchte, aber ausgehende Webanforderungen, wie z. B. das Browsen, blockieren möchte, müssen die Ports 80, 443, 53 und UDP-53 trotzdem geöffnet sein.
Allerdings müsste die Firewall zwischen yum
einem Webbrowser unterscheiden können.
Antwort1
iptables
hat die Möglichkeit, den Benutzer des Programms zu überprüfen.
Durch die Verwendung von --uid-owner
oder --gid-owner
Flags haben Sie die Möglichkeit, das Netzwerk auf bestimmte Benutzer (Root?) zu beschränken, und www-data
die Pakete Ihres Webservers (kann als ausgeführt werden) werden gelöscht.
Natürlich handelt es sich hierbei um Beschränkungen pro Benutzer/Gruppe und nicht pro Programm, aber die meisten Dienste laufen heute mit ihren eigenen Benutzern und Gruppen.
Beispiel:
iptables -I OUTPUT -m owner --uid-owner www-data -jDROP
Beispiel, das ausgehende Netzwerke auf alle außer Root beschränken würde:
iptables -P OUTPUT DROP
iptables -I OUTPUT -m owner --uid-owner root -jALLOW
Ein anderer Ansatz wäre, Regeln einzurichten SELinux
(normalerweise mit RedHat-Produkten gebündelt). Ich persönlich denke, dass dies schwieriger zu verwalten wäre.