br-linux

Artigos br-linux.org
Artigos sobre Linux em bom português, originais e com qualidade

O texto abaixo foi publicado no BR-Linux antes de 2005, e está mantido aqui por razões históricas. Veja o material atualizado diariamente do BR-Linux em http://br-linux.org
Autenticação no Squid
Publicado em 10 de junho de 2003
 

Leia abaixo meu artigo sobre a autenticação no Squid, que permite de maneira simples configurar a sua proxy para exigir login e senha (através do browser) dos usuários que desejam acessar determinados sites (ou toda a web), registrar este acesso e criar regras personalizadas de acesso. Este artigo foi publicado anteriormente aqui mesmo no Linux in Brazil, e agora está adaptado ao novo formato do site.

Veja também o livro Squid - Configurando proxy para Linux, que tem um capítulo específico sobre autenticação, incluindo até mesmo o método via arquivo htpasswd.

Autenticação no Squid

Augusto C. Campos (brain@matrix.com.br)

O Squid é uma popular ferramenta para a criação de proxy e cache de web e ftp, permitindo que as máquinas de sua rede local compartilhem o acesso à internet controlado por um servidor central, mesmo que elas não tenham acesso direto à Internet. Entre os recursos do Squid (o qual já analisamos neste artigo anterior e neste outro, publicado originalmente pela Revista do Linux), estão a possibilidade de definir listas de controle de acesso, ou seja, determinar quem poderá acessar o quê.

Nota: este artigo não irá apresentar conceitos introdutórios. Leia outros artigos sobre o Squid, redes mistas Linux/Windows e autenticação antes de prosseguir.

Geralmente este controle de acesso é feito por máquina (mais exatamente, por endereço IP). Entretanto, o Squid tem acesso a permissões por usuário, onde cada pessoa que tentar acessar a web é obrigada a fornecer login e senha (através do browser) para verificação. A verificação pode ser feita de muitas maneiras: através de um arquivo passwd tradicional, ou no formato NCSA (geralmente associado ao utilitário htpasswd), ou ainda através de um servidor LDAP, um PDC de domínio Windows NT, ou módulos PAM.

Para utilizar estas formas de autenticação, você deve compilar o Squid com os módulos de suporte adequados (ou utilizar o que vem em sua distribuição de Linux favorita, caso ele tenha este suporte). Não daremos aqui as instruções de compilação, já que elas constam na documentação que acompanha o software e também na FAQ do Squid. Mas uma vez que você tenha compilado, a configuração é simples, como veremos a seguir neste exemplo de autenticação em um domínio NT.

Autenticando em um PDC Windows NT

Muitas organizações dispõem de domínios baseados em Windows NT, onde os usuários de estações de trabalho rodando várias versões de Windows se autenticam. Se for o seu caso, siga as instruções de compilação do Squid e compile o módulo smb_auth, e em seguida copie-o para o local mais apropriado (no nosso exemplo, /usr/local/squid/smb_auth).

Uma vez que todos os arquivos estejam compilados e adequadamente copiados para os locais corretos, está na hora de informar ao Squid onde você colocou o programa autenticador, e os parâmetros com os quais ele deve ser chamado.

No exemplo, vamos considerar que o PDC do domínio Windows tem o endereço IP 10.11.12.13, e o nome do domínio é PRODUCAO. Neste caso, a linha seria como a que segue, retirada diretamente do squid.conf:

  authenticate_program /usr/local/squid/smb_auth -W PRODUCAO -U 10.11.12.13

A documentação do smb_auth informa que precisamos incluir um arquivo \netlogon\proxyauth no PDC. Peça ao administrador do seu domínio NT (caso não seja você mesmo) que localize o compartilhamento netlogon do seu servidor, e crie nele um arquivo texto com o nome de proxyauth (e não proxyauth.txt!) contendo simplesmente a palavra allow. Em seguida, dê permissão de Leitura a este arquivo para todos os usuários do domínio que deverão ter acesso à web através do Squid. Simples, não?

Agora só temos que criar as listas de controle de acesso, ou ACLs do Squid. Vamos "pular" os exemplos básicos, e avançar diretamente para um exemplo da vida real, adaptado do FAQ do Squid (a numeração de linhas é apenas para fins didáticos e deve ser desconsiderada) :

1:    acl geral proxy_auth REQUIRED
2:    acl restritos proxy_auth didi dede mussum zacarias
3:    acl horario_coml time 08:00-18:00
4:    acl todos src 0/0
5:    http_access allow restritos
6:    http_access allow geral horario_coml
7:    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 restritos, também do tipo proxy_auth, mas desta vez definindo os nomes de 4 usuários que terão tratamento diferenciado.

As linhas 3 e 4 não têm relação com autenticação - elas definem uma acl chamada horario_coml, como sendo as horas entre 08:00 e 18:00, e outra 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 restritos, sem nenhum qualificativo adicional: didi, dede, mussum e zacarias vão poder utilizar a proxy quando quiserem, desde que informem a senha corretamente.
  • A linha 6 define que os integrantes da ACL geral podem acessar a proxy apenas durante a vigência da ACL horario_coml - ou seja, qualquer usuário autenticado (exceto os da ACL restritos, já cobertos pela regra anterior) só poderá usar a proxy durante o dia - nada de downloads programados para a madrugada!
  • A linha 7 nega acesso a todos. Assim, se um usuário não caiu nas duas regras anteriores, ele simplesmente não poderá usar a proxy.

Para o exemplo ficar ainda mais realista, vamos imaginar que exista um site (www.proibido.net) que só deve ser acessado pelo usuario diretor. Para acrescentar esta regra, basta inserir as linhas abaixo entre a linha 4 e a linha 5:

  acl proibido dstdomain proibido.net
  acl privilegiado proxy_auth diretor
  http_access allow privilegiado proibido
  http_access deny proibido

Após efetuar as alterações no arquivo de configurações, faça o Squid reler o arquivo de acordo com as instruções de sua distribuição (killall -HUP squid deve funcionar em todos os casos), e boa sorte! Postado por brain em junho 10, 2003 10:32 AM



Comentários para "Autenticação no Squid"

» Postado por: Manoel em julho 17, 2003 09:53 AM, 200.211.35.:

    Gostaria de saber como faço este procedimento para que autentique usuários do active directory do windows2000

 

» Postado por: leonardo Silva em setembro 3, 2003 01:14 PM, 200.222.5.7:

    Gostaria de saber como faço este procedimento para que autentique usuários do active directory do windows2000?

 

» Postado por: Victor em setembro 11, 2003 08:59 AM, 200.187.173:

    Existe em seu site algum tutorial que exemplifica a utilizaçao da TAG ident no squid ?

 

» Postado por: Danniel em outubro 28, 2003 11:33 AM, 200.254.1.1:

    Como faço para autenticar os usuarios do SAMBA, sem precisar cadastrar todos novamente!? Quero usar o mesmo arquivo de senhas do SAMBA para autenticar os usuarios do proxy.

 

» Postado por: walter em novembro 28, 2003 04:00 PM, 200.199.142:

    Meu proxy é o squid nao consigo liberar as portas 20 21, existe outro proxy ?
    Como trabalhar squid c/ firewall e qual firewall?

 

» Postado por: Ricardo em dezembro 4, 2003 05:13 PM, 200.148.96.:

    Estou com um problema .
    depois da autenticacao , o internet explorer volta pra tela de login.

    o q pode estar acontecendo?
    Agradeco desde ja.

 

» Postado por: kleber theodoro em dezembro 9, 2003 10:20 AM, 200.150.225:

    Uso a versao SuSE do linux, ate a versao 8.1 eu conseguia fazer autenticacao com o ncsa agora ja comprei a 8.2 e a 9.0 e nao funciona mais o meu squid com autenticacao com o ncsa_auth o que mudou pois usava o seguinte comando.

    acl autenticados proxy_auth "/etc/squid/usuarios"
    authenticate_program /usr/bin/ncsa_auth /etc/squid/usuarios.pwd

    Obs. notei que o suse 8.2 e 9.0 nao vem com o ncsa_auth no /usr/bin/ncsa_auth
    ele so vem no /usr/sbin/ncsa_auth, mudei a minha linha de comando para o caminho que existe e mesmo assim nao funciona o que devo fazer.

    kleber

 

» Postado por: Filipe em janeiro 29, 2004 05:15 PM, 200.149.219:

    Como faço para autenticar o SQUID pela base LDAP ?

 

» Postado por: Moreira em fevereiro 16, 2004 05:26 PM, 200.167.240:

    Lembro a todos que estao tendo problemas com a autenticação do squid em um servidor NT, que a linha usada no arquivo squid.conf, tambem pode ser usada na linha de comando para debugar possiveis erros de configuracao. Por exemplo, voce pode digitar a seguite linha no prompt:

    /usr/local/squid/smb_auth -W PRODUCAO -U 10.11.12.13 -d

    (o parametro -d, informa ao smb_auth que use o modo de debug)

    o cursor ira imediatamente para linha inferior, ai é so digitar o usuario/senha da seguinte maneira:

    usuario senha

    e apertar enter... o smb_auth ira fazer a autenticacao , e exibir uma linha de debug para cada acao.

    maiores detalhes em: http://www.gnubh.com.br

 

» Postado por: Leonardo em maio 15, 2004 03:53 PM, 200.163.79.:

    Como faço para autenticar os usuarios do SAMBA, sem precisar cadastrar todos novamente!? Quero usar o mesmo arquivo de senhas do SAMBA para autenticar os usuarios do proxy.

 

» Postado por: Leonardo em maio 21, 2004 07:10 PM, 201.1.31.21:

    Cara seu tutorial está muito bom, porém eu tenho uma observação! Esse "esquema" de autenticação, funciona perfeitamente em um NT 4.0 ou até um 2000 server, porém se o 2000 server estiver rodando o Active Directory essa autenticação passa a não funcionar correto? Pois o AD utiliza o kerberos5 para autenticar a credencial do usuario certo? Bom eu gostaria de saber se você conseguiu autenticar usuarios cadastrados em OU's Unidades Organizacionais do Dominio Active Directory, pois estou com está situação hoje, e não consegui resolver ainda. Agradeço sua colaboração e aguardo um retorno seu mesmo positivo ou negativo ok!!! abraço.

 

» Postado por: secret-footfetish em julho 20, 2004 10:24 AM, 66.98.226.5:

    footfetish secret

 

» Postado por: levi em agosto 10, 2004 09:34 AM, 200.206.184:

    Estou precisando de help na autenticacao do squid.
    Minha rede 10.0.1.0 / 24 quero construir o squid.conf para autenticacao, mas nao funciona.
    Alguem tem um exemplo que funcione, inclusive com os passos anteriores como por exemplo instalacao do ncsa, etc?
    Uso conectiva 10.

 

» Postado por: Zithromax em setembro 24, 2004 06:08 PM, 65.75.139.9:

    Antibiotic Zithromax

 

» Postado por: Buy Amoxicillin em outubro 5, 2004 06:51 AM, 67.19.91.50:

    Information on Amoxicillin online.

 

» Postado por: Cialis em outubro 9, 2004 06:33 AM, 67.19.91.50:

    Cialis information site.

 

» Postado por: Levaquin em outubro 13, 2004 06:12 AM, 67.19.91.50:

    Levaquin online information.

 

» Postado por: Remeron prescription em outubro 23, 2004 04:52 AM, 65.75.139.9:

    Remeron information.

 

» Postado por: Carlos em outubro 24, 2004 07:39 PM, 201.1.11.50:

    Cara seu tutorial está muito bom, porém eu tenho uma observação! Esse "esquema" de autenticação, funciona perfeitamente em um NT 4.0 ou até um 2000 server, porém se o 2000 server estiver rodando o Active Directory essa autenticação passa a não funcionar correto? Pois o AD utiliza o kerberos5 para autenticar a credencial do usuario certo? Bom eu gostaria de saber se você conseguiu autenticar usuarios cadastrados em OU's Unidades Organizacionais do Dominio Active Directory, pois estou com está situação hoje, e não consegui resolver ainda. Agradeço sua colaboração e aguardo um retorno seu mesmo positivo ou negativo ok!!! abraço.


 

» Postado por: Elidel em novembro 3, 2004 01:04 PM, 67.19.91.50:

    View Elidel online.

 

Antes de comentar...

- Preserve a qualidade desta discussão
- Leia os Termos de Uso.
- Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum.
- Mantenha o foco nos argumentos e no assunto
- Não faça ataques pessoais.
- Pense 5 vezes antes de entrar em discussões inúteis, como "qual é a melhor distribuição/ambiente gráfico/linguagem de programação/etc.", mesmo se alguém já tiver provocado - um erro não justifica o outro
- Não seja um e-mala ;-)

Envie seu comentário









Lembrar as informações pessoais?


Atenção: Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum, onde mais pessoas estarão disponíveis para respondê-lo..






Nota: os comentários pertencem a seus respectivos autores e são de responsabilidade de quem os postou. O restante desta nota está disponível sob a licença GNU FDL, exceto se explicitamente declarado em contrário.