Proxy com autenticação em servidores Samba ou Windows NT

Neste artigo vamos mostrar como preparar um servidor proxy (Squid) para fazer autenticação para acesso à internet usando SMB e mostrar também como fazer o controle de acesso (ACLs) utilizando estes usuários autenticados.

[ Hits: 181.229 ]

Por: Marcos Estival em 12/12/2003


Controle de acesso ACL



Para controlar os acessos dos usuários na internet dentro do Squid utilizando a autenticação que o usuário fez pelo Samba em outro servidor, é necessário criar algumas regras na ACL e as liberações vão depender de cada administrador ou organização, pois você poderá utilizar várias regras de segurança.

Aqui vamos apresentar alguns exemplos. E que sua criatividade trabalhe contigo para que você possa configurar de maneira adequada esses acessos:

Exemplo 1:

acl geral proxy_auth REQUIRED
acl restritos proxy_auth jose maria joao
acl todos src 0/0
http_access allow liberados
http_access deny todos

A primeira linha define uma ACL chamada geral, do tipo proxy_auth (ou seja, exigência de autenticação utilizando o authenticate_program que definimos acima). O parâmetro REQUIRED indica que qualquer usuário será aceito, desde que ele tenha uma senha no domínio.

A linha 2 cria uma ACL chamada liberados, também do tipo proxy_auth, mas desta vez definindo os nomes de 3 usuários que terão tratamento diferenciado.

A linha 3 define outra ACL chamada todos, baseada em endereço IP e abrangendo todos os endereços de origem (src) possíveis.

As linhas de 4 a 5 definem as regras de acesso, pela ordem:
  • A linha 4 dá acesso aos componentes da ACL liberados, sem nenhum qualificativo adicional: jose, maria e joao vão poder utilizar o proxy quando quiserem, desde que informem a senha corretamente.
  • A linha 5 nega acesso à todos. Assim, se um usuário não caiu nas duas regras anteriores, ele simplesmente não poderá usar o proxy.


Exemplo 2:

acl geral proxy_auth REQUIRED
acl proibido url_regex -i "/etc/squid/lista"
acl informatica proxy_auth admin administrador super
acl todos src 0/0
http_access allow informatica
http_access deny proibido
http_access deny todos

A primeira linha define uma ACL chamada geral, do tipo proxy_auth (ou seja, exigência de autenticação utilizando o authenticate_program que definimos acima). O parâmetro REQUIRED indica que qualquer usuário será aceito, desde que ele tenha uma senha no domínio.

A linha 2 cria uma ACL chamada proibido, do tipo url_regex, que lê o arquivo chamado "/etc/squid/lista". Neste arquivo há uma lista de sites que não podem ser acessados.

A linha 3 define outra ACL chamada informatica utilizando o proxy_auth, que vai ser usada para liberar acesso aos usuários referenciados nela.

A linha 4 define outra ACL chamada todos, baseada em endereço IP e abrangendo todos os endereços de origem (src) possíveis.

As linhas de 5 a 7 definem as regras de acesso, pela ordem:
  • A linha 5 dá acesso aos componentes da ACL informatica, sem nenhum qualificativo adicional: admin, administrador e super são usuários que vão poder utilizar o proxy sem nenhuma restrição a sites quando quiserem, desde que informem a senha corretamente.
  • A linha 6 nega acesso à todos, com exceção da ACL informatica aos sites da lista que esta no arquivo "/etc/squid/lista".
  • A linha 7 nega acesso à todos. Assim, se um usuário não caiu nas duas regras anteriores, ele simplesmente não poderá usar o proxy.
Com esses exemplos temos uma visão clara que a autenticação pode ser uma ferramenta muito benéfica pra nós administradores, pois os controles de acesso são variados, desta maneira você poderá criar os controles de acesso conforme a política de acesso determinada.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Configurando o servidor Windows ou Samba
   3. Configurando o servidor proxy Squid
   4. Controle de acesso ACL
   5. Relatórios de acesso
   6. Configurando as estações Windows
