Kostenloser Proxyserver für Unternehmen mit Domänenauthentifizierung



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

Kurzer Hintergrund


Im Unternehmen musste ein Proxyserver implementiert werden, der den Zugriff auf Websites (einschließlich https) nach Gruppen aus AD filtern kann, sodass Benutzer keine zusätzlichen Kennwörter eingeben und dieser über die Weboberfläche verwaltet werden kann. Keine schlechte Bewerbung, oder?

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

Dann kommt der gute alte Tintenfisch zu unserer Rettung, aber andererseits - wo bekommt man das Webinterface? SAMS2? Moralisch veraltet. Hier kommt pfSense zur Rettung.

Beschreibung


In diesem Artikel wird beschrieben, wie Sie den Squid-Proxyserver konfigurieren.
Kerberos wird verwendet, um Benutzer zu autorisieren.
SquidGuard wird zum Filtern nach Domänengruppen verwendet.

Für die Überwachung werden interne Überwachungssysteme von Lightsquid, sqstat und pfSense 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, unter dem Computerkonto \ Systemkonto auf das Internet zuzugreifen.

Vorbereiten der Installation von Squid


Grundlage ist pfSense, Installationsanleitung.

Innerhalb dessen organisieren wir die Authentifizierung bei der Firewall selbst mithilfe von Domänenkonten. Anweisung

Sehr wichtig!

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

In Ihrem Netzwerk können Sie der pfSense-WAN-Schnittstelle Zugriff auf das Internet gewähren, und Benutzer im lokalen Netzwerk können eine Verbindung zur LAN-Schnittstelle herstellen, einschließlich über die Ports 7445 und 3128 (in meinem Fall 8080).

Alles ist fertig? Ist die LDAP-Verbindung mit der Domäne zur Autorisierung auf pfSense installiert und zeitsynchronisiert? Fein. Es ist Zeit, den Hauptprozess zu starten.

Installation und Voreinstellung


Installieren Sie Squid, SquidGuard und LightSquid über den pfSense-Paketmanager im Abschnitt "System- / Paketmanager".

Gehen Sie nach einer erfolgreichen Installation zu "Services / Squid Proxy Server /" und konfigurieren Sie zunächst auf der Registerkarte "Lokaler Cache" das Caching. Ich setze alles auf 0, weil Ich sehe nicht viel Sinn darin, Websites zwischenzuspeichern, und Browser sind damit einverstanden. Klicken Sie nach den Einstellungen unten auf dem Bildschirm auf die Schaltfläche "Speichern". Dies gibt uns die Möglichkeit, grundlegende Proxy-Einstellungen vorzunehmen.

Die Haupteinstellungen sind wie folgt:

Bild

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

Die ausgewählten Parameter auf der Registerkarte Proxy-Schnittstelle bestimmen, welche Schnittstellen unser Proxy-Server abhört. Da diese Firewall so konzipiert ist, dass sie das Internet mit einer WAN-Schnittstelle betrachtet, obwohl sich LAN und WAN im selben lokalen Subnetz befinden können, empfehle ich, das LAN für den Proxy zu verwenden.

Lupbek wird benötigt, damit sqstat funktioniert.

Im Folgenden finden Sie die Einstellungen des transparenten (transparenten) Proxys sowie des SSL-Filters, die wir jedoch nicht benötigen. Unser Proxy ist nicht transparent. Zum Filtern von https werden wir uns nicht mit der Zertifikatsersetzung befassen (wir haben Dokumentenfluss, Bankclients usw.). aber schau dir nur den Händedruck an.

Zu diesem Zeitpunkt müssen wir zu unserem Domänencontroller gehen und dort ein Konto zur Authentifizierung erstellen (Sie können das Konto verwenden, das für die Authentifizierung in pfSense selbst konfiguriert ist). Dies ist ein sehr wichtiger Faktor. Wenn Sie die AES128- oder AES256-Verschlüsselung verwenden möchten, aktivieren Sie das entsprechende Kontrollkästchen in den Kontoeinstellungen.

Wenn Ihre Domain eine sehr komplexe Gesamtstruktur mit einer großen Anzahl von Verzeichnissen oder Ihre .local-Domain ist, ist sie MÖGLICH, aber nicht genau. Sie müssen ein einfaches Passwort für dieses Konto verwenden, ein bekannter Fehler, aber es funktioniert möglicherweise nicht mit einem komplexen Passwort, das Sie benötigen Überprüfen Sie einen bestimmten Fall.

Bild

Danach erstellen wir die Schlüsseldatei für Kerberos auf dem Domänencontroller, öffnen eine Befehlszeile 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:\keytabs\PROXY.keytab

Wenn wir unseren vollqualifizierten Domänennamen pfSense angeben, müssen Sie dem Register folgen, unser Domänenkonto und sein Kennwort in den Parameter mapuser eingeben und die Verschlüsselungsmethode in crypto auswählen. Ich habe rc4 verwendet, um zu arbeiten, und im Feld -out wählen wir aus, wohin wir unsere vorgefertigte Schlüsseldatei senden möchten.
Nachdem die Schlüsseldatei erfolgreich erstellt wurde, senden wir sie an pfSense. Ich habe Far dafür verwendet. Sie können dies jedoch auch mit Befehlen und Putty oder über die pfSense-Weboberfläche im Abschnitt Diagnose \ Befehlszeile tun.

Jetzt können wir \ create /etc/krb5.conf bearbeiten,

Bild

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

Überprüfen Sie unbedingt die Funktion von Kerberos mit kinit. Wenn dies nicht funktioniert, macht das Lesen keinen Sinn.

Konfigurieren Sie die Squid-Authentifizierung und die Zugriffsliste ohne Authentifizierung


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

Gehen Sie dazu zu Services \ Squid Proxy Server und gehen Sie in den Haupteinstellungen ganz nach unten. Dort finden Sie 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

Dabei nimmt auth_param das Verhandlungsprogramm / usr / local / libexec / squid / Verhandlungsfaktor_kerberos_auth auf - wählt den Kerberos-Authentifizierungshelfer aus, den wir benötigen.

Der Schalter -s mit dem Wert GSS_C_NO_NAME - definiert die Verwendung eines beliebigen Kontos aus der Schlüsseldatei.

Der Schalter -k mit dem Wert /usr/local/etc/squid/squid.keytab - definiert die Verwendung dieser Keytab-Datei. In meinem Fall ist dies dieselbe Keytab-Datei, die wir erstellt haben. Ich habe sie in das Verzeichnis / usr / local / etc / squid / kopiert und umbenannt, weil ich mit diesem Verzeichnis nicht befreundet sein wollte. Anscheinend gab es nicht genügend Rechte.

Der Schalter -t mit dem Wert -t none- Deaktiviert zyklische Anforderungen an den Domänencontroller, wodurch die Belastung erheblich verringert wird, wenn Sie mehr als 50 Benutzer haben.
Für die Dauer des Tests können Sie auch den Schalter -d hinzufügen. Das heißt, bei der Diagnose werden weitere Protokolle angezeigt.
auth_param verhandeln Kinder 1000 - gibt an, wie viele gleichzeitige Autorisierungsprozesse ausgeführt werden können
auth_param die keep_alive verhandeln - nicht bricht die Verbindung bei der Abfrage Autorisierungskette
der acl der Auth proxy_auth ERFORDERLICH - erstellt und erfordert eine Zugriffssteuerungsliste , die Benutzer authentifizierte umfasst
acl nonauth dstdomain " /etc/squid/nonauth.txt "- Wir informieren den Tintenfisch über die nicht automatische Zugriffsliste, die die Zieldomänen enthält, auf die immer jeder Zugriff hat. Wir erstellen die Datei selbst und geben darin die Domänen im Format ein

.whatsapp.com
.whatsapp.net

WhatsApp wird nicht vergeblich als Beispiel verwendet - es ist sehr wählerisch in Bezug auf Authentifizierungs-Proxys und funktioniert nicht, wenn es vor der Authentifizierung nicht zulässig ist.
http_access allow nonauth - Zugriff auf diese Liste für alle
http_access verweigern! auth - Zugriff für nicht autorisierte Benutzer auf andere Websites deaktivieren
http_access auth zulassen - Zugriff für autorisierte Benutzer zulassen.
Alles, der Tintenfisch selbst ist für Sie konfiguriert, jetzt ist es Zeit, nach Gruppen zu filtern.

Konfigurieren Sie SquidGuard


Gehen Sie zu Services \ SquidGuard Proxy Filter.

In den LDAP-Optionen geben wir die Details 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 und / oder nicht lateinische Zeichen vorhanden sind, sollte dieser 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"

Stellen Sie als Nächstes die folgenden Häkchen:

Bild

Um unnötige DOMAIN \ pfsense abzuschneiden DOMAIN.LOCAL, für das das gesamte System sehr empfindlich ist.

Jetzt gehen wir zu Gruppe Acl und binden unsere Domänenzugriffsgruppen. Ich verwende einfache Namen im Sinne von group_0, group_1 usw. bis zu 3, wobei 3 nur Zugriff auf die weiße Liste ist und 0 alles ist.

Gruppen werden wie folgt angehängt:

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))

Wir speichern unsere Gruppe, gehen zu Times, dort habe ich eine Lücke erstellt, die bedeutet, immer zu funktionieren. Gehen Sie jetzt zu Zielkategorien und erstellen Sie Listen nach Ihren Wünschen. Nach dem Erstellen der Listen kehren wir zu unseren Gruppen zurück und wählen innerhalb der Gruppe Schaltflächen aus, die können und wo nicht .

LightSquid und sqstat


Wenn wir während des Setup-Vorgangs einen Loopback in den Squid-Einstellungen ausgewählt und die Möglichkeit für den Zugriff auf 7445 in der Firewall sowohl in unserem Netzwerk als auch in pfSense selbst geöffnet haben, können wir bei Diagnostics \ Squid Proxy Reports problemlos sqstat und Lighsquid öffnen Sie müssen an derselben Stelle einen Benutzernamen und ein Passwort eingeben, und es besteht auch die Möglichkeit, das Design auszuwählen.

Fertigstellung


pfSense ist ein sehr leistungsfähiges Tool, das viele Aufgaben ausführen kann - sowohl Traffic Proxy als auch Benutzerzugriffskontrolle auf das Internet sind nur ein Bruchteil aller Funktionen. In einem Unternehmen mit 500 Computern wurde das Problem jedoch gelöst und beim Kauf eines Proxys eingespart.

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

All Articles