Configuração Squid+Autenticação+Grupos
Squid + Autenticação NCSA + Controle de Acesso por Grupos
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 com 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:
Code:
-
- 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 nosso 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 “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/*
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.
Categoria:FIREWALL Categoria:CENTRAL_DE_CONHECIMENTO Categoria:LINUX