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"
Table of Contents Configurando um Squid "Ninja"......................................................................................................................1 Introdução.......................
Leia mais