So richten Sie eine Webfilterlösung für Squid Proxy ein

In diesem HOWTO wird beschrieben, wie Sie Ihre Heimbenutzer oder Benutzer kleiner Unternehmensnetzwerke mithilfe des HTTP-Proxys vor unerwünschten Internetinhalten schützen können. Unser Ziel ist es, einen kostenlosen Linux-basierten Server mit Squid einzurichten und eine Webfilteranwendung darauf bereitzustellen, um Bandbreite zu sparen, den Webzugriff zu beschleunigen und anstößige und möglicherweise illegale oder böswillige Webdateien zu blockieren.

In diesem Tutorial gehe ich davon aus, dass die Netzwerkumgebung aus einem Router auf SOHO-Ebene besteht, der drahtloses WLAN, mehrere Desktop- und Laptop-Computer, iPads und einige mobile Smartphones verteilt, wie im folgenden Netzwerkdiagramm dargestellt.

Richten Sie CentOS Linux auf dem Proxyserver ein

Unser Proxyserver wird mit der kostenlosen Version von CentOS Linux 6.2 erstellt. Es ist auch möglich, RedHat Linux 6.2 mit kostenpflichtigem Abonnement zu verwenden, wenn Sie einen garantierten Support für Ihre Server benötigen.

Um CentOS Linux zu installieren, rufen Sie http://mirror.centos.org/centos/6/isos/i386/ auf und laden Sie die Image-Datei CentOS-6.2-i386-minimal.iso herunter. Brennen Sie es auf eine Ersatz-CD, legen Sie es in das CD-Laufwerk Ihres Servers ein und schalten Sie es ein.

Befolgen Sie die Installationsschritte, indem Sie die Standardeinstellungen übernehmen oder die erforderlichen Teile der Installation an Ihre Anforderungen anpassen. Konfigurieren Sie den Hostnamen des Computers als "Proxy" und das Root-Passwort als " " (ohne Anführungszeichen). Warten Sie, bis die Installation abgeschlossen ist, und starten Sie das System neu.

In der installierten Version von CentOS ist normalerweise keine Netzwerkverbindung aktiviert. Um den Netzwerkzugriff zu aktivieren, müssen wir Folgendes ausführen.

  1. Weisen Sie unserem Proxyserver eine statische IP-Adresse von 192.168.1.2 mit der Netzwerkmaske 255.255.255.0 zu, indem Sie das Startskript / etc / sysconfig / network-scripts / ifcfg-eth0 ändern . Öffnen Sie es und fügen Sie diese Zeilen hinzu:
     BOOTPROTO = statisch 
     NETMASK = 255.255.255.0 
     IPADDR = 192.168.1.2 
     ONBOOT = ja 
  2. Legen Sie die Standard-Gateway-Einstellungen in der Konfigurationsdatei / etc / sysconfig / network fest, indem Sie diese Zeile hinzufügen:
     GATEWAY = 192.168.1.1 
  3. Passen Sie die Einstellungen für die DNS-Auflösung in /etc/resolv.conf an, indem Sie die IP-Adresse des DNS-Servers hinzufügen, der auf dem Router ausgeführt wird:
     Nameserver 192.168.1.1 

Starten Sie Ihr Netzwerksubsystem neu, indem Sie im Root-Terminal /etc/init.d/network restart eingeben oder einfach den Server neu starten. Vergewissern Sie sich nach dem Neustart, dass das Netzwerk ordnungsgemäß funktioniert, indem Sie das Terminal eingeben (bei den Ausgängen dieser Befehle sollten keine Fehler auftreten):

 $ ping -c 3 192.168.1.1 
 $ nslookup google.com 

Bevor wir eine weitere Installation durchführen, wird empfohlen, das frisch installierte System mit den neuesten Sicherheitspatches zu aktualisieren, die möglicherweise nach der Veröffentlichung der ISO veröffentlicht wurden. Geben Sie also yum update in das Root-Terminal ein und starten Sie den Server nach Abschluss des Updates neu.

Richten Sie Squid auf dem Proxyserver ein

Wir werden Squid als Caching- und Filter-Proxy verwenden, der auf unserem Proxyserver ausgeführt wird. Um die mit dem 6.2 CentOS-Distributionstyp gelieferte Version von Squid zu installieren, installieren Sie squid im Root-Terminal. Squid und alle zugehörigen Pakete und Abhängigkeiten werden aus dem Internet heruntergeladen und automatisch installiert.

Lassen Sie den Squid-Proxy-Dienst beim Systemstart automatisch starten, indem Sie chkconfig squid on eingeben . Starten Sie Ihren Server neu oder starten Sie Squid zum ersten Mal manuell mit dem Start von Service Squid .

Das einzige, was Sie tun müssen, ist, die externen Benutzer aus unserem Heimnetzwerk auf Squid zugreifen zu lassen. Öffnen Sie die Konfigurationsdatei /etc/squid/squid.conf und fügen Sie den Proxy für den sichtbaren Hostnamen hinzu . Überprüfen Sie auch, ob http_access allow localnet und acl localnet src 192.168.0.0/16 in der Konfigurationsdatei vorhanden sind.

Starten Sie Squid neu, indem Sie service squid restart eingeben. Stellen Sie sicher, dass Squid ordnungsgemäß ausgeführt wird, indem Sie Ihren Benutzerbrowser auf die IP-Adresse des Proxyservers (192.168.1.2) verweisen und zu einigen Ihrer bevorzugten Websites surfen.

ANMERKUNG: Möglicherweise müssen Sie die Firewall-Einstellungen in CentOS anpassen, damit Proxy-Benutzer eine Verbindung zu Port 3128 auf dem Proxyserver herstellen können. Verwenden Sie dazu die Befehle system-config-firewall-tui oder iptables. Eine gute Idee wäre, den Zugriff auch auf Port 80 zuzulassen, da wir diesen Port für die Verwaltung der QuintoLabs-Inhaltssicherheit über die Web-Benutzeroberfläche verwenden, wie später beschrieben.

Richten Sie QuintoLabs Content Security ein

Der nächste Schritt ist die Installation von Content Security für Squid aus QuintoLabs (ich werde es weiter unten im Text als qlproxy bezeichnen ). Für diejenigen, die es nicht wissen, ist QuintoLabs Content Security ein ICAP-Daemon / URL-Rewriter, der in den vorhandenen Squid-Proxyserver integriert ist und umfangreiche Funktionen zum Filtern von Inhalten bietet, um den Webverkehr zu bereinigen, der in interne Heim- / Unternehmensnetzwerke geleitet wird. Es kann verwendet werden, um illegale oder potenziell böswillige Dateidownloads zu blockieren, störende Werbung zu entfernen, den Zugriff auf verschiedene Kategorien der Websites zu verhindern und Ressourcen mit expliziten Inhalten zu blockieren (dh explizite und nicht jugendfreie Inhalte zu verbieten).

HINWEIS: Neben qlproxy gibt es noch andere Tools, die fast die gleiche Funktionalität haben. Einige der bekanntesten sind SquidGuard (SG) und DansGuardian (DG). Obwohl diese Tools aus theoretischer Sicht in Ordnung sind, müssen Sie beide installieren, um die gleiche Funktionalität wie qlproxy zu erhalten. SG wird als URL Rewriter ausgeführt und DG ist sogar als separater Proxy selbst. Die SMP-Verarbeitung wird ebenfalls nicht unterstützt, da ein ressourcenunwirksames Servermodell für den Prozess pro Verbindung verwendet wird, was zu explodierten Anforderungen beispielsweise an die URL-Blockdatenbank führt. Es ist auch ein Problem, SG und DG miteinander zu verbinden, da sie unterschiedliche Konfigurationsanweisungen haben und weitgehend unabhängig voneinander sind, sodass der Administrator zwei verschiedene Stellen untersuchen muss, wenn er nur eine Filterrichtlinie anpassen muss.

