Squid als transparenter Proxy (Web 2.0 Security)

Wie schon im letzen Web 2.0 Security Beitrag beschrieben, können durch die Nutzung von externen Diensten Sicherheitslücken auf Serversystemen entstehen. Bei der Verwendung externer APIs, wie z.B. eingebundene Bildergallerien kann u.U. nicht vorhergesehen werden, auf welche externen Server tatsächlich zugrgriffen werden muss. Die Datenquellen werden also erst bei konkretem Anlass ermittelt.

Als Folge können keine festen Regeln in der Firewall definiert werden um den Zugriff nach aussen festzulegen. Eine mögliche Lösung ist der Einsatz eines Proxys für den Zugriff lokaler Anwendungen auf externe Dienste über HTTP.

Die prinzipielle Idee sieht so aus:

Ein Proxyserver bindet sich auf die IPs IP1 und IP2 (1 + 2), die normalen Serverdienste hören auf IP1 (3). Wenn ein Dienst auf das Internet zugreifen will, muss er dies über den Proxy machen (4). Der Proxy lässt Zugriffe seinerseits nur auf vorher definierte Hosts zu. Die Regeln können auch auf eine vollständige Anfrage ausgedehnt werden und damit auch unterhalb eines Hosts noch weitere Einschränkungen definiert werden können.

Google liefert viele Ergebnisse, wie man das gewünschte Ergebnis erreichen kann (z.B. unter http://www.deckle.co.za/squid-users-guide/Transparent_Caching/Proxy). Ab der Version 2.6 wird das transparente Proxying nicht mehr über die “httpd_accel” Anweisungen aktiviert – aber das wird ebenfalls auf der Seite erklärt.

Firewallregeln sorgen dafür, jede HTTP-Anfrage auf Port 80 auf den Squid-Proxy umzuleiten. Dabei muss man darauf achten, dass es keine Redirect-Loops gibt. Wenn Squid Warnungen in die Logdatei a lá “TCP_DENIED” schreibt und alle anderen Fehler ausgeschlossen werden können, könnte das ein Hinweis auf eine Loop sein.

This entry was posted in Technik and tagged , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>