Server proxy gratuito per aziende con autorizzazione del dominio

Server proxy gratuito per aziende con autorizzazione del dominio

pfSense+Squid con filtro https + Tecnologia Single Sign-On (SSO) con filtro per gruppi Active Directory

Breve background

L'azienda aveva bisogno di implementare un server proxy con la possibilità di filtrare l'accesso ai siti (incluso https) in base ai gruppi di AD, in modo che gli utenti non inserissero password aggiuntive e l'amministrazione potesse essere eseguita dall'interfaccia web. Non è una brutta applicazione, vero?

La risposta corretta sarebbe acquistare soluzioni come Kerio Control o UserGate, ma come sempre i soldi non ci sono, ma ce n'è bisogno.

È qui che il buon vecchio Squid viene in nostro soccorso, ma ancora una volta, dove posso trovare l'interfaccia web? SAMS2? Moralmente obsoleto. È qui che pfSense viene in soccorso.

descrizione

Questo articolo descriverà come configurare un server proxy Squid.
Kerberos verrà utilizzato per autorizzare gli utenti.
SquidGuard verrà utilizzato per filtrare per gruppi di dominio.

Per il monitoraggio verranno utilizzati i sistemi di monitoraggio Lightsquid, sqstat e interno pfSense.
Verrà inoltre risolto un problema comune associato all'implementazione della tecnologia Single Sign-On (SSO), ovvero le applicazioni che tentano di accedere a Internet tramite l'account Compass del proprio account di sistema.

Preparazione all'installazione di Squid

pfSense verrà utilizzato come base, Istruzioni per l'installazione.

All'interno del quale organizziamo l'autenticazione al firewall stesso utilizzando account di dominio. Istruzioni.

Molto importante!

Prima di iniziare l'installazione di Squid, è necessario configurare il server DNS in pfsense, creare un record A e un record PTR sul nostro server DNS e configurare NTP in modo che l'ora non differisca dall'ora sul controller di dominio.

E nella tua rete, fornisci la possibilità all'interfaccia WAN pfSense di accedere a Internet e agli utenti sulla rete locale di connettersi all'interfaccia LAN, anche tramite le porte 7445 e 3128 (nel mio caso, 8080).

Tutto è pronto? Il dominio è connesso tramite LDAP per l'autorizzazione su pfSense e l'ora è sincronizzata? Grande. È ora di avviare il processo principale.

Installazione e preconfigurazione

Installeremo Squid, SquidGuard e LightSquid dal gestore pacchetti pfSense nella sezione "Sistema/Gestore pacchetti".

Ad installazione avvenuta, vai su “Servizi/Squid Proxy server/” e prima di tutto, nella scheda Local Cache, configura il caching, io imposto tutto a 0, perché Non vedo molto senso nel memorizzare nella cache i siti; i browser lo gestiscono perfettamente. Dopo l'impostazione, premiamo il pulsante “Salva” nella parte inferiore dello schermo e questo ci darà l'opportunità di effettuare le impostazioni proxy di base.

Le impostazioni principali sono le seguenti:

Server proxy gratuito per aziende con autorizzazione del dominio

La porta predefinita è 3128, ma preferisco usare 8080.

I parametri selezionati nella scheda Interfaccia proxy determinano quali interfacce ascolterà il nostro server proxy. Poiché questo firewall è costruito in modo tale da guardare Internet attraverso l'interfaccia WAN, anche se LAN e WAN potrebbero trovarsi sulla stessa sottorete locale, consiglio di utilizzare la LAN per il proxy.

Il loopback è necessario affinché sqstat funzioni.

Di seguito troverai le impostazioni del proxy trasparente, così come il filtro SSL, ma non ci servono, il nostro proxy non sarà trasparente e per il filtro https non ci occuperemo della sostituzione del certificato (dopotutto abbiamo la gestione dei documenti , clienti bancari, ecc.), prendiamo in considerazione solo la stretta di mano.

A questo punto, dobbiamo andare sul nostro controller di dominio, creare un account per l'autenticazione (puoi anche utilizzare quello che hai configurato per l'autenticazione su pfSense stesso). Un fattore molto importante qui è che se intendi utilizzare la crittografia AES128 o AES256, seleziona le caselle appropriate nelle impostazioni del tuo account.

Se il tuo dominio è una foresta molto complessa con un gran numero di directory o il tuo dominio è .local, allora POSSIBILE, ma non sicuro, dovrai utilizzare una password semplice per questo account, il bug è noto, ma con una password complessa password potrebbe semplicemente non funzionare, è necessario verificare caso specifico.

Server proxy gratuito per aziende con autorizzazione del dominio

Dopo tutto ciò, creiamo un file chiave per Kerberos, sul controller di dominio, apriamo un prompt dei comandi con diritti di amministratore e inseriamo:

# 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

Dove indichiamo il nostro FQDN pfSense, assicurati di rispettare le maiuscole, nel parametro mapuser inseriamo il nostro account di dominio e la sua password, e in crypto selezioniamo il metodo di crittografia, io ho usato rc4 per lavoro e nel campo -out selezioniamo dove invieremo il nostro file chiave già pronto.
Dopo aver creato con successo il file chiave, lo invieremo al nostro pfSense, io ho usato Far per questo, ma puoi farlo anche usando comandi, putty o tramite l'interfaccia web di pfSense nella sezione “DiagnosticsCommand Line”.

Ora possiamo modificare create /etc/krb5.conf

Server proxy gratuito per aziende con autorizzazione del dominio

dove /etc/krb5.keytab è il file chiave che abbiamo creato.

Assicurati di controllare il funzionamento di Kerberos usando kinit; se non funziona, non ha senso leggere oltre.

Configurazione dell'autenticazione Squid e dell'elenco di accesso senza autenticazione

Dopo aver configurato correttamente Kerberos, lo collegheremo al nostro Squid.

Per fare ciò, vai su ServiziSquid Proxy Server e nelle impostazioni principali, vai in fondo, lì troveremo il pulsante "Impostazioni avanzate".

Nel campo Opzioni personalizzate (prima dell'autenticazione), inserisci:

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

Dove auth_param programma di negoziazione /usr/local/libexec/squid/negotiate_kerberos_auth — seleziona l'assistente per l'autenticazione Kerberos di cui abbiamo bisogno.

Chiave -s con significato GSS_C_NO_NAME — determina l'utilizzo di qualsiasi account dal file chiave.

Chiave -k con significato /usr/local/etc/squid/squid.keytab — determina l'utilizzo di questo particolare file keytab. Nel mio caso, questo è lo stesso file keytab che abbiamo generato, che ho copiato nella directory /usr/local/etc/squid/ e rinominato perché Squid non voleva essere amico di quella directory, a quanto pare non avevo abbastanza diritti.

Chiave -t con significato -t nessuno — disabilita le richieste cicliche al controller di dominio, riducendo notevolmente il carico su di esso se si hanno più di 50 utenti.
Durante il test è anche possibile aggiungere l'opzione -d, ovvero diagnostica, verranno visualizzati più registri.
auth_param negozia i figli 1000 — determina quanti processi autorizzativi simultanei possono essere avviati
auth_param negozia keep_alive su — impedisce che la connessione venga interrotta durante il polling della catena di autorizzazione
acl auth proxy_auth RICHIESTO — crea e richiede un elenco di controllo degli accessi che includa gli utenti autorizzati
acl nonauth dstdomain "/etc/squid/nonauth.txt" — informiamo lo squid della lista di accesso non autenticata, che contiene i domini di destinazione a cui tutti potranno sempre accedere. Creiamo il file stesso e inseriamo i domini al suo interno nel formato

.whatsapp.com
.whatsapp.net

Whatsapp viene utilizzato come esempio per un motivo: è molto esigente riguardo ai proxy di autenticazione e non funzionerà se non è consentito prima dell'autenticazione.
http_access consente la non autenticazione — consentire l'accesso a questo elenco a tutti
http_access nega !auth — vietiamo l'accesso ad altri siti a utenti non autorizzati
http_access consenti autenticazione — consentire l'accesso agli utenti autorizzati.
Questo è tutto, Squid stesso è configurato, ora è il momento di iniziare a filtrare per gruppi.

Configurazione di SquidGuard

Vai a ServiziFiltro proxy SquidGuard.

Nelle Opzioni LDAP inseriamo i dettagli del nostro account utilizzato per l'autenticazione Kerberos, ma nel seguente formato:

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

Se sono presenti spazi o caratteri non latini, l'intera voce deve essere racchiusa tra virgolette singole o doppie:

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

Successivamente, assicurati di selezionare queste caselle:

Server proxy gratuito per aziende con autorizzazione del dominio

Per eliminare DOMAINpfsense non necessari DOMINIO.LOCAL a cui l'intero sistema è molto sensibile.

Ora andiamo su Group Acl e leghiamo i nostri gruppi di accesso al dominio, io utilizzo nomi semplici come group_0, group_1, ecc. fino a 3, dove 3 significa accesso solo alla white list e 0 significa che tutto è possibile.

I gruppi sono collegati come segue:

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

salviamo il nostro gruppo, andiamo su Times, lì ho creato un gap che significa che funzionerà sempre, ora andiamo su Categorie target e creiamo elenchi a nostra discrezione, dopo aver creato gli elenchi torniamo ai nostri gruppi e all'interno del gruppo utilizziamo i pulsanti per selezionare chi può andare dove e chi non può andare dove.

LightSquid e sqstat

Se durante il processo di installazione abbiamo selezionato loopback nelle impostazioni di Squid e abbiamo aperto la possibilità di accedere a 7445 nel firewall sia sulla nostra rete che su pfSense stesso, quando andiamo su DiagnosticsSquid Proxy Reports possiamo facilmente aprire sia sqstat che Lighsquid, per quest'ultimo ci servirà. Lì puoi trovare un login e una password e puoi anche scegliere un design.

Completamento

pfSense è uno strumento molto potente che può fare molte cose: l'inoltro del traffico e il controllo dell'accesso degli utenti a Internet sono solo un granello dell'intera funzionalità, tuttavia, in un'azienda con 500 macchine, ha risolto il problema e ci ha permesso di risparmiare sull'acquisto di una procura.

Spero che questo articolo possa aiutare qualcuno a risolvere un problema che è abbastanza rilevante per le medie e grandi imprese.

Fonte: habr.com

Aggiungi un commento