Gratis proxy-server for bedrifter med domeneautorisasjon

Gratis proxy-server for bedrifter med domeneautorisasjon

pfSense+Squid med https-filtrering + Single sign-on (SSO) med Active Directory-gruppefiltrering

Kort bakgrunn

Selskapet trengte å implementere en proxy-server med muligheten til å filtrere tilgang til nettsteder (inkludert https) etter grupper fra AD slik at brukere ikke skriver inn noen ekstra passord, og kan administreres fra webgrensesnittet. Bra søknad, ikke sant?

Det riktige svaret vil være å kjøpe løsninger som Kerio Control eller UserGate, men som alltid er det ingen penger, men det er et behov.

Det er her den gode gamle blekkspruten kommer til unnsetning, men igjen – hvor kan jeg få tak i et nettgrensesnitt? SAMS2? Moralsk foreldet. Det er her pfSense kommer til unnsetning.

beskrivelse

Denne artikkelen vil beskrive hvordan du konfigurerer Squid proxy-serveren.
Kerberos vil bli brukt til å autorisere brukere.
SquidGuard vil bli brukt til å filtrere etter domenegrupper.

Lightsquid, sqstat og interne pfSense overvåkingssystemer vil bli brukt til overvåking.
Også et vanlig problem knyttet til implementeringen av SSO-teknologi (Single Sign-on) vil bli løst, nemlig applikasjoner som prøver å surfe på Internett under kompasskontoen med systemkontoen deres.

Forbereder installasjon av Squid

pfSense vil bli tatt som grunnlag, Installasjonsveiledning.

Innenfor organiserer vi autentisering på selve brannmuren ved hjelp av domenekontoer. Instruksjoner.

Det er veldig viktig!

Før du begynner å installere Squid må du konfigurere DNS-serveren i pfsense, lage en A-record og en PTR-record for den på vår DNS-server, og konfigurere NTP slik at tiden ikke avviker fra tiden på domenekontrolleren.

Og på nettverket ditt, gi WAN-grensesnittet til pfSense muligheten til å gå til Internett, og brukere på det lokale nettverket til å koble til LAN-grensesnittet, inkludert på portene 7445 og 3128 (i mitt tilfelle 8080).

Er alt klart? Er LDAP-forbindelsen etablert med domenet for autorisasjon på pfSense og tiden er synkronisert? Flott. Det er på tide å starte hovedprosessen.

Installasjon og forhåndskonfigurasjon

Squid, SquidGuard og LightSquid vil bli installert fra pfSense-pakkebehandleren i delen "System / Package Manager".

Etter vellykket installasjon, gå til "Tjenester / Squid Proxy-server /" og først av alt, i Local Cache-fanen, konfigurer hurtigbufring, jeg setter alt til 0, fordi Jeg ser ikke mye poeng i å bufre nettsteder, nettlesere gjør en god jobb med dette. Etter innstillingen trykker du på "Lagre"-knappen nederst på skjermen og dette vil gi oss muligheten til å gjøre grunnleggende proxy-innstillinger.

Hovedinnstillingene er som følger:

Gratis proxy-server for bedrifter med domeneautorisasjon

Standardporten er 3128, men jeg foretrekker å bruke 8080.

De valgte parameterne i Proxy Interface-fanen bestemmer hvilke grensesnitt vår proxy-server vil lytte på. Siden denne brannmuren er bygget på en slik måte at den ser ut på Internett som et WAN-grensesnitt, selv om LAN og WAN kan være på samme lokale subnett, anbefaler jeg å bruke LAN som proxy.

Loopback er nødvendig for at sqstat skal fungere.

Nedenfor finner du de Transparente (transparente) proxyinnstillingene, samt SSL Filter, men vi trenger dem ikke, vår proxy vil ikke være transparent, og for https-filtrering vil vi ikke erstatte sertifikatet (vi har dokumentflyt, bank klienter osv.), la oss bare se på håndtrykket.

På dette stadiet må vi gå til domenekontrolleren vår, opprette en autentiseringskonto i den (du kan også bruke den som ble konfigurert for autentisering på selve pfSense). Her er en veldig viktig faktor - hvis du har tenkt å bruke AES128- eller AES256-kryptering - merk av i de aktuelle boksene i kontoinnstillingene dine.

Hvis domenet ditt er en veldig kompleks skog med et stort antall kataloger eller domenet ditt er .local, så er det MULIG, men ikke sikkert, at du må bruke et enkelt passord for denne kontoen, feilen er kjent, men den kanskje rett og slett ikke fungerer med et komplekst passord, må du sjekke et spesifikt tilfelle.

Gratis proxy-server for bedrifter med domeneautorisasjon

Etter det lager vi en nøkkelfil for kerberos, åpner en ledetekst med administratorrettigheter på domenekontrolleren og skriver inn:

# 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

Der vi angir vår FQDN pfSense, pass på å respektere saken, skriv inn domenekontoen vår og passordet i mapuser-parameteren, og i krypto velger vi krypteringsmetoden, jeg brukte rc4 for arbeid og i -ut-feltet velger vi hvor vi vil sende vår ferdige nøkkelfil.
Etter vellykket opprettelse av nøkkelfilen, vil vi sende den til vår pfSense, jeg brukte Far for dette, men du kan også gjøre dette både med kommandoer og kitt eller gjennom pfSense-nettgrensesnittet i "Diagnostics Command Line"-delen.

Nå kan vi redigere/opprette /etc/krb5.conf

Gratis proxy-server for bedrifter med domeneautorisasjon

hvor /etc/krb5.keytab er nøkkelfilen vi opprettet.

Sørg for å sjekke driften av kerberos ved hjelp av kinit, hvis det ikke fungerer, er det ingen vits i å lese videre.

Konfigurere Squid Authentication og Access List uten Autentisering

Etter å ha konfigurert kerberos, vil vi feste den til blekkspruten vår.

For å gjøre dette går du til ServicesSquid Proxy Server og i hovedinnstillingene går du helt ned til bunnen, der finner vi knappen "Avanserte innstillinger".

I feltet Egendefinerte alternativer (før godkjenning) skriver du inn:

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

hvor auth_param forhandle program /usr/local/libexec/squid/negotiate_kerberos_auth - velger autentisering kerberos-hjelperen vi trenger.

Ключ -s med mening GSS_C_NO_NAME — definerer bruken av en hvilken som helst konto fra nøkkelfilen.

Ключ -k med mening /usr/local/etc/squid/squid.keytab - bestemmer seg for å bruke denne spesielle keytab-filen. I mitt tilfelle er dette den samme keytab-filen som vi opprettet, som jeg kopierte til /usr/local/etc/squid/-katalogen og ga den nytt navn, fordi blekkspruten ikke ønsket å være venn med den katalogen, tilsynelatende var det ikke nok rettigheter.

Ключ -t med mening -t ingen - deaktiverer sykliske forespørsler til domenekontrolleren, noe som i stor grad reduserer belastningen på den hvis du har mer enn 50 brukere.
Under testens varighet kan du også legge til -d-tasten - dvs. diagnostikk, flere logger vil vises.
auth_param forhandle barn 1000 - bestemmer hvor mange samtidige autorisasjonsprosesser som kan kjøres
auth_param forhandle keep_alive på - tillater ikke å bryte forbindelsen under polling av autorisasjonskjeden
acl auth proxy_auth KREVES - oppretter og krever en tilgangskontrollliste som inkluderer brukere som har bestått autorisasjon
acl nonauth dstdomain "/etc/squid/nonauth.txt" - Vi informerer blekkspruten om nonauth-tilgangslisten, som inneholder destinasjonsdomener, som alle alltid vil få tilgang til. Vi lager selve filen, og inni den legger vi inn domener i formatet

.whatsapp.com
.whatsapp.net

Whatsapp er ikke forgjeves brukt som eksempel - det er veldig kresen med proxy med autentisering og vil ikke fungere hvis det ikke er tillatt før autentisering.
http_access tillate nonaut - gi tilgang til denne listen for alle
http_access nekte !auth - vi forbyr tilgang til andre nettsteder for uautoriserte brukere
http_access tillat auth - gi tilgang til autoriserte brukere.
Det er det, selve blekkspruten er konfigurert, nå er det på tide å begynne å filtrere etter grupper.

Konfigurere SquidGuard

Gå til ServicesSquidGuard Proxy Filter.

I LDAP-alternativer legger vi inn dataene til kontoen vår som brukes til kerberos-autentisering, men i følgende format:

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

Hvis det er mellomrom eller ikke-latinske tegn, skal hele denne oppføringen omsluttes av enkle eller doble anførselstegn:

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

Deretter må du sjekke disse boksene:

Gratis proxy-server for bedrifter med domeneautorisasjon

For å kutte av unødvendig DOMAINpfsense DOMAIN.LOCAL som hele systemet er veldig følsomt for.

Nå går vi til Group Acl og binder våre domenetilgangsgrupper, jeg bruker enkle navn som group_0, group_1 osv. opptil 3, hvor 3 er tilgang kun til hvitelisten, og 0 - alt er mulig.

Grupper er koblet som følger:

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

lagre gruppen vår, gå til Times, der opprettet jeg ett gap som betyr å alltid fungere, nå går du til Målkategorier og lag lister etter eget skjønn, etter å ha opprettet listene går vi tilbake til gruppene våre og inne i gruppen med knapper velger vi hvem som kan gå hvor, og hvem kan ikke hvor.

LightSquid og sqstat

Hvis vi under konfigurasjonsprosessen valgte en loopback i squid-innstillingene og åpnet muligheten for å få tilgang til 7445 i brannmuren både på nettverket vårt og på pfSense selv, så når vi går til Diagnostics of Squid Proxy Reports, kan vi enkelt åpne både sqstat og Lighsquid, til sistnevnte vil vi trenge På samme sted, kom opp med brukernavn og passord, og det er også mulighet for å velge design.

Ferdigstillelse

pfSense er et veldig kraftig verktøy som kan gjøre mange ting - både trafikkproxy og kontroll over brukertilgang til Internett er bare en brøkdel av hele funksjonaliteten, men i en bedrift med 500 maskiner løste dette problemet og sparte på kjøpe en proxy.

Jeg håper denne artikkelen vil hjelpe noen med å løse et problem som er ganske relevant for mellomstore og store bedrifter.

Kilde: www.habr.com

Legg til en kommentar