Home > Linux, Networking & NetSecurity, Sicurezza > Squid 3 LDAP Groups

Squid 3 LDAP Groups

Eccomi di nuovo qui …

Su spunto di alcuni colleghi, che mi hanno scritto in questi ultimi giorni in merito all’autenticazione LDAP su Squid 3 con un Domain Controller Active Directory, è nata un’interessante discussione sull’utilità di far autenticare sulle workstation joinate al dominio tutti gli utenti presenti in AD ma di far navigare solamente gli utenti abilitati.

Questa necessità nasce dal fatto che in alcune realtà, sempre per ragioni di sicurezza, si vuole comunque rendere la navigazione fruibile solo agli utenti con mansioni particolari.

Bè chi pensava che il fido e potente Squid 3 non potesse fare ciò si sbagliava!!!

Ecco come ho implementato la cosa sul proxy di un cliente :

auth_param basic program /usr/lib/squid3/squid_ldap_auth -v 3 -R -b “dc=RAV3N,dc=HOME” -D “cn=Admin,cn=Users,dc=RAV3N,dc=HOME” -w passwordSegreta -f sAMAccountName=%s -h xxx.xxx.xxx.xxx:389

Ovviamente per il significato di questo quote vi rimando al post precedente, dove spiegavo come interfacciare via LDAP Squid 3 con Active Directory. Con l’helper LDAP eseguiamo l’autenticazione del singolo utente, ma se vogliamo concedere la navigazione solo agli utenti appartenenti ad un singolo gruppo dobbiamo integrare questo helper con le  external ACL di Squid come segue :

external_acl_type gruppo_ldap %LOGIN /usr/lib/squid3/squid_ldap_group -v 3 -R -K -b “dc=RAV3N,dc=HOME” -D “cn=Admin,cn=Users,dc=RAV3N,dc=HOME” -w “PasswordSegreta” -f “(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=%a,cn=Users,dc=RAV3N,dc=HOME))” -h xxx.xxx.xxx.xxx:389

Il significato di questa ACL è il seguente:

  • richiamiamo l’helper squid_ldap_group
  • -v 3 indica di utilizzare il protocollo LDAP versione 3, come specificato nel post precedente perchè è quello più compatibile con un Domain Controller Windows Server 2008 R2
  • -R indica di non seguire i referal all’interno della foresta Active Directory
  • -b Indica il percorso DN base in cui eseguire la ricerca; io qui ho specificato tutta la foresta Active Directory
  • -D Indica il DN dell’utente che utilizzeremo per fare il bind con il Domain Controller; ovvero un utente abilitato alla lettura degli oggetti e dei loro attributi presenti nella foresta active directory
  • -w indica la password per effettuare il bind associata all’utenza indicata nel parametro -D
  • -f indica la query da eseguire sulla foresta Active Directory
  • -h indica l’indirizzo IP del Domain Controller
  • :389 indica la porta su cui il DC è in ascolto per poter accettare il bind e la richiesta da parte di Squid

Adesso vediamo nello specifico il significato della query, che è la parte più importante di tutto il procedimento per poter eseguire questo tipo di autenticazione basata su gruppi :

  • (objectclass=person) – Indica di ricercare e di verificare l’0ggetto persona o meglio l’oggetto utente
  • (sAMAccountName=%v) – Indica di parsare l’username che  l’utente ha passato all’helper squid_ldap_auth e che è già stato autenticato con successo tramite Active Directory (praticamente il quote precedente al punto sAMAccountName=%s)
  • (memberof=cn=%a,cn=Users,dc=RAV3N,dc=HOME) – Indica di verificare che l’utenza presente nella variabile d’ambiente %v deve far parte del gruppo %a che specificheremo noi nell’ACL ad HOC che vi mostro dopo. Praticamente se l’utente, che è già stato autenticato dall’helper squid_ldap_auth (e messo nella variabile %v) appartiene al gruppo oppure ai gruppi richiamati dalla variabile %a allora la connessione verrà passata.

Adesso non ci resta che specificare un’ACL per ogni gruppo che vogliamo abilitare alla navigazione ad Internet

acl navigazione-limitata external gruppo_ldap limitati
acl navigazione-illimitata external gruppo_ldap illimitati

Il significato, molto semplice devo dire, è il seguente:

  • navigazione-limitata è il nome che diamo all’ACL del gruppo
  • gruppo_ldap è il nome dell’ACL external che parsa l’utenza e ne verifica l’appartenenza al gruppo su AD
  • limitati indica il nome esatto del gruppo presente in AD al quale suddetta utenza deve appartenere

Quindi per concludere ci basterà creare delle direttive http_access come segue:

acl ldap-auth proxy_auth REQUIRED

http_access allow navigazione-limitata ldap-auth

http_access allow navigazione-illimitata ldap-auth

http_access deny all

Dove il significato è il seguente:

  • acl ldap-auth proxy_auth REQUIRED – Indica di forzare l’autenticazione della connessione (via ldap semplice)
  • http_access allow navigazione-limitata ldap-auth – Indica di consentire la navigazione agli utenti verificati sia dall’ACL navigazione-limitata che dall’ACL ldap-auth (che esegue l’autenticazione semplice)
  • Idem per l’acl navigazione-illimitata ldap-auth
  • http_access deny all – Indica di negare l’accesso a tutto il resto

Ovviamente poi potete anche  giocare un pò con le altre direttive relative all’autenticazione per esempio :

auth_param basic children 2
auth_param basic realm Web-Proxy della Rete RAV3N.HOME
auth_param basic credentialsttl 10 minutes
authenticate_ip_ttl 60 seconds
auth_param basic casesensitive on

Il significato delle varie direttive è abbastanza semplice, ed è quanto segue:

  • auth_param basic children 2 – Indica quanti processi dell’helper squid_ldap_auth devono essere attivate da squid
  • auth_param basic realm – Indica il messaggio da sparare all’utente nel pop-up di autenticazione
  • auth_param basic credentialsttl 10 minutes – Indica per quanti minuti vengono cachate le credenziali da squid
  • authenticate_ip_ttl 60 seconds – Indica il TTL dell’autenticazione per singolo IP (Time To Live)
  • auth_param basic casesensitive on – Indica se l’helper deve essere case sensitive oppure no nel parsare i dati passati dall’utente

Poi le possibilità sono veramente tante, ma per questo vi rimando al wiki di squid che è ben fornito e ben fatto😉

Ecco … spero di essere stato utile e soprattutto di aver aiutato qualcuno che magari si sta cimentando con squid per la prima volta. In qualsiasi caso se avete dei consigli oppure delle integrazioni commentate pure😉

Ciauz

  1. Non c'è ancora nessun commento.
  1. No trackbacks yet.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: