Ir para o conteúdo

Capítulo 34 – SSO com Active Directory

Introdução

Uma das maiores vantagens de integrar o Squid Proxy ao Active Directory (AD) é a possibilidade de autenticação automática dos usuários sem necessidade de inserir manualmente login e senha a cada acesso. Isso é possível graças ao uso dos protocolos Kerberos e LDAP, os mesmos utilizados nativamente pelos sistemas Windows para autenticação integrada (SSO – Single Sign-On).

Neste capítulo, você aprenderá como:

  • Integrar o Squid Proxy ao AD via LDAP;
  • Habilitar a autenticação SSO com Kerberos;
  • Realizar testes de validação e corrigir possíveis erros comuns.

Benefício da Autenticação SSO

A autenticação SSO melhora a experiência do usuário e reforça o controle de acesso, associando as requisições web diretamente às contas de domínio. Além disso, simplifica a auditoria e o rastreamento de atividades.


Visão Geral do Processo

  1. Configurar o servidor LDAP no OPNsense.
  2. Habilitar a autenticação básica no Squid.
  3. Validar o funcionamento do login.
  4. Habilitar o modo Single Sign-On (Kerberos).
  5. Criar o Key Table (arquivo de chave) para o domínio.
  6. Corrigir eventuais falhas de DNS e sincronismo de horário.
  7. Validar a autenticação transparente nas estações clientes.

1 – Configurar o Servidor de Autenticação LDAP

  1. Acesse o menu System → Access → Servers.
  2. Clique em + Add e preencha conforme o exemplo:

    Type LDAP
    Name LDAP-PARA-PROXY
    Hostname IP ou FQDN do Controlador de Domínio
    Port 389 (ou 636 se usar LDAPS)
    Scope Subtree
    Base DN DC=empresa,DC=corp
    Authentication containers CN=Users,DC=empresa,DC=corp
    Bind User proxybind@empresa.corp
    Password senha do bind user
    Group Filter Deixe em branco (os filtros por grupo serão configurados depois nos perfis de acesso)
  3. Clique em Save e, em seguida, teste a autenticação:

    • Acesse System → Access → Tester.
    • Selecione o servidor LDAP-PARA-PROXY.
    • Insira um usuário e senha de domínio e clique em Test.
    • A resposta deverá indicar sucesso na autenticação.

    Validação

    O teste de autenticação garante que o OPNsense consegue consultar o AD corretamente. Sem essa etapa, a autenticação via proxy falhará.


2 – Habilitar Autenticação no Proxy

  1. Vá até Services → Squid Web Proxy → Administration → Forward Proxy → Authentication Settings.
  2. No campo Authentication Method, selecione o servidor LDAP criado anteriormente (LDAP-PARA-PROXY).
  3. Clique em Apply.
  4. Retorne ao computador cliente e tente navegar na Internet.

Durante o teste:

  • O navegador exibirá um prompt de autenticação solicitando login e senha.
  • Após inserir as credenciais de domínio, a navegação deve ser liberada.
  • Nos logs do proxy (Services → Squid → Access Log) o nome do usuário deve aparecer junto ao registro de acesso.

3 – Habilitar a Autenticação SSO (Kerberos)

Agora iremos habilitar o Single Sign-On, permitindo que o navegador use o ticket Kerberos do Windows para autenticar automaticamente o usuário.

  1. Acesse Services → Squid Web Proxy → Single Sign-On.
  2. Marque a opção Enable Single Sign-On e clique em Apply.
  3. Clique na aba Kerberos Authentication.
  4. Ignore a checagem inicial de pré-requisitos (alguns itens podem aparecer em amarelo).
  5. Em Key Table Creation, insira as credenciais do administrador de domínio:

  6. Domain Admin User: administrator@empresa.corp

  7. Password: (senha correspondente)
  8. Clique em Create Key Table.