Outros artigos deste autor

Ferramentas de administração remota

Leitura recomendada

Configuração do Squid + Dansguardian no Slackware 11

Filtro de conteúdo autenticado com níveis de privilégio

ECache - O cache efetivo

Instalação do Squid 3.2.0.14 no Slackware com execução em ambiente chroot

Direcionando log Squid para banco MySQL

  
Comentários
[1] Comentário enviado por fabio em 12/12/2003 - 00:31h

Muito bom seu artigo Estival! Agora me tire uma dúvida, a autenticação do proxy num servidor Windows necessariamente precisa ser num NT ou pode ser realizada através de um Win2k também?

[2] Comentário enviado por thiagosc em 12/12/2003 - 09:36h

Muito bom este artigo consegui configurar o squid pelo kurumin, está funcionando legal, vou testar agora em conectiva, uma observação neste artigo a poorta padrão do squid não é a 3180? uma abraço

[3] Comentário enviado por gustavo_marcon em 15/12/2003 - 11:26h

Cara, muito bom este artigo mas ao invéz de usar o samba eu gostaria que meu servidor fosse pppoe... Como eu faria p/ que os usuários fizessem uma autenticação pppoe no servidor linux e o squid comanda-se as regras de ACL corretamente???

O que eu teria que alterar?

[4] Comentário enviado por gustavo_marcon em 17/12/2003 - 17:21h

Pessoal configurei o squid p/ funcionar c/ autenticação ncsa_auth. Fiz tudo como manda o tutorial da conectiva... A autenticação funciona perfeitamente em 2 micros da rede mas no terceiro micro ele só volta a pedir senha novamente se for feito logoff.. deveria pedir cada vez que abrir o browser, como acontece nos outros micros. Alguem sabe como configurar um timeout pro squid?

[5] Comentário enviado por cbgrando em 13/01/2004 - 16:37h

Distro: Red Hat 9
Samba: 3.0
Estou tendo o seguinte problema,
Quando coloco "/usr/local/bin/smb_auth -W MEUDOMINIO -U xxx.xxx.xxx.xxx -d" e entro com user e senha da "ERR". O usuario tem permissão para leitura da pasta e dos arquivos da netlogon. Mas mesmo assim dá erro. Tem como depurar melhor o erro´. Só o "-d" nao adianta... nao consigo nada substancial pra depurar.
Obrigado.

[6] Comentário enviado por fabio em 14/01/2004 - 18:44h

Estival mandou para mim ao invés de para cá, lá vai:
---
vc instalou o smb-client, o mesmo é necessário na maquina.
outra coisa vc tem que usar o smb_auth que vem no SQUID
"/usr/lib/squid/smb_auth"

Espero ter ajudado.
---

[7] Comentário enviado por altairneto em 20/02/2004 - 14:20h

Excelente matéria, o squid é muito bom, mas eu tenho problemas com usuários "expertos" que simplesmete desabilitam a opção do proxy nas propriedades do Internet Explorer, fazendo assim que não se autentiquem no squid e com isso acessando as páginas livremente, sem passar pela política adotada no Squid. Pergunta: tem alguma maneira de bloquear isso? tipo restrigindo o acesso a essas configurações? sei que no Win2K é possível, mas nas estações 98 não achei nada....se alguém tiver uma solução me mande um e-mail: neto@benarros.com.br Abraços a todos

[8] Comentário enviado por string em 06/03/2004 - 15:09h

Caro altair, vai ai uma solucao pros espertinhos do win98, insira no logon.bat dos usuarios o seguinte:

regedit /s \\servidor\netlogon\protege.reg

no qual vai ter no arquivo protege.reg o seguinte.
REGEDIT4
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel]
"Proxy"=dword:00000001

Este desabilitara a opcao de mexer na configuracao do proxy no propriedades do IE.

valeu.
Geomar

[9] Comentário enviado por alphainfo em 03/05/2004 - 11:58h

Aê Geomar, esse script teu é bem legal...
valew

[10] Comentário enviado por ofmaciel em 17/05/2004 - 15:00h

Excelentes artigos. Gostaria de uma dica: se é possível, como fazer com que somente alguns usuários( ou alguns IPS, ou alguns endereços MAC) sejam obrigados à autenticação para acesso à internet, via squid, enquanto todos os demais sejam livres ( sem logon).

Grato, ofmaciel

[11] Comentário enviado por gamaj em 30/05/2004 - 13:33h

Pessoal,

Também estou com o memso problema do amigo cbgrando.

Também optei pela autenticação via Samba, no Servido tenho Inatalado o pacote do Samba 3.0.2 do Slack 9.1 será que neste pacote já não esta incluso o samba-client.

quando tento o comando
#/usr/lib/squid/smb-auth -W LINUX -U 192.168.0.1 -d
valdir Tempra22
Domain name: LINUX
Pass-through authentication: no
Query address options: -U 192.168.0.1 -R
/usr/local/smb_auth-0.05//smb_auth.sh: line 1: /etc/samba/bin/nmblookup: No such file or directory
Domain controller IP address:
ERR

Como posso resolver isso?

Conto com a colaboração do amigos:


[12] Comentário enviado por scoscis em 13/09/2004 - 11:21h

eu uso o slackware e estava acontecendo isso com o meu tb...
faz assim...
primeiro procura onde esta o nmblookup..

find / -iname nmblookup

> no meu caso era /usr/local/bin/nmblookup

ai eh soh editar o arquivo smb_auth.sh, todo o lugar onde estiver '/blabla/blabla/nmblookup' voce troca para o lugar que voce encotrou com o find..

IMPORTANTE

soh mude o que esta dentro das ' '
ficaria assim ' /usr/local/bin/nmlookup' ...

valeu

Thiago Debia
th.debia@ig.com.br


[13] Comentário enviado por alehm em 30/09/2004 - 10:36h

Ola Pessoal,
meu nome eh Alexandre havia configurado meu squid + smb_auth em um slackware e estava funcionando na boa, mas depois que fiz um upgrade de pacotes, parou de funcionar, qdo faco:
# /usr/lib/squid/smb-auth -W EXEMPLO -U 10.62.1.1 -d --> ENTER
usuário "senha" --> ENTER
fica parado e nao da nenhuma informacao.

alguem poderia me dar uma dica do que pode estar acontecendo?

agradeco a colaboracao de todos

Alexandre

[14] Comentário enviado por alehm em 30/09/2004 - 10:37h

Ola Pessoal,
meu nome eh Alexandre havia configurado meu squid + smb_auth em um slackware e estava funcionando na boa, mas depois que fiz um upgrade de pacotes, parou de funcionar, qdo faco:
# /usr/lib/squid/smb-auth -W EXEMPLO -U 10.62.1.1 -d --> ENTER
usuário "senha" --> ENTER
fica parado e nao dah nenhuma mensagem.

alguem poderia me dar uma dica do que pode estar acontecendo?

agradeco a colaboracao de todos

Alexandre

[15] Comentário enviado por germano_silva em 26/02/2005 - 23:49h

Caro Alexandre;

Deu uma olhada no man pq devido a troca de versoes as vezes pode ocorrer de certos comandos serem trocados

Abraços

Germano Silva

[16] Comentário enviado por mazzaropi em 19/05/2005 - 10:15h

Funcionou na Slackware, mas tenho uma dúvida. Seria possível eu liberar apenas alguns sites para determinado usuário ou grupo de usuário, proibindo-o de ver o resto?
Obrigado.

[17] Comentário enviado por lucasfs em 23/11/2005 - 11:11h

Estou com o mesmo problema, olhem o resultado:

/usr/lib/squid/smb_auth -W type -U 192.168.200.1 -d
user suporte
Domain name: type
Pass-through authentication: no
Query address options: -U 192.168.200.1 -R
Domain controller IP address: 192.168.200.1
Domain controller NETBIOS name: SERVIDOR
Contents of //SERVIDOR/NETLOGON/proxyauth:
ERR

O arquivo proxyauth está criado e dentro dele contém "allow" apenas

[18] Comentário enviado por jasonn em 15/12/2005 - 17:11h

é facil de resolver isso cara, faça isso aqui:
entre no arquivo:
vim /usr/lib/squid/smb_auth.sh

e coloque essa chave da forma que esta aqui:

export SAMBAPREFIX=/usr
read DOMAINNAME
read PASSTHROUGH
read NMBADDR
read NMBCAST
read AUTHSHARE
read AUTHFILE
read SMBUSER
read SMBPASS

Depois que fizer isso, dê o comando export

pronto teste:

/usr/lib/squid/smb_auth -W type -U 192.168.200.1 -d
maria 123456

claro que maria e a senha 123456 é uma ilusoria.
esta resolvido seu problema.
Abraços do amigo jasonnfedora.
Comunidade Fedora Brasil

Aqui esta a minha configuracao:

[root@fedorabrasil netlogon]# /usr/lib/squid/smb_auth -W fbrasil -U 192.168.1.1 -d
jasonnfedora toaquitola
Domain name: fbrasil
Pass-through authentication: no
Query address options: -U 192.168.1.1 -R
Domain controller IP address: 192.168.1.1
Domain controller NETBIOS name: SMB_FBRASIL
Contents of //SMB_FBRASIL/NETLOGON/proxyauth: allow
OK

[19] Comentário enviado por obochecha em 04/01/2006 - 11:07h

Tava tão bom, tudo dando certo, o dominio ta dando como ok sem erros nenhum usando o smb_auth, sendo que quando vou autenticar
ele nao aceita
fica na mesma tela de ligoin.
e depois de umas 5 tentativas da como acesso negado
o usuario ta cadastrado e a senha esta correta.
pq isso tá acontecendo?

[20] Comentário enviado por jgama em 08/02/2006 - 02:25h

Olá pessoal, depois de muito tempo voltei a fazer o teste da autenticação via samba, e desta vez deu tudo certo, o problema anterior era permissão.

batou eu dar permissão no arquivo exemplo:

#chmod 755 /home/samba/netlogn/proxyauth

agora o teste deu certo

[root@servidor laide]# /usr/lib/squid/smb_auth -W LINUXGAMA -U 192.168.0.1 -d
julia Palio145
Domain name: LINUXGAMA
Pass-through authentication: no
Query address options: -U 192.168.0.1 -R
Domain controller IP address: 192.168.0.1
Domain controller NETBIOS name: SERVIDOR
Contents of //SERVIDOR/NETLOGON/proxyauth: allow
OK

Abraço a todos



[21] Comentário enviado por cleitão em 01/03/2006 - 15:38h

Legal pra caramba este artigo só gostaria de saber se alguém já teve sucesso implementando ele em uma distro baseada no Debian........

Valeu galera!!!!!!!!1

[22] Comentário enviado por amendes em 21/03/2006 - 16:41h

Olá pessoal,

Fiz todas as configurações, conforme indicado, criei o arquivo proxyauth, dei permissão, via linha de comando funciona normalmente, mas quando faço via Internet Explorer ele não autentica, a tela de usuário e senha sempre volta.

Alguma dica?

[23] Comentário enviado por Estival em 22/03/2006 - 11:28h

Gente algumas Ditribuições podem ter problemas utilizando o smb_auth da internet: http://www.hacom.nl/~richard/software/smb_auth.html, muito antigo (1999).

se a versão que vem com a distribuição for mais nova utilizem-na.
se for compilar observe bem as variaveis SAMBAPREFIX e INSTALLBIN

e como o jgama falou nao esqueça das permissões:

#chmod 755 /home/samba/netlogn/proxyauth

Até Mais...

Marcos Estival

[24] Comentário enviado por amendes em 29/03/2006 - 08:11h

Pessoal, percebi problemas na distribuição do Fedora 3, ela não identifica a opção ident quando é criada uma ACL e também o smb_auth não funciona.
Ao instalar o RedHat 9 e baixar o smb_auth da internet funcionou normalmente.

Valeu Estival

[25] Comentário enviado por jssandim em 13/09/2006 - 17:30h

Pessoal,
Estou com um problema no meu smb_auth. Ele funcina ok, faço o teste de autenticação de usuario (smb_auth -W LAB.FUMEC.BR) dá ok. Mas quando usuario loga no Domain controler (Samba) e depois vai colocar sua senha no Internet explorer para autenticar no squid, não é aceito. Ai se o usuario logar primeiro no ie sem passar pela autenticação dominio samba, funciona. Outras duas observações:
-O usuário logado no dominio primeiro, ele é removido e adcionado novamente(userdel fulano ,useradd fulano), funciona a autenticação no internet explorer com usuario ainda logado no dominio.
-O usuario que é administrador loga no dominio e depois no ie e não acontece o erro.
Aguardo uma resposta.
Obrigado.

[26] Comentário enviado por valberaguiar em 24/10/2006 - 18:19h

gerando relatório por usuário autenticado com SARG

[27] Comentário enviado por valberaguiar em 24/10/2006 - 18:20h

Qual a configuração para gerar relatório por usuário autenticado com SARG?

[28] Comentário enviado por hdfogo em 07/11/2006 - 16:40h

Estou tambem com problema para fazer autenticação e já fiz tudo o que foi sugerido aqui sera que alguem pode me ajudar este é o erro

root@fwsvr:~# /usr/libexec/smb_auth -W DOMINIO -U 192.168.0.1 -d
usuario senha
Domain name: DOMINIO
Pass-through authentication: no
Query address options: -U 192.168.0.1 -R
Domain controller IP address: 192.168.0.1
Domain controller NETBIOS name: SERVER
Contents of //SERVER/NETLOGON/proxyauth:
ERR

o arquivo proxyauth foi criado na pasta de compartilhamento netlogon e com allow e esta com permissão para todos não sei mais o que fazer

Aguadro uma resposta

Muito obrigado

[29] Comentário enviado por super7 em 14/05/2007 - 20:40h


.

[30] Comentário enviado por super7 em 14/05/2007 - 20:44h

Ola Pessoal, por favor me SOCORRAM!! Estou com o debian etch, o problema é q ja fiz de tudo. A maquina Squid ja esta incluida no Dominio Linux, o arquivo proxyauth ja esta com as permissoes 755, o compartilhamento "netlogon" esta funcionando certinho, testei manualmente pelo smbclient e funcionou, mas qdo rodo o /usr/lib/squid/smb_auth -W DOMINIO -U IP-DOSERVER -d só aparece a mensagem ERR nada mais. Acho q é algum problema no smb_auth.sh, q tb ja mexi em tudo , e nem sei mais aonde mexer. Por favor me ajudem, deve ser algum caminho q mudou no etch. Um abraço e desde ja muito obrigado e parabens por esse Artigo Estival.

[31] Comentário enviado por angkor em 13/06/2007 - 14:22h

Ola pessoal, estou com alguns problemas obviamente por não ter o samba (ou algum módulo) instalado. A pergunta é:
O que é que tenho que instalar no meu proxy para esse esquema de altenticação funcionar?
Se for o samba, qual a opção devo habilitar?

Atenciosamente,
Angkor

[32] Comentário enviado por Estival em 21/06/2007 - 09:10h

Ola Angkor, vc precisa do samba-client para que funcione, use o debug para verificar se tem conexão:
/usr/lib/squid/smb_auth -W DOMINIO -U IP-DOSERVER -d


