Kostenloser Proxy-Server für Unternehmen mit Domain-Authentifizierung

Kostenloser Proxy-Server für Unternehmen mit Domain-Authentifizierung

pfSense+Squid mit HTTPS-Filterung + Single Sign-On (SSO) Technologie mit Gruppenfilterung aus Active Directory

Kurze Einleitung

In dem Unternehmen entstand die Notwendigkeit, einen Proxy-Server zu implementieren, der den Zugriff auf Websites (einschließlich HTTPS) anhand von Gruppen aus AD filtert, sodass Benutzer keine zusätzlichen Passwörter eingeben müssen und die Verwaltung über eine Web-Oberfläche erfolgen kann. Eine interessante Herausforderung, nicht wahr?

Die richtige Antwort wäre gewesen, Lösungen wie Kerio Control oder UserGate zu kaufen, aber wie so oft gibt es kein Geld, aber eine vorhandene Nachfrage.

Hier kommt uns der altbewährte Squid zur Hilfe, aber woher bekommen wir die Web-Oberfläche? SAMS2? Ist moralisch überholt. Hier kommt pfSense ins Spiel.

Beschreibung

In diesem Artikel wird beschrieben, wie man den Proxy-Server Squid einrichtet.
Zur Authentifizierung der Benutzer wird Kerberos verwendet.
Für die Filterung anhand von Gruppen wird SquidGuard eingesetzt.

Zur Überwachung kommen Lightsquid, sqstat und die internen Überwachungssysteme von pfSense zum Einsatz.
Auch ein häufiges Problem bei der Einführung der Single Sign-On (SSO)-Technologie wird gelöst, und zwar Anwendungen, die versuchen, mit den Anmeldedaten des Unternehmens ins Internet zu gelangen.

Vorbereitung zur Installation von Squid

Basis wird pfSense sein, Installationsanleitung.

In diesem werden wir die Authentifizierung des Routers selbst mittels Domänenanmeldungen organisieren. Anleitung.

Sehr wichtig!

Bevor Sie mit der Installation von Squid beginnen, müssen Sie DNS Server in pfSense konfigurieren, einen A-Eintrag und PTR-Einträge auf unserem DNS-Server erstellen und NTP so einstellen, dass die Zeit mit der des Domaincontrollers übereinstimmt.

Und in Ihrem Netzwerk sollte es dem WAN-Interface von pfSense erlaubt sein, ins Internet zu gelangen, während die Benutzer im lokalen Netzwerk auf das LAN-Interface zugreifen können, auch über die Ports 7445 und 3128 (in meinem Fall 8080).

Ist alles bereit? Die Verbindung zur Domain über LDAP zur Authentifizierung in pfSense ist hergestellt und die Zeit ist synchronisiert? Großartig. Zeit, mit dem Hauptprozess zu beginnen.

Installation und erste Konfiguration

Squid, SquidGuard und LightSquid werden aus dem Paketmanager von pfSense im Abschnitt „System/Paketmanager“ installiert.

Nach der erfolgreichen Installation gehen wir zu „Dienste/Squid Proxy-Server“ und konfigurieren zuerst im Tab Lokaler Cache das Caching. Ich habe alles auf 0 gesetzt, da ich keinen besonderen Sinn darin sehe, Websites zu cachen; das erledigen die Browser hervorragend. Nach der Konfiguration drücken wir die „Speichern“-Taste unten auf dem Bildschirm, was uns ermöglicht, die grundlegenden Proxy-Einstellungen vorzunehmen.

Die Grundeinstellungen sind wie folgt:

Kostenloser Proxy-Server für Unternehmen mit Domain-Authentifizierung

Der Standardport ist 3128, aber ich bevorzuge die Verwendung von 8080.

Die gewählten Optionen im Tab Proxy-Schnittstelle bestimmen, welche Interfaces unser Proxy abhören wird. der ServerDa diese Firewall so aufgebaut ist, dass sie über das WAN-Interface ins Internet schaut, empfehle ich, für den Proxy das LAN zu nutzen, selbst wenn LAN und WAN im selben lokalen Subnetz sein können.

Der Loopback ist für die Funktion von sqstat erforderlich.

Unten finden Sie die Einstellungen für den Transparenten (transparenten) Proxy sowie den SSL-Filter, aber die benötigen wir nicht; unser Proxy wird nicht transparent sein und für die HTTPS-Filterung werden wir keine Zertifikatsersetzung vornehmen (wir haben schließlich Dokumentenverkehr, Bank-Kunden usw.), sondern nur das Handshake beobachten.

In diesem Schritt müssen wir zu unserem Domain-Controller wechseln und ein Konto für die Authentifizierung erstellen (du kannst das Konto verwenden, das für die Authentifizierung auf pfSense eingerichtet wurde). Hier ist ein sehr wichtiger Punkt – wenn du AES128 oder AES256 Verschlüsselung verwenden möchtest, setze die entsprechenden Häkchen in den Kontoeinstellungen.

Wenn deine Domäne ein sehr komplexer Wald mit vielen Verzeichnissen ist oder deine Domäne .local lautet, dann KÖNNTE es sein, dass du für dieses Konto ein einfaches Passwort verwenden musst. Das ist ein bekannter Bug, aber mit einem komplexen Passwort könnte es einfach nicht funktionieren. Es muss in einem spezifischen Einzelfall überprüft werden.

Kostenloser Proxy-Server für Unternehmen mit Domain-Authentifizierung

Nachdem wir dies alles gemacht haben, erstellen wir die Schlüsseldatei für Kerberos. Auf dem Domain-Controller öffnen wir die Eingabeaufforderung mit Administratorrechten und geben folgendes ein:

# ktpass -princ HTTP/pfsense.domain.local@DOMAIN.LOCAL -mapuser pfsense -pass 3EYldza1sR -crypto {DES-CBC-CRC|DES-CBC-MD5|RC4-HMAC-NT|AES256-SHA1|AES128-SHA1|All} -ptype KRB5_NT_PRINCIPAL -out C:keytabsPROXY.keytab

Dabei geben wir unseren FQDN von pfSense an, wobei wir unbedingt die Groß- und Kleinschreibung beachten. Im Parameter mapuser tragen wir unser Domänenkonto und dessen Passwort ein, und in crypto wählen wir die Verschlüsselungsmethode aus. Ich habe rc4 für die Arbeit verwendet, und im Feld -out wählen wir aus, wohin wir unsere fertige Schlüsseldatei schicken.
Nach der erfolgreichen Erstellung der Schlüsseldatei senden wir diese an unser pfSense. Ich habe dafür Far verwendet, aber es kann auch über Befehle, Putty oder über die Weboberfläche von pfSense im Bereich „Diagnose - Eingabeaufforderung“ erfolgen.

Jetzt können wir die Datei /etc/krb5.conf bearbeiten/erstellen.

Kostenloser Proxy-Server für Unternehmen mit Domain-Authentifizierung

wo /etc/krb5.keytab unsere von uns erstellte Schlüsseldatei ist.

Stellen Sie sicher, dass Kerberos mit kinit funktioniert. Wenn es nicht funktioniert, hat es keinen Sinn, weiterzulesen.

Einrichtung der Authentifizierung für Squid und der Zugriffsliste ohne Authentifizierung.

Nachdem wir Kerberos erfolgreich eingerichtet haben, integrieren wir es in unseren Squid.

Gehen Sie dazu zu Dienste - Squid Proxy Server und scrollen Sie im Bereich Grundeinstellungen nach unten, wo wir die Schaltfläche „Erweiterte Einstellungen“ finden.

Im Feld Benutzerdefinierte Optionen (Vor der Authentifizierung) geben wir ein:

#Хелперы
auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -s GSS_C_NO_NAME -k /usr/local/etc/squid/squid.keytab -t none
auth_param negotiate children 1000
auth_param negotiate keep_alive on
#Списки доступа
acl auth proxy_auth REQUIRED
acl nonauth dstdomain "/etc/squid/nonauth.txt" 
#Разрешения 
http_access allow nonauth 
http_access deny !auth
http_access allow auth

uде auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth — wählt den benötigten Kerberos-Authentifizierungshelfer aus.

Der Schlüssel -s mit dem Wert GSS_C_NO_NAME — bestimmt die Verwendung eines beliebigen Kontos aus der Schlüsseldatei.

Der Schlüssel -k mit dem Wert /usr/local/etc/squid/squid.keytab — legt fest, dass genau diese Keytab-Datei verwendet wird. In meinem Fall handelt es sich um dieselbe Keytab-Datei, die ich in das Verzeichnis /usr/local/etc/squid/ kopiert und umbenannt habe, weil Squid mit diesem Verzeichnis offenbar nicht zurechtkam, wahrscheinlich fehlten die Berechtigungen.

Der Schlüssel -t mit dem Wert -t none — deaktiviert zyklische Anfragen an den Domänencontroller, was die Last auf ihn erheblich reduziert, wenn Sie mehr als 50 Benutzer haben.
Für Testzwecke können Sie auch den Schlüssel -d hinzufügen – d.h. Diagnostik, es werden mehr Protokolle ausgegeben.
auth_param negotiate children 1000 — legt fest, wie viele gleichzeitige Authentifizierungsprozesse gestartet werden können.
auth_param negotiate keep_alive on — verhindert, dass die Verbindung während der Abfrage der Authentifizierungskette unterbrochen wird.
acl auth proxy_auth REQUIRED — erstellt und fordert eine Zugriffssteuerungsliste an, die Benutzer umfasst, die sich authentifiziert haben.
acl nonauth dstdomain «/etc/squid/nonauth.txt» — informiert Squid über die nonauth-Zugriffsliste, die Ziel-Domänen enthält, auf die allen immer Zugriff gewährt wird. Die Datei erstellen wir selbst und tragen darin die Domänen im Format ein.

.whatsapp.com
.whatsapp.net

WhatsApp wird nicht ohne Grund als Beispiel verwendet – es ist sehr wählerisch bei Authentifizierungsproxies und funktioniert nicht, wenn es nicht vor der Authentifizierung erlaubt wird.
http_access allow nonauth – Wir erlauben den Zugang zu dieser Liste für alle.
http_access deny !auth – Wir verweigern unautorisierten Benutzern den Zugriff auf andere Websites.
http_access allow auth – Wir erlauben autorisierten Benutzern den Zugang.
Fertig, der Squid ist eingerichtet, jetzt ist es an der Zeit, mit der Gruppenfilterung zu beginnen.

Einrichtung von SquidGuard

Wir gehen zu Dienste > SquidGuard Proxy Filter.

In LDAP-Optionen geben wir die Daten unseres Kontos ein, das für die Kerberos-Authentifizierung verwendet wird, jedoch im folgenden Format:

CN=pfsense,OU=service-accounts,DC=domain,DC=local

Wenn Leerzeichen oder nicht-lateinische Zeichen vorhanden sind, sollte dieser Eintrag in einfache oder doppelte Anführungszeichen gesetzt werden:

'CN=sg,OU=service-accounts,DC=domain,DC=local'
"CN=sg,OU=service-accounts,DC=domain,DC=local"

Anschließend unbedingt diese Häkchen setzen:

Kostenloser Proxy-Server für Unternehmen mit Domain-Authentifizierung

Um unnötige DOMAINpfsense abzutrennen. DOMAIN.LOCAL, auf die das gesamte System sehr empfindlich reagiert.

Jetzt wechseln wir zu den Gruppen-Acl und verknüpfen unsere Zugriffsdomaingruppen. Ich verwende einfache Bezeichnungen wie group_0, group_1 usw. bis 3, wobei 3 nur im White-List-Modus Zugang hat und 0 uneingeschränkten Zugang erlaubt.

Die Gruppen werden wie folgt verknüpft:

ldapusersearch ldap://dc.domain.local:3268/DC=DOMAIN,DC=LOCAL?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=group_0OU=squidOU=service-groupsDC=DOMAINDC=LOCAL))

Wir speichern unsere Gruppe, gehen zu den Zeiten, dort habe ich einen Zeitraum erstellt, der immer aktiv ist. Jetzt wechseln wir zu den Zielkategorien und erstellen Listen nach eigenem Ermessen. Nach der Erstellung der Listen kehren wir zu unseren Gruppen zurück und wählen innerhalb der Gruppe mit den Schaltflächen aus, wer wohin gehen kann und wer nicht.

LightSquid und sqstat

Wenn wir während der Konfiguration im Squid die Loopback-Adresse gewählt und den Zugang auf Port 7445 sowohl in unserem Netzwerk als auch auf pfSense in der Firewall geöffnet haben, können wir problemlos sowohl sqstat als auch LightSquid im Diagnostic-Bereich unter Squid Proxy Reports aufrufen. Für letzteres müssen wir dort auch einen Benutzernamen und ein Passwort festlegen, und es gibt die Möglichkeit, das Layout auszuwählen.

Abschluss

pfSense ist ein äußerst leistungsfähiges Tool, das eine Vielzahl von Funktionen bietet – von der Proxy-Traffic-Verwaltung bis zur Kontrolle des Internetzugangs für Benutzer. Dies ist nur ein kleiner Teil des Gesamtfunktionsumfangs. Dennoch hat es bei einem Unternehmen mit 500 Maschinen ein Problem gelöst und die Anschaffung eines Proxys eingespart.

Ich hoffe, dieser Artikel hilft jemandem dabei, eine für mittelständische und große Unternehmen relevante Aufgabe zu lösen.

Quelle: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster