Ir para o conteúdo
ou

Software livre Brasil

Tela cheia
 Feed RSS

Blog

27 de Maio de 2009, 0:00 , por Software Livre Brasil - | Ninguém está seguindo este artigo ainda.

Autenticando SQUID com OpenLDAP no Centos 6

31 de Julho de 2012, 0:00, por Software Livre Brasil - 0sem comentários ainda

Para essa configuração o squid pré-compilado que está no repositório resolve, ou seja:

# yum install squid

Agora vamos a configuração adicional do seu squid.conf, que depois irei explicar cada parâmetro:

auth_param basic children 5
auth_param basic realm Meu Proxy
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive on

auth_param basic program /usr/lib64/squid/squid_ldap_auth -b “dc=meudominio,dc=net,dc=br” -f “uid=%s” <ip do servidor OpenLDAP>

external_acl_type ldap_group %LOGIN /usr/lib64/squid/squid_ldap_group -d -b ou=Groups,dc=meudominio,dc=net,dc=br -f “(&(memberuid=%u)(cn=%g))” -h <ip do servidor OpenLDAP>

acl password proxy_auth REQUIRED
http_access allow password

auth_param

É a sintaxe responsável por configurar os parâmetro de configuração, como o nome mesmo já sugere, ela pode ter 4 opções primárias de autenticação:

  1. basic
  2. digest
  3. negotiate
  4. ntlm

Para esse tutorial, vou apenas me atentar a primeira, que é basic:

Esse é o metodo de autenticação http, onde ela é feita pelo próprio navegador web, geralmente via pop-up solicitando usuário e senha.

Agora vamos comentando linha a linha:

auth_param basic children 5

Com essa sintaxe, é possível configurar o número de processos de autenticação máximos, ou seja, caso esteja com lentidão na autenticação, experimente aumentar esse valor.

Após esses parâmetros, é possível adicionar também o paramêtro “startup”  e “concurrency”  que são utilizados para informar quantos processos serão iniciados junto com o squid e quantos serão concorrentes.

Ex: auth_param basic children 10 startup=4 concurrency=2

auth_param basic realm Meu Proxy

Com esse parâmetro é possível informar o texto que aparecerá no Pop-up de solicitação de usuário e senha, no navegador.

auth_param basic credentialsttl 2 hours

Com essa opção é possível informar o tempo de vida da autenticação, ou seja, após duas horas o cliente será obrigado a reautenticar.

auth_param basic casesensitive on

Especifica se o nome do usuário é sensível a diferença de caixa ou não (se é maiúsculo ou não).

auth_param basic program /usr/lib64/squid/squid_ldap_auth -b “dc=meudominio,dc=net,dc=br” -f “uid=%s” <ip do servidor OpenLDAP>

Agora temos o programa, que é o responsável por conectar no nosso servidor OpenLDAP e verificar se a senha informada está correta ou não, ou seja, o usuário e senha informado no navegador é passado para o squid, e esse comando checa de fato se a senha está correta.

Perceba que em alguns outros sistemas, o caminho do programa pode mudar, ou seja, utilize o locate para verificar onde está seu “squid_ldap_auth”.

O parâmetro -b informa qual o caminho de consulta dos usuários, coloquei o domínio todo, mas poderia ser uma unidade organizacional especifica.

O parâmetro -f informa qual o filtro utilizado para encontrar o usuário, que no nosso caso é uid, sendo que %s será interpretador pelo squid como o usuário, ou seja, mantenha esse parâmetro dessa forma.

Todo programa executado pelo auth_param program deve ter dois retornos; OK ou ERR, ou seja, posteriormente, quando falarmos sobre lista de acesso, toda verificação booleana será feita com base nesses retornos.

Agora vamos preparar o “meio de campo” para criação das ACLs

external_acl_type <nome do tipo de ACL> %LOGIN /usr/lib64/squid/squid_ldap_group -d -b ou=Groups,dc=meudominio,dc=net,dc=br -f “(&(memberuid=%u)(cn=%g))” -h <ip do servidor OpenLDAP>

Essa sintaxe define um tipo de ACL com base em um programa auxiliar, que no nosso caso é para autenticação, ou seja, escolha seu nome de ACL e vamos para cada opção dessa sintaxe:

/usr/lib64/squid/squid_ldap_group : Dado um nome de usuário e grupo, esse programa é utilizado para verificar se o usuário informado via navegador está no grupo ou não, ou seja,  o tipo de ACL que estamos construindo servirá para criar regras com base em grupos do LDAP.

-d : Ativa o modo debug. Isso é muito bom para testes, em produção remova essa opção.

-b : Aqui será configurado o caminho de pesquisa dos grupos, escolha o que corresponde a sua árvore LDAP.

-f  : Informa qual filtro utilizado para verificar se o usuário está nesse grupo ou não.

-h : ip do servidor OpenLDAP

Agora vamos para construção das ACLs de fato:

acl <nome da ACL> proxy_auth REQUIRED

A sintaxe acl é responsável por especificar uma acl, a opção proxy_auth executa o programa do auth_param, já explicado nesse texto afim de fazer determinada configuração, que no nosso caso a opção final REQUIRED indica que qualquer usuário informado será aceito por essa ACL, porém caso prefira, poderia ser construido uma ACL para verificar se o usuário e senha informado eram um determinado nome, ou seja:

Ex: acl <nome da ACL> proxy_auth rafael

Para ilustrar, irei criar uma ACL de grupo:

acl <nome da acl> external <nome do tipo de ACL> <nome do grupo>

Perceba que nessa sintaxe, é informado a opção external, que indica que essa ACL é do externa, ou seja, criada com o parâmetro external_acl_type. Agora temos uma ACL que verifica se o usuário X pertence ao grupo Y, ou não.

Pronto! Agora você já tem todas as ACLs, basta configurar as regras com o parâmetro http_access.

Fontes :

squid-cache.org

man squid_ldap_group

wiki.squid-cache.org