Squid autenticado por grupos do AD (pfSense)

Transcrição

Squid autenticado por grupos do AD (pfSense)
Squid autenticado por grupos do AD (pfSense)
Este tutorial demonstra como utilizar os recursos da biblioteca squid_ldap_group para que o
Squid autentique os usuários por grupos cadastrados no Active Directory.
Por: Ricardo Pardim Claus
29/07/2011
Tags: Squid, pfSense, Active Directory, AD, openldap-client, squid_ldap_group, squid_ldap_auth, squid.inc
Verão do sistema e pacotes utilizados:
pfSense versão 2.0 RC3
Squid versão 2.7
Windows 2003 R2
Existe um bug no squid e no openldap-client, ambos nas versões anteriores à 2.0 do pfSense.
Caso o seu pfSense esteja em produção, e não tem como fazer uma nova instalação, deverá primeiro
resolver estes problemas seguindo estes tutoriais:
http://www.fug.com.br/content/view/689/77/
http://www.vivaolinux.com.br/dica/Corrigindo-a-opcao-de-Delay-Pools-e-autenticacao-Ldap-do-Squid2.7.8_1-no-PfSense-1.2.3Release
Bases de Referencias:
http://forum.pfsense.org/
http://www.squid-cache.org.br/index.php?option=com_content&task=view&id=50&Itemid=27
http://www.cyberciti.biz/tips/howto-configure-squid-ldap-authentication.html
http://www.papercut.com/kb/Main/ConfiguringSquidProxyToAuthenticateWithActiveDirectory
http://forum.pfsense.org/index.php/topic,20208.0.html
http://www.digipedia.pl/man/doc/view/squid_ldap_auth.8
Mãos a obra:
Primeiramente, o squid não pode estar configurado em modo proxy transparente. Neste modo, não é
possível nem ao menos configurar as opções de autenticação no webgui do pfSense, já que proxy
transparente não faz autenticação.
No Active Directory, crie uma OU, com o nome “Internet”.
Nesta OU, crie 2 grupos “Internet-TI”, e “Internet-Bancos”, ou qualquer nome que mais lhe agradar.
O grupo Internet-TI, tem acesso full, sem nenhum bloqueio.
Já o internet-bancos, ira navegar apenas em sites cadastrados em uma lista (lista branca).
Na OU “Users”, crie um usuário com qualquer nome, aqui utilizei o usuário squid.
Defina uma senha para este usuário, e lembre de marcar a opção para não expirar a senha deste usuário.
Após concluir toda a configuração indicada neste tutorial, você poderá criar quantos grupos desejar, e seguir
com os bloqueios e liberação para cada um deles.
Suponho que o seu Squid já esteja funcionando com os bloqueios desejados.
Antes, é necessário alterar as regras de firewall, para que as estações clientes sejam obrigadas a utilizarem
o proxy local para ter acesso a internet.
No menu Firewall > Rules, as regras devem ficar conforme imagem abaixo:
OBS: A regra importante que desabilitei, foi a segunda regra, pois ela permite acesso total a qualquer
endereço de destino. Note que no final das regras, eu criei uma regra semelhante.
Squid autenticado por grupos do AD (pfSense)
Figura 1 - Regras de firewall
Agora vamos as configurações do squid.
Acesse o menu Services > Proxy Server.
Na guia “General”, desabilite a opção de “Proxy Transparente”.
Em seguida, acesse a guia “Auth Settings”.
Altere as regras conforme a imagem abaixo:
Squid autenticado por grupos do AD (pfSense)
Figura 2 - Configuração da guia Auth Settings do Squid
Explicando os valores que utilizei, para servir como referencia:
Meu dominio: dominio.com.br
Servidor AD: 10.0.0.2
Usuário squid:
Este usuário que fará a autenticação no AD, para efetuar as pesquisas na base de dados ldap.
Nota: Muitos tutoriais existentes na internet, indica para utilizar um usuário Administrator para pesquisar na
base de dados ldap. Mas não é necessário que o usuário seja administrador. Crie um usuário com um nome
qualquer, sem que este seja administrador do sistema. Isto aumenta a segurança, já que a autenticação é
feita em texto puro, sem nenhum tipo de encriptação. (Vide seção “Testes e resultados”)
Após efetuar as alterações e salvar, e inclusive o proxy configurado no navegador da maquina cliente, o
Squid já ira solicitar autenticação para navegar.
Autenticação por Grupo
Falta configurar o squid para autenticar por grupo, e não por usuário ou IP.
Lembrando que nenhuma alteração deve ser feito no arquivo squid.conf (/usr/local/etc/squid/squid.conf),
como é feito em outras distribuições linux.
Estas configurações são sobre escritas sempre que o pfSense for reiniciado, ou qualquer alteração feita pela
webgui.
O correto é alterar diretamente o arquivo squid.inc.
Squid autenticado por grupos do AD (pfSense)
Este arquivo se encontra neste diretorio: /usr/local/pkg/squid.inc
O código gerado após configurar a autenticação na guia “Auth Settings” do squid, ira gerar estas linhas no
squid.conf:
auth_param basic program /usr/local/libexec/squid/squid_ldap_auth -v 3 -b
dc=dominio,dc=com,dc=br -D cn=squid,cn=Users,dc=dominio,dc=com,dc=br -w 1234 -f
"cn=%s" -u uid -P 10.0.0.2:389
Todas as alterações que for feita no squid.inc, após salvar, poderá ver no arquivo squid.conf, como esta
ficando as configurações, para efeitos didáticos
Localize estas linhas no squid.inc:
auth_param basic children $processes
auth_param basic realm $prompt
auth_param basic credentialsttl $auth_ttl minutes
acl password proxy_auth REQUIRED
Após localizar, insira estas linhas, para que a autenticação seja feita por grupo, e inclusive,
ativa os bloqueios/liberação nos grupos desejados:
#AUTENTICACAO POR GRUPOS DO AD
external_acl_type ldap_group children=30
%LOGIN /usr/local/libexec/squid/squid_ldap_group -v 3 -R -b
"dc=dominio,dc=com,dc=br" -D "cn=squid,cn=Users,dc=dominio,dc=com,dc=br" -w
"1234" -f "(&(objectclass=person) (sAMAccountName=%v) (memberof=cn=
%a,ou=Internet,dc=dominio,dc=com,dc=br))" -h 10.0.0.2 -p 389
#LIBERAÇÃO/BLOQUEIO DOS GRUPOS
#Grupo Acesso Padrao Acesso Limitado
acl ldapInternet-Bancos external ldap_group Internet-Bancos
#Grupo Acesso Full Acesso Full
acl ldapInternet-TI external ldap_group Internet-TI
#acl bloqueio url_regex -i "/var/squid/acl/bloqueio.acl"
acl liberado url_regex -i "/var/squid/acl/liberado.acl"
http_access allow ldapInternet-TI
http_access deny ldapInternet-Bancos !liberado
Note que para fins de testes, eu deixei desabilitado a ACL “bloqueio”, já que neste ambiente, irei utilizar
apenas 2 grupos. Um com acesso total, e outro com acesso limitado.
O grupo Internet-Bancos, definido na ACL ldapInternet-Bancos, irá acessar apenas os sites
cadastrados no arquivo liberado.acl (ACL liberado), comumente chamado de “lista branca”.
Mas nada impede que seja utilizado mais grupos, e outros tipos de bloqueio, ficando a critério de cada um.
Não esqueça de criar os arquivos bloqueio.acl, e liberado.acl, e colocar algumas URL's no seu conteúdo.
Testes e resultados:
Antes de alterar o pfsense da empresa onde trabalho, efetuei testes em 3 maquinas virtuais (WinXP, pfSense
2.0 RC3 e Win2003 R2 Standard Edition).
Na VM, não foi necessário colocar um usuário administrador para efetuar as pesquisas no LDAP. Mas já no
pfSense instalado na empresa, isso não funcionou. Assim tive que colocar o usuário Administrator do
Win2003 para pesquisar no LDAP deste servidor. Portanto, caso não funcione com usuário comum, troque
pelo usuário administrator, na guia Auth Settings, e tambem na linha em que “external_acl_type
ldap_group” no arquivo squid.inc.
No pfSense (empresa), as configurações da guia “Auth Settings” do squid, foi necessário alterar a opção
Squid autenticado por grupos do AD (pfSense)
LDAP search filter, de cn=%s, para sAMAccountName=%s, ficando assim:
Authentication server
10.0.0.2
Authentication server port
389
LDAP server user DN
cn=Administrator,cn=Users,dc=dominio,dc=com,dc=br
LDAP password
senha
LDAP base domain
dc=dominio,dc=com,dc=br
LDAP username DN attribute
uid
LDAP search filter
sAMAccountName=%s
Finalizando
Depois de algumas semanas pesquisando na internet, estes foram os passos que segui para que o Squid do
pfSense autenticasse por grupos no Active Directory.

Documentos relacionados

Configurando um Squid "Ninja"

Configurando um Squid "Ninja" Table of Contents Configurando um Squid "Ninja"......................................................................................................................1 Introdução.......................

Leia mais