Se o processo for bem-sucedido, o OPNsense criará automaticamente uma conta de computador no AD representando o firewall e exibirá uma mensagem de sucesso.
Caso contrário, exibirá uma mensagem de erro que deve ser avaliada para ajustar o que precisa ser corrigido.


4 – Corrigindo Problemas Comuns na Criação da Key Table

Erro “getnameinfo failed” ou “Name does not resolve”

Se aparecer a mensagem:

Validate: Error: getnameinfo failed for 192.168.x.x: Name does not resolve

isso indica que o DNS reverso (PTR) do AD não está configurado corretamente.

Solução:

  1. No Servidor DNS do Active Directory, crie uma zona reversa correspondente à sub-rede LAN.
  2. Após criada, edite o registro A do servidor AD e marque a opção de atualizar o registro PTR.
  3. Tente novamente o processo de criação da Key Table.

Persistindo o erro

Se mesmo assim o erro persistir:

  • Vá até Services → Unbound DNS → Query Forwarding.
  • Adicione um Query Forwarding para a zona reversa (ex. 1.168.192.in-addr.arpa) apontando ao DNS do AD.
  • Clique em Apply, depois retente a criação da Key Table.

Erro “Password Failed”

Se ocorrer erro de senha:

  1. Acesse o servidor AD.
  2. Abra Active Directory Users and Computers.
  3. Remova a conta de máquina correspondente ao nome do firewall (ex.: FW-MATRIZ$).
  4. Volte ao OPNsense e clique novamente em Create Key Table.

5 – Testar a Autenticação SSO

  1. Reinicie o computador cliente.
  2. Faça login com um usuário de domínio.
  3. Abra o navegador e tente acessar um site externo.

Se tudo estiver configurado corretamente:

  • A navegação será liberada sem solicitar usuário e senha.
  • Nos logs do Squid, o nome de domínio do usuário (dominio\usuario) será exibido junto aos registros.

Autenticação transparente

Se a navegação ocorre automaticamente, significa que o Kerberos negociou o ticket com sucesso e a autenticação está 100% funcional.


Troubleshooting

Se ainda houver prompt de autenticação, verifique:

  1. O usuário está logado com uma conta de domínio, não uma conta local.
  2. O relógio do firewall, servidor AD e cliente estão sincronizados.

  3. Por padrão, o Kerberos falha se houver diferença de mais de 5 minutos.

  4. Nos logs do Squid, o erro será semelhante a:

    2025/04/18 17:50:47 kid1| ERROR: Negotiate Authentication validating user.
    Result: {result=BH, notes={message: gss_accept_sec_context() failed:
    Unspecified GSS failure. Ticket not yet valid; }}
    
  5. Caso o Domain Controller esteja com horário incorreto, execute no servidor (Prompt como Administrador):

    net stop w32time
    w32tm /unregister
    w32tm /register
    net start w32time
    
    w32tm /config /manualpeerlist:a.ntp.br /syncfromflags:manual /reliable:yes /update
    w32tm /resync
    
  6. Certifique-se de que a porta UDP 123 (NTP) está liberada para a Internet.

  7. Após ajustar o horário, reinicie o cliente, o AD e o firewall para renovar os tickets Kerberos.

Importante

Para que o SSO funcione, é necessário que o computador use o proxy pelo hostname do firewall e não mais pelo IP. Caso tenha feito a etapa anterior do WPAD, este processo será automático. Caso não tenha feito, reveja o apontamento do proxy nas opções de Internet.


Conclusão

A integração do Squid Proxy ao Active Directory com autenticação SSO via Kerberos oferece uma solução elegante, segura e transparente para o ambiente corporativo. Além de eliminar a necessidade de inserir senhas manualmente, o método garante que toda a navegação web esteja autenticada e associada ao usuário real do domínio.

Com isso, o ambiente ganha em usabilidade, segurança e rastreabilidade, consolidando o proxy como uma peça central de controle e governança da rede.