
1. Einleitung
Das Thema Inhaltsfilterung in Schulen ist ziemlich abgedroschen und voller Informationen, aber es ist bereits ziemlich veraltet, da viele Websites auf das sichere HTTPS-Protokoll umgestellt werden, mit dem die meisten vorgeschlagenen Lösungen nicht funktionieren. Aus diesem Grund habe ich beschlossen, den vollständigsten Artikel von A bis Z zu schreiben und alle Informationen, die ich in den Google-Erweiterungen gefunden habe, zusammen zu sammeln. Der Artikel richtet sich an Grundkenntnisse im Bereich Verwaltung und ist für Informatiklehrer geeignet.
2. Leistungsbeschreibung
Gegeben: 436-FZ und eine Schule, in der viele Computer über einen MikroTik-Router oder einen anderen vernetzt und mit dem Internet verbunden sind.
Ziel: Inhaltsfilterung von HTTP und HTTPS nach Whitelist für alle außer Ihrer Geliebten und der Schulleitung.
3. Problemlösung
Es wurde ein nicht verwendeter Desktop-Computer mit einem Dual-Core-Intel-Ohm, 1 GB RAM und harten 80 GB gefunden.
Um dies zu lösen, wird Folgendes durchgeführt:
- Linux Ubuntu Server 18.04 LTS installiert
- Transparent Proxy Squid wird auf dem Server installiert und konfiguriert und aus Quellcodes mit HTTPS-Unterstützung kompiliert.
- Integration des Servers in das Subnetz durch Umleiten von Anforderungen an Proxy oder eine alternative Option (ganz am Ende)
Fangen wir an.
3.1. Installieren und konfigurieren Sie Ubuntu 18.04
Der Installationsvorgang ist einfach. Laden Sie die Distribution von Ubuntu Server 18.04 von der offiziellen Website herunter. Ich empfehle das Herunterladen mit dem alten Installationsprogramm, da das neue, persönlich von mir, während der Installation unendlich heruntergeladen wurde. Wir schreiben das Bild auf bequeme Weise auf ein USB-Flash-Laufwerk. Für die Aufnahme auf einem USB-Stick empfehle ich die Verwendung von Rufus und wähle zu Beginn der Aufnahme „DD-Bild aufnehmen“. Installieren Sie anschließend das System gemäß den Informationen auf dem Bildschirm. Wir beschäftigen uns nur mit der Auswahl der Komponenten, bei denen Sie sofort OpenSSH auswählen können und das war's. Wir brauchen nicht viel, aber wir müssen installieren, was wir brauchen.
Also ist Ubuntu installiert. Wenn Sie über DHCP verfügen, ist das Netzwerk bereits konfiguriert. Wir werden in den Superuser-Modus wechseln, damit wir den Befehlen nicht jedes Mal sudo hinzufügen.
sudo -s
Geben Sie Ihr Passwort ein und aktualisieren Sie das System.
apt-get update apt-get upgrade
Installieren Sie einen Texteditor und einen Dateimanager.
apt-get install nano mc
Um die Datei in
Nano zu speichern, müssen Sie
Strg + O gefolgt von
Y drücken. Beenden Sie den Editor, indem Sie
Strg + X drücken. Sie können die Datei unmittelbar vor dem Beenden speichern, indem Sie
Strg + X gefolgt von
Y drücken.
Geben Sie mc ein, um den Dateimanager zu öffnen. Ein typisches NortonCommander DOS oder Windows TotalCommander / FAR wird mit zwei Bedienfeldern geöffnet. Obwohl ich es gewohnt bin, mit der Konsole zu arbeiten, hilft der Dateimanager manchmal auch, beispielsweise die gewünschte Datei schneller zu finden.
Wenn Sie kein DHCP haben oder eine separate IP-Adresse für Ihren Server wünschen, wie ich es wollte, fahren wir mit der Konfiguration fort.
Konfigurieren Sie die statische IP-AdresseIm Gegensatz zu früheren Versionen von Ubuntu wird das Netzwerk in der neuen Version 18.04 nicht mehr in den üblichen
/ etc / network / interfaces konfiguriert , sondern über netplan in der Datei
/etc/netplan/*.yaml . Die Datei kann anders benannt sein, ist aber nur dort. / Etc / network / interfaces selbst schreibt uns folgendes:

Wenn Sie ein Upgrade von einer Version durchführen möchten, die älter als 18.04 ist, bleiben die Netzwerkeinstellungen unverändert. Netplan ist nur für eine Neuinstallation vom 18.04. Relevant.
Kommen wir zum Einrichten des Netzwerks.
Schauen wir uns zunächst den Namen der dem Betriebssystem zugewiesenen Netzwerkschnittstelle an und merken uns diesen.
ifconfig
Öffnen Sie nun die Einstellungsdatei.
nano /etc/netplan
Es sollte bereits eine DHCP-Einstellung haben. Bringen wir die Datei in das folgende Formular.
# This file describes the network interfaces available on your system # For more information, see netplan(5). network: version: 2 renderer: networkd ethernets: : dhcp4: no dhcp6: no addresses: [/24] gateway4: nameservers: addresses: [77.88.8.7, 77.88.8.3]
Geben Sie Ihre Schnittstelle, Adresse und Ihr Gateway ein. DNS empfiehlt, diese zu verlassen - Yandex.DNS Kinder werden als zusätzlicher Schutz dienen. Das gleiche DNS ist in meinem Router konfiguriert. In jedem Fall müssen Sie den DNS angeben, den der Router verteilt.
Hier müssen Sie auf Leerzeichen achten (nämlich Leerzeichen, keine Tabulatoren). Jede Art von Absatz ist vom vorherigen Leerzeichen getrennt. Wenn beispielsweise nach Nameservern die Adresszeile nicht durch ein Leerzeichen getrennt, sondern an der obigen Zeile ausgerichtet ist, gibt netplan beim Versuch, die Einstellungen anzuwenden, einen Fehler aus.
Übernehmen Sie die Einstellungen.
netplan apply
Starten Sie den Server für alle Fälle neu.
reboot
Außerdem fügte er eine alternative Netzwerkkonfigurationsoption für DHCP und statische IP hinzu, falls Netplan nicht passt.
Alternative NetzwerkeinrichtungIn Ubuntu 18.04 können Sie über
/ etc / network / interfaces zur bekannten Netzwerkkonfigurationsoption zurückkehren. Zu diesem
Zweck gibt die Datei selbst an, dass Sie das Dienstprogramm
ifupdown installieren
müssen . Installieren Sie es:
apt-get install ifupdown
Öffnen Sie nun die Grundeinstellungsdatei in netplan
nano /etc/netplan
und kommentieren Sie alle Inhalte aus, damit es keine Konflikte gibt.
Öffnen Sie als Nächstes die Netzwerkeinstellungsdatei
nano /etc/network/interfaces
Und fügen Sie hinzu:
für statische IP
auto ___ iface ___ inet static address IP- netmask gateway dns-nameservers 77.88.8.7 77.88.8.3
für dynamisch (DHCP)
auto ___ iface ___ inet dhcp
Starten Sie den Server neu
reboot
Wenn Sie diese Option zum Konfigurieren des Netzwerks verwenden, können Sie in den Firewall-Einstellungen Webmin ganz deaktivieren und die Konfigurationsoption unter dem Spoiler verwenden (obwohl die Option mit Webmin auch funktioniert).
Jetzt müssen Sie die Übertragung von Paketen durch unseren Server aktivieren. Öffnen Sie die Datei
/etc/sysctl.conf nano /etc/sysctl.conf
Wir
suchen darin nach dem String
net.ipv4.ip_forward = 1 und kommentieren ihn aus. Wenn der Wert
0 ist , wechseln Sie zu
1 .
Geben Sie den Befehl ein, um die Einstellung zu übernehmen
sysctl -p /etc/sysctl.conf
Nach dem Einrichten des Netzwerks empfehle ich, dass Sie direkt zum Terminal gehen und dort weiterarbeiten. Wenn Sie dazu während der Installationsphase nicht OpenSSH ausgewählt haben, installieren Sie es.
apt-get install ssh
Standardmäßig ist SSH bereits für die Benutzer- / Kennwortanmeldung an Port 22 konfiguriert. Sie können es jedoch selbst konfigurieren, z. B. über einen Autorisierungsschlüssel und einen anderen Port, um den Server vor Angriffen von außen zu schützen. Wie das geht, ist voller Informationen im Internet.
Als Terminal verwende ich XShell. Sie können die von Ihnen bevorzugte verwenden.
Wir benötigen keinen DHCP-Server und keine zweite Netzwerkkarte, da wir Benutzeranforderungen über den Router selbst an unseren Proxy umleiten.
Der Grundstein wird gelegt. Fahren wir nun mit der Installation und Konfiguration von Squid fort.
3.2. Installieren und Konfigurieren von Squid mit HTTPS-Unterstützung und Listenfilterung
3.2.1. Squid erstellen und installierenDa es in den Repositorys kein fertiges Squid-Paket mit SSL-Unterstützung gibt, müssen Sie es manuell aus der Quelle zusammenstellen. Öffnen Sie zunächst die Datei mit den Repositorys.
nano /etc/apt/sources.list
Darin kommentieren wir (am Anfang # löschen) die Zeilen, die mit
deb-src beginnen .
Danach werden wir die Pakete aktualisieren.
apt-get update
Installieren Sie als Nächstes die Montagewerkzeuge.
apt-get install fakeroot build-essential devscripts
Und fügen Sie alle notwendigen Pakete für die Montage hinzu.
apt-get build-dep squid3
Installieren Sie die Bibliothek für die SSL-Unterstützung.
apt-get install libssl1.0-dev
Gehen wir zum Basisordner und erstellen einen Ordner für die Assembly, wobei Sie sofort die erforderlichen Rechte dafür festlegen.
cd ~ mkdir build chown _apt:root build
Gehen Sie zum erstellten Ordner und laden Sie die Squid-Quellen herunter.
cd build apt-get source squid3
Im Build-Ordner wird ein Ordner mit dem Namen squid3 und der Versionsnummer angezeigt. Unter Ubuntu 18.04.3 ist es 3.5.27. Lass uns darauf eingehen.
cd squid3-3.5.27
Vor dem Zusammenbau müssen Sie Optionen angeben. Öffnen Sie die Datei mit ihnen.
nano debian/rules
Wir suchen nach einer Liste von Optionen, wie auf dem Bild

Fügen Sie die folgenden Optionen hinzu.
--enable-ssl \ --enable-ssl-crtd \ --with-openssl
Bitte beachten Sie, dass dem Bild bereits Optionen hinzugefügt wurden und das Zeichen
"\" nach jeder Zeile in den Optionen mit
Ausnahme der letzten Zeile angezeigt werden sollte.
Damit ist alles montagefertig. Fahren wir nun mit dem Squid-Quellordner fort, obwohl Sie sich bereits darin befinden sollten.
cd ~/build/squid3-3.5.27
Und geben Sie den Befehl zum Erstellen ein.
debuild -d
Die Montage wird sehr lange dauern, ich habe durchschnittlich 2 bis 4 Stunden gebraucht. Hängt von der Geschwindigkeit des Computers ab. Am Ende der Assembly wird ein Paketsignaturfehler angezeigt. Dies ist normal - ignorieren Sie den Fehler.
Gehen Sie nun zum Build-Ordner.
cd ~/build
Und installiere Squid.
dpkg -i squid*.deb
Führen Sie sofort einen Fehler über nicht erfüllte Abhängigkeiten aus und geben Sie den Befehl ein
apt-get install -f
Nach der Installation markieren wir die Pakete so, dass sie nach der Aktualisierung des Systems nicht überschrieben werden.
apt-mark hold squid apt-mark hold squid-common apt-mark hold squidclient
3.2.2. Tintenfisch konfigurieren und filternAlso, Squid ist installiert, es bleibt, um es für unsere Bedürfnisse zu konfigurieren.
Alle Einstellungen befinden sich in der Datei
/etc/squid/squid.conf . Es enthält viele Kommentare und auf den ersten Blick scheint es sehr kompliziert zu sein, aber tatsächlich ist nichts sehr kompliziertes daran. Zunächst werden wir Kommentare entfernen, indem wir zuerst das Original kopieren, wenn Sie es plötzlich genauer untersuchen möchten. Der Einfachheit halber gehen wir mit Squid direkt zum Ordner.
cd /etc/squid cp squid.conf squid.conf.backup cat squid.conf.backup | egrep "^[^#]" > squid.conf
Öffnen Sie jetzt squid.conf
nano squid.conf
Wie Sie sehen können, hat er sich von Kommentaren befreit und ist nicht mehr so sperrig, wie er schien.
Unter dem Spoiler werde ich meine Datei mit Einstellungen veröffentlichen, die einwandfrei funktionieren, und im Folgenden werde ich in Blöcken beschreiben, was und wie.
Squid.conf Konfiguration acl localnet src 192.168.0.0/24 acl worktime time 08:00-15:00 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 acl blacklist url_regex -i "/etc/squid/blacklist" acl whitelist url_regex -i "/etc/squid/whitelist" http_access allow localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow CONNECT http_access deny blacklist http_access allow whitelist http_access deny all worktime http_access allow all http_port 3128 http_port 3129 intercept https_port 3130 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squid.pem always_direct allow all sslproxy_cert_error allow all sslproxy_flags DONT_VERIFY_PEER acl blacklist_ssl ssl::server_name_regex -i "/etc/squid/blacklist_ssl" acl whitelist_ssl ssl::server_name_regex -i "/etc/squid/whitelist_ssl" acl step1 at_step SslBump1 ssl_bump peek step1 ssl_bump terminate blacklist_ssl ssl_bump splice whitelist_ssl ssl_bump terminate all worktime ssl_bump splice all sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB # cache_mem 512 MB maximum_object_size_in_memory 512 KB memory_replacement_policy lru cache_dir aufs /var/spool/squid 2048 16 256 # access_log daemon:/var/log/squid/access.log squid logfile_rotate 1 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 (Release|Packages(.gz)*)$ 0 20% 2880 refresh_pattern . 0 20% 4320
Der erste Block ist wie folgt.
acl localnet src 192.168.0.0/24 acl worktime time 08:00-15:00 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
Er ist verantwortlich für Standard-ACL-Parameter. In localnet ändern wir das lokale Netzwerk in unser eigenes und fügen außerdem eine Arbeitszeit hinzu (optional). Ich fügte Arbeitszeit hinzu, da Lehrer oft zu mir kommen und sich beschweren, dass sie nichts finden können, alles unzugänglich ist. Natürlich bin ich froh, dass alles so funktioniert, wie es sollte, aber ehrlich gesagt bin ich es leid, mir das anzuhören. Jetzt melde ich ihre Behauptung, dass nach 15:00 Uhr die Filterung deaktiviert ist und sie die benötigten Informationen (fast) frei finden können. Sie können Ihre Zeit hinzufügen oder die Filterung rund um die Uhr verlassen, ohne diese ACL hinzuzufügen.
Der zweite Block definiert die Listen der zulässigen und verbotenen Sites für HTTP und sieht wie folgt aus.
acl blacklist url_regex -i "/etc/squid/blacklist" acl whitelist url_regex -i "/etc/squid/whitelist"
Wir werden später Listen mit erlaubten und verbotenen Sites hinzufügen und sie werden in Dateien abgelegt, die in acl angegeben sind.
Der dritte Block bestimmt die Zugriffsparameter über HTTP und sieht so aus
http_access allow localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow CONNECT http_access deny blacklist http_access allow whitelist http_access deny all worktime http_access allow all
Hier ist der Eintrag
http_access allow CONNECT erforderlich, da Squid ohne ihn Squid niemanden ins Internet lassen würde. Als nächstes folgen die Regeln für die Schwarz-Weiß-Listen. Die Parameter
Verweigern und
Zulassen verweigern bzw.
erlauben den Zugriff. Danach folgt die Regel, den gesamten HTTP-Verkehr während der Geschäftszeiten vollständig zu sperren. Wenn Sie keine Arbeitszeit festgelegt haben, löschen Sie die
Arbeitszeit , und das Verbot ist dauerhaft. Ein wichtiger Punkt ist die Reihenfolge der Regeln, da Squid sie von oben nach unten liest
Der vierte Block definiert die Porteinstellungen für Squid.
http_port 3128 http_port 3129 intercept https_port 3130 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squid.pem
Der erste Parameter ist erforderlich, damit der Fehler "FEHLER: Keine Forward-Proxy-Ports konfiguriert" nicht unendlich in den Protokollen angezeigt wird. Es füllt das Protokoll und damit den Speicher. Ein häufiger Fehler, aber aus irgendeinem Grund habe ich in unserem Ru-Segment nicht gefunden, wie ich ihn beheben kann. Ausländische Foren haben geholfen. Der zweite Parameter definiert den HTTP-Protokollport.
Abfangen bedeutet Proxy-Transparenz, dh es müssen nicht auf jedem Computer Einstellungen festgelegt werden.
Der dritte Parameter definiert den HTTPS-Port und seine Optionen. Dies ist eine lange Schlange. Die Datei
squid.pem ist unser Zertifikat, das wir später erstellen werden.
Der fünfte Block definiert die Parameter der SSL-Verbindung mit Squid. Insbesondere weist er darauf hin, dass der gesamte Datenverkehr ohne Verwendung höherer Caches sofort ins Internet geleitet werden sollte und die letzten beiden Verbindungen auch bei Fehlern bei der Zertifikatsüberprüfung zulassen, da die Entscheidung zum Besuch einer solchen Ressource vom Benutzer und nicht vom Server getroffen werden muss. Es sieht so aus.
always_direct allow all sslproxy_cert_error allow all sslproxy_flags DONT_VERIFY_PEER
Der sechste Block legt die acl-Parameter der später erstellten Listen „schwarz“ und „weiß“ sowie die Tiefe des Abfangens des HTTPS-Verkehrs fest.
acl blacklist_ssl ssl::server_name_regex -i "/etc/squid/blacklist_ssl" acl whitelist_ssl ssl::server_name_regex -i "/etc/squid/whitelist_ssl" acl step1 at_step SslBump1
Der siebte Block bestimmt die Zugriffsparameter unter Verwendung des HTTPS-Protokolls. Hier sind das Verbot und die Erlaubnis bereits für das
Beenden bzw.
Spleißen verantwortlich. Vergessen Sie auch hier nicht, die Arbeitszeit zu entfernen, wenn Sie keine bestimmte Arbeitszeit haben.
ssl_bump peek step1 ssl_bump terminate blacklist_ssl ssl_bump splice whitelist_ssl ssl_bump terminate all worktime ssl_bump splice all sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB
Der achte Block legt den Cache und das Protokoll unseres Tintenfischs fest. Hier ist nur der Parameter
logfile_rotate zu beachten , der die Anzahl der Tage angibt, an denen das Protokoll gespeichert ist.
# cache_mem 512 MB maximum_object_size_in_memory 512 KB memory_replacement_policy lru cache_dir aufs /var/spool/squid 2048 16 256 # access_log daemon:/var/log/squid/access.log squid logfile_rotate 1 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 (Release|Packages(.gz)*)$ 0 20% 2880 refresh_pattern . 0 20% 4320
Damit ist die Einrichtung von squid.conf abgeschlossen. Wir speichern die Datei und fahren mit der Erstellung des Zertifikats und der Listen fort.
Gehen wir mit Squid in den Ordner
cd /etc/squid/
Geben Sie den folgenden Befehl ein, um das Zertifikat zu erstellen
openssl req -new -newkey rsa:1024 -days 36500 -nodes -x509 -keyout squid.pem -out squid.pem
Als nächstes müssen Sie die Zertifikatdaten eingeben. Das Zertifikat ist 100 Jahre gültig, um es für eine lange Zeit zu vergessen. Es wird nur für Proxy benötigt.
Erstellen Sie nun unsere Listendateien.
touch blacklist touch whitelist cp whitelist whitelist_ssl cp blacklist blacklist_ssl
Websites werden in Form von regulären Ausdrücken aufgelistet. Um beispielsweise mail.ru zu entsperren, öffnen Sie die
Whitelist nano whitelist
und fügen Sie den folgenden Ausdruck hinzu.
mail\.ru
Blockiere jetzt Games.Mail.ru. Öffnen wir unsere
schwarze Liste nano blacklist
und schreiben Sie den folgenden Ausdruck hinein
games\.mail\.ru
Da sich in der Regel ein Blacklist-Blocker über unserer Whitelist befindet, wird die Site beim Wechsel zu mail.ru wie erwartet geöffnet (mit Ausnahme von Bildern, aber dazu später mehr). Wenn Sie versuchen, zu Games zu wechseln, Squid us werde nicht loslassen.
Einige Websites haben viele Subdomains, Subdomains usw. Zum Beispiel speichert mail.ru seine Bilder auf imgsmail.ru. In Bezug auf andere ähnliche Websites müssen Sie die gewünschte Website in einem beliebigen Browser (ich verwende Chrome) und anschließend in den Entwicklertools (in Chrome werden sie durch Drücken von F12 aufgerufen) öffnen.

Gehen Sie zur Registerkarte Quellen und sehen Sie, von welchen anderen Ressourcen die Site Informationen lädt.
Kopieren Sie die Websites nach dem Hinzufügen in die Listen für HTTPS.
cp whitelist whitelist_ssl cp blacklist blacklist_ssl
ListenfüllungstippErstellen Sie eine Nur-Text-Datei auf Ihrem Computer, suchen und kopieren Sie die Liste der zulässigen Websites und fügen Sie sie Ihrer hinzu. Ersetzen Sie dann in einem normalen Notizbuch den Punkt automatisch durch einen Schrägstrich (\.) Und löschen Sie den unnötigen Punkt mit demselben automatischen Ersatz (www, http, das Zeichen "/" usw.). Anschließend kann eine solche Datei mithilfe des Terminals sofort auf die Blätter auf dem Server kopiert werden.
Überprüfen Sie nun die Konfiguration.
squid -k check
Wenn alles in Ordnung ist, stoppen Sie Squid.
/etc/init.d/squid stop
Erstellen Sie den Cache neu
squid -z
Und wieder Squid laufen lassen
/etc/init.d/squid start
Nach Änderungen an Listen oder der Squid-Konfiguration muss diese mit dem Befehl neu geladen werden
/etc/init.d/squid restart
Sie können auch die Seite mit den Zugriffsbeschränkungen (funktioniert nur unter HTTP) unter dem Pfad
/ usr / share / squid / Errors / ~ Russian-1251 ändern. Suchen Sie im Ordner nach der Datei
ERR_ACCESS_DENIED und bearbeiten Sie sie. Die Dateisyntax lautet HTML.
3.3. Überwachen des Serverstatus und Konfigurieren der Firewall
Installieren Sie das
Webmin- Dienstprogramm, mit dessen Hilfe wir unsere Firewall konfigurieren, um den Status unseres Servers zu überwachen. Darüber hinaus können Sie damit den Status der CPU, des Arbeitsspeichers usw. überwachen, Pakete aktualisieren, Komponenten hinzufügen und konfigurieren und vieles mehr. Es hat ein eigenes Terminal, wenn auch ungeschickt. Das Dienstprogramm funktioniert über jeden Browser. Daher können Sie von jedem Computer im Netzwerk aus eine Verbindung zu unserem Server herstellen. Dies ist praktisch, aber nicht sicher. Falls gewünscht, kann die Verbindung nur auf einzelne IP-Adressen in der "IP-Zugriffskontrolle" in Webmin selbst beschränkt werden.
Fügen Sie vor dem Start der Installation das Webmin-Repository hinzu. Öffnen Sie die Datei source.list.
nano /etc/apt/sources.list
Und fügen Sie die folgende Zeile hinzu.
deb http:
Installieren Sie nun den GPG-Schlüssel, mit dem Pakete im Webmin-Repository signiert sind
cd /root wget http:
Als nächstes aktualisieren wir die Liste der Pakete und installieren das Dienstprogramm
apt-get update apt-get install webmin
Sie können in jedem Browser eine Verbindung zum Server herstellen, indem Sie die Adressleiste eingeben
IP__:10000
Standardmäßig stellt Webmin eine Verbindung über SSL her, und die meisten Browser geben einen nicht vertrauenswürdigen Zertifikatfehler aus. Deaktivieren Sie SSL, um nicht jedes Mal Vertrauen zu wählen. Öffnen Sie dazu die Datei
/etc/webmin/miniserv.conf nano /etc/webmin/miniserv.conf
Suchen Sie die Zeichenfolge
ssl = 1 und ersetzen Sie sie durch
ssl = 0 . In derselben Datei können Sie den Verbindungsport ändern. Standardmäßig ist es 10000. Sie können jeden freien setzen.
Nachdem Sie eine Verbindung zu Webmin hergestellt haben, gehen Sie zu
Webmin -> Webmin-Konfiguration und wechseln Sie die Sprache zu Russisch. Gehen Sie dann zu
Netzwerk -> Firewall . Standardmäßig ist unsere Firewall sauber. Wir gehen ganz nach unten und wählen gegenüber "Beim
Booten aktivieren" "Ja" . Klicken Sie auf
"Konfiguration anwenden". Jetzt werden die Einstellungen unserer Firewall in der Datei
/etc/webmin/firewall/iptables.save angegeben und mit dem System gestartet. Wenn es keine solche Datei gibt, lesen Sie, was in der Zeile „Datei mit Regeln“ auf der Registerkarte Firewall in Webmin geschrieben steht. Öffnen wir es im Terminal.
nano /etc/webmin/firewall/iptables.save
Wir gehen zum
* nat- Block und fügen am Ende vor
COMMIT die folgenden Regeln hinzu.
-A PREROUTING -p tcp -m tcp -i _ --dport 80 -j DNAT --to-destination ip_:3129 -A PREROUTING -p tcp -m tcp -i _ --dport 443 -j REDIRECT --to-ports 3130
Diese Regeln leiten den Datenverkehr zu den Ports 80 (HTTP) und 443 (HTTPS) des Servers zu den Ports unseres Squid. Hier habe ich zwei Varianten der Regeln mit DNAT und REDIRECT vorgestellt. Sie können beide verwenden oder eine Option auswählen, indem Sie die entsprechenden Ports eingeben.
Konfigurieren Sie FIrewall für die alternative NetzwerkeinrichtungDiese Option ist geeignet, wenn Sie das oben beschriebene alternative Netzwerk-Setup verwendet haben.
Erstellen Sie zunächst eine Datei mit den Regeln für unsere Firewall und geben Sie ihr das Recht zur Ausführung.
touch /etc/nat chmod +x /etc/nat
Öffne es
nano /etc/nat
Und fügen Sie den folgenden Inhalt hinzu
#!/bin/sh #Firewall iptables -t nat -A PREROUTING -p tcp -m tcp -i _ --dport 80 -j DNAT --to-destination ip_:3129 iptables -t nat -A PREROUTING -p tcp -m tcp -i _ --dport 443 -j REDIRECT --to-ports 3130
Wie im Fall von Webmin habe ich zwei Varianten der Regeln mit DNAT und REDIRECT vorgestellt. Sie können beide verwenden oder eine Option auswählen, indem Sie die entsprechenden Ports eingeben.
Fügen Sie nun unsere Datei sofort nach dem Start des Netzwerks zum Download hinzu. Öffnen Sie die Netzwerkeinstellungsdatei
nano /etc/network/interfaces
Und fügen Sie die Zeile am Ende der Datei hinzu
post-up /etc/nat
PS: Das Plus dieser Option ist, dass Sie in Zukunft Ihre eigenen Regeln hinzufügen können, indem Sie einfach die Datei / etc / nat bearbeiten. Webmin ist etwas komplizierter.
Damit ist die Servereinrichtung abgeschlossen. Starten Sie es neu.
reboot
Fahren wir mit der Einrichtung des MikroTik-Routers fort.
3.4. Konfigurieren eines MikroTik-Routers zum Umleiten des Datenverkehrs an Proxy
Wir gehen davon aus, dass Sie das
WinBox- Dienstprogramm zur Fernsteuerung bereits heruntergeladen haben, das Internet und das lokale Netzwerk konfiguriert sind und die Firewall auf dem Router sauber ist. Sie kennen den Namen der LAN-Schnittstelle (Sie können ihn in
IP - DHCP Server - DHCP sehen ).
a) Gehen Sie zu WinBox, gehen Sie zu
IP - DHCP Server - Leases . In der Liste suchen wir nach IP-Computern, für die die Filterung nicht funktioniert (Director, Management). Klicken Sie mit der rechten Maustaste darauf und wählen
Sie im Menü die
Option Statisch erstellen. Neben ihnen sollte der Buchstabe "D" verschwinden, was "dynamisch" bedeutet. Jetzt werden diese Adressen diesen Computern unabhängig von der Lease-Zeit sofort statisch anhand der MAC-Adresse zugewiesen. Wenn der Laptop über WLAN und Kabel verwendet wird, müssen Sie auf beiden MAC-Adressen die Option "Statisch erstellen" auswählen.
b) Gehen Sie als nächstes zu
IP - Firewall - Adresslisten und klicken Sie auf das blaue
Pluszeichen "+" .
Geben Sie im Feld
Name den Namen für unsere Gruppe von
hellen, ungefilterten Adressen an, z. B. "Administratoren".
Geben Sie im Feld Adresse eine IP-Adresse von denen an, denen eine statische zugewiesen wurde. Wir wiederholen dies für jede Adresse und wählen unsere Gruppe im Feld Name mit einem Pfeil aus.
c) Gehen
Sie in derselben
IP-Firewall zur Registerkarte
Mangle und klicken Sie auf
"+" . Ein Fenster mit Registerkarten wird geöffnet. Füllen Sie auf der Registerkarte
Allgemein die folgenden Felder aus:
Chain - Prerouting Src. Address - __proxy Protocol - 6 (tcp) Dst. Port - 80 In. Interface - __
Überprüfen Sie auf der Registerkarte
Aktion den Wert
Akzeptieren und klicken Sie auf OK.
Wiederholen Sie den Vorgang, jedoch im Feld
Dst. Port setzt den Wert auf
443 .
d) Klicken Sie erneut auf "+" und füllen Sie auf der Registerkarte "
Allgemein " erneut die folgenden Felder aus:
Chain - Prerouting Protocol - 6 (tcp) Dst. Port - 80 In. Interface - __
Gehen Sie zur Registerkarte Erweitert und in das Feld Src. Adressliste Wählen Sie unsere Verwaltungsadressliste " Administratoren " aus. Stellen Sie sicher, dass Sie auf das angezeigte Feld neben der Liste klicken. Ein Ausrufezeichen "!" Wird angezeigt . , was logisch NICHT oder NEGATIV bedeutet.Gehen Sie zur Registerkarte Aktion und füllen Sie die Felder aus: Action - mark routing New Routing Mark - to_proxy Passthrough -
Klicken Sie auf OK und führen Sie die gleichen Aktionen aus, jedoch im Feld Dst. Port geben Sie den Wert 443 an .e) Fügen Sie abschließend die letzte Regel hinzu. Klicken Sie auf das Pluszeichen und füllen Sie die folgenden Felder auf der Registerkarte Allgemein aus : Chain - Prerouting In. Interface - __ Routing Mark - to_proxy
Infolgedessen sollte Folgendes mit Ihren Parametern geschehen. Ordnung ist wichtig!
f) Wir gehen in IP - Routen und drücken auf "+". Füllen Sie die folgenden Felder aus: Dst. Address - 0.0.0.0/0 Gateway - __proxy Routing Mark - to_proxy
Klicken Sie auf "OK" und fertig. Wenn der Server eingeschaltet ist, wird der gesamte HTTP- und HTTPS-Verkehr über unseren Squid geleitet.3.5. Alternatives Setup für MikroTik und andere Router
Diese Option eignet sich sowohl für den MikroTik-Router als auch für alle anderen, selbst die einfachsten (mit Ausnahme der gemieteten Anbieterteile, von denen Sie selbst wissen, was). In diesem Fall implementieren wir die gemeinsame Nutzung des Internetzugangs nicht auf dem Router, sondern auf Squid selbst. Also fangen wir an.
a) Wir gehen davon aus, dass Sie diesen Punkt erreicht haben, indem Sie alle höheren abgeschlossen haben, einschließlich der Einrichtung der Umleitung zu Proxy in MikroTik. Für einen störungsfreien Betrieb der beschriebenen Option müssen wir Absatz 3.4 Buchstabe e dieses Artikels streichen . Sie können den gesamten Punkt 3.4 abbrechen (möglicherweise unter Buchstabe a), damit sich unsere IPs nicht ändern. Dies ist jedoch optional. Es ist wichtig, dass wir das Routing selbst abbrechen. Gehen Sie dazu zu IP - Routen , suchen Sie nach unserer Route, wählen Sie sie aus und klicken Sie auf das rote Kreuz (kein Pluszeichen, sondern das Kreuz neben dem Häkchen). Die Route wird grau => sie ist deaktiviert. Die Filterung wurde ebenfalls deaktiviert. Jetzt gehen alle Clients direkt über einen Router ins Internet. b)Gehen Sie jetzt zu unserem Server und gehen Sie zu dem Ordner mit Squid cd /etc/squid/
Öffnen Sie die Konfigurationsdatei nano squid.conf
Und wir fügen es in Blöcken hinzu:Im ersten Block unmittelbar nach der Zeile mit acl localnet ... acl admins src "/etc/squid/admins-ip" # IP acl students src "/etc/squid/students-ip" # IP
Wir brauchen keine Liste mit den Computern der Lehrer, da verstanden wird, dass alle anderen Lehrer sind. Sie können es jedoch selbst mit den entsprechenden Regeln in anderen Blöcken hinzufügen.Im zweiten Block acl whitelist-stud url_regex -i "/etc/squid/whitelist-stud" #
Im dritten Block nach http_access verweigern Sie die Blacklist http_access allow admins # http_access allow students whitelist-stud # http_access deny students #
Ferner bleibt der Block unverändert, da die Lehrer (alle anderen IPs) folgen und nach ihrer weißen Liste und während der Arbeitszeit (falls angegeben) filtern. Sie können die Admins-Gruppe auch die Blacklist umgehen lassen, indem Sie die Zulassungsregel über der Verbotsregel festlegen, oder separate IPs (z. B. Ihre eigenen) zu einer separaten ACL hinzufügen und in die Regeln über der Blacklist einfügen.Der vierte und fünfte Block sind unverändert.Fügen Sie im sechsten Block hinzu acl whitelist-stud_ssl ssl::server_name_regex -i "/etc/squid/whitelist-stud_ssl"
Fügen Sie im siebten Block add hinzu, nachdem ssl_bump blacklist_ssl beendet hat ssl_bump splice admins ssl_bump splice students whitelist-stud_ssl ssl_bump terminate students
Das Prinzip ist das gleiche wie im dritten Block.Der Rest bleibt unverändert. Speichern und beendenc) Erstellen Sie nun unsere Listen mit IP-Adressen. touch admins-ip touch students-ip
Und Whitelists für Studenten. touch whitelist-stud cp whitelist-stud whitelist-stud_ssl
Fügen Sie die erforderlichen IP-Adressen und Sites zu den entsprechenden Listen hinzu. In der Schülerliste der Websites können Sie die Liste für Lehrer kopieren, indem Sie Websites entfernen, die von den Schülern nicht benötigt werden. Das Kopieren von Dateien unter Linux erfolgt mit dem Befehl cp < > < >
Starten Sie Squid neu /etc/init.d/squid restart
d) Wir sind zu dem Wichtigsten gekommen, nämlich wie wir Kunden dazu bringen können, über unseren Proxy online zu gehen. Wir müssen das Gateway unseres DHCP-Servers von der Adresse des Routers auf die Adresse unseres Servers ändern. Dazu muss die Serveradresse natürlich statisch oder an den MAC gebunden sein.In MikroTik:Gehen Sie zu IP - DHCP Server - Netzwerk und doppelklicken Sie auf unser Netzwerk. Ändern Sie im Feld Gateway die Adresse des Routers in die Adresse des Proxyservers. Klicken Sie auf OK und fertig. Sie können den Router neu starten, damit die Einstellungen für alle aktiven Clients korrekt aktualisiert werden. Danach ändern die Clients wahrscheinlich den Netzwerktyp in "öffentlich" (wenn es privat war).In einem normalen Router:Suchen Sie im Handbuch nach Ihrem Router, wo Sie das Gateway des DHCP-Servers ändern können, aber ich sage, was in den Einstellungen enthalten ist :)Fazit : Als Ergebnis dieser alternativen Lösung konnten wir den Zugriff nach IP und Listen optimieren und normale IP-Adressen von Clients in den Squid-Protokollen abrufen. Wenn einige Kunden online gehen müssen, um Proxy über einen Router zu umgehen, lesen Sie den Spoiler.Internet umgeht Proxy, - Squid , , ,
4. Fazit
Um all das zusammenzufassen. Wir haben es geschafft, Linux Ubuntu 18.04 LTS von Grund auf neu zu installieren und zu konfigurieren, Squid mit HTTPS-Unterstützung zu erstellen und zu installieren, die Whitelist-Filterung zu konfigurieren und den Proxyserver in unser Netzwerk zu integrieren, ohne einen zusätzlichen DHCP-Server installieren zu müssen.5. Liste der Quellen
Bei der Erstellung des Artikels wurden verschiedene Materialien von den Websites des Technischen Blogs von Interface LLC und von Web-Sicherheitsspezialisten - Webfilter für Ihr Netzwerk - sowie persönliches Wissen und Erfahrung verwendet.Bei der Bearbeitung und Ergänzung des Artikels haben folgende Benutzer sehr geholfen: Kanlas , PetRiot , Barsook . Vielen Dank an sie für ihre Hilfe und Hilfe.6. Notizen des Autors
- Alle Arbeiten mit dem Server müssen im Superuser-Modus ausgeführt werden, indem vor dem Befehl sudo hinzugefügt oder der Befehl sudo -s einmal eingegeben wird .
- Squid \ , , , . .
- , . , 1000 .
, IP- Squid. Squid IP- — Mikrotik. , DHCP , . , , , IP . — Barsook- Damit Squid mit einer großen Anzahl von Clients (mehr als 50) arbeiten kann, ist mindestens 1 GB RAM erforderlich. Bevorzugter, da Squid Speicher frisst. Sie können den Speicherstatus überprüfen, indem Sie den Befehl top eingeben .
- Ich empfehle, beide Optionen für die Konfiguration des Routers zu verwenden, da Sie die Sperre umgehen können, wenn Sie in den Netzwerkeinstellungen explizit ein anderes Gateway angeben (den Router selbst).
UPD1: Alternative Netzwerkkonfiguration hinzugefügt und FirewallUPD2: Alternative Routerkonfigurationsoption hinzugefügt, bei der Probleme mit der Anzeige von Adressen in Squid-Protokollen behoben wurden.UPD3: In 3.1 wurde ein Fix hinzugefügt, der es Paketen ermöglicht, den Server zu passieren, den er ursprünglich vergessen hatte, hinzuzufügen. Andernfalls funktioniert das Internet nicht. Vielen Dank an Dmitry1986 für das Testen des Artikels.