[33] Comentário enviado por celsomagela12 em 30/06/2007 - 11:44h

Olá gente!
sou novato por aqui e preciso de ajuda:
resolvi trocar o servidor de internet, instalei o CentOS.
o IP do servidor de internet é 192.168.0.66
o IP do servidor samba é 192.168.0.67
Minha máquina 66 conecta na internet Ok, mas não consigo rodar a autenticação no samba.
mudei recentemente o IP do Servidor Samba de 118 para 67, quando eu testo a autenticação, fica assim:

root@CentOs:# /usr/local/bin/smb_auth -W DOMINIO -U 192.168.0.67 -d
usuario senha
Domain name: DOMINIO
Pass-through authentication: no
Query address options: -U 192.168.0.68 -R
Domain controller IP address: 192.168.0.118 (aqui aparece errado)
Domain controller NETBIOS name: SERVER
Contents of //SERVER/NETLOGON/proxyauth:
ERR

preciso alterar o IP no "Domain controller IP address:" e não sei onde.
o arquivo proxyauth está no diretrório /home/netlogon do samba

[34] Comentário enviado por phmonteiro_df em 08/08/2007 - 12:49h

Estival...todas as opções dão certo...o squid starta ok...a autenticação no diretório samba...mas na hora de abrir o I E ele não pede senha....o que pode ser ?

[35] Comentário enviado por celsomagela12 em 08/08/2007 - 14:31h

O IE está com a opção "usar servidor proxy" marcada???

[36] Comentário enviado por adalmar em 05/10/2007 - 12:50h

Eu vi seu artigo mais não tenho servidor de autenticação, eu uso o linux red hat 9, essa regra:
auth_param basic program /usr/bin/ncsa_auth /etc/squid/squid_passwd
acl password proxy_auth REQUIRED
http_access allow password

depois executei #htpasswd -c /etc/squid/squid_passwd adalmar
criei a senha e tudo
quando vou acessar a internet abre a tela de autenticação mais não reconhece o usuário, existe algun procedimento errado?

[37] Comentário enviado por Estival em 08/10/2007 - 14:34h

verifique o caminho do ncsa_auth... no meu esta noutra pasta "/usr/lib/squid"

[38] Comentário enviado por tiagomello em 29/11/2007 - 14:18h

o amigo ali em cima reclamou sobre usuarios espertos que desabilitam o proxy e passam por fora, acessando tudo que quiser, uma solução foi dada(desabilitar as opções firewall) mas em qualquer canto da internet podemos encontrar dicas de como reverter isso. A dica que eu vou dar é de se bloquear via firewall a porta 80 para saida, e somente sairia via porta 3128 do squid. aih amigo, nao tem jeito, pra burlar isso só com a senha do root do servidor com o squid

[39] Comentário enviado por manguetiz em 11/12/2007 - 11:25h

Gostei do seu artigo, porém, estou com problema... faço o teste por linha de comando para autenticação no AD da minha rede e retorna as informações abaixo:

Domain name: MEU_DOMINIO
Pass-through authentication: no
Query address options: -U XXX.XXX.XXX.XXX -R
Domain controller IP address:
ERR

Já criei o arquivo "proxyauth" dento da pasta NETLOGON no servidor com apenas a linha "allow" (sem as aspas, logico), dei permissão de leitura a principio para todos para poder realizar os testes.
O que pode estar acontecendo ???
Desde já agradeço e aguardo ajuda.

[40] Comentário enviado por Estival em 12/12/2007 - 14:20h

Tente colocar o -d de DEBUG :

/usr/lib/squid/smb_auth -W DOMINIO -U 1.1.1.1 -d
usuario senha
Domain name: DOMINIO
Pass-through authentication: no
Query address options: -U 1.1.1.1 -R
Domain controller IP address: 1.1.1.1
Domain controller NETBIOS name: SMBSERVER
Contents of //SMBSERVER/NETLOGON/proxyauth: allow
OK


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts