Select Page

Squid – Mit Proxy schneller zum Ziel

by | Jan 12, 2023 | NETWAYS, Ausbildung

Bereits in zwei meiner Blogposts habe ich besonders interessante Ausbildungsprojekte vorgestellt. Im Beitrag Your own Mini-NAS zeige ich, wie einfach es ist, einen Massenspeicher im eigenen Netzwerk zu erstellen, in Pi-Hole – das Urgestein der DNS-basierten Werbeblocker geht es, wie der Name schon vermuten lässt, um die Installation und Einrichtung von Pi-Hole auf einem Raspberry Pi.

Auch im heutigen Post geht es um ein für mich interessantes Ausbildungsprojekt aus meinem ersten Ausbildungsjahr zum Fachinformatiker für Systemintegration bei NETWAYS Professional Services: die Installation und Konfiguration eines Proxy-Servers mit Squid.

Was genau macht ein Proxy-Server?

Der Begriff “Proxy” ist in vielen Bereichen der IT anzutreffen und für die meisten IT-Profis bereits ein alter Hut. Nichtsdestotrotz stelle ich einmal kurz und knapp die wichtigsten Anwendungsbereiche eines Proxy-Servers vor.

Caching – Beschleunigung beim Datenaufruf

Der wohl bekannteste Einsatzbereich von Proxys ist die Funktion als Zwischenspeicher. Dafür wird die entsprechende Software als “Mittelsmann” in die Kommunikation von Host und Datacenter/Server eingesetzt. Jede Anfrage eines Hosts im Netzwerk, zum Beispiel der Aufruf einer Homepage über den Browser sowie die Antwort vom Server wird über den Proxy geleitet. Die eingehenden Daten werden in seinem Speicher ablegt, das nennt man Caching.
Durch das Caching ist der Proxy in der Lage, regelmäßig auftretende Anfragen deutlich schneller zu beantworten, da er viele Daten bereits aus seinem Speicher laden kann. So wird nicht nur Zeit, sondern auch Bandbreite gespart.

Lastenverteilung

Neben dem Caching, kann ein Proxy auch für eine bessere Lastenverteilung zwischen mehreren angeschlossenen Systemen sorgen. Diese Funktion kommt häufig bei Anfragen auf (Web-)Servern zum Einsatz. Um das einmal zu veranschaulichen, stellen wir uns eine beliebte Homepage vor, die pro Sekunde Tausende Anfragen bekommt. Damit der Webserver unter der Last nicht zusammenbricht, kommt ein Proxy zum Einsatz, der checkt, wie groß die Last auf Webserver 1 ist und bei Bedarf neue Anfragen auf Webserver 2 umleitet. Auf beiden Servern liegen die exakt gleichen Inhalte. So kann ein Zusammenbruch der Homepage verhindert werden.

Filterung des Datenverkehrs

Blocklisten sind eine einfach umsetzbare Möglichkeit den Datenverkehr innerhalb des eigenen Netzwerks zu reglementieren. Mit dem Squid Proxy-Server lassen sich diese Regeln einfach umsetzen, dazu weiter unten im Text aber noch mehr.
Der Administrator des Netzwerks kann mithilfe eines Proxy-Servers festlegen, welche Seiten aus dem eigenen Netzwerk aufgerufen werden können und welche nicht. Sobald eine “verbotene” Website aufgerufen werden soll, kann eine Weiterleitung auf eine Landingpage genutzt werden, auf welcher diese Regeln erklärt sind.

Authentifizierung

Ähnlich wie die Listen zur Filterung von Datenverkehr kann mit Access Control Lists (ACL) der Zugang zum Netzwerk oder zu bestimmten Teilen des Netzwerks beschränkt oder freigeschalten werden. Dadurch kann anhand von IP’s und/oder MAC-Adressen sowie durch Authentifizierung exakt eingestellt werden, welche Systeme oder Nutzer auf welche Bereiche eines Netzwerks Zugriff bekommen.

Installation von Squid

DISCLAIMER: Alle in diesem Blogbeitrag genannten Installations- und Konfigurationsschritte wurden nur auf CentOS 9 getestet. Für andere Distributionen, besonders Debian / Ubuntu, wird keine Gewähr für eine problemlose Funktionalität gegeben.

Um einen Proxy zu konfigurieren benötigt es zunächst einmal die passende Open Source Software, in diesen Fall der häufig verwendete Squid Proxy Server. Die Installation von Squid selbst ist mit drei CLI-Befehlen so einfach wie unkompliziert.

yum -y install squid
systemctl start squid
systemctl enable squid

Um zu überprüfen, ob Squid Proxy wie gewünscht läuft, kann der aktuelle Status mit dem Command

systemctl status squid

angezeigt werden. Haben die hier gelisteten Parameter den gewünschten Status (active und enabled), kann die Konfiguration starten.

Konfiguration von Squid Proxy

Um kleinere Stolpersteine beim Einsatz von Squid direkt bei der Erstkonfiguration aus dem Weg zu räumen wird in der Firewall der von Squid benötigte Port 3128 freigeschaltet. Nun können die Zugriffsregelungen, Benutzerauthentifizierung sowie Blocklisten konfiguriert werden. In diesem Post beschränke ich mich auf die Konfiguration der Zugriffsregelungen sowie der Blocklisten.

Einrichten der Zugriffsregeln

Auf dem Proxy-Server

Bevor Authentifizierung und Listen genutzt werden können, muss der Zugriff auf den Squid-Proxy geregelt werden. Dafür werden die IP-Adressen der Hosts benötigt, die ihre Verbindungen über den Proxy-Server leiten sollen.
Die IP-Adressen können auf zwei verschiedene Arten bereitgestellt werden. Zum einen können sie mit dem entsprechenden Befehl direkt in die config-Datei von Squid geschrieben werden. Zum anderen kann eine eigene Textdatei mit allen relevanten Adressen angelegt und eingelesen werden. Letzteres Vorgehen ist besonders bei großen Netzwerken hilfreich und sinnvoll. Best Practice ist es, alle selbst erstellten Listen im Squid-Proxy-Ordner /etc/squid anzulegen.

Egal welche Methode genutzt wird, der entsprechende Befehl wird an den Anfang der Squid-Config-Datei geschrieben, damit die neue Direktive vor den bereits vordefinierten ACLs angewendet wird. Der entsprechende Befehl ist für die direkte Eingabe einer IP-Adresse

acl NAME_DER_ACL src IP_DES_SYSTEMS

und für die Verwendung einer Textdatei

acl NAME_DER_ACL dstdomain "PFAD_ZUR_TEXTDATEI"

Mit diesen Befehlen wurde eine neue ACL definiert, sie ist aber noch nicht aktiv. Dafür wird ein weiterer Befehl benötigt, der direkt unter den gerade geschriebenen Befehl eingefügt wird. Hier kann sowohl allow als auch deny genutzt werden, je nachdem, was das Ziel der neuen ACL ist, aber niemals beide zusammen in einem Befehl.

http_access allow NAME_DER_ACL
http_access deny NAME_DER_ACL

Auf den Clients im Netzwerk

Nachdem der Proxy-Server entsprechend konfiguriert ist, müssen auch auf den Clients, die den Proxy nutzen sollen, einige Anpassungen vorgenommen werden. In /etc/environment werden nun unabhängig vom bisherigen Inhalt der Datei die folgenden Zeilen eingefügt bzw. angepasst:

http_proxy=http://IP_DES_PROXY:3128/
https_proxy=http://IP_DES_PROXY:3128/
ftp_proxy=http://IP_DES_PROXY:3128/
no_proxy="localhost,127.0.0.1,localaddress,.localdomain"
HTTP_PROXY=http://IP_DES_PROXY:3128/
HTTPS_PROXY=http://IP_DES_PROXY:3128/
FTP_PROXY=http://IP_DES_PROXY:3128/
NO_PROXY="localhost,127.0.0.1,localaddress,.localdomain"

Damit sollten sowohl systemseitig als auch auf dem Proxy alle Konfigurationen für eine erfolgreiche Kommunikation der beiden durchgeführt sein.

Blocken von Websites und Keywords

Um eine Blockliste für Websites oder Keywords zu erstellen, müssen die zu sperrenden Seiten oder Begriffe in eigens dafür angelegten Textdateien gesammelt werden. Um welche zu sperrenden Inhalte es sich dabei handelt, ist von Anwendungsfall zu Anwendungsfall unterschiedlich. Häufig werden sie jedoch dafür genutzt, den Aufruf von Social Media-Kanälen zu beschränken, nicht-jugendfreie Inhalte aus dem Datenverkehr auszuschließen oder restriktiv alle Inhalte zu filtern, die für zu viel Ablenkung sorgen könnten.

Der Pfad zu den angelegten Listen, Best Bractice ist auch hier /etc/squid/…, wird nun in die squid.conf eingepflegt. Da die Konfigurationsdatei hierarchisch von oben nach unten abgearbeitet wird, MÜSSEN Blocklisten vor den Zugangsberechtigungen stehen.

acl blocked_sites dstdomain "PFAD_ZUR_EIGENEN_LINK-BLACKLIST"
acl blocked_keywords dstdomain "PFAD_ZUR_EIGENEN_KEY-BLACKLIST"
http_access deny blocked_sites
http_access deny blocked_keywords

Nachdem die Änderungen gespeichert wurden, ist noch ein Neustart von Squid-Proxy notwendig, um die Änderungen wirksam zu machen.

systemctl restart squid

Wenn alles korrekt eingerichtet wurde, ist der Squid-Proxy-Server nun einsatzbereit.

Die ersten Zeilen der veränderten squid.conf könnten nun in etwa so aussehen:

squid proxy configuration file with sample code

Wenn die eigene Konfigurationsdatei jedoch mehr oder weniger Inhalte beinhaltet oder diese in einer anderen Reihenfolge stehen, ist das kein Problem. Dieser Screenshot dient lediglich als Hilfestellung.

Ausbildung und #lifeatnetways

Wenn auch Du nun Lust bekommen hast, Dich mit diesem oder ähnlichen Projekten zu befassen oder bereits viel IT-Erfahrung mitbringst und direkt tiefer einsteigen willst, schick uns noch heute deine Bewerbung. Aktuell suchen wir besonders IT-Spezialist:innen in den verschiedensten Bereichen. Doch auch für das im September 2023 beginnende neue Lehrjahr kannst Du Dich bereits heute bewerben.
Wenn Du mehr über NETWAYS, freie Stellen oder unsere Firmenkultur erfahren willst, klick einfach auf den entsprechenden Link oder such auf Twitter, LinkedIn oder Instagram nach #lifeatnetways.

0 Comments

Submit a Comment

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

More posts on the topic NETWAYS | Ausbildung

Monthly Snap März 2024

Endlich Frühling in Nürnberg! Die Laune ist doch morgens gleich besser, wenn es schon hell ist, wenn man aus dem Haus geht. Wir haben im März viele schöne Blogposts für Euch gehabt. Falls Ihr welche davon verpasst hat, hier ein Überblick für Euch. Aber natürlich...

OSMC 2023 | Will ChatGPT Take Over My Job?

One of the talks at OSMC 2023 was "Will ChatGPT take over my job?" by Philipp Krenn. It explored the changing role of artificial intelligence in our lives, raising important questions about its use in software development.   The Rise of AI in Software...

Monthly Snap Februar 2024

Der Februar war ein ereignisreicher Monat bei NETWAYS! Neben dem normalen Alltag gab es auch unser Jahresmeeting, ein Spieleabend im Büro, und viele Kollegen waren auf Konferenzen und der Jobmesse in Nürnberg unterwegs. Und natürlich wurden viele Blogposts zu...