Configurar Squid e DansGuardian com NTLM e Webmin
Configuração passo a passo para integrar o proxy Squid com o filtro web DansGuardian, autenticação NTLM (via winbind/ntlm_auth), redirecionamento transparente com ipmasq e gestão pelo Webmin. Inclui scripts de permissão, exemplos de configuração, checklist de testes e dicas de segurança e privacidade.
Visão geral
Este guia descreve como configurar um proxy Squid em conjunto com o DansGuardian para filtragem de conteúdo, habilitar autenticação NTLM (para usuários de domínio) e usar ipmasq para proxy transparente. Também cobre ajustes de permissões do winbind e a instalação do módulo DansGuardian para Webmin.
Definição rápida: NTLM é um protocolo de autenticação usado em ambientes Windows para autenticar usuários do domínio; winbind integra Samba com o Kerberos/Active Directory.
Pré-requisitos
- A máquina executa Linux (ex.: Ubuntu/Debian).
- Squid, DansGuardian, Samba/winbind e Webmin instalados (ou disponíveis via apt).
- A máquina está ingressada no domínio (opcional, mas necessário para autenticação automática NTLM).
- Acesso root ou sudo.
Importante: faça backup dos arquivos de configuração antes de editar.
1) Configurar o servidor Squid
Faça um backup do arquivo de configuração e edite-o:
cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
nano -c /etc/squid/squid.conf
Altere as linhas indicadas (os números de linha são do exemplo original):
- Linha 73: http_port 127.0.0.1:3128 transparent
- Linha 74: http_port 8080
- Linha 593: cache_peer 127.0.0.1 parent 8081 0 no-query login=*:nopassword
Descomente e atualize os auxiliares NTLM conforme indicado (linhas do exemplo):
- Descomente as linhas 1791 até 1783 e substitua
por /usr/bin/ntlm_auth –helper-protocol=squid-2.5-ntlmssp - Descomente as linhas 1800 até 1803 e substitua
por /usr/bin/ntlm_auth –helper-protocol=squid-2.5-basic
Outras alterações descritas no arquivo:
- Linha 2449: acl ntlm_auth proxy_auth REQUIRED
- Linha 2579: http_access allow ntlm_auth
- Linha 3161: forwarded_for off
Salve o arquivo.
Importante: a diretiva forwarded_for off evita que o Squid encaminhe o IP interno do cliente para os sites visitados. Se permanecer no padrão (on), seu IP interno poderá ser exposto a sites externos.
2) Ajuste de permissões do winbind (winbindd_privileged)
O Squid/ntlm_auth precisa acessar /var/run/samba/winbindd_privileged. Podemos ajustar permissões no boot com um simples script que define grupo e permissão para o usuário/proxy. Crie e edite /etc/init.d/winbind-ch.sh e cole o conteúdo abaixo:
#!/bin/sh
#set -x
WINBINDD_PRIVILEGED=/var/run/samba/winbindd_privileged
chmodgrp() {
chgrp proxy $WINBINDD_PRIVILEGED || return 1
chmod g+w $WINBINDD_PRIVILEGED || return 1
}
case "$1" in
start)
chmodgrp
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
;;
*)
echo "Usage: $0 start|stop" >&2
exit 3
;;
esac
#EOF
Em seguida registre o script para executar no boot:
update-rc.d winbind-ch.sh start 21 2 3 4 5 .
Nota: as permissões podem ser resetadas após reboot se serviços reaplicarem políticas; esse script garante correção a cada inicialização.
3) Configurar o DansGuardian
Edite /etc/dansguardian/dansguardian.conf e comente a linha 3.
Vá até a linha 62 e altere a porta 8080 para 8081.
Altere filtergroups = 1 (linha 102) para filtergroups = 2 e crie o arquivo do segundo grupo:
cp /etc/dansguardian/dansguardianf1.conf /etc/dansguardian/dansguardianf2.conf
nano -c /etc/dansguardian/dansguardianf2.conf
No novo arquivo, vá até a linha 29 e altere para:
naughtynesslimit = 100
Importante: definições de antivírus (AV) frequentemente bloqueiam atualizações automáticas quando escaneadas. Exclua listas de definições AV das verificações do filtro para evitar falsos positivos.
Edite /etc/dansguardian/exceptionvirussitelist e adicione o host do servidor de atualizações do seu AV, por exemplo:
activeupdate.trendmicro.com
Você também pode adicionar o domínio à lista de exceções do site:
etc/dansguardian/exceptionsitelist (adicione: trendmicro.com)
Reinicie o DansGuardian:
/etc/init.d/dansguardian restart
4) Configurar firewall e proxy transparente com ipmasq
Instale o ipmasq:
apt-get install ipmasq -y
Para habilitar proxy transparente (redirecionar todo HTTP para a porta 8081 do DansGuardian), copie o exemplo de regra:
cp /usr/share/doc/ipmasq/examples/basics/I89tproxy.rul /etc/ipmasq/rules/I89tproxy.rul
Se precisar encaminhar portas para um servidor interno (DNAT), veja o exemplo:
/usr/share/doc/ipmasq/examples/dnat/C50dnat.rul
Dica: revise as regras geradas antes de ativar em produção. Faça testes em janela de manutenção.
5) Instalar módulo DansGuardian no Webmin
Abra o Webmin em: https://192.168.1.1:10000/ e entre como root. Navegue: Webmin > Webmin Configuration > Webmin Modules. Selecione “From ftp or http URL” e cole:
http://internap.dl.sourceforge.net/sourceforge/dgwebminmodule/dg-0.5.10-pr5.wbm
Clique em Install Module.
6) Testes finais e verificação
- Reinicie a máquina para aplicar o script de permissão e as configurações.
- Configure um navegador para usar o proxy no IP da máquina com porta 8080 (proxy HTTP).
- Se o computador estiver ingressado no domínio e NTLM funcionar, o login deve ocorrer automaticamente.
- Caso o NTLM falhe no Internet Explorer, insira domainname\username no prompt de autenticação.
Teste adicional: a partir de um computador que NÃO está no domínio e que não usa proxy, acesse um site e verifique os logs do DansGuardian via Webmin. O log deverá mostrar o usuário do computador do domínio e o site visitado.
Observação: se você observar que o IP do computador de domínio aparece como 127.0.0.1 nos logs de um cliente sem domínio, isso é esperado no desenho: o cliente de domínio passa por Squid → DansGuardian → Squid (loop local), enquanto o cliente não-domínio vai direto para DansGuardian → Squid.
Se algo falhar, verifique /var/log/syslog, /var/log/squid/cache.log e os logs do DansGuardian para entradas de erro.
Solução de problemas comum
- ntlm_auth não encontrado: instale pacote winbind/samba e verifique caminho exato de ntlm_auth.
- Permissões de /var/run/samba/winbindd_privileged: confira se o script em /etc/init.d é executado no boot e se o grupo “proxy” existe.
- Proxy transparente não redireciona: reveja regras do iptables/ipmasq e confirme que tráfego HTTP está sendo capturado (porta 80).
- Autenticação falhando em alguns navegadores: verifique políticas de segurança/IE e se a máquina cliente está no domínio.
Abordagens alternativas
- Em vez de ipmasq, implemente regras iptables diretamente (mais controle, porém menos amigável para iniciantes).
- Substituir DansGuardian por outro filtro (ex.: Squid:clamav/ufdbGuard, or commercial appliances) quando necessário suporte a HTTPS granular ou inspeção profunda.
- Usar autenticação via Kerberos/SPNEGO para SSO completo em navegadores modernos (mais seguro que NTLM) — requer configuração adicional do KDC/SPNs.
Modelo mental (heurística)
Pense na cadeia de tráfego assim:
Cliente → (redir via ipmasq) → DansGuardian (porta 8081) → Squid (127.0.0.1:3128/8080) → Internet
- Squid: cache e autenticação;
- DansGuardian: filtragem de conteúdo;
- winbind/ntlm_auth: valida credenciais do domínio.
Checklist por função
Administrador de rede:
- Backup de /etc/squid/squid.conf
- Ajustar linhas de porta e cache_peer
- Verificar ntlm_auth e winbind
- Registrar script de permissão e testar no boot
- Aplicar regras ipmasq e validar redirecionamento
Helpdesk / Suporte:
- Testar acesso web em máquina de domínio (SSO)
- Testar acesso em máquina sem domínio (fluxo sem SSO)
- Coletar logs (/var/log/syslog, DansGuardian e Squid)
Segurança / Compliance:
- Confirmar forwarded_for off para não vazar IPs internos
- Verificar listas de exceção para atualizações AV
- Documentar policy de filtragem e lista de exceções
Playbook de implantação (passos rápidos)
- Fazer backup das configurações.
- Alterar Squid conforme instruções e testar config (squid -k parse quando aplicável).
- Implementar script winbind-ch.sh e registrar no init.
- Ajustar DansGuardian e criar grupos extras.
- Copiar regras ipmasq e ativar.
- Instalar módulo Webmin e testar interface.
- Reiniciar e executar testes de login e navegação.
- Coletar logs e ajustar regras/listas conforme necessário.
Segurança e privacidade
- forwarded_for off reduz vazamento de IPs internos, mas não substitui controles de privacidade em nível de aplicação.
- Registre apenas o necessário nos logs; aplique políticas de retenção e acesso controlado.
- Se processar dados pessoais, avalie requisitos de privacidade/GDPR: registre base legal, prazo de retenção e controles de acesso.
Critérios de aceitação
- Usuário de domínio consegue navegar com autenticação automática NTLM.
- Máquina sem domínio navega via DansGuardian/Squid sem autenticação.
- Atualizações de AV citadas nas exceções não são bloqueadas.
- Logs não expõem IPs internos (forwarded_for off ativo).
Fatores de quando essa solução pode falhar
- Ambientes onde o tráfego HTTPS precisa de inspeção de conteúdo e certificados de interceptação (MitM) — DansGuardian + Squid em HTTP não resolve inspeção HTTPS sem configuração adicional.
- Políticas de segurança que proíbem NTLM ou exigem Kerberos/SPNEGO.
- Infraestruturas cloud ou segmentadas onde redirecionamento transparente não é viável.
Caixa de referência rápida (portas e caminhos)
- Squid: 3128 (loopback), 8080 (proxy externo)
- DansGuardian: 8081 (porta de filtragem interna)
- winbindd_privileged: /var/run/samba/winbindd_privileged
- Script de permissão: /etc/init.d/winbind-ch.sh
- Regras ipmasq: /etc/ipmasq/rules/I89tproxy.rul
Links úteis
Resumo
Siga os passos de backup, edição do Squid, ajuste de permissões do winbind, configuração do DansGuardian, aplicação de regras ipmasq e instalação do módulo Webmin. Teste com máquinas de domínio e não-domínio, verifique logs e ajuste listas de exceção para atualizações de AV. Mantenha políticas de retenção e segurança dos logs.
Materiais semelhantes

Chave de segurança Android para login Google no iOS

Instalar ADB e Fastboot no Macbook
Corrigir reparação pendente no Windows

Criar app Android grátis sem programar
Instalar barra lateral no Windows 11/10
