Arquivos históricos do BR-Linux.org apresenta:

Linux in Brazil (Autenticação no Squid )

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:

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!


O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.