HAProxy vor Squid Proxy – Client IP-Adressen weiterleiten

Verwendet man einen Loadbalancer wie z.B. HAProxy um Webzugriffe von Clients auf mehrere Squid Proxy Server zu verteilen, sieht es im access.log des Squid Proxy so aus, als kämen die Zugriffe alle vom HAProxy nicht vom eigentlichen Client. Da das HTTP Forwarding des HAProxy auf Applikationsebene basiert, ist dieses Verhalten korrekt. Wenn man TCP Offloading machen würde, wäre dies wahrscheinlich nicht der Fall.

Um beim HTTP Forwarding dennoch die originale Client-IP im Squid access.log zu sehen, kann man diese über den HTTP Header X-Forwarded-For (Beschreibung) weiterleiten.

In Squid kommen die Requests alle von der IP-Adresse des HAProxy:

1514450659.711  40186 10.0.0.5 TCP_MISS/200 31540 CONNECT images.outbrain.com:443 - HIER_DIRECT/2.19.240.34 -
1514450660.977  40078 10.0.0.5 TCP_MISS/200 3753 CONNECT www.summerhamster.com:443 - HIER_DIRECT/52.27.8.169 -

In HAProxy müssen die folgenden beiden Optionen gesetzt werden. Diese setzen den Header „X-Forwarded-For“ auf die Client IP-Adresse. Dadurch wird die eigentliche Client IP im Header mitgegeben:

option http-server-close
option forwardfor

Der Squid Proxy registriert den veränderten Header, verwirft ihn aber aus Sicherheitsgründen standardmäßig – sofern nicht anderweitig konfiguriert. Also muss in der Konfiguration des Squid der QuellIP des HAProxy vertraut werden. Dies wird dementsprechend über eine acl in der squid.conf angepasst:

acl haproxy src 10.0.0.5
follow_x_forwarded_for allow haproxy

Abschließend den Squid neustarten und den Webzugriff über ein Client testen. Wie man nun im access.log sieht, ist die Client-IP jetzt korrekt weitergeleitet.

1514451557.721      5 10.0.0.10 TCP_MISS/200 910 POST http://ocsp.digicert.com/ - HIER_DIRECT/93.184.220.29 application/ocsp-response
1514451557.749      5 10.0.0.10 TCP_MISS/200 2194 POST http://ocsp2.globalsign.com/gsalphasha2g2 - HIER_DIRECT/104.31.74.124 application/ocsp-response

Winbuilder (Win10PE) hinter Proxy benutzen

Wer sich selbst ein Windows PE erstellen will, kommt um den WindowsBuilder nicht herum. Ein Tool aus der Sammlung, nämlich GetWaikTools (GWT.exe) lädt die Windows Imaging Features (ADK, Dism etc.) herunter und benötigt daher Internetzugriff. Wer hinter einem Proxy sitzt, bekommt hier eine Fehlermeldung und muss den Proxy von Hand konfigurieren.
Das Tool verwendet Curl als Downloader, für den über die Umgebungsvariablen ein Proxy eingerichtet werden kann:

C:\>netsh winhttp set proxy http://1.2.3.4:3128
Aktuelle WinHTTP-Proxyeinstellungen:
    Proxyserver     :  http://1.2.3.4:3128
    Umgehungsliste  :  (keine)

Anschließend funktioniert die Verbindung über den Proxyserver 😉

Android Studio – Installation hinter einem Proxy

Wer das neue Android Studio hinter einem Proxy installieren möchte bekommt eventuell wie ich einen Timeout-Fehler beim Versuch nach Update-Paketen zu suchen.
Dazu muss dem Programm der Proxy bekannt gemacht werden, das geht über das editieren einer xml Datei. Anschließend einfach nochmal auf Retry gehen und es flutscht wieder.
android_studio_proxy
 
Dazu folgende xml Datei editieren:

%USERPROFILE%\.AndroidStudio\config\options\other.xml

Android Studio other.xml
Dort muss USE_HTTP_PROXY true gesetzt werden, sowie die ProxyIP und Port angegeben werden.
Falls vorhanden kann auch einfach die Proxy-Auto-Config aktiviert werden. (Das setzt aber ein Konfiguriertes WPAD vorraus.)
Wenn ihr beides true setzt (wie im Bild) bekommt ihr beim ersten Start eine Meldung, dass nur eine Konfiguration möglich ist – und könnt dies dann direkt in der GUI auswählen.

Squid Web Cache Proxy Server installieren unter Ubuntu 10.10

Ich habe ein kleines Howto geschrieben, wie man den Squid squid-3.0.STABLE25 auf einem Ubuntu 10.10 installieren und konfigurieren kann.
Hier gibts es 2 Wege, einmal den etwas komplizierteren über die eigene Installation – oder über das fertige debian Paket.
Ich beschreibe beide Wege……
### Die einfache Variante über ein fertiges Ubuntu Paket

sudo apt-get install squid3

Fertig 🙂 – Das Startscript etc. wird automatisch angelegt. Der Config Folder ist nun aber /etc/squid3/.
Für eine einfachere Konfiguration über ein Webinterface empfehle ich die Installation von webmin. Diese Webseite bereitet die Konfig etwas vereinfacht auf.
# webmin installieren

cd /tmp
wget http://prdownloads.sourceforge.net/webadmin/webmin_1.530_all.deb
sudo dpkg --install webmin_1.530_all.deb

– Eventuell – falls Abhängigkeiten fehlen sollten noch:

apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl

Im webmin unter Servers / squid web proxy cache müssen dann evlt. noch die Pfade angepasst werden, wenn squid nicht per apt-get insall squid installiert wurde.
Folgende Werte müssen geändert werden:
Full path to squid config file: /usr/local/squid/etc/squid.conf
Squid executable: /usr/local/squid/sbin/squid
Full path to PID file: /usr/local/squid/var/logs/squid.pid
Full path to squid cache directory: /usr/local/squid/var/cache
Squid cachemgr.cgi executable: /usr/local/squid/libexec/cachemgr.cgi
Full path to squid log directory: /usr/local/squid/var/logs
(Thanks to http://www.admin-wissen.de/eigene-tutorials/linux/squid/squid-tutorial-teil-3/)
### Installation via Source Files (….weiterlesen)

Weiterlesen

Squid Proxy – Blockieren von Bestimmten Dateitypen

Eigentlich ganz simpel. Ich habe einen Squid Proxy erstellt und möchte den Zugriff auf bestimmte Dateitypen wie z.B. den Download von Mp3’s, Avi’s etc. verbieten. Durch die Access Control Lists die Squid verwendet, funktioniert dies sehr einfach.
Als erstes legen wir uns eine Datei an, in der wir die entsprechenden Dateitypen eintragen.

vi /etc/squid3/forbidden_filetypes.acl

Ich habe diese im Format:

\.[Aa][Vv][Ii]$
\.[Mm][Pp]3$

bei mir eingetragen. Speichern und fertig.
Nun öffnen wir die squid Config

vi /etc/squid3/squid.conf

Im Bereich der ACL’s fügen wir folgende Zeile hinzu:

acl forbidden_filetypes urlpath_regex "/etc/squid3/forbidden_filetypes.acl"

Damit wird eine Regel „forbidden_filetypes“ angelegt. Nun muss dieser Regel noch eine Aktion hinzugefügt werden (Zeile hinzufügen):

http_access deny forbidden_filetypes

Wenn man eine gesonderte Fehlermeldung für diese Regel anzeigen möchte kann man dafür eine neue Fehlerseite angeben: (Zeile hinzufügen)

deny_info ERR_BLOCKED_FILETYPE forbidden_filetypes

Nun muss man noch eine HTML Datei anlegen unter /usr/share/squid3/errors + gewünschter Sprache mit dem Namen: ERR_BLOCKED_FILETYPE
Anschließend noch die Config speichern und Squid neustarten. Das wars.

/etc/init.d/squid3 restart