venerdì 20 aprile 2012

CONFIGURAZIONE DI SQUID PROXY SERVER SU LINUX UBUNTU 10.04

PER AUTENTICAZIONE CON ACTIVE DIRECTORY SU SERVER WINDOWS 2003


In questo articolo verrà illustrato come configurare in modo ottimale il PROXY SERVER SQUID installato su un server Linux (nel caso ubuntu 10.04) per l'utilizzo di utenti Microsot Windows 2003 R2 che accedono al server in TERMINAL.
L'esperienza è maturata in base alla necessità di monitorare la navigazione degli utenti aziendali. Tutti gli utenti si loggano su un Terminal Server 2003 sotto D.C. (Domain Controller). La navigazione internet (porta 80 e 8080) viene filtrata in modo trasparente dal server proxy (linux Ubuntu 10.04 LTS).
Agli utenti di dominio Windows 2003 verrà chiesto di inserire Username e Password per accedere alla navigazione Web. Il match delle utenze sarà fatto direttamente dallo Squid proxy con una query sull'A.D. (Active Directory) del server MS Windows 2003.
Le  A.D. di Micorsoft sono compatibili con il protocollo  LDAP v3 e quindi possono essere utilizzate come  meccanismo per autenticare gli utenti. Squid supporta LDAP v3 e diversi metodi di autenticazione. È possibile ottenere risultati simili utilizzando Samba e Winbind, tuttavia questo processo è molto più coinvolto e richiede che la macchina server Squid debba essere membro del dominio MS Windows.
Usando i metodi di autenticazione LDAP di  Squid, è possibile ottenere l'autenticazione degli utenti nelle A.D. utenti, solo attraverso qualche semplice configurazione del server Squid.
Avrete bisogno di Squid 2.5 o superiore (con libreire LDAP installate). Alcune informazioni su questi moduli si possono trovare qui:
Se la vostra installazione di Squid ha le librerie LDAP già installate e compilate, potrete trovare i seguenti files ldap_auth e squid_ldap_group nella directory "/usr/lib/squid" o path equivalente dove squid risulta installato.
Questi files servono per permettere l'autenticazione LDAP e il controllo di appartenenza al/ai gruppo/i settati sul server LDAP (in questo caso A.D. su Windows Server).


SQUID - CONFIGURAZIONE AUTENTICAZIONE LDAP

Il primo passo consiste nel configurare lo Squid Proxy Server per autenticarsi con Username e Password nell'A.D. di Windows Server. Per Far questo occorre aprire il file di configurazione squid.conf che si trova in /etc/squid.
Una volta aperto il file (consiglio VI come editor testuale oppure Gedit che ha anche una interfaccia grafica abbastanza buona), occorre apportare le seguenti modifiche:
Trovare la sezione auth param (si può cercare con il tag auth_param all'interno del file di configurazione) e sostituire la linea

auth param basic program
con la seguente linea:

auth_param basic program /usr/lib/squid/ldap_auth -R
-b "dc=your,dc=domain,dc=com"
-D "cn=Administrator,cn=Users,dc=your,dc=domain,dc=com"
-w "password" -f sAMAccountName=%s -h xxx.xxx.xxx.xxx
auth_param basic children 5
auth_param basic realm Il nome della vostra organizzazione
auth_param basic credentialsttl 5 minutes
N.B. L'indentatura delle linee 2, 3 e 4 indicano che fanno parte tutte della prima linea. Non ci sono "a capo" o similari.
Questi paramentri indicano a Squid il nome utente e la password per loggarsi al server A.D. In particolare:
  • Opzione -b : indicata il nome di dominio del server dove riesede l'A.D.
  • Opzione -D: indica l'utente che Squid utilizzerà per il login e le relative query sull'A.D. . Nell'esempio è stato utilizzato l'utente ADMINISTRATOR. Ovviamente potete utilizzare un'altro utente con permessi amministrativi.
  • Opzione -w: indica la password per l'utente specificato nel precedente punto (opzione -D). Se volete garantire maggiore sicurezza, potete salvare la password in un file ed utilizzare l'opzione -w con il path completo che porta al file contente la password (E.S: -w /home/user/file.txt)
  • Opzione -h: indica l'indirizzo IP del vostro server dove riesiedono le A.D.
  • Opzione -R: è l'opzione che impone a Squid di autenticarsi tramite Windows A.D.
  • Opzioine -f: è la query LDAP utilizzata per cercare l'utente . Nel nostro esempio la stringa sAMAccountName=%s andrà a controllare se le credenziali inseritte in fase di autenticazione (richieste da SQUID tramite IExplorer) sono presenti all'interno di A.D. In particolare, la variabile %s prenderà il nome utente inserito dall'utente in fase di autenticazione tramite IExplporer, E' possibile utilizzare anche query più complesse. Consiglio in tal caso di utilizzare un tool per comporre la query in modo ottimale e senza errori di sintassi.
Fatta questa modifica è necessario riavviare il servizio di squid per rendere effetttive le modifiche. da linea di comando potete lanciare

sudo /etc/init.d/squid restart


SQUID - CONFIGURAZIONE DEI GRUPPI PER L'ACCESSO A INTERNET

Una volta che l'utente è autenticato, è possibile definire quali utenti hanno accesso alle risorse di rete (cioè Internet) utilizzando le ACL di Squid (Access Control List). Le ACL sono un argomento abbastanza complesso che permette di attuare un sofisticato controllo sull'accesso alle risorse esterne presenti sul web.
In questo articolo si illustrerà una configurazione di base per permettere l'autenticazione tramite A.D. Se volete maggiori informazioni riguardo l'utilizzo delle ACl potete quardare qui:
Per cominciare abbiamo bisogno di inserire una regola ACL . Editiamo ancora il file squid.conf e cercare la sezione ACL con TAG > external_acl_type e inseriamo la seguente regola:

external_acl_type credenziali %LOGIN /usr/lib/squid/squid_ldap_group -R
-b "dc=your,dc=domain,dc=com"
-D "cn=Administrator,cn=Users,dc=your,dc=domain,dc=com"
-w "password"
-f "(&(objectclass=person)(sAMAccountName=%v)emberof=cn=%a,cn=users,dc=your,dc=domain,dc=com))"
-h xxx.xxx.xxx.xxx

La maggior parte del codice è simile a quello precedentemente indicato. La variabile %v raccoglie il nome utente di chi si logga tramite IExplorer, La variabile %a è il nome del gruppo dato nella ACL stessa come di seguito vedremo. Assicuratevi che il filtro "memberof"  sia corretto e puntii alla O.U (Organizational Unit) definita nelle A.D. che contiene il gruppo con gli utenti membri che possono navigare.
Esempio:
  • Dominio > yourdomain.com
  • Organizational Unit > Vendite
  • Gruppo > Agenti
In questo esempio il filtro "memberof" sarà costruito come : memberof=cn=%a,ou=vendite,dc=your,dc=domain,dc=com
Fatto questa modifica, sempre all'interno del file di configurazione di Squid, posizionarsi nella sezione ACL con TAG > acl. Qui andiamo a inserire le 2 seguenti regole:

acl area_locale proxy_auth REQUIRED src xxx.xxx.xxx.xxx
acl Internet_Access external credenziali agenti
Il nome della regola è Internet_Access  e potete modificarlo secondo le vostre esigenze. Il nome "credenziali" richiama la regola esterna (external_acl_type) definita sopra. Il gruppo presente nelle A.d. che permette agli utenti mebri di accedere ad internet è "agenti".
Ora che abbiamo completato le ACL, dobbiamo permettere il traffico internet agli utenti che soddisferanno tutti i requisiti.
Sempre nel file squid.conf nella sezione con TAG > http_acces definite la seguente regola:

http_access allow Internet_Access
Riavvire lo squid server con la procedura vista precedentemente.
Dovremmo quindi essere in grado di tentare di accedere a Internet tramite Squid, e dovrebbe esserci richiesto di inserire il nome utente e password di Windows. Solo agli utenti autenticati e agli utenti appartenenti al gruppo "agenti" sarà consentito l'accesso a Internet.

Nessun commento:

Posta un commento

Grazie per aver scritto.

Il tuo commento sarà pubblica appena approvato dall'amministratore del blog.