Squid + Autenticação NCSA + Controle de Acesso por 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:

    
    ### 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.

    Tutorial Criado Por: Daniel Herzer
    Fortaleza, 25 de Setembro de 2012
    E-mail: herzer@caisnetwork.com.br



  • Daniel Herzer,

    Primeiramente, bem vindo ao fórum!  :)

    Excelente iniciativa em publicar tutoriais.

    Tenho uma dica para deixa-lo ainda melhor.

    No lugar de usar o edit file do pfsense, use o pacote filer para manter as alterações no backup do pfsense.



  • Marcello,

    Obrigado pelas boas vindas e pela dica do pacote filer… irei experimentá-lo :)



  • Bela iniciativa,

    alguem se habilita em fazer o mesmo monstrado integrado ao Squid, Dansguadian, Active Diretory sem autenticação via browser..



  • Daniel Herzer,

    Seu tutorial já está publicado na parte de pacotes   :)

    Tutoriais para pfSense - pacotes

    Considere publica-lo também no blog da comunidade, para evitar que o tutorial se perca caso os links das imagens deste post fiquem indisponíveis.



  • @thiagomespb:

    alguem se habilita em fazer o mesmo monstrado integrado ao Squid, Dansguadian, Active Diretory sem autenticação via browser..

    A importação dos grupos já é nativa no pacote do dansguardian, e já temos tutoriais com este procedimento.

    Sugiro uma boa pesquisa no fórum.



  • olhei alguns links disponiveis no forum muitos confusos, diferente deste.



  • @thiagomespb:

    olhei alguns links disponiveis no forum muitos confusos, diferente deste.

    concordo..



  • @thiagomespb:

    olhei alguns links disponiveis no forum muitos confusos, diferente deste.

    Usando palavras do nosso estimado professor JackL, não seria este o momento ideal para você exercitar a retroalimentação do fórum e se basear neste tutorial para "organizar" os "tutoriais confusos"?  ???



  • passe então um que funcione.. que eu peço a um amigo para ele seguir o mesmo.. e tentar integrar..



  • @thiagomespb:

    passe então um que funcione.. que eu peço a um amigo para ele seguir o mesmo.. e tentar integrar..

    Todos os que estão na área de tutorias são contribuições dos usuários do fórum e funcionam, pode escolher qualquer um…



  • Não quero ficar discutido. etc. etc.

    também tentei usar este daqui e não consegui..

    http://forum.pfsense.org/index.php/topic,47532.75.html

    quando concordei que estava "confuso" pq a solução não estava clara.. isso é apenas
    sugestão para o aprimorar o pfsense.. se alguem do fórum conseguiu fazer essa integração
    bastaria fazer igual e postar aqui..



  • @Daniel:

    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:

    
    ### 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.

    Tutorial Criado Por: Daniel Herzer
    Fortaleza, 25 de Setembro de 2012
    E-mail: herzer@caisnetwork.com.br

    Show de bola Daniel… seja bem vindo ao fórum e meus parabéns pela iniciativa de ajudar a comunidade, um abraço :wq

    ++Mendax



  • @marcelloc:

    Usando palavras do nosso estimado professor JackL, não seria este o momento ideal para você exercitar a retroalimentação do fórum e se basear neste tutorial para "organizar" os "tutoriais confusos"?  ???

    Muito bem lembrado meu caro Marcello!

    Tenho notado que a máxima, em todos os fóruns e comunidades de tecnologia que participo, continua sendo a mesma: A imensa maioria dos usuários/frequentadores querem só a resposta prontinha. Um tutorial passo-a-passo, com ilustrações comentadas e, se possível, dicas e macetes extras.

    Isso é um fórum aberto, público e colaborativo. Não é uma central de 0800 onde você liga e tem consultores para lhe atender prontamente (e de graça).

    Princípio de qualquer fórum/comunidade de tecnologia = Retroalimentação!

    Nota: O Daniel já publicou seu tutorial no blog da comunidade brasileira do pfSense. Parabéns a ele pela iniciativa - Espero que estimule outros membros aqui do fórum a fazer o mesmo (publicar seus textos por lá)! ;)

    Abraços!
    Jack


Log in to reply