Gratis proxyserver voor ondernemingen met domeinautorisatie

Gratis proxyserver voor ondernemingen met domeinautorisatie

pfSense+Squid met https-filtering + Single sign-on-technologie (SSO) met filtering op Active Directory-groepen

Korte achtergrond

Het bedrijf moest een proxyserver implementeren met de mogelijkheid om de toegang tot sites (inclusief https) te filteren op groepen uit AD, zodat gebruikers geen extra wachtwoorden hoefden in te voeren en het beheer via de webinterface kon worden gedaan. Geen slechte applicatie, toch?

Het juiste antwoord zou zijn om oplossingen zoals Kerio Control of UserGate te kopen, maar zoals altijd is er geen geld, maar wel behoefte.

Dit is waar de goede oude Squid ons te hulp schiet, maar nogmaals, waar kan ik de webinterface krijgen? SAMS2? Moreel achterhaald. Dit is waar pfSense te hulp komt.

beschrijving

In dit artikel wordt beschreven hoe u een Squid-proxyserver configureert.
Kerberos wordt gebruikt om gebruikers te autoriseren.
SquidGuard zal worden gebruikt om te filteren op domeingroepen.

Voor de monitoring zullen Lightsquid, sqstat en interne pfSense-monitoringsystemen worden gebruikt.
Een veelvoorkomend probleem dat verband houdt met de implementatie van single sign-on (SSO)-technologie zal ook worden opgelost, namelijk applicaties die toegang proberen te krijgen tot internet via het kompasaccount van hun systeemaccount.

Voorbereiden om Squid te installeren

pfSense zal als basis worden gebruikt, Installatie instructies.

Daarbinnen organiseren we de authenticatie naar de firewall zelf met behulp van domeinaccounts. Instructies.

Het is erg belangrijk!

Voordat je Squid gaat installeren, dien je de DNS-server in pfsense te configureren, er een A-record en PTR-record voor te maken op onze DNS-server en NTP zo te configureren dat de tijd niet afwijkt van de tijd op de domeincontroller.

En zorg er in uw netwerk voor dat de pfSense WAN-interface toegang heeft tot internet, en dat gebruikers op het lokale netwerk verbinding kunnen maken met de LAN-interface, ook via poort 7445 en 3128 (in mijn geval 8080).

Alles klaar? Is het domein via LDAP verbonden voor autorisatie op pfSense en is de tijd gesynchroniseerd? Geweldig. Het is tijd om het hoofdproces te starten.

Installatie en pre-configuratie

We zullen Squid, SquidGuard en LightSquid installeren vanuit de pfSense-pakketbeheerder in de sectie "Systeem-/pakketbeheer".

Na een succesvolle installatie ga je naar “Services/Squid Proxy server/” en allereerst configureer je op het tabblad Local Cache caching, ik heb alles op 0 gezet, omdat Ik zie niet zoveel nut in het cachen van sites; browsers kunnen dit prima aan. Na het instellen drukt u op de knop “Opslaan” onderaan het scherm. Dit geeft ons de mogelijkheid om basis proxy-instellingen te maken.

De belangrijkste instellingen zijn als volgt:

Gratis proxyserver voor ondernemingen met domeinautorisatie

De standaardpoort is 3128, maar ik gebruik liever 8080.

De geselecteerde parameters op het tabblad Proxy-interface bepalen naar welke interfaces onze proxyserver zal luisteren. Omdat deze firewall zo is gebouwd dat hij via de WAN-interface naar internet kijkt, ook al bevinden het LAN en het WAN zich mogelijk op hetzelfde lokale subnet, raad ik aan het LAN als proxy te gebruiken.

Loopback is nodig om sqstat te laten werken.

Hieronder vindt u de Transparante proxy-instellingen, evenals het SSL-filter, maar we hebben ze niet nodig, onze proxy zal niet transparant zijn en voor https-filtering zullen we ons niet bezighouden met certificaatvervanging (we hebben immers documentbeheer , bankklanten, enz.), Laten we eens naar de handdruk kijken.

In dit stadium moeten we naar onze domeincontroller gaan en daarin een account aanmaken voor authenticatie (u kunt ook het account gebruiken dat u voor authenticatie op pfSense zelf hebt geconfigureerd). Een zeer belangrijke factor hierbij is dat als u van plan bent AES128- of AES256-codering te gebruiken, u de juiste vakjes in uw accountinstellingen aanvinkt.

Als uw domein een zeer complex forest is met een groot aantal mappen of uw domein .local is, dan zult u MOGELIJK, maar niet zeker, een eenvoudig wachtwoord voor dit account moeten gebruiken. De bug is bekend, maar met een complex wachtwoord werkt het misschien gewoon niet, dan moet u een specifiek individueel geval controleren.

Gratis proxyserver voor ondernemingen met domeinautorisatie

Na dit alles maken we een sleutelbestand voor Kerberos, op de domeincontroller, openen we een opdrachtprompt met beheerdersrechten en voeren we het volgende in:

# 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

Waar we onze FQDN pfSense aangeven, moet u dit respecteren, in de mapuser-parameter voeren we ons domeinaccount en het bijbehorende wachtwoord in, en in crypto selecteren we de coderingsmethode, ik gebruikte rc4 voor werk en in het veld -out selecteren we waar wij sturen u ons kant-en-klare sleutelbestand toe.
Nadat het sleutelbestand succesvol is aangemaakt, sturen we het naar onze pfSense, hiervoor heb ik Far gebruikt, maar je kunt dit ook doen met behulp van commando's, stopverf of via de pfSense-webinterface in de sectie "DiagnosticsCommand Line".

Nu kunnen we het bestand /etc/krb5.conf bewerken

Gratis proxyserver voor ondernemingen met domeinautorisatie

waarbij /etc/krb5.keytab het sleutelbestand is dat we hebben gemaakt.

Zorg ervoor dat u de werking van Kerberos controleert met behulp van kinit; als het niet werkt, heeft het geen zin verder te lezen.

Squid-authenticatie en toegangslijst zonder authenticatie configureren

Nadat we Kerberos met succes hebben geconfigureerd, zullen we het aan onze Squid koppelen.

Om dit te doen, gaat u naar ServicesSquid Proxy Server en gaat u in de hoofdinstellingen helemaal onderaan, daar vinden we de knop "Geavanceerde instellingen".

Voer in het veld Aangepaste opties (vóór verificatie) het volgende in:

#Хелперы
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

waar auth_param onderhandelingsprogramma /usr/local/libexec/squid/negotiate_kerberos_auth — selecteert de Kerberos-authenticatiehelper die we nodig hebben.

sleutel -s met betekenis GSS_C_NO_NAME — bepaalt het gebruik van elk account uit het sleutelbestand.

sleutel -k met betekenis /usr/local/etc/squid/squid.keytab — besluit dit specifieke keytab-bestand te gebruiken. In mijn geval is dit hetzelfde keytab-bestand dat we hebben gegenereerd, dat ik heb gekopieerd naar de map /usr/local/etc/squid/ en de naam ervan heb gewijzigd omdat de inktvis geen vrienden wilde worden met die map, blijkbaar had ik dat niet genoeg rechten.

sleutel -t met betekenis -t geen — schakelt cyclische verzoeken aan de domeincontroller uit, waardoor de belasting ervan aanzienlijk wordt verminderd als u meer dan 50 gebruikers heeft.
Tijdens de test kunt u ook de schakeloptie -d toevoegen, d.w.z. diagnostiek, er worden meer logboeken weergegeven.
auth_param onderhandelen over kinderen 1000 — bepaalt hoeveel gelijktijdige autorisatieprocessen kunnen worden gestart
auth_param onderhandel over keep_alive op — voorkomt dat de verbinding wordt verbroken tijdens het pollen van de autorisatieketen
acl auth proxy_auth VEREIST — creëert en vereist een toegangscontrolelijst met geautoriseerde gebruikers
acl nonauth dstdomain "/etc/squid/nonauth.txt" — we informeren de inktvis over de nonauth-toegangslijst, die bestemmingsdomeinen bevat waartoe iedereen altijd toegang zal hebben. We maken het bestand zelf en voeren de domeinen erin in het formaat in

.whatsapp.com
.whatsapp.net

Whatsapp wordt niet voor niets als voorbeeld gebruikt: het is erg kieskeurig als het gaat om authenticatieproxy's en zal niet werken als het niet is toegestaan ​​vóór authenticatie.
http_access staat nonauth toe — geef iedereen toegang tot deze lijst
http_access weigeren !auth — wij verbieden de toegang tot andere sites voor ongeautoriseerde gebruikers
http_access authenticatie toestaan — toegang verlenen aan geautoriseerde gebruikers.
Dat is alles, de Squid zelf is geconfigureerd, nu is het tijd om te beginnen met filteren op groepen.

SquidGuard instellen

Ga naar ServicesSquidGuard Proxyfilter.

In LDAP-opties voeren we de gegevens in van ons account dat wordt gebruikt voor Kerberos-authenticatie, maar in het volgende formaat:

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

Als er spaties of niet-Latijnse tekens voorkomen, moet deze volledige invoer tussen enkele of dubbele aanhalingstekens worden geplaatst:

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

Zorg er vervolgens voor dat u deze vakjes aanvinkt:

Gratis proxyserver voor ondernemingen met domeinautorisatie

Om onnodige DOMAINpfsense af te sluiten DOMEIN.LOCAL waarvoor het hele systeem erg gevoelig is.

Laten we nu naar Group Acl gaan en onze domeintoegangsgroepen binden. Ik gebruik eenvoudige namen zoals group_0, group_1, etc. tot en met 3, waarbij 3 alleen toegang tot de witte lijst betekent, en 0 betekent dat alles mogelijk is.

De groepen zijn als volgt gekoppeld:

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

we slaan onze groep op, gaan naar Times, daar heb ik een gat gemaakt dat betekent dat het altijd zal werken, nu gaan we naar Doelcategorieën en maken naar eigen goeddunken lijsten, na het maken van de lijsten keren we terug naar onze groepen en binnen de groep gebruiken we knoppen om te selecteren wie waar naartoe kan en wie waar niet naartoe kan.

LightSquid en sqstat

Als we tijdens het installatieproces loopback in de squid-instellingen hebben geselecteerd en de mogelijkheid hebben geopend om toegang te krijgen tot 7445 in de firewall, zowel op ons netwerk als op pfSense zelf, dan kunnen we, wanneer we naar DiagnosticsSquid Proxy Reports gaan, eenvoudig zowel sqstat als Lighsquid openen, voor de Dat laatste hebben we nodig. Daar kun je een login en wachtwoord bedenken, maar ook een ontwerp kiezen.

Voltooiing

pfSense is een zeer krachtige tool die veel dingen kan doen - proxy-verkeer en het controleren van gebruikerstoegang tot internet is slechts een deel van de volledige functionaliteit, maar in een onderneming met 500 machines loste het het probleem op en stelde het ons in staat om geld te besparen bij de aankoop van een proxy.

Ik hoop dat dit artikel iemand zal helpen een probleem op te lossen dat behoorlijk relevant is voor middelgrote en grote ondernemingen.

Bron: www.habr.com

Voeg een reactie