Esse tutorial busca ajudar aqueles que necessitam montar um servidor proxy aonde os usuários precisem ser autenticados, separados por grupos e que cada grupo tenha uma lista específica de sites liberados para acesso, de uma forma prática e rápida sem ter que usar algum tipo de integração como o AD, Samba ou LDAP.
Parte 1 – Instalação do Squid
Vá no menu ”System > Packages”, na tela que se segue clique em ”Available Packages” e procure na lista o Squid. Clique na setinha ao lado da linha do Squid para instalar o pacote. Com a instalação bem sucedida do Squid vamos à próxima etapa.
Figura 1: Menu System > Packages
Figura 2: Pacote do Squid
Figura 3: Instalação bem sucedida do Squid.
Parte 2 – Configurações Básicas do Squid
Vamos realizar a configuração básica do nosso Proxy. Para isso vamos acessar as configurações do Squid no menu ”Services > Proxy Server”.
Figura 4: Configurações Básicas do Squid.
Na aba “General”, estão localizadas as configurações básicas do nosso servidor proxy. Geralmente não é preciso alterar nada para que o proxy funcione. Então vamos deixar os valores como padrão para a maioria dos campos, alterando somente o campo”Language” para “Portuguese” (isso fará com que o Squid exiba as páginas de erro em Português) e um pouco mais abaixo vamos marcar a opção ”Supress Squid Version”(para que o Squid não mostre a sua versão na página de erros). E por fim clicamos em”Save” para guardar nossas configurações.
Figura 5: Continuação das Configurações Básicas do Squid
Figura 6: Continuação das Configurações Básicas do Squid
Parte 3 – Configurações de Autenticação do Squid
Ainda nas configurações do Squid, vamos até a aba “Auth Settings”. Aqui vamos configurar nosso Squid para que ele utilize a base de dados Local. Então vamos até o campo ”Authentication Method” e vamos escolher a opção “Local”.
Figura 7: Configurações de Autenticação do Squid
Ainda nessa tela temos 3 campos importantes:
“Authentication prompt”: Texto que vai ser exibido na janela que pede o usuário e a senha.
“Authentication processes”: Número de autenticações simultâneas. Ajuste conforme preciso.
“Authentication TTL”: Este campo define o tempo de vida da sessão de um usuário autenticado.
Figura 8: Configurações de Autenticação do Squid
Clicamos em ”Save” e vamos à próxima etapa.
Parte 4 – Cadastro de novos usuários
Nas configurações do proxy na aba “Local Users”, vamos cadastrar os 3 usuários para utilizarmos no nosso exemplo. Para cadastrar um usuário clique no ícone da setinha marcado na figura abaixo.
Figura 9: Cadastros de Usuários no Squid
Na tela que se abre, temos 2 campos obrigatórios: ”Username” e ”Password”. Já o campo “Description” é opcional, porém é muito útil para caráter administrativo. No nosso exemplo eu usei esse campo para definir qual departamento o usuário pertence. Clicamos em “Save” para finalizar essa etapa de cadastro.
Figura 10: Continuação dos Cadastros de Usuários no Squid
Parte 5 – Administrando Usuários: Remover Usuário e Troca de Senha
Ainda em “Local Users”, podemos perceber que na listagem dos usuários cadastrados no sistema, ao lado aparece dois pequenos ícones, eles são a função editar e deletar.
No botão editar você poderá trocar o nome de usuário e a senha. E no de remover, excluímos o usuário do sistema.
No caso de alterar o dados do usuário, o pfSense traz o mesmo formulário só que preenchido com os Dados Originais bastando você alterar aonde necessário.
Figura 11: Cadastros de Usuários no Squid
Parte 6 – Definindo os Grupos e seus respectivos Sites Liberados
Finalmente chegou a hora de fazermos a autenticação por grupos no pfSense. Vamos no menu “Diagnostics > Edit File”. No campo que aparece vamos digitar:“/usr/local/pkg/squid.inc” e apertar no botão “Load”. Uma vez conteúdo do arquivo carregado, vamos procurar (Control + F) pelo seguinte conteúdo: “acl password proxy_auth REQUIRED” (sem as aspas).
Figura 12: Alterando o squid.inc
Entre a linha “acl password proxy_auth REQUIRED” e a “EOD;” vamos inserir o código abaixo:
### Definição ACLs dos Grupos com Seus Respectivos Usuários ###
acl COMERCIAL proxy_auth “/var/squid/acl/usuarios_comercial.acl”
acl FINANCEIRO proxy_auth “/var/squid/acl/usuarios_financeiro.acl”
acl ADMINISTRATIVO proxy_auth “/var/squid/acl/usuarios_administrativo.acl”
### Definição das ACLs dos Sites Liberados para Cada Grupo ###
acl SITES_COMERCIAL url_regex “/var/squid/acl/sites_comercial.acl”
acl SITES_FINANCEIRO url_regex “/var/squid/acl/sites_financeiro.acl”
acl SITES_ADMINISTRATIVO url_regex “/var/squid/acl/sites_administrativo.acl”
### Liberação do Acesso para os Grupos ###
http_access allow password COMERCIAL SITES_COMERCIAL
http_access allow password FINANCEIRO SITES_FINANCEIRO
http_access allow password ADMINISTRATIVO SITES_ADMINISTRATIVO
http_access deny all
Agora salvamos o arquivo “squid.inc” alterado.
OBSERVAÇÃO
Em nosso ambiente de implementação de autenticação por grupos, cada grupo tem a sua própria lista de site permitidos, há um detalhe muito importante a realçar.
Na interface de configuração do Squid, em “Services > Proxy Server” na aba “Access Control” temos os campos “Whitelist” e “Blacklist”.
Essas duas listas tem precedência sobre as demais liberações ou bloqueios que usamos no “squid.inc”.
DICA
Particularmente, eu uso esse campo “Whitelist” para cadastrar os sites que serão disponíveis para todos os grupos, ou seja, os sites em comum a todos eles. Pois todos terão acesso. Restando a lista personalizada de cada grupo somente àqueles sites que são acessados só por aquele grupo em específico.
Parte 7 – Criação dos arquivos que definem o grupo e os sites que podem ser visitados
O próximo passo é criar e popular os arquivos que referenciamos nas ACLs de grupos e de sites. Vou dar um exemplo com a criação de ambos arquivos para o Grupo Comercial:
Vamos trocar o endereço “/usr/local/pkg/squid.inc” para o endereço”/var/squid/acl/usuarios_comercial.acl” e então apertamos o botão “Load”.
O pfSense vai dar a seguinte mensagem avisando que o arquivo não existe: “File does not exist or is not a regular file.”. Vamos ignorar essa mensagem e iremos povoar o arquivo com o nome do usuário do departamento Comercial, no caso “joao”.
Se houver mais de um usuário por Departamento, iremos manter sempre o padrão de um usuário por linha. Ao término do processo vamos apertar em “Save”. Notaremos então que a mensagem de arquivo inexistente irá ser alterada para “File Save Sucessfully”. Isso irá nos informar que nosso arquivo agora existe e que foi criado com sucesso.
Figura 14: Criação do Arquivo de Grupo com o Usuário
Agora vamos repetir o processo acima alterando o arquivo a ser criado para:“/var/squid/acl/sites_comercial.acl” que é o arquivo que contém a lista dos sites liberados para esse grupo.
Nesse arquivo vamos continuar mantendo o padrão de um site cadastrado por linha.
.uol.com.br/*
Figura 15: Cadastro de Sites por Grupo
Iremos repetir os processos acima para os grupos restantes e suas respectivas listas de sites liberados:
Grupos:
/var/squid/acl/usuarios_financeiro.acl
/var/squid/acl/usuarios_administrativo.acl
Sites Liberados:
/var/squid/acl/sites_financeiro.acl
/var/squid/acl/sites_administrativo.acl
Com tudo devidamente criado, vamos acessar o menu ”Services > Proxy Server”, vamos apenas rolar a tela para baixo e apertar no botão ”Save”. Isso fará que o Squid tenha as suas regras recarregadas, eliminando a necessidade de reiniciar o pfSense ou parar/recarregar o serviço do Squid.
Se tudo foi feito corretamente seu Squid estará funcionando com a autenticação NCSA e políticas de controle de acesso por grupos. Parabéns!
Parte 8 – Soluções de Problemas
Caso o seu Squid não esteja funcionando, vamos até o menu ”Status > Services”. Aqui saberemos o serviço do Squid está iniciado ou parado.
Outra dica importante é ir em “Status > System Logs”, na aba “System” temos os últimos 50 registros de logs do sistema. E ali provavelmente será mostrado o erro do Squid caso o mesmo não venha a ser iniciado corretamente. Se for um erro na ACL ele irá lhe dizer qual a ACL está com o problema.
Criado Por: Daniel Herzer
Fortaleza, 25 de Setembro de 2012
E-mail: [email protected]