Der owner-Match von iptables kann Pakete identifizieren, die von einem lokalen Prozess-Socket erzeugt wurden. Beispielsweise bezieht sich -m owner --uid-owner 1234 auf einen lokalen Socket im Besitz von UID 1234; es identifiziert keinen HTTP-Proxy-Benutzernamen.

Auf einem Rechner mit Squid sind diese Pfade zu unterscheiden:

DatenverkehrRelevante Unterscheidung
Ein Client verbindet sich mit Squid auf diesem RechnerEingehende Verbindung zum Proxy-Listener
Squid öffnet eine ZielverbindungLokal erzeugter ausgehender Socket
Ein LAN-Client leitet direkt über diesen RechnerWeitergeleiteter Datenverkehr ohne lokal erzeugenden Socket

Die Erweiterung ist in OUTPUT und POSTROUTING gültig. Weitergeleitete Pakete haben für diesen Match keinen zugehörigen lokalen Socket, daher kann eine FORWARD-Regel den Benutzer des entfernten Rechners nicht ermitteln, indem sie nach Squids UID fragt.

Eine Richtlinie, die Squids eigene ausgehende Sockets erlaubt, deckt also nur einen Teil eines Netzwerkentwurfs ab, der allein auf einem Proxy beruht. Gateway-Weiterleitung, Listener-Zugriff, weitere erlaubte Dienste und das tatsächliche Proxy-Dienstkonto müssen im jeweils passenden Bereich behandelt werden.

Verwende die konfigurierte Laufzeitidentität, statt anzunehmen, Squid liefe als nobody. Mehrere Prozesse können eine UID teilen, daher ist eine UID-basierte Freigabe eine Kontogrenze und kein Beweis dafür, dass ein bestimmtes Programm jede erlaubte Verbindung aufgebaut hat.

Ähnliche Artikel