Website-Suche

So erstellen Sie einen HTTP-Proxy mit Squid unter CentOS 7/8


Web-Proxys gibt es schon seit geraumer Zeit und werden von Millionen von Benutzern auf der ganzen Welt verwendet. Sie haben eine breite Palette von Zwecken, am beliebtesten ist die Online-Anonymität, aber es gibt auch andere Möglichkeiten, wie Sie die Vorteile von Web-Proxys nutzen können. Hier sind einige Ideen:

  • Online-Anonymität
  • Verbessern Sie die Online-Sicherheit
  • Verbessern Sie die Ladezeiten
  • Blockieren Sie bösartigen Datenverkehr
  • Protokollieren Sie Ihre Online-Aktivitäten
  • Um regionale Beschränkungen zu umgehen
  • In einigen Fällen kann die Bandbreitennutzung reduziert werden

Funktionsweise des Proxy-Servers

Der Proxyserver ist ein Computer, der als Vermittler zwischen dem Client und anderen Servern verwendet wird, von denen der Client Ressourcen anfordern kann. Ein einfaches Beispiel dafür ist, wenn ein Client Online-Anfragen stellt (z. B. eine Webseite öffnen möchte), er sich zuerst mit dem Proxy-Server verbindet.

Der Proxy-Server überprüft dann seinen lokalen Festplatten-Cache und wenn die Daten dort zu finden sind, gibt er die Daten an den Client zurück, wenn sie nicht zwischengespeichert sind, stellt er die Anfrage im Namen des Clients unter Verwendung der Proxy-IP-Adresse (anders als bei den Clients) und gibt die Daten dann an den Client zurück. Der Proxyserver versucht, die neuen Daten zwischenzuspeichern und verwendet sie für zukünftige Anforderungen an denselben Server.

Was ist Squid Proxy?

Squid ist ein Web-Proxy, der meine breite Palette von Organisationen verwendet. Es wird häufig als Caching-Proxy verwendet, um die Antwortzeiten zu verbessern und die Bandbreitennutzung zu reduzieren.

Für die Zwecke dieses Artikels werde ich Squid auf einem Linode CentOS 7 VPS installieren und es als HTTP-Proxy-Server verwenden.

So installieren Sie Squid unter CentOS 7/8

Bevor wir beginnen, sollten Sie wissen, dass Squid keine Mindestanforderungen hat, aber die Menge der RAM-Auslastung kann je nach den Clients, die über den Proxy-Server im Internet surfen, variieren.

Squid ist im Basis-Repository enthalten und somit ist die Installation einfach und unkompliziert. Stellen Sie jedoch vor der Installation sicher, dass Ihre Pakete auf dem neuesten Stand sind, indem Sie sie ausführen.

# yum -y update

Fahren Sie mit der Installation von squid fort, starten und aktivieren Sie es beim Systemstart mit den folgenden Befehlen.

# yum -y install squid
systemctl start squid
systemctl  enable squid

Zu diesem Zeitpunkt sollte Ihr Squid-Webproxy bereits ausgeführt werden und Sie können den Status des Dienstes mit überprüfen.

# systemctl status squid
Beispiel-Ausgabe
● squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2018-09-20 10:07:23 UTC; 5min ago
 Main PID: 2005 (squid)
   CGroup: /system.slice/squid.service
           ├─2005 /usr/sbin/squid -f /etc/squid/squid.conf
           ├─2007 (squid-1) -f /etc/squid/squid.conf
           └─2008 (logfile-daemon) /var/log/squid/access.log

Sep 20 10:07:23 tecmint systemd[1]: Starting Squid caching proxy...
Sep 20 10:07:23 tecmint squid[2005]: Squid Parent: will start 1 kids
Sep 20 10:07:23 tecmint squid[2005]: Squid Parent: (squid-1) process 2007 started
Sep 20 10:07:23 tecmint systemd[1]: Started Squid caching proxy.

Hier sind einige wichtige Dateispeicherorte, die Sie beachten sollten:

  • Squid-Konfigurationsdatei: /etc/squid/squid.conf
  • Squid-Zugriffsprotokoll: /var/log/squid/access.log
  • Squid-Cache-Protokoll: /var/log/squid/cache.log

Eine minimale squid.conf-Konfigurationsdatei (ohne Kommentare darin) sieht folgendermaßen aus:

acl localnet src 10.0.0.0/8	# RFC1918 possible internal network
acl localnet src 172.16.0.0/12	# RFC1918 possible internal network
acl localnet src 192.168.0.0/16	# RFC1918 possible internal network
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80		# http
acl Safe_ports port 21		# ftp
acl Safe_ports port 443		# https
acl Safe_ports port 70		# gopher
acl Safe_ports port 210		# wais
acl Safe_ports port 1025-65535	# unregistered ports
acl Safe_ports port 280		# http-mgmt
acl Safe_ports port 488		# gss-http
acl Safe_ports port 591		# filemaker
acl Safe_ports port 777		# multiling http
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern .		0	20%	4320

Konfigurieren von Squid als HTTP-Proxy

Hier zeigen wir Ihnen, wie Sie squid als HTTP-Proxy konfigurieren, indem Sie nur die Client-IP-Adresse für die Authentifizierung verwenden.

Hinzufügen von Squid-ACLs

Wenn Sie der IP-Adresse den Zugriff auf das Internet über Ihren neuen Proxy-Server erlauben möchten, müssen Sie eine neue ACL-Zeile (Access Control List) in der Konfigurationsdatei hinzufügen.

# vim /etc/squid/squid.conf

Die Zeile, die Sie hinzufügen sollten, lautet:

acl localnet src XX.XX.XX.XX

Dabei ist XX.XX.XX.XX die tatsächliche Client-IP-Adresse, die Sie hinzufügen möchten. Die Zeile sollte am Anfang der Datei eingefügt werden, in der die ACLs definiert sind. Es empfiehlt sich, neben der ACL einen Kommentar hinzuzufügen, der beschreibt, wer diese IP-Adresse verwendet.

Es ist wichtig zu beachten, dass, wenn sich Squid außerhalb Ihres lokalen Netzwerks befindet, Sie die öffentliche IP-Adresse des Clients hinzufügen sollten.

Sie müssen Squid neu starten, damit die neuen Änderungen wirksam werden.

# systemctl  restart squid

Öffnen Sie Squid-Proxy-Ports

Wie Sie vielleicht in der Konfigurationsdatei gesehen haben, sind nur bestimmte Ports für die Verbindung erlaubt. Sie können weitere hinzufügen, indem Sie die Konfigurationsdatei bearbeiten.

acl Safe_ports port XXX

Dabei ist XXX der eigentliche Port, den Sie laden möchten. Auch hier ist es eine gute Idee, einen Kommentar daneben zu hinterlassen, der beschreibt, wofür der Port verwendet wird.

Damit die Änderungen wirksam werden, müssen Sie squid erneut neu starten.

# systemctl  restart squid

Authentifizierung des Squid-Proxy-Clients

Höchstwahrscheinlich möchten Sie, dass sich Ihre Benutzer authentifizieren, bevor sie den Proxy verwenden. Zu diesem Zweck können Sie die HTTP-Basisauthentifizierung aktivieren. Es ist einfach und schnell zu konfigurieren.

Zuerst müssen Sie httpd-tools installiert haben.

# yum -y install httpd-tools

Erstellen wir nun eine Datei, in der später der Benutzername für die Authentifizierung gespeichert wird. Squid wird mit dem Benutzer "squid" ausgeführt, daher sollte die Datei im Besitz dieses Benutzers sein.

# touch /etc/squid/passwd
chown squid: /etc/squid/passwd

Jetzt erstellen wir einen neuen Benutzer namens "proxyclient " und richten sein Passwort ein.

# htpasswd /etc/squid/passwd proxyclient

New password:
Re-type new password:
Adding password for user proxyclient

Um nun die Authentifizierung zu konfigurieren, öffnen Sie die Konfigurationsdatei.

# vim /etc/squid/squid.conf

Fügen Sie nach den ACLs der Ports die folgenden Zeilen hinzu:

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users

Speichern Sie die Datei und starten Sie squid neu, damit die neuen Änderungen wirksam werden:

# systemctl restart squid

Blockieren Sie Websites auf Squid Proxy

Schließlich werden wir eine letzte ACL erstellen, die uns hilft, unerwünschte Websites zu blockieren. Erstellen Sie zunächst die Datei, in der die Websites auf der schwarzen Liste gespeichert werden.

# touch /etc/squid/blacklisted_sites.acl

Sie können einige Domains hinzufügen, die Sie blockieren möchten. Zum Beispiel:

.badsite1.com
.badsite2.com

Der vorangestellte Punkt weist squid an, alle Verweise auf diese Websites zu blockieren, einschließlich www.badsite1, subsite.badsite1.com usw.

Öffnen Sie nun die Konfigurationsdatei von Squid.

# vim /etc/squid/squid.conf

Fügen Sie direkt nach den ACLs der Ports die folgenden zwei Zeilen hinzu:

acl bad_urls dstdomain "/etc/squid/blacklisted_sites.acl"
http_access deny bad_urls

Speichern Sie nun die Datei und starten Sie squid neu:

# systemctl restart squid

Sobald alles korrekt konfiguriert ist, können Sie jetzt die Netzwerkeinstellungen Ihres lokalen Client-Browsers oder Betriebssystems so konfigurieren, dass Ihr Squid-HTTP-Proxy verwendet wird.

Schlussfolgerung

In diesem Tutorial haben Sie gelernt, wie Sie einen Squid HTTP Proxy-Server selbst installieren, sichern und konfigurieren. Mit den Informationen, die Sie gerade erhalten haben, können Sie jetzt einige grundlegende Filter für ein- und ausgehenden Datenverkehr über Squid hinzufügen.

Wenn Sie noch einen Schritt weiter gehen möchten, können Sie Squid sogar so konfigurieren, dass einige Websites während der Arbeitszeit blockiert werden, um Ablenkungen zu vermeiden. Wenn Sie Fragen oder Kommentare haben, posten Sie diese bitte im Kommentarbereich unten.

Verwandte Artikel: