Kostenloser Proxyserver für Unternehmen mit Domänenautorisierung

Kostenloser Proxyserver für Unternehmen mit Domänenautorisierung

pfSense+Squid mit https-Filterung + Single Sign-On (SSO) mit Active Directory-Gruppenfilterung

Kurzer Hintergrund

Das Unternehmen musste einen Proxyserver mit der Möglichkeit implementieren, den Zugriff auf Websites (einschließlich https) nach Gruppen aus AD zu filtern, sodass Benutzer keine zusätzlichen Passwörter eingeben müssen und über die Weboberfläche verwaltet werden können. Gute Bewerbung, nicht wahr?

Die richtige Antwort wäre, Lösungen wie Kerio Control oder UserGate zu kaufen, aber wie immer gibt es kein Geld, aber einen Bedarf.

Hier kommt der gute alte Squid zur Rettung, aber noch einmal: Wo bekomme ich ein Webinterface? SAMS2? Moralisch veraltet. Hier kommt pfSense zur Rettung.

Beschreibung

In diesem Artikel wird beschrieben, wie Sie den Squid-Proxyserver konfigurieren.
Zur Autorisierung von Benutzern wird Kerberos verwendet.
SquidGuard wird zum Filtern nach Domänengruppen verwendet.

Zur Überwachung werden Lightsquid, sqstat und interne pfSense-Überwachungssysteme verwendet.
Es wird auch ein häufiges Problem lösen, das mit der Einführung der Single-Sign-On-Technologie (SSO) verbunden ist, nämlich Anwendungen, die versuchen, mit ihrem Systemkonto unter dem Compass-Konto im Internet zu surfen.

Vorbereitung zur Installation von Squid

Als Basis wird pfSense genommen, Installationsanleitung.

Darin organisieren wir die Authentifizierung an der Firewall selbst mithilfe von Domänenkonten. Instruction.

Sehr wichtig!

Bevor Sie mit der Installation von Squid beginnen, müssen Sie den DNS-Server in pfsense konfigurieren, einen A-Eintrag und einen PTR-Eintrag dafür auf unserem DNS-Server erstellen und NTP so konfigurieren, dass die Zeit nicht von der Zeit auf dem Domänencontroller abweicht.

Und stellen Sie in Ihrem Netzwerk die Möglichkeit bereit, dass die WAN-Schnittstelle von pfSense auf das Internet zugreifen kann und Benutzer im lokalen Netzwerk eine Verbindung zur LAN-Schnittstelle herstellen können, einschließlich der Ports 7445 und 3128 (in meinem Fall 8080).

Alles ist fertig? Ist die LDAP-Verbindung mit der Domäne zur Autorisierung auf pfSense hergestellt und die Uhrzeit synchronisiert? Großartig. Es ist Zeit, den Hauptprozess zu starten.

Installation und Vorkonfiguration

Squid, SquidGuard und LightSquid werden vom pfSense-Paketmanager im Abschnitt „System/Paketmanager“ installiert.

Gehen Sie nach erfolgreicher Installation zu „Dienste / Squid-Proxy-Server /“ und konfigurieren Sie zunächst im Reiter „Lokaler Cache“ das Caching, ich setze alles auf 0, weil Ich sehe keinen großen Sinn darin, Websites zwischenzuspeichern, Browser leisten damit hervorragende Arbeit. Klicken Sie nach der Einstellung auf die Schaltfläche „Speichern“ am unteren Bildschirmrand. Dies gibt uns die Möglichkeit, grundlegende Proxy-Einstellungen vorzunehmen.

Die Haupteinstellungen sind wie folgt:

Kostenloser Proxyserver für Unternehmen mit Domänenautorisierung

Der Standardport ist 3128, ich verwende jedoch lieber 8080.

Die ausgewählten Parameter auf der Registerkarte „Proxy-Schnittstelle“ bestimmen, auf welchen Schnittstellen unser Proxy-Server lauscht. Da diese Firewall so aufgebaut ist, dass sie im Internet wie eine WAN-Schnittstelle aussieht, obwohl LAN und WAN im selben lokalen Subnetz liegen können, empfehle ich die Verwendung von LAN als Proxy.

Damit sqstat funktioniert, ist Loopback erforderlich.

Unten finden Sie die transparenten (transparenten) Proxy-Einstellungen sowie den SSL-Filter, aber wir brauchen sie nicht, unser Proxy wird nicht transparent sein und für die https-Filterung werden wir das Zertifikat nicht ersetzen (wir haben Dokumentenfluss, Bank). Kunden usw.), schauen wir uns einfach den Handschlag an.

In diesem Stadium müssen wir zu unserem Domänencontroller gehen und dort ein Authentifizierungskonto erstellen (Sie können auch das Konto verwenden, das für die Authentifizierung auf pfSense selbst konfiguriert wurde). Hier ist ein sehr wichtiger Faktor: Wenn Sie die Verschlüsselung AES128 oder AES256 verwenden möchten, aktivieren Sie die entsprechenden Kontrollkästchen in Ihren Kontoeinstellungen.

Wenn Ihre Domäne eine sehr komplexe Gesamtstruktur mit einer großen Anzahl von Verzeichnissen ist oder Ihre Domäne .local ist, ist es MÖGLICH, aber nicht sicher, dass Sie für dieses Konto ein einfaches Passwort verwenden müssen. Der Fehler ist bekannt, aber er Wenn es mit einem komplexen Passwort einfach nicht funktioniert, müssen Sie dies im Einzelfall prüfen.

Kostenloser Proxyserver für Unternehmen mit Domänenautorisierung

Danach erstellen wir eine Schlüsseldatei für Kerberos, öffnen eine Eingabeaufforderung mit Administratorrechten auf dem Domänencontroller und geben Folgendes ein:

# ktpass -princ HTTP/[email protected] -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

Wenn wir unseren FQDN pfSense angeben, achten Sie unbedingt auf die Groß-/Kleinschreibung, geben Sie unser Domänenkonto und sein Passwort in den Mapuser-Parameter ein, und in Krypto wählen wir die Verschlüsselungsmethode aus, ich habe rc4 für die Arbeit verwendet und im Feld -out wählen wir aus, wo wir wird Ihnen unsere fertige Schlüsseldatei zusenden.
Nachdem wir die Schlüsseldatei erfolgreich erstellt haben, senden wir sie an unseren pfSense. Ich habe dafür Far verwendet, Sie können dies aber auch sowohl mit Befehlen als auch mit Putty oder über die pfSense-Weboberfläche im Abschnitt „Diagnose-Befehlszeile“ tun.

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

Kostenloser Proxyserver für Unternehmen mit Domänenautorisierung

Dabei ist /etc/krb5.keytab die von uns erstellte Schlüsseldatei.

Überprüfen Sie unbedingt die Funktionsweise von Kerberos mit Kinit. Wenn dies nicht funktioniert, macht es keinen Sinn, weiterzulesen.

Konfigurieren der Squid-Authentifizierung und Zugriffsliste ohne Authentifizierung

Nachdem wir Kerberos erfolgreich konfiguriert haben, werden wir es an unserem Squid befestigen.

Gehen Sie dazu zu ServicesSquid Proxy Server und gehen Sie in den Haupteinstellungen ganz nach unten, dort finden wir die Schaltfläche „Erweiterte Einstellungen“.

Geben Sie im Feld „Benutzerdefinierte Optionen (vor der Authentifizierung)“ Folgendes 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

Wo auth_param Verhandlungsprogramm /usr/local/libexec/squid/negotiate_kerberos_auth - wählt den von uns benötigten Authentifizierungs-Kerberos-Helfer aus.

Schlüssel -s mit Bedeutung GSS_C_NO_NAME – definiert die Verwendung eines beliebigen Kontos aus der Schlüsseldatei.

Schlüssel -k mit Bedeutung /usr/local/etc/squid/squid.keytab – bestimmt, diese bestimmte Keytab-Datei zu verwenden. In meinem Fall ist dies dieselbe Keytab-Datei, die wir erstellt haben, die ich in das Verzeichnis /usr/local/etc/squid/ kopiert und umbenannt habe, weil der Squid mit diesem Verzeichnis nicht befreundet sein wollte, was anscheinend nicht der Fall war genügend Rechte.

Schlüssel -t mit Bedeutung -t keine - Deaktiviert zyklische Anfragen an den Domänencontroller, wodurch die Belastung des Domänencontrollers erheblich reduziert wird, wenn Sie mehr als 50 Benutzer haben.
Für die Dauer des Tests können Sie auch den Schlüssel -d hinzufügen – d. h. Diagnose, es werden weitere Protokolle angezeigt.
auth_param verhandelt Kinder 1000 - legt fest, wie viele Autorisierungsprozesse gleichzeitig ausgeführt werden können
auth_param verhandeln keep_alive auf - erlaubt keine Verbindungsunterbrechung während der Abfrage der Autorisierungskette
acl auth Proxy_auth ERFORDERLICH – erstellt und fordert eine Zugriffskontrollliste, die Benutzer enthält, die die Autorisierung bestanden haben
acl nonauth dstdomain „/etc/squid/nonauth.txt“ - Wir informieren den Squid über die Nonauth-Zugriffsliste, die Zieldomänen enthält, auf die jeder immer Zugriff haben wird. Wir erstellen die Datei selbst und geben darin Domänen im Format ein

.whatsapp.com
.whatsapp.net

WhatsApp wird nicht umsonst als Beispiel verwendet – es ist sehr wählerisch in Bezug auf den Proxy bei der Authentifizierung und funktioniert nicht, wenn es vor der Authentifizierung nicht zugelassen wird.
http_access erlaubt Nonauth - Erlauben Sie jedem den Zugriff auf diese Liste
http_access verweigern !auth - Wir verbieten unbefugten Benutzern den Zugriff auf andere Websites
http_access erlaubt Authentifizierung - Erlauben Sie autorisierten Benutzern den Zugriff.
Das war's, der Squid selbst ist konfiguriert, jetzt ist es an der Zeit, mit der Filterung nach Gruppen zu beginnen.

SquidGuard konfigurieren

Gehen Sie zu ServicesSquidGuard Proxy Filter.

In den 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 der gesamte 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"

Aktivieren Sie als Nächstes unbedingt die folgenden Kontrollkästchen:

Kostenloser Proxyserver für Unternehmen mit Domänenautorisierung

Um unnötigen DOMAINpfsense abzuschneiden DOMAIN.LOCAL, auf das das gesamte System sehr empfindlich reagiert.

Jetzt gehen wir zu Group Acl und binden unsere Domänenzugriffsgruppen. Ich verwende einfache Namen wie Gruppe_0, Gruppe_1 usw. bis zu 3, wobei 3 nur für den Zugriff auf die Whitelist steht und 0 – alles ist möglich.

Gruppen sind wie folgt verknüpft:

ldapusersearch ldap://dc.domain.local:3268/DC=DOMAIN,DC=LOCAL?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=group_0%2cOU=squid%2cOU=service-groups%2cDC=DOMAIN%2cDC=LOCAL))

Speichern Sie unsere Gruppe, gehen Sie zu Zeiten. Dort habe ich eine Lücke erstellt, was bedeutet, dass es immer funktionieren wird. Gehen Sie nun zu Zielkategorien und erstellen Sie Listen nach unserem Ermessen. Nachdem Sie die Listen erstellt haben, kehren wir zu unseren Gruppen zurück und verwenden innerhalb der Gruppe die Schaltflächen zum Auswählen Wer kann wohin gehen und wer kann nicht wohin gehen.

LightSquid und sqstat

Wenn wir während des Konfigurationsprozesses einen Loopback in den Squid-Einstellungen ausgewählt und die Möglichkeit zum Zugriff auf 7445 in der Firewall sowohl in unserem Netzwerk als auch auf pfSense selbst geöffnet haben, können wir bei der Diagnose von Squid-Proxy-Berichten problemlos sowohl sqstat als auch öffnen Lighsquid, für Letzteres brauchen wir An der gleichen Stelle müssen wir uns einen Benutzernamen und ein Passwort ausdenken, und es besteht auch die Möglichkeit, ein Design auszuwählen.

Abschluss

pfSense ist ein sehr leistungsstarkes Tool, das viele Dinge kann – sowohl die Proxy-Verteilung des Datenverkehrs als auch die Kontrolle über den Benutzerzugriff auf das Internet sind nur ein Bruchteil der gesamten Funktionalität. In einem Unternehmen mit 500 Computern wurde das Problem jedoch gelöst und Einsparungen erzielt Kauf eines Proxys.

Ich hoffe, dass dieser Artikel jemandem hilft, ein Problem zu lösen, das für mittlere und große Unternehmen durchaus relevant ist.

Source: habr.com

Kommentar hinzufügen