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