Gratis proxyserver voor bedrijven met domeinautorisatie

Gratis proxyserver voor bedrijven met domeinautorisatie

pfSense+Squid met HTTPS-filtering + Single Sign-On (SSO) technologie met filtering op basis van Active Directory-groepen

Korte achtergrond

Het bedrijf had behoefte aan de implementatie van een proxyserver met de mogelijkheid om de toegang tot websites (inclusief https) te filteren op basis van AD-groepen, zodat gebruikers geen extra wachtwoorden hoefden in te voeren en het beheer via een webinterface kon plaatsvinden. Een mooie uitdaging, nietwaar?

De juiste reactie zou zijn om oplossingen zoals Kerio Control of UserGate aan te schaffen, maar zoals altijd is er geen geld, terwijl de behoefte er wel is.

Daar komt de oude vertrouwde Squid van pas, maar waar haal je weer die webinterface vandaan? SAMS2? Moreel verouderd. Daar komt pfSense weer om de hoek kijken.

Omschrijving

In dit artikel wordt een manier beschreven om de proxyserver Squid in te stellen.
Voor de gebruikersauthenticatie wordt Kerberos gebruikt.
Voor filtering op domeingroepen wordt SquidGuard gebruikt.

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

Voorbereiding op de installatie van Squid

We gebruiken pfSense als basis, Inst instructies voor installatie.

Waarin we authenticatie op de firewall zelf organiseren met behulp van domeinaccounts. Instructie.

Heel belangrijk!

Voordat je begint met de installatie van Squid, moet je DNS instellen de server in pfSense, een A-record en PTR-record op onze DNS-server creëren en NTP zo instellen dat de tijd niet verschilt van de tijd op de domeincontroller.

En in jouw netwerk de WAN-interface van pfSense toegang tot het internet geven, terwijl de gebruikers in het lokale netwerk verbinding maken met de LAN-interface, inclusief via poort 7445 en 3128 (in mijn geval 8080).

Alles klaar? De verbinding met het domein via LDAP voor autorisatie op pfSense is tot stand gebracht en de tijd is gesynchroniseerd? Geweldig. Het is tijd om met het hoofdproces te beginnen.

Installatie en voorlopige configuratie

We installeren Squid, SquidGuard en LightSquid via de pakketbeheerder van pfSense in het gedeelte 'Systeem/Pakketbeheerder'.

Na een succesvolle installatie gaan we naar 'Diensten/Squid Proxy server/' en eerst configureren we de cache in het tabblad Local Cache. Ik heb alles op 0 gezet, omdat ik geen zin zie in het cachen van websites; de browsers kunnen dat prima aan. Na de configuratie drukken we op de knop 'Opslaan' onderaan het scherm, waardoor we in staat zijn de belangrijkste proxy-instellingen uit te voeren.

We brengen de basisinstellingen als volgt in orde:

Gratis proxyserver voor bedrijven met domeinautorisatie

De standaardpoort is 3128, maar ik geef de voorkeur aan het gebruik van 8080.

De geselecteerde parameters in het tabblad Proxy Interface bepalen welke interfaces onze proxy zal beluisteren. serverAangezien deze firewall zo is opgebouwd dat hij via de WAN-interface het internet bekijkt, zelfs als LAN en WAN zich in hetzelfde lokale subnet bevinden, raad ik aan om de LAN te gebruiken voor de proxy.

Loopback is nodig voor het functioneren van sqstat.

Hieronder vindt u de instellingen voor een Transparante (transparent) proxy en een SSL-filter, maar die hebben we niet nodig; onze proxy zal niet transparant zijn en voor de filtering van https zullen we geen certificaat vervalsen (we hebben tenslotte documentbeheer, banken en klanten, enz.), maar we zullen simpelweg de handdruk bekijken.

Op dit punt moeten we naar onze domeincontroller gaan, daar een account voor authenticatie aanmaken (we kunnen ook die gebruiken die we hebben ingesteld voor authenticatie op pfSense). Een zeer belangrijk punt is dat als u van plan bent om AES128 of AES256 encryptie te gebruiken, u de juiste vinkjes in de accountinstellingen moet zetten.

Als uw domein een vrij gecompliceerd bos is met een groot aantal catalogi of als uw domein .local is, dan is het MOGELIJK, maar niet zeker, dat u voor deze account een eenvoudig wachtwoord moet gebruiken; dit is een bekend probleem, maar een complex wachtwoord werkt mogelijk gewoon niet, dat moet per specifiek geval worden gecontroleerd.

Gratis proxyserver voor bedrijven met domeinautorisatie

Na dit alles genereren we een sleutelbestand voor Kerberos. Open de opdrachtprompt op de domeincontroller met beheerdersrechten en voer in:

# 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

Waarbij we onze FQDN pfSense opgeven, let op de hoofdlettergebruik, in de parameter mapuser voeren we ons domeinaccount en het wachtwoord in, en in crypto kiezen we de versleutelingsmethode; ik heb rc4 gebruikt voor de werking en in het veld -out kiezen we waar we ons voorbereide sleutelbestand naartoe sturen.
Na succesvolle creatie van het sleutelbestand zullen we dit naar onze pfSense sturen. Ik heb Far hiervoor gebruikt, maar het kan ook gedaan worden via commando's, putty of via de webinterface van pfSense in het gedeelte "Diagnose - Opdrachtregel".

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

Gratis proxyserver voor bedrijven met domeinautorisatie

waar /etc/krb5.keytab het door ons aangemaakte sleutelbestand is.

Controleer alstublieft de werking van Kerberos met behulp van kinit. Als het niet werkt, heeft het geen zin om verder te lezen.

Configuratie van Squid-authenticatie en toegangslijst zonder authenticatie.

Nadat we Kerberos succesvol hebben ingesteld, koppelen we dit aan onze Squid.

Ga hiervoor naar de diensten van het Squid Proxy Server en scrol naar beneden in de basiseinstellungen om de knop "Uitgebreide instellingen" te vinden.

In het veld Aangepaste opties (Before Auth) voeren we 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

auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth — kiest de benodigde Kerberos-authenticatiehelper. met de waarde

Sleutel -s GSS_C_NO_NAME — bepaalt het gebruik van een willekeurig account uit het sleutelbestand. — bepaalt dat specifiek dit keytab-bestand gebruikt moet worden. In mijn geval is dit hetzelfde keytab-bestand dat we hebben aangemaakt, dat ik naar de directory /usr/local/etc/squid/ heb gekopieerd en hernoemd, omdat Squid blijkbaar niet goed kon overweg met die directory, waarschijnlijk omdat het rechten ontbraken.

Sleutel -k GSS_C_NO_NAME /usr/local/etc/squid/squid.keytab -t none

Sleutel -t GSS_C_NO_NAME — schakelt cyclische aanvragen naar de domeincontroller uit, wat de belasting sterk vermindert als je meer dan 50 gebruikers hebt. Voor testdoeleinden kan ook de sleutel -d worden toegevoegd — dat wil zeggen diagnostiek, er zullen meer logs worden weergegeven.
auth_param negotiate children 1000
— bepaalt hoeveel gelijktijdige authenticatieprocessen er kunnen worden gestart. auth_param negotiate keep_alive on
— voorkomt dat de verbinding wordt verbroken tijdens het ondervragen van de authenticatieketen. acl auth proxy_auth REQUIRED
— maakt en vereist een toegangscontrolelijst die de geauthentiseerde gebruikers bevat. acl nonauth dstdomain "/etc/squid/nonauth.txt"
— meldt Squid de nonauth toegangslijst waarin de bestemmingsdomeinen staan die altijd toegankelijk zijn voor iedereen. We creëren het bestand en schrijven daarin de domeinen in het formaat. .whatsapp.com .whatsapp.net

Whatsapp wordt niet voor niets als voorbeeld gebruikt — het is erg kieskeurig met proxies met authenticatie en zal niet werken als het niet is toegestaan vóór de authenticatie.

http_access allow nonauth
— staat toegang tot deze lijst voor iedereen toe. http_access deny !auth
— weigert toegang voor niet-geauthenticeerde gebruikers tot andere websites. http_access allow auth
http_access allow auth — toegang toestaan voor geauthenticeerde gebruikers.
Alles is ingesteld, nu is het tijd om te filteren op groepen.

Instelling van SquidGuard

Ga naar Diensten > SquidGuard Proxy Filter.

Vul in LDAP-opties 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 zijn, moet deze 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 daarnaast voor dat deze opties zijn aangevinkt:

Gratis proxyserver voor bedrijven met domeinautorisatie

Om ongewenste DOMAINpfsense te snijden DOMAIN.LOCAL waaraan het systeem erg gevoelig is.

Ga nu naar Groep Acl en koppel onze domeingroepen, ik gebruik eenvoudige namen zoals group_0, group_1 enzovoort tot 3, waarbij 3 alleen toegang tot de witte lijst heeft en 0 alles kan.

Groepen worden als volgt gekoppeld:

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

Sla onze groep op, ga naar Tijden, daar heb ik een tijdsinterval gemaakt dat altijd actief is, ga nu naar Doelcategorieën en maak lijsten naar eigen inzicht, na het maken van de lijsten keren we terug naar onze groepen en kiezen we met de knoppen wie waar naartoe kan en wie niet.

LightSquid en sqstat

Als we tijdens de configuratie de loopback in de instellingen van Squid hebben geselecteerd en toegang hebben gegeven op poort 7445 in de firewall, zowel in ons netwerk als op de pfSense zelf, kunnen we zonder problemen naar Diagnose > Squid Proxy Reports gaan en zowel sqstat als LightSquid openen, voor de laatste moet er ook een gebruikersnaam en wachtwoord worden bedacht en kan er voor een opmaak worden gekozen.

Afsluiting

pfSense is een zeer krachtige tool die veel kan — het proxy'en van verkeer en het controleren van de toegang van gebruikers tot internet is slechts een klein deel van de functionaliteit, desondanks heeft het in een bedrijf met 500 machines het probleem opgelost en geholpen om kosten te besparen op de aanschaf van proxy.

Ik hoop dat dit artikel iemand helpt om een vrij actuele uitdaging voor middelgrote en grote bedrijven op te lossen.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster