Konfigurieren von Squid Proxy Server mit eingeschränktem Zugriff und Einrichten von Clients zur Verwendung von Proxy - Teil 5
- 2430
- 567
- Aileen Dylus
A Linux Foundation Certified Engineer ist ein qualifizierter Fachmann, der über das Know-how verfügt, um Netzwerkdienste in Linux-Systemen zu installieren, zu verwalten und zu beheben, und ist für das Design, die Implementierung und die laufende Wartung der systemweiten Architektur verantwortlich.
Linux Foundation Certified Engineer - Teil 5Einführung des Linux Foundation -Zertifizierungsprogramms.
In Teil 1 Von dieser Serie haben wir gezeigt, wie man Squid, einen Proxy -Caching -Server für Web -Clients, installiert. Bitte beachten Sie diesen Beitrag (unten angegeben), bevor Sie fortfahren, wenn Sie Squid in Ihrem System noch nicht installiert haben.
- Teil 1 - Installieren Sie Netzwerkdienste und konfigurieren automatischer Start beim BOOT
In diesem Artikel zeigen wir Ihnen, wie Sie den Squid Proxy -Server konfigurieren, um den Internetzugang zu gewähren oder einzuschränken, und wie Sie einen HTTP -Client oder Webbrowser konfigurieren, um diesen Proxy -Server zu verwenden.
Meine Testumgebung Setup
Tintenfischserver
Betriebssystem: Debian Wheezy 7.5 IP -Adresse: 192.168.0.15 Hostname: Dev2.GabrielCanepa.com.ar
Client -Maschine 1
Betriebssystem: Ubuntu 12.04 IP -Adresse: 192.168.0.104 Hostname: Ubuntuos.GabrielCanepa.com.ar
Client -Maschine 2
Betriebssystem: CentOS-7.0-1406 IP-Adresse: 192.168.0.17 Hostname: Dev1.GabrielCanepa.com.ar
Denken wir daran, dass ein Web -Proxy -Server in einfachen Worten ein Vermittler zwischen einem (oder mehr) Client -Computern und einer bestimmten Netzwerkressource ist, wobei am häufigsten Zugriff auf das Internet ist. Mit anderen Worten, der Proxy -Server ist direkt mit dem Internet (oder einem Router, der mit dem Internet verbunden ist) und auf der anderen Seite mit einem Netzwerk von Client -Computern angeschlossen ist.
Sie fragen sich vielleicht, warum ich meiner Netzwerkinfrastruktur eine weitere Software hinzufügen möchte?
Hier sind die Top 3 Gründe:
1. Squid speichert Dateien aus früheren Anfragen, um zukünftige Überweisungen zu beschleunigen. Zum Beispiel annehmen Client1 Downloads CentOS-7.0-1406-X86_64-DVD.ISO aus dem Internet. Wenn Client2 Fordert den Zugriff auf dieselbe Datei an. Squid kann die Datei aus dem Cache übertragen, anstatt sie erneut aus dem Internet herunterzuladen. Wie Sie erraten können, können Sie diese Funktion verwenden, um Datenübertragungen in einem Netzwerk von Computern zu beschleunigen, die häufige Aktualisierungen erfordern.
2. ACLS (Zugriffskontrolllisten) Erlauben Sie uns, den Zugriff auf Websites einzuschränken und / oder den Zugriff pro Benutzerbasis zu überwachen. Sie können den Zugang basierend auf dem Tag der Woche oder der Tageszeit oder der Domäne einschränken.
3. Umgehung von Webfiltern wird durch die Verwendung eines Web -Proxy ermöglicht, anhand derer Anfragen gestellt werden und welche angeforderten Inhalte an einen Kunden zurückgegeben werden, anstatt den Kunden direkt im Internet zu fordern.
Angenommen, Sie sind angemeldet in Client1 und wollen zugreifen www.Facebook.com Über den Router Ihres Unternehmens. Da die Site möglicherweise durch die Richtlinien Ihres Unternehmens blockiert wird, können Sie stattdessen eine Verbindung zu einem Web -Proxy -Server herstellen und zu Zugriff auf den Zugriff erhalten www.Facebook.com. Remote -Inhalte werden dann erneut über den Web -Proxy -Server an Sie zurückgegeben, wodurch die Blockierungsrichtlinien Ihres Unternehmens des Routers umgangen werden.
Konfigurieren von Tintenfisch - die Grundlagen
Das Zugriffskontrollschema des Squid -Web -Proxy -Servers besteht aus zwei verschiedenen Komponenten:
- Der ACL -Elemente sind Richtlinien, die mit dem Wort beginnen “ACL”Und stellen Arten von Tests dar, die gegen jede Anfrage -Transaktion durchgeführt werden.
- Der Zugriffslistenregeln bestehen aus einem erlauben oder leugnen Maßnahmen gefolgt von einer Reihe von ACL. Sie werden in der Reihenfolge überprüft und die Suche durch die Suche endet, sobald eine der Regeln eine Übereinstimmung ist. Wenn eine Regel mehrere ACL -Elemente aufweist, wird sie als Boolesche und Operation implementiert (alle ACL -Elemente der Regel müssen eine Übereinstimmung sein, damit die Regel übereinstimmt).
Die Hauptkonfigurationsdatei des Tintenfuchs ist /etc/squid/squid.Conf, welches ist ~ 5000 Zeilen längst sowohl Konfigurationsrichtlinien als auch Dokumentation enthält. Aus diesem Grund werden wir eine neue erstellen Tintenfisch.Conf Datei mit nur den Zeilen, die Konfigurationsrichtlinien für unsere Bequemlichkeit enthalten, und leere oder kommentierte Zeilen auslassen. Dazu werden wir die folgenden Befehle verwenden.
# mv/etc/squid/squid.conf/etc/squid/squid.Conf.BKP
Und dann,
# grep -eiv '(^# |^$)'/etc/squid/squid.Conf.BKP oder # Grep -ve ^ # -ve ^$/etc/squid/squid.Conf.BKP>/etc/squid/squid.ConfSicherungs -Tintenfisch -Konfigurationsdatei
Öffnen Sie nun die neu erstellten Tintenfisch.Conf Datei und suchen (oder hinzufügen) Folgendes ACL Elemente und Zugriffslisten.
ACL localhost src 127.0.0.1/32 ACL Localnet SRC 192.168.0.0/24
Die beiden obigen Zeilen stellen ein grundlegendes Beispiel für die Verwendung von dar ACL Elemente.
- Das erste Wort, ACL, Zeigt an, dass dies eine ACL -Element -Direktive -Zeile ist.
- Das zweite Wort, Lokalhost oder Lokalnet, Geben Sie einen Namen für die Richtlinie an.
- Das dritte Wort, src In diesem Fall handelt. Sie können einen einzelnen Host per IP (oder Hostname, wenn Sie eine Art von DNS -Auflösung implementiert) oder per Netzwerkadresse angeben.
- Der vierte Parameter ist ein Filterargument, das ist “gefüttert”Zur Richtlinie.
Die beiden folgenden Zeilen sind Zugangsliste Regeln und stellen eine explizite Umsetzung der ACL Richtlinien zuvor erwähnt. In wenigen Worten geben sie das an HTTP -Zugriff sollte gewährt werden, wenn die Anfrage aus dem lokalen Netzwerk stammt (Lokalnet) oder von Lokalhost. Insbesondere, was sind die zulässigen lokalen Netzwerk- oder lokalen Host -Adressen? Die Antwort lautet: diejenigen, die in den Richtlinien Localhost und Localnet angegeben sind.
http_access erlauben localNet http_access localhost erlaubenTintenfisch -ACL Zugriffsliste zulassen
An diesem Punkt können Sie neu starten Tintenfisch Um an vorstehende Änderungen angewendet zu werden.
# Service Squid Neustart [Upstart / sysvinit-basierte Verteilungen] # SystemCTL Neustart Tintenfisch.Service [systemd-basierte Verteilungen]
und dann einen Clientbrowser im lokalen Netzwerk konfigurieren (192.168.0.104 in unserem Fall), um über Ihren Stellvertreter wie folgt auf das Internet zuzugreifen.
In Firefox
1. Gehe zum Bearbeiten Menü und wählen Sie die Vorlieben Möglichkeit.
2. Klicke auf Fortschrittlich, dann auf der Netzwerk Registerkarte und schließlich auf Einstellungen…
3. Überprüfen Manuelle Proxy -Konfiguration und betreten Sie die IP Adresse des Proxyservers und der Hafen wo es nach Verbindungen hört.
Konfigurieren Sie den Proxy in FirefoxNotiz Das hört Squid standardmäßig auf Port zu 3128, Sie können dieses Verhalten jedoch überschreiben, indem Sie die bearbeiten Zugangsliste Regel, die mit http_port (Standardmäßig liest es http_port 3128).
4. Klicken OK Um die Änderungen anzuwenden, und Sie können loslegen.
Überprüfen Sie, ob ein Kunde auf das Internet zugreift
Sie können nun überprüfen.
1. Öffnen Sie in Ihrem Kunden a Terminal und Typ,
# IP -Adresse anzeigen eth0 | grep -ei '(inet.*eth0) '
In diesem Befehl wird der aktuelle angezeigt IP Adresse Ihres Kunden (192.168.0.104 im folgenden Bild).
2. Verwenden Sie in Ihrem Client einen Webbrowser, um eine bestimmte Website zu öffnen ((www.Tecmint.com in diesem Fall).
3. Auf dem Server ausführen.
# Tail -f/var/log/squid/access.Protokoll
Und Sie erhalten eine Live -Sicht auf die Anfragen, die durchgesetzt werden Tintenfisch.
Überprüfen Sie das Surfen des ProxyEinschränkung des Zugriffs durch den Kunden
Nehmen wir nun an, Sie möchten den Zugriff auf diese bestimmte Client -IP -Adresse explizit verweigern und gleichzeitig den Rest des lokalen Netzwerks aufrechterhalten.
1. Definieren Sie eine neue ACL Richtlinie wie folgt (ich habe es benannt Ubuntuos Aber Sie können es nennen, was Sie wollen).
ACL Ubuntuos SRC 192.168.0.104
2. Ergänzen Sie die ACL Richtlinie zur Localnet Access List, die bereits vorhanden ist, aber es mit einem Ausrufezeichen vorziehen. Das heisst, "Ermöglichen”.
http_access erlauben localNet !Ubuntuos
3. Jetzt müssen wir Squid neu starten, um Änderungen anzuwenden. Wenn wir dann versuchen, auf einer Website zu stöbern, werden wir feststellen, dass der Zugriff jetzt abgelehnt wird.
Internetzugang blockierenKonfigurieren von Tintenfisch - Feinabstimmung
Einschränkung des Zugriff
Um den Zugriff auf Squid per Domain einzuschränken, werden wir die verwenden ddomain Schlüsselwort in a ACL Richtlinie wie folgt.
ACL verboten DStdomain "/etc/squid/forbidden_domains"
Wo Verbotene_Domains ist eine einfache Textdatei, die die Domänen enthält, zu denen wir den Zugriff verweigern möchten.
Zugriff auf Domänen blockierenSchließlich müssen wir Zugriff auf Squid für Anfragen gewähren, die nicht mit der obigen Richtlinie übereinstimmen.
http_access erlauben localNet !verboten
Oder vielleicht möchten wir während einer bestimmten Tageszeit nur Zugriff auf diese Websites zulassen (10:00 bis 11:00 Uhr) nur an Montag (m), Mittwoch (w), Und Freitag (f).
ACL Somedays Time MWF 10: 00-11: 00 HTTP_ACCESS Ermöglichen
Andernfalls wird der Zugriff auf diese Domänen blockiert.
Einschränkung des Zugriffs durch Benutzerauthentifizierung
Squid unterstützen mehrere Authentifizierungsmechanismen (Basic, NTLM, Digest, SPNego und OAuth) und Helfer (SQL -Datenbank, LDAP, NIS, NCSA, um nur einige zu nennen). In diesem Tutorial werden wir die grundlegende Authentifizierung mit verwenden NCSA.
Fügen Sie Ihren folgenden Zeilen hinzu /etc/squid/squid.Conf Datei.
auth_param grundlegendes Programm/usr/lib/squid/ncsa_auth/etc/squid/passwd auth_param grundlegenderTialsttl 30 Minuten Auth_Param Basic CaseSivesitive auf Auth_Param Basic Realm Squid Proxy-Caching-Webserver für Tecmint-Serie ACL NCSA Proxy_ATHESCUTH HTTP_AUTH HTTP_AUTH HELTP_AUTH HELTECESCESS DUF ACLSA ANGEBETTE
Notiz: In Centos 7, Das NCSA -Plugin für Tintenfisch kann in gefunden werden /usr/lib64/squid/basic_nsca_auth, Wechseln Sie also entsprechend in der obigen Zeile.
Aktivieren Sie die NCSA -AuthentifizierungEin paar Klarstellungen:
- Wir müssen Tintenfisch sagen, welches Authentifizierungsprogramm mit dem verwendet werden soll auth_param Richtlinie durch Angabe des Namens des Programms (höchstwahrscheinlich, /usr/lib/squid/ncsa_auth oder /usr/lib64/squid/basic_nsca_auth) sowie alle Befehlszeilenoptionen (Optionen (/etc/squid/passwd in diesem Fall) gegebenenfalls.
- Der /etc/squid/passwd Datei wird durch erstellt htpasswd, Ein Tool zur Verwaltung der grundlegenden Authentifizierung über Dateien. Dadurch können wir eine Liste von Benutzernamen (und ihren entsprechenden Passwörtern) hinzufügen, mit denen Squid verwendet werden darf.
- Anmeldeinformationen 30 Minuten erfordert alle 30 Minuten in Ihren Benutzernamen und Ihr Passwort (Sie können dieses Zeitintervall auch mit Stunden angeben).
- Fallsensitiv Ein auf.
- Reich repräsentiert den Text des Authentifizierungsdialogs, mit dem sich die Authentifizierung mit Tintenfisch authentifiziert.
- Schließlich wird der Zugriff nur dann gewährt, wenn die Proxy -Authentifizierung (Proxy_Auth erforderlich) gelingt es.
Führen Sie den folgenden Befehl aus, um die Datei zu erstellen und Anmeldeinformationen für den Benutzer hinzuzufügen Gacanepa (weglassen -C FLAGEN Sie, wenn die Datei bereits vorhanden ist).
# htpasswd -c/etc/squid/passwd gacanepaBeschränken Sie den Zugriff auf den Tintenfisch auf Benutzer
Öffnen Sie einen Webbrowser im Client -Computer und versuchen Sie, zu einer bestimmten Website zu suchen.
Aktivieren Sie die TintenfischauthentifizierungWenn die Authentifizierung erfolgreich ist, wird die angeforderte Ressource Zugriff gewährt. Andernfalls wird der Zugang abgelehnt.
Verwenden von Cache, um die Datenübertragung zu beschleunigen
Eines der Unterscheidungsmerkmale von Squid ist die Möglichkeit, Ressourcen, die vom Web zu Festplatte angefordert werden.
Fügen Sie die folgenden Richtlinien in Ihrem hinzu Tintenfisch.Conf Datei.
cache_dir ufs/var/cache/squid 1000 16 256 Maximum_Object_size 100 mb refresh_pattern .*\.(MP4 | ISO) 2880
Ein paar Klarstellungen der oben genannten Richtlinien.
- UFS ist das Squid -Speicherformat.
- /var/cache/squid ist ein Verzeichnis auf höchster Ebene, in dem Cache-Dateien gespeichert werden. Dieses Verzeichnis muss existieren und von Tintenfisch beschrieben werden (Squid erstellt dieses Verzeichnis nicht für Sie).
- 1000 ist der Betrag (in MB), der unter diesem Verzeichnis verwendet wird.
- 16 ist die Anzahl der Unterverzeichnisse der ersten Ebene, während 256 ist die Anzahl der Unterverzeichnisse der zweiten Ebene innerhalb /var/spool/squid.
- Der Maximum_Object_size Die Richtlinie gibt die maximale Größe der zulässigen Objekte im Cache an.
- refresh_pattern teilt Squid an, wie man mit bestimmten Dateitypen umgeht (.MP4 Und .ISO in diesem Fall) und wie lange es die angeforderten Objekte im Cache speichern sollte (2880 Minuten = 2 Tage).
Der erste und zweite 2880 sind untere bzw. obere Grenzen, wie lange Objekte ohne explizite Ablaufzeit als jüngsten angesehen werden und somit vom Cache bedient werden, während er während des Cache bedient wird, während 0% Ist der Prozentsatz des Alters der Objekte (Zeit seit der letzten Änderung), dass jedes Objekt ohne ausdrückliche Ablaufzeit in jüngster Zeit betrachtet wird.
Fallstudie: herunterladen a .MP4 -Datei aus 2 verschiedenen Clients und Testen des Cache
Erster Kunde (IP 192.168.0.104) Downloads a 71 MB .MP4 Datei in 2 Minuten und 52 Sekunden Datei.
Aktivieren Sie das Caching am TintenfischZweiter Kunde (IP 192.168.0.17) lädt dieselbe Datei in 1 herunter.4 Sekunden!
Überprüfen Sie das Caching von TintenfischDas liegt daran, dass die Datei von der serviert wurde Tintenfischcache (angezeigt durch Tcp_hit/200) im zweiten Fall im Gegensatz zu der ersten Instanz, als es direkt aus dem Internet heruntergeladen wurde (dargestellt von durch Tcp_miss/200).
Der SCHLAG Und VERMISSEN Schlüsselwörter zusammen mit dem 200 Http Antwortcode geben an, dass die Datei in beiden Male erfolgreich zugestellt wurde, der Cache jedoch getroffen und verpasst wurde. Wenn eine Anfrage aus irgendeinem Grund nicht vom Cache bedient werden kann, versucht Tintenfisch, sie aus dem Internet zu bedienen.
Tintenfisch -HTTP -CodesAbschluss
In diesem Artikel haben wir diskutiert, wie man a einrichtet Tintenfisch -Web -Caching -Proxy. Sie können den Proxy -Server verwenden, um Inhalte mithilfe einer ausgewählten Kriterien zu filtern und auch die Latenz zu verringern (da identische eingehende Anforderungen aus dem Cache bedient werden, der näher am Client ist als der Webserver, der den Inhalt tatsächlich bedient, was zu schneller ist Datenübertragungen) und Netzwerkverkehr (Reduzierung der Menge der gebrauchten Bandbreite, wodurch Sie Geld sparen, wenn Sie für den Datenverkehr bezahlen).
Möglicherweise finden Sie auf der Squid -Website, um weitere Unterlagen zu erhalten (überprüfen Sie auch das Wiki), zögern Sie jedoch nicht, uns zu kontaktieren, wenn Sie Fragen oder Kommentare haben. Wir werden mehr als froh sein, von Ihnen zu hören!
Werden Sie ein Linux -zertifizierter Ingenieur- « Einrichten von Standard -Linux -Dateisystemen und Konfigurieren des NFSV4 -Servers - Teil 2
- So richten Sie den Standalone -Apache -Server mit Namensbasis virtuellem Hosting mit SSL -Zertifikat ein - Teil 4 »