Wir werden die Version 2.0 von qlproxy verwenden, die diesen Monat veröffentlicht wurde. Das wichtigste Merkmal dieser Version ist eine richtlinienbasierte Webfilterung, bei der Benutzer des Proxys in mehreren Gruppen mit unterschiedlichen Strengebenen organisiert sind.

Standardmäßig sind in qlproxy drei Richtlinien vorinstalliert. Die strengen Richtlinien enthalten Webfiltereinstellungen, die auf maximaler Ebene festgelegt sind, und sollen Minderjährige und K-12-Schüler vor unangemessenen Inhalten im Internet schützen. Entspannte Richtlinien blockieren nur übermäßige Werbung und sind für Netzwerkadministratoren, Lehrer und alle Personen geeignet, die keinen gefilterten Zugriff auf das Web benötigen, aber die meisten Anzeigen umgehen möchten. Die letzte Gruppe ist Standard und enthält weniger restriktive Webfiltereinstellungen, die für das normale Surfen im Internet geeignet sind, jedoch ohne explizit angezeigten Inhalt für Erwachsene.

Das Gute daran ist, dass Sie die Richtlinien selbst entwerfen können, wenn Sie feststellen, dass die vordefinierten Richtlinien nicht für Ihre Netzwerkumgebung geeignet sind.

Um Content Security 2.0 zu installieren, müssen wir das CentOS / RedHat RPM-Paket manuell von der QuintoLabs-Website herunterladen und das Paket mit scp auf den Proxyserver hochladen. Eine andere Möglichkeit besteht darin, die folgenden Befehle direkt (als eine Zeile) in das Root-Terminal des Proxyservers einzugeben:

 #curl http://quintolabs.com/qlproxy/binaries/2.0.0/qlproxy-2.0.0-bb01d.i386.rpm>qlproxy-2.0.0-bb01d.i386.rpm 

Führen Sie nach Abschluss des Downloads (ca. 21 MB) den folgenden Befehl aus, um das heruntergeladene Paket und alle seine Abhängigkeiten zu installieren (beachten Sie, dass das Paket in der i386-Variante vorliegt, yum sich jedoch um die korrekte Installation auf x86_64-Architekturen kümmert):

 #yum localinstall qlproxy-2.0.0-bb01d.i386.rpm 

Der yum-Installationsmanager wird eine Weile ausgeführt und das Programm wird in / opt / quintolabs / qlproxy (Binärdateien), / var / opt / quintolabs / qlproxy (verschiedene Protokolle und Inhaltsfilterdatenbanken) und / etc / opt / quintolabs installiert / qlproxy (Konfiguration).

HINWEIS: In diesem HowTo wird davon ausgegangen, dass Sie SELinux auf Ihrem Computer deaktiviert haben. Spezifische Hinweise zur SELinux-basierten Installation von qlproxy finden Sie auf der Website und in der Beispielrichtlinie für SELinux, die in / opt / quintolabs / qlproxy / usr / share / selinux installiert ist . Um SELinux zu deaktivieren, setzen Sie SELINUX = deaktiviert in / etc / selinux / config und starten Sie neu.

Integrieren Sie Squid- und Content-Sicherheit

QuintoLabs Content Security kann auf zwei verschiedene Arten in Squid integriert werden - als ICAP-Server und als URL-Rewriter. Es wird empfohlen, die ICAP-Integration zu verwenden, da sie den Zugriff auf den gesamten HTTP-Verkehr ermöglicht, der über Squid geleitet wird, und qlproxy die vollständige Filterung von Anforderungen und Antworten ermöglicht (ICAP wird in Squid ab Version 3 unterstützt).

Die README-Datei im Ordner / etc / opt / quintolabs / qlproxy enthält detaillierte Anweisungen zur Durchführung der Integration mit Squid auf verschiedenen Plattformen (Debian, Ubuntu, RedHat und sogar Windows). Um es in Squid zu integrieren, das unter CentOS ausgeführt wird, müssen wir der Konfigurationsdatei /etc/squid/squid.conf die folgenden Zeilen hinzufügen :

 icap_enable on 
 icap_preview_enable on 
 icap_preview_size 4096 
 icap_persistent_connections ein 
 icap_send_client_ip on 
 icap_send_client_username on 
 icap_service qlproxy1 reqmod_precache bypass = 0 icap: //127.0.0.1: 1344 / reqmod 
 icap_service qlproxy2 respmod_precache bypass = 0 icap: //127.0.0.1: 1344 / respmod 
 adaptionszugriff qlproxy1 erlaube allen 
 adaptionszugriff qlproxy2 erlaube allen 

Starten Sie Squid neu, indem Sie service squid restart eingeben und versuchen, zu Ihren Lieblingswebsites zu surfen, um zu sehen, wie viele Anzeigen blockiert sind. Ein weiterer nützlicher Test besteht darin, auf der Website eicar.com ein Beispiel für einen künstlichen eicar.com-Virus herunterzuladen, um festzustellen, ob * .com-Dateien vom Download-Filter blockiert werden.

Die Standardinstallation von Content Security ist sofort einsatzbereit. Um sie jedoch an die zuvor beschriebenen Netzwerkanforderungen anzupassen, müssen einige Konfigurationsänderungen wie unten beschrieben vorgenommen werden (alle Pfade beziehen sich auf / etc / opt / quintolabs / qlproxy / Policies ):

  1. Fügen Sie alle normalen Benutzer in die Strict-Filterrichtlinie ein, indem Sie ihre IP-Adressen (oder Benutzernamen, wenn Ihr Squid eine Authentifizierung durchführt) zur Datei strict / member.conf hinzufügen.
  2. Fügen Sie alle Hauptbenutzer in die Richtlinie "Entspannte Filterung" ein, indem Sie ihre IP-Adressen oder Benutzernamen zur Datei "Relaxed / Members.conf" hinzufügen.
  3. Aktivieren Sie erweiterte AdBlock-Abonnements zum Blockieren von englischen, deutschen und russischen Anzeigen in der Konfigurationsdatei block_ads.conf für beide Richtlinien. Blockieren Sie außerdem gängige Web-Tracking-Engines, indem Sie das EasyPrivacy-Abonnement in denselben Dateien auskommentieren.
  4. Erhöhen Sie die Blockierungsheuristik für Erwachsene in der Datei strict / block_adult_sites.conf auf "hoch". Obwohl dies zu einer übermäßigen falschen Blockierung führen kann, besteht immer die Möglichkeit, falsch blockierte Websites zu einer Ausnahmeliste hinzuzufügen.
  5. Das UrlBlock-Modul, das eine von der Community entwickelte Datenbank mit kategorisierten Domains verwendet, ordnet blogspot.com fälschlicherweise einer Kategorie für Erwachsene zu. Daher werden wir es der Ausnahmeliste einer entspannten Richtlinie in entspannter / Ausnahmen.conf hinzufügen, um die lesen zu können Blogs.
  6. Da wir wissen, dass Würmer, Trojaner und andere Malware-bezogene Software häufig über numerische IP-Adressen anstelle von normalen Hostnamen mit der Welt verbunden sind, werden wir eine magische reguläre Ausdrucks-URL = http: // \ d + \. \ D + \. \ D + \. \ D + setzen /.* in die Datei strict / block_sites_by_name.conf, um den Zugriff auf Websites per IP zu blockieren.

Geben Sie nun einen Neustartbefehl ein, damit der qlproxyd-Daemon die Konfiguration /etc/init.d/qlproxy neu startet.

Richten Sie die Web-Benutzeroberfläche für Inhaltssicherheit mit Apache ein

QuintoLabs Content Security enthält eine minimale Web-Benutzeroberfläche, mit der Sie die aktuelle Programmkonfiguration anzeigen, Berichte über Nutzungsaktivitäten und Programmprotokolle von einem Remote-Host mit Ihrem bevorzugten Browser anzeigen können. Die Web-Benutzeroberfläche wurde mit Django Python Framework geschrieben und mithilfe von mod_wsgi, das in einer virtualisierten Python-Umgebung bereitgestellt wird, in Apache integriert (um Paketabhängigkeiten zu minimieren).

Geben Sie zum Installieren von Apache Folgendes in das Root-Terminal ein. Yum install httpd . Führen Sie den Autostart des Apache-Dienstes beim Systemstart durch, indem Sie chkconfig httpd on eingeben . Starten Sie Ihren Computer neu oder starten Sie Apache zum ersten Mal manuell, indem Sie den Dienst httpd start eingeben. Installieren Sie dann zusätzliche Apache- und Python-Module, indem Sie das Root-Terminal eingeben:

 #yum install mod_wsgi python-setuptools 
 #easy_install virtualenv 
 #cd / var / opt / quintolabs / qlproxy / www 
 #virtualenv --no-site-packages qlproxy_django 
 #. / qlproxy_django / bin / easy_install django 
 Integrieren Sie die Web-Benutzeroberfläche in Apache, indem Sie der Konfigurationsdatei /etc/httpd/httpd.conf die folgenden Zeilen hinzufügen: 
 Servername proxy.lan 
 ServerAdmin 
 LogLevel-Informationen 
 ErrorLog /var/log/httpd/proxy.lan-error.log 
 CustomLog /var/log/httpd/proxy.lan-access.log kombiniert 
 # Aliase für statische Dateien (müssen vor den Einstellungen von mod_wsgi stehen) 
 Alias ​​/ static / / var / opt / quintolabs / qlproxy / www / qlproxy / static / 
 Alias ​​/ redirect / / var / opt / quintolabs / qlproxy / www / qlproxy / redirect / 
 # mod_wsgi Einstellungen 
 WSGIDaemonProcess proxy.lan Anzeigename =% {GROUP} 
 WSGIProcessGroup proxy.lan 
 WSGIScriptAlias ​​/ /var/opt/quintolabs/qlproxy/www/qlproxy/qlproxy.wsgi 
 Bestellung verweigern, erlauben 
 Erlaube von allen 

Fügen Sie der Datei /etc/httpd/conf.d/wsgi.conf die folgende Zeile hinzu, damit mod_wsgi im Daemon-Modus ausgeführt wird:

 WSGISocketPrefix / var / run / wsgi 
ANMERKUNG : Wenn beim Versuch, auf http: // localhost zuzugreifen, die Fehlerseite "Zugriff verweigert" angezeigt wird, überprüfen Sie, ob SELinux-Berechtigungen möglicherweise den Zugriff auf das Verzeichnis / var / opt / quintolabs / qlproxy / www / qlproxy / für den httpd-Prozess verhindern.

Navigieren Sie nach dem Neustart von Apache zu http://192.168.1.2/qlproxy, um die Programmkonfiguration, Protokolle und generierten Berichte anzuzeigen.

Letzter Schritt

Sie müssen nur noch Netzwerkbenutzer auf Proxy Server verweisen. Es gibt verschiedene Möglichkeiten, dies automatisch zu tun (denken Sie an WPAD), aber zu Testzwecken sollte die manuelle Proxy-Konfiguration mehr als ausreichend sein. Zeigen Sie mit dem Browser auf den Proxy auf 192.168.1.4, Port 3128, surfen Sie zu einigen bevorzugten Websites und sehen Sie den Unterschied: IP-Adressen in URLs sind blockiert, explizit Websites mit Inhalten für Erwachsene sind verboten. Die RAM- und CPU-Auslastung auf dem Server ist minimal, das Surferlebnis ist akzeptabel. Das System wird automatisch einmal täglich für die neueste URL-Sperrliste und AdBlock-Abonnements aktualisiert und erfordert nur minimale zusätzliche Wartung.

Weitere Informationen finden Sie in den folgenden Ressourcen:

  • http://www.centos.org
  • http://www.squid-cache.org
  • http://www.quintolabs.com/qlicap_info.php
  • http://issues.quintolabs.com/trac/quintolabs_qlicap/wiki/QlicapDocs

Der Autor Rafael Akchurin ist Mitbegründer, Support-Ingenieur und Evangelist für QuintoLabs.

© Copyright 2021 | mobilegn.com