Ajuda para autenticar o squid por grupos do AD [RESOLVIDO] [TUTORIAL]
-
Jack
Como estou editando diretamente o arquivo squid.inc, a regra "http_access deny all" ja vem default no final.
Fiz os testes conforme vc mencionou, mas nao funcionou.
Para que vc analise detalhadamente, estou postando meu squid.conf, depois de alterado o squid.inc.OBS: Mudei os nomes das ACL's: Internet-TI = Acesso full, Internet-Bancos = Limitado.
Ao observar as ACL's Internet-TI e Internet-Bancos, quando comento a ACL Internet TI e deixo apenas a Internet-Bancos, o bloqueio funciona conforme meus planos. Mas ao deixar as 2 ACL's (que na verdade gostaria que funcionasse como os grupos do AD), o bloqueio nao funciona para ambos os grupos.
Lembrando que ja criei os 2 grupos acima no AD, na OU=Grupos.
A autenticação é feita normalmente por usuario cadastrado no AD.
Tenho um terceiro usuario que uso para teste, e não esta em nenhum grupo. Este nao consegue autenticar para navegar.
Até ai tudo bem, pois se nao está em nenhum grupo, não é para navegar mesmo.Antes de mais nada, é preciso entender que estas configurações fogem do escopo da GUI do PFSense. Por isso, a partir de agora nossa relação é diretamente com o pacote SQUID.
Bem, o que você tem no arquivo "/var/squid/acl/gp_bancos.acl"? O nome do grupo?
Pelo que consigo perceber, aparentemente o processo de autenticação do pacote SQUID junto ao WinServer não está ocorrendo 100%. Minha primeira dica é que você faça uma cópia de segurança deste seu arquivo "squid.inc" e tente adpatar as configurações da seção de autenticação as dicas deste post: http://www.papercut.com/kb/Main/ConfiguringSquidProxyToAuthenticateWithActiveDirectory
Veja como o autor trabalhar com a construção da ACL que tem o grupo de usuários com permissão de navegar na web. Acho que este artigo pode resolver esta sua pendenga!
Tente fazer e qualquer dúvida específica, poste por aqui mesmo…
Abraços!
Jack -
JackL
Obrigado pela ajuda.
Demorei uns dias para responder, mas venho com boas noticias. Consegui fazer o squid autenticar por grupo no AD.
Estou à semanas procurando estas informações, mas não encontrei.
O ruim é que tem pessoas que ja descobriram como fazer, mas nao compartilham a informação.
Portanto, resolvi escrever um passo a passo, compartilhando esta dica.
A URL que vc me passou, ja inclui no tutorial, junto a seção de "referências".
Sobre o tutorial, qualquer comentario, critica ou sugestão será bem vindo.Agradeço ao JackL e danielz, que me ajudaram de alguma forma.
OBS.: Não consigo anexar o arquivo PDF, pois o forum não aceita esta extenção de arquivo.
Alguem tem alguma sugestão de onde postar ? -
Legal… fico feliz em saber que você resolveu a sua pendenga (inclusive coloquei o "RESOLVIDO" no título deste meu post... Isso ajuda a galera a se organizar em fóruns públicos como este).
Fico feliz também em saber que conseguimos lhe ajudar de alguma forma e, mais feliz ainda, em saber que você está retornando à comunidade uma contribuição (tutorial). Sou um pouco novo "neste fórum", por isso não sei se existe uma área específica para divulgação deste tipo de material. Logo aí em cima é possível ver pelo menos 2 tópicos fixos, com tutoriais no estilo do seu... Provavelmente os moderadores podem aprovar este upload!
De todo modo, deixo o http://www.JACK.eti.br à disposição para publicação deste seu material. Assim ficará mais fácil referenciar por aqui - apontando apenas o link! ;)
Abraços!
Jack -
Jack
te enviei um email em particular sobre o assunto
-
Jack
te enviei um email em particular sobre o assuntoO documento em PDF, de autoria do colega Ricardo, já pode ser acessado a partir deste link: http://www.jack.eti.br/www/arquivos/outros_tutoriais/pfsense/autenticacao_grupos_AD_pfsense.pdf
Abraços!
Jack -
O documento em PDF, de autoria do colega Ricardo, já pode ser acessado a partir deste link: http://www.jack.eti.br/www/arquivos/outros_tutoriais/pfsense/autenticacao_grupos_AD_pfsense.pdf
Agora o artigo do Ricardo também pode ser acessado diretamente pelo blog: http://www.jack.eti.br/www/?p=3052
Abraços!
Jack -
Olá Jack,
Estamos na luta pra fazer o squid funcionar por grupo do AD, li o seu tuto, o do link abaixo, depois alterei o meu squid.inc. Porém o meu squid não sobe… Fica registrando o erro a seguir no log:
squid[16863]: Bungled squid.conf line 83: external_acl_type ldap_group children=30
Onde estou errando?
Desde já sou muito grato pelas contribuições de todos, pois são foruns como este que nos estimula a utilizar ferramentas em linux, só não aprende quem não quer mesmo…
Veja abaixo o trecho adicionado no squid.inc
seguindo –-> http://forum.pfsense.org/index.php/topic,20208.0.html
######################################################################
# Estrutura dentro do AD:
# Domínio: srg.net, Servidor: SERVER4, IP: 192.168.1.202
# Admin: Users\administrador
# Grupos de Internet: g_produtividade, g_total
# Unidade Org.: u_internet
#######################################################################Define a autenticação ldap e os parâmetros usados
external_acl_type ldap_group children=30
%LOGIN /usr/local/libexec/squid/squid_ldap_group -v 3 -R -b "dc=srg,dc=net" -D "cn=Administrador,cn=Users,dc=srg,dc=net" -w
"minha senha" -f "(&(objectclass=person) (sAMAccountName=%v) (memberof=cn=%a,ou=g_internet,dc=srg,dc=net))" -h 192.168.1.202 -p 389#Define a ACL do tipo external para usar os grupos do AD
external_acl_type ldap_group
%LOGIN /usr/local/libexec/squid/squid_ldap_group -R -b "dc=srg,dc=net" -D "cn=administrador,cn=Users,dc=srg,dc=net" -w
"minha senha" -f "(&(&(objectClass=person)(sAMAccountName=%u))(memberOf=%g))" -h 192.168.1.202#Define uma ACL denominada "produtividade" para um grupo que terá acesso restrito.
acl gprodutividade external ldap_group CN=g_produtividade, OU= u_internet, DC=srg,dc=net#Define uma ACL para acesso restrito aos domínios listados em um arquivo texto
acl restrito dstdom_regex -i "/var/squid/acl/whitelist.acl"#Define a diretiva formada pela combinação das ACLs acima definidas (AND lógico).
http_access allow gprodutividade restrito#Define uma ACL para um grupo com acesso total.
acl gtotal external ldap_group CN=g_total, OU= u_internet, DC=srg,dc=net#Define a diretiva de acesso total.
http_access allow gtotal######################################################################
-
@ValterTI11:
#Define a autenticação ldap e os parâmetros usados
external_acl_type ldap_group children=30
%LOGIN /usr/local/libexec/squid/squid_ldap_group -v 3 -R -b "dc=srg,dc=net" -D "cn=Administrador,cn=Users,dc=srg,dc=net" -w
"minha senha" -f "(&(objectclass=person) (sAMAccountName=%v) (memberof=cn=%a,ou=g_internet,dc=srg,dc=net))" -h 192.168.1.202 -p 389@ValterTI11,
Antes de qualquer coisa, grato pelos elogios…
No entanto, o artigo foi escrito pelo @ricardodru. Eu apenas o publiquei no meu blog.Em relação a sua dúvida, veja que a linha "external_acl_type ldap_group" é inteira, ou seja, deve ser escrito tudo na mesma linha "external_acl_type ldap_group children=30 %LOGIN /usr/local/libexec/squid/squid_ldap_group..."
Uma pequena correção: O PFSense é baseado no FreeBSD, não no Linux (embora ambos sejam softwares livres, são sistemas operacionais bem diferentes). ;-)
Abraços!
Jack -
Fala Jack,
Era isso mesmo, coloquei tudo em uma linha só e o squid subiu sem problemas.
Eu sinceramente não sabia que o FreeBSB e Linux não são a mesma coisa… Aprendendo mais uma... vou pesquisar mais a respeito...
Porém agora estou no 2º Round com o squid + LDAP...
É o seguinte a estação pede o usuário e senha, mas fica repetindo isso sem para e não navega...Grato por mais essa...
Veja como está as minhas ACLs:
#Define a ACL do tipo external para usar os grupos do AD
external_acl_type ldap_group %LOGIN /usr/local/libexec/squid/squid_ldap_group -R -b "dc=srg,dc=net" -D "cn=squid,cn=Users,dc=srg,dc=net" -w "senha" -f "(&(&(objectClass=person)(sAMAccountName=%v))(memberOf=cn=%a, ou=g_internet, dc=srg, dc=net))" -h 192.168.1.202 -p 389#Vincula as ACLs com base nos grupos do AD
acl gprodutividade external ldap_group g_produtividade
acl gtotal external ldap_group g_total
acl gbloqueados external ldap_group g_bloqueados#Define uma ACL para acesso restrito aos domínios listados em um arquivo texto produtividade.acl
acl restrito dstdom_regex -i "/var/squid/acl/produtividade.acl"#Define a diretiva formada pela combinação das ACLs acima definidas
http_access deny gbloqueados
http_access deny gprodutividade !restrito
http_access allow gtotal#######################################################################
@ValterTI11:
#Define a autenticação ldap e os parâmetros usados
external_acl_type ldap_group children=30
%LOGIN /usr/local/libexec/squid/squid_ldap_group -v 3 -R -b "dc=srg,dc=net" -D "cn=Administrador,cn=Users,dc=srg,dc=net" -w
"minha senha" -f "(&(objectclass=person) (sAMAccountName=%v) (memberof=cn=%a,ou=g_internet,dc=srg,dc=net))" -h 192.168.1.202 -p 389@ValterTI11,
Antes de qualquer coisa, grato pelos elogios…
No entanto, o artigo foi escrito pelo @ricardodru. Eu apenas o publiquei no meu blog.Em relação a sua dúvida, veja que a linha "external_acl_type ldap_group" é inteira, ou seja, deve ser escrito tudo na mesma linha "external_acl_type ldap_group children=30 %LOGIN /usr/local/libexec/squid/squid_ldap_group..."
Uma pequena correção: O PFSense é baseado no FreeBSD, não no Linux (embora ambos sejam softwares livres, são sistemas operacionais bem diferentes). ;-)
Abraços!
Jack -
Valter
Vou tentar ajuda-lo a resolver isso
O que esta acontecendo, é que o squid nao consegue identificar o grupo em que o usuário esta cadastrado.No trecho abaixo, descrito no seu squid.inc, ficou meio confuso.
#Vincula as ACLs com base nos grupos do AD
acl gprodutividade external ldap_group g_produtividade
acl gtotal external ldap_group g_total
acl gbloqueados external ldap_group g_bloqueadosPor exemplo, no AD, qual o nome do grupo "gprodutividade" ?
No AD, este grupo chama-se gprodutividade, ou g_produtividade ?
Acho que vc confundiu ai.
Veja no meu tutorial, a linha abaixo:
acl ldapInternet-TI external ldap_group Internet-TIEu defini apenas como nome da ACL "ldapInternet-TI", ja no AD, este grupo esta definido como "Internet-TI".
A ordem é essa:acl "nomedaACL" external ldap_group "grupo cadastrdo no AD"
OBS: Utilizei as aspas "" apenas para referencia, pois na linha de configuração, estas aspas nao devem ser inseridas.
Em nome da ACL, vc define qualquer nome, em grupo cadastrado no AD, vc deve inserir o nome correto que esta cadastrado no AD.
Lembrando, em ""nome da ACL", deverá colocar um nome diferente do nome do grupo do AD.
Faça os testes ai e poste o resultado. -
Olá RicardoDru,
É o seguinte:
Grupos de Internet no AD: g_produtividade, g_total, g_bloqueados
e as ACLs gprodutividade, gtotal, gbloqueadosEntão escrevi acho certo mesmo. Ok?
acl gprodutividade external ldap_group g_produtividade
acl gtotal external ldap_group g_total
acl gbloqueados external ldap_group g_bloqueadosValter
Vou tentar ajuda-lo a resolver isso
O que esta acontecendo, é que o squid nao consegue identificar o grupo em que o usuário esta cadastrado.No trecho abaixo, descrito no seu squid.inc, ficou meio confuso.
#Vincula as ACLs com base nos grupos do AD
acl gprodutividade external ldap_group g_produtividade
acl gtotal external ldap_group g_total
acl gbloqueados external ldap_group g_bloqueadosPor exemplo, no AD, qual o nome do grupo "gprodutividade" ?
No AD, este grupo chama-se gprodutividade, ou g_produtividade ?
Acho que vc confundiu ai.
Veja no meu tutorial, a linha abaixo:
acl ldapInternet-TI external ldap_group Internet-TIEu defini apenas como nome da ACL "ldapInternet-TI", ja no AD, este grupo esta definido como "Internet-TI".
A ordem é essa:acl "nomedaACL" external ldap_group "grupo cadastrdo no AD"
OBS: Utilizei as aspas "" apenas para referencia, pois na linha de configuração, estas aspas nao devem ser inseridas.
Em nome da ACL, vc define qualquer nome, em grupo cadastrado no AD, vc deve inserir o nome correto que esta cadastrado no AD.
Lembrando, em ""nome da ACL", deverá colocar um nome diferente do nome do grupo do AD.
Faça os testes ai e poste o resultado. -
Ok Valter,
Esta certo do jeito que vc fez.
Poste a imagem da guia Auth Settings do Squid, e tambem o trecho do squid.inc onde vc personaliza as configurações.Nas linhas de configuração personalizadas, bem como na guia Auth Settings do squid, vc está usando qual usuário para pesquisar no AD ?
Se vc leu o meu tutorial, veja que fiz testes na maquina fisica, e tambem em VMs.
Na VM, utilizei um usuario comum chamado squid, ja na maquina fisica, isto nao funcionou, tive que utilizar o Administrator.
Faça os testes e poste o resultado. -
Fala Ricardo,
É o seguinte… seu eu escrever diretor no squid.conf, deixo a guia auth Settings em branco e reiniciar o serviço... Tudo funciona.
Depois tento colar no squid.inc e depois reinicio o servidor aí ele não escreve no squid.conf.O que gostaria mesmo era escrever direto no squid.conf e se ele reiniciar um script meu vai lá e copia o meu squid.conf,, mas vai ficar um gambiarra do inferno.... Ou tem um jeito de anular o squid.inc?
Esse negócio tá ficando cada vez mais complicado, mas estou aprendendo um bocado... hehehe
Mas se
@ricardodru:Ok Valter,
Esta certo do jeito que vc fez.
Poste a imagem da guia Auth Settings do Squid, e tambem o trecho do squid.inc onde vc personaliza as configurações.Nas linhas de configuração personalizadas, bem como na guia Auth Settings do squid, vc está usando qual usuário para pesquisar no AD ?
Se vc leu o meu tutorial, veja que fiz testes na maquina fisica, e tambem em VMs.
Na VM, utilizei um usuario comum chamado squid, ja na maquina fisica, isto nao funcionou, tive que utilizar o Administrator.
Faça os testes e poste o resultado. -
Valter, conseguiu resolver o problema?
Acho estranho vc alterar o squid.inc, reiniciar o serviço, e o squid.conf nao ser reescrito.
É padrão do pfsense (squid.inc) reescrever o squid.conf, sempre que o serviço ou o sistema for reiniciado. A nao ser que vc altere o squid.conf, faça uma copia, e um script se encarrega de repor o squid.conf original quando o sistema for reiniciado.
Quando vc reinicia o serviço, vc faz isto via ssh ?
Ao invez de reiniciar, ja tentou apenas salvar (clicando no botão), em uma das guias do proxy server ? Isto pode ser feito a guia Access Control.
Qual a versão do pfsense que vc esta usando ? -
Oi Ricardo,
Agora ficou bom. Coloquei em custom option e deu certo. Eu dei mole com o ";" entre linhas, mas agora foi. (Veja abaixo observe o ";" no final de cada linha).
Porém deixei a aba Auth Setting em branco, o parâmetro http_access allow localnet estava aparecendo, então coloquei http_access deny localnet no início do meu código e deu certo. Outro detalhe é que tive que desmarcar a opção Allow users on interface. Testei reiniciando o serviço, depois reiciando o server e ficou 10. Tudo funcionado belezinha.
Creio o problema do squid.inc era várias abas do navegador aberta, lá para as 3 da madruga, e mexendo em códigos do squid… lendo email, pfds e vendo HBO, aí nada vai dar certo mesmo...
Fui dormir, e depois com calma e com a ajuda do Leandro Bandeira on-line, foi show, tudo 100%.O mais fantástico do open source não é o produto em si, mas a colaboração voluntária dos seus usuários. Eita falei bonito!!!
Mais uma vez muito obrigado mesmo...
Um forte abraço. Valter
access deny localhost;
auth_param basic program /usr/local/libexec/squid/squid_ldap_auth -v 3 -R -b dc=srg,dc=net -D cn=Administrador,cn=Users,dc=srg,dc=net -w MinhaSenha -f "sAMAccountName=%s" -u uid -P 192.168.1.202;auth_param basic children 5;
auth_param basic realm INTERNET CORPORATIVA;
auth_param basic credentialsttl 60 minutes;
acl password proxy_auth REQUIRED;external_acl_type ldap_group %LOGIN /usr/local/libexec/squid/squid_ldap_group -R -b "dc=srg,dc=net" -D "cn=Administrador,cn=Users,dc=srg,dc=net" -w "MinhaSenha" -f "(&(&(objectClass=person)(sAMAccountName=%u))(memberOf=%g))" -h 192.168.1.202;
acl gprodutividade external ldap_group CN=g_prod,OU=u_internet,DC=srg,DC=net;
acl restrito dstdom_regex -i "/var/squid/acl/produtividade.acl";
http_access allow gprodutividade restrito;
acl gtotal external ldap_group CN=g_total,OU=u_internet,DC=srg,DC=net;
http_access allow gtotal;
http_access deny all;
Valter, conseguiu resolver o problema?
Acho estranho vc alterar o squid.inc, reiniciar o serviço, e o squid.conf nao ser reescrito.
É padrão do pfsense (squid.inc) reescrever o squid.conf, sempre que o serviço ou o sistema for reiniciado. A nao ser que vc altere o squid.conf, faça uma copia, e um script se encarrega de repor o squid.conf original quando o sistema for reiniciado.
Quando vc reinicia o serviço, vc faz isto via ssh ?
Ao invez de reiniciar, ja tentou apenas salvar (clicando no botão), em uma das guias do proxy server ? Isto pode ser feito a guia Access Control.
Qual a versão do pfsense que vc esta usando ? -
Boa noite, pessoal sou novo aqui,
Tenho pfsense 2.0 já atualizado, squid, lightsquid e squidGuard
A primeira duvida é fazer a autenticação por usuário no AD. Até ja consegui mas só com usuarios da OU Users
Porem, tenho uma OU com o nome ( funcionários ) com 5 usuarios, quando eu faço a alteração para enxergar os 5 usuarios….ex:(cn=squid,cn=FUNCIONARIOS,dc=dominio,dc=com,dc=br). ele simplesmente não reconhece.A segunda duvida seria criar os grupos de liberação dentro de uma OU..
OU - funcionarios e dentro desta grupo liberado e grupo bloqueado. nao entendi a parte de colar os codigos dentro do squid.incPessoal desde já agradeço a atenção de todos.
Att
-
Boa noite, pessoal sou novo aqui,
Tenho pfsense 2.0 já atualizado, squid, lightsquid e squidGuard
A primeira duvida é fazer a autenticação por usuário no AD. Até ja consegui mas só com usuarios da OU Users
Porem, tenho uma OU com o nome ( funcionários ) com 5 usuarios, quando eu faço a alteração para enxergar os 5 usuarios….ex:(cn=squid,cn=FUNCIONARIOS,dc=dominio,dc=com,dc=br). ele simplesmente não reconhece.A segunda duvida seria criar os grupos de liberação dentro de uma OU..
OU - funcionarios e dentro desta grupo liberado e grupo bloqueado. nao entendi a parte de colar os codigos dentro do squid.incPessoal desde já agradeço a atenção de todos.
Att
Ricardo
Primeiramente, sobre as duvidas no arquivo squid.inc, leia o tutorial que escrevi, lá vc entenderá o porque alterar o arquivo squid.inc.
O tutorial está em PDF, veja nos posts anteriores o local de acesso ao arquivo.Para trabalhar com os grupos, crie uma OU chamada Internet. Dentro desta OU, vc cria os grupos (e relacione os usuarios aos grupos), e depois relacione estes grupos no squid.inc.
Veja o exemplo:
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 "SENHA" -f "(&(objectclass=person) (sAMAccountName=%v) (memberof=cn=%a,ou=Internet,dc=dominio,dc=com,dc=br))" -h 10.22.5.10 -p 389
Neste trecho: memberof=cn=%a,ou=Internet,dc=dominio,dc=com,dc=br
Em ou=Internet, é a OU que contem os grupos a serem autenticados.Depois de criar os grupos e relacionar cada usuario com os grupos, é só seguir o tutorial que eu fiz, indicando os grupos de acesso no squid.inc