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 implementieren, der den Zugriff auf Sites (einschließlich https) nach Gruppen aus AD filtern kann, sodass Benutzer keine zusätzlichen Passwörter eingeben müssen und die Verwaltung über eine Weboberfläche erfolgen kann. Keine schlechte Aussage, oder?

Die richtige Antwort wäre, Lösungen wie Kerio Control oder UserGate zu kaufen, aber wie immer ist dafür kein Geld da, aber der Bedarf besteht.

Hier kommt uns der gute alte Squid zu Hilfe, aber noch einmal: Wo bekommen wir eine Weboberfläche her? SAMS2? Moralisch überholt. Hier kommt pfSense zur Rettung.

Beschreibung

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

Zur Überwachung werden Lightsquid, sqstat und interne pfSense-Überwachungssysteme verwendet.
Außerdem wird ein häufiges Problem im Zusammenhang mit der Implementierung der Single Sign-On (SSO)-Technologie gelöst: Anwendungen, die versuchen, unter einem Compass-Konto mit ihrem Systemkonto auf das Internet zuzugreifen.

Vorbereiten der Installation von Squid

pfSense wird als Basis verwendet, 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 DNS-Server in pfsense konfigurieren, einen A-Eintrag und PTR-Einträge dafür auf unserem DNS-Server erstellen und NTP so konfigurieren, dass die Zeit nicht von der Zeit auf dem Domänencontroller abweicht.

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

Ist alles bereit? Ist die LDAP-Verbindung zur Domäne für die Autorisierung auf pfSense hergestellt und die Zeit synchronisiert? Großartig. Es ist Zeit, zum Hauptprozess überzugehen.

Installation und Vorkonfiguration

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

Nach erfolgreicher Installation gehe ich zu „Dienste/Squid-Proxyserver/“ und konfiguriere zunächst auf der Registerkarte „Lokaler Cache“ das Caching. Ich setze alles auf 0, da ich keinen großen Sinn darin sehe, Websites zwischenzuspeichern. Browser erledigen das sehr gut. Nach der Einrichtung drücken wir unten auf dem Bildschirm auf die Schaltfläche „Speichern“ und haben so die Möglichkeit, grundlegende Proxy-Einstellungen vorzunehmen.

Wir bringen die Grundeinstellungen auf folgende Form:

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 welche Schnittstellen unser Proxy-Server lauscht. Da diese Firewall so aufgebaut ist, dass sie über die WAN-Schnittstelle auf das Internet schaut, obwohl LAN und WAN im selben lokalen Subnetz liegen können, empfehle ich die Verwendung von LAN für den Proxy.

Damit sqstat funktioniert, ist ein Loopback erforderlich.

Unten finden Sie die Einstellungen für den transparenten Proxy sowie den SSL-Filter. Wir benötigen diese jedoch nicht, da unser Proxy nicht transparent ist und wir für die https-Filterung das Zertifikat nicht ersetzen (schließlich haben wir Dokumentenfluss, Bankkunden usw.), sondern lediglich den Handshake betrachten.

In diesem Stadium müssen wir zu unserem Domänencontroller gehen und dort ein Konto zur Authentifizierung 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 AES128- oder AES256-Verschlüsselung verwenden möchten, aktivieren Sie die entsprechenden Kontrollkästchen in den Kontoeinstellungen.

Wenn Ihre Domäne ein sehr komplexer Forest mit einer großen Anzahl von Verzeichnissen ist oder Ihre Domäne die Endung .local hat, ist es MÖGLICH, aber nicht sicher, dass Sie für dieses Konto ein einfaches Passwort verwenden müssen. Der Fehler ist bekannt, aber mit einem komplexen Passwort funktioniert es möglicherweise einfach nicht. Sie müssen dies im Einzelfall überprüfen.

Kostenloser Proxyserver für Unternehmen mit Domänenautorisierung

Nach all dem erstellen wir eine Schlüsseldatei für Kerberos, öffnen auf dem Domänencontroller die Kommandozeile mit Administratorrechten und geben 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

Achten Sie bei der Angabe unseres FQDN pfSense unbedingt auf die Groß-/Kleinschreibung. Im Parameter mapuser geben wir unser Domänenkonto und dessen Passwort ein und wählen bei crypto die Verschlüsselungsmethode aus (ich habe rc4 für die Arbeit verwendet) und wählen im Feld -out aus, wohin wir unsere fertige Schlüsseldatei senden.
Nachdem wir die Schlüsseldatei erfolgreich erstellt haben, senden wir sie an unser pfSense. Ich habe hierfür Far verwendet, Sie können dies aber auch mithilfe von Befehlen, Putty oder über die pfSense-Weboberfläche im Abschnitt DiagnosticsCommand Line tun.

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

Kostenloser Proxyserver für Unternehmen mit Domänenautorisierung

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

Überprüfen Sie unbedingt die Funktion von Kerberos mit kinit. Wenn es nicht funktioniert, ist es sinnlos, weiterzulesen.

Konfigurieren der Squid-Authentifizierung und der Zugriffsliste ohne Authentifizierung

Nachdem wir Kerberos erfolgreich konfiguriert haben, können wir es an unseren Squid anhängen.

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 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 Aushandlungsprogramm /usr/local/libexec/squid/negotiate_kerberos_auth – wählt den benötigten Kerberos-Authentifizierungshelfer 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, ob diese bestimmte Keytab-Datei verwendet werden soll. In meinem Fall handelt es sich dabei um dieselbe Keytab-Datei, die wir erstellt haben. Ich habe sie in das Verzeichnis /usr/local/etc/squid/ kopiert und umbenannt, da Squid nicht mit diesem Verzeichnis befreundet sein wollte, da ihm anscheinend die erforderlichen Rechte fehlten.

Schlüssel -t mit Bedeutung -t keine - deaktiviert zyklische Anfragen an den Domänencontroller, was dessen Belastung bei mehr als 50 Benutzern erheblich reduziert.
Während des Tests können Sie auch die Taste -d hinzufügen, d. h. es werden weitere Diagnoseprotokolle ausgegeben.
auth_param verhandelt Kinder 1000 - bestimmt, wie viele gleichzeitige Autorisierungsprozesse gestartet werden können
auth_param verhandeln keep_alive auf - erlaubt keinen Verbindungsabbruch während der Abfrage der Autorisierungskette
acl auth proxy_auth ERFORDERLICH - erstellt und fordert eine Zugriffskontrollliste an, die autorisierte Benutzer enthält
acl nonauth dstdomain "/etc/squid/nonauth.txt" – wir informieren den Squid über die Nonauth-Zugriffsliste, die Zieldomänen enthält, auf die immer jeder zugreifen darf. Wir erstellen die Datei selbst und tragen die Domänen im Format

.whatsapp.com
.whatsapp.net

Nicht umsonst wird WhatsApp als Beispiel verwendet – es ist sehr wählerisch, was Proxys mit Authentifizierung angeht, und funktioniert nicht, wenn dies vor der Authentifizierung nicht zugelassen wird.
http_access erlaubt Nichtauthentifizierung — wir erlauben jedem den Zugriff auf diese Liste
http_access deny !auth — wir verbieten unbefugten Benutzern den Zugriff auf andere Websites
http_access Authentifizierung zulassen — wir gewähren autorisierten Benutzern Zugriff.
Das war's, Ihr Squid selbst ist konfiguriert, jetzt ist es an der Zeit, mit dem Filtern nach Gruppen zu beginnen.

Einrichten von SquidGuard

Gehen Sie zu ServicesSquidGuard Proxy Filter.

In den LDAP-Optionen geben wir die Daten unseres für die Kerberos-Authentifizierung verwendeten Kontos ein, 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ötige DOMAINpfsense- DOMAIN.LOCAL, worauf das gesamte System sehr empfindlich reagiert.

Jetzt gehen wir zu Group Acl und verknüpfen unsere Domänenzugriffsgruppen. Ich verwende einfache Namen wie group_0, group_1 usw. bis 3, wobei 3 nur Zugriff auf die Whitelist bedeutet und 0 bedeutet, dass alles möglich ist.

Die 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 ein Intervall erstellt, das immer funktionieren soll. Gehen Sie jetzt zu „Zielkategorien“ und erstellen Sie nach Belieben Listen. Kehren Sie nach dem Erstellen der Listen zu unseren Gruppen zurück und verwenden Sie innerhalb der Gruppe die Schaltflächen, um auszuwählen, wer wohin gehen kann und wer nicht.

LightSquid und sqstat

Wenn wir während des Einrichtungsvorgangs in den Squid-Einstellungen Loopback ausgewählt und die Möglichkeit geöffnet haben, 7445 in der Firewall sowohl in unserem Netzwerk als auch auf pfSense selbst einzugeben, können wir, wenn wir zu DiagnosticsSquid Proxy Reports gehen, problemlos sowohl sqstat als auch Lighsquid öffnen. Für Letzteres müssen wir uns dort einen Benutzernamen und ein Passwort ausdenken, und es besteht auch die Möglichkeit, das Design auszuwählen.

Abschluss

pfSense ist ein sehr leistungsfähiges Tool, das viele Dinge kann – Verkehrsproxys und Kontrolle über den Benutzerzugriff auf das Internet sind nur ein Bruchteil der Funktionalität. In einem Unternehmen mit 500 Maschinen löste dies jedoch das Problem und ermöglichte Einsparungen beim Kauf von Proxys.

Ich hoffe, dass dieser Artikel jemandem bei der Lösung eines Problems hilft, das für mittlere und große Unternehmen durchaus relevant ist.

Source: habr.com

Kommentar hinzufügen