Autenticação com usuário Windows (AD) no Squid

De Wiki Hackstore

Descrição

  • Permitir que o squid autentique usuários do windows active directory ou samba.
  • Isso proporcina uma maior integração e utilização de uma única base de senhas.
  • Também facilita o controle da navegação e relatórios por usuários.
  • Existem 2 autenticadores no squid para isso:
    • NTLM: Pega automaticamente ou não o login do usuário logado no dominio. Caso o usuário não esteja logado, solicita a senha.
    • MSNT: Solicita que o usuário digite o usuário e senha. O NTLM é bem melhor, sugiro usar ele.
    • SMB_AUTH: Faz autenticação através do samba. Bem simples e fácil de configurar.
  • Se estiver utilizando o squid do SuSE, ele vem com todos os autenticadores. Caso contrário terá que compilar no squid.


Softwares e Versões

  • Squid 2.5.X
  • Samba client 3.x


Configuração para MSNT e NTLM

Configurar samba e winbind para entrar no domínio

  • Editar o smb.conf
workgroup = mydomain
password server = myPDC
security = ads
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind use default domain = yes 
# tirar outras opcoes de dominio master
  • Editar o /etc/hosts e adicionar uma entrada para o nome do servidor AD.
  • Entrar no dominio.
$ net join -S NOMESERVIDORDOMINIOWINDOWS -Uuserdowindows%senhadowindows
  • OBS: È necessário um usuário no windows com permissão no grupo Administradores.
  • Verificar se o nscd está rodando e parar
$ ps auxwww | grep [n]scd
root      3036  0.0  0.2 141416  1080 ?        Ssl  10:04   0:00 /usr/sbin/nscd
$ /etc/init.d/nscd stop
$ chkconfig nscd off
  • OBS: Esse procedimento acima é muito importante, pois dependendo da versão do samba, se o nscd estiver rodando o winbind não funciona!
  • Startar nmb e winbind
$ /etc/init.d/nmb start; /etc/init.d/winbind start;
  • Setar diretorio do winbind para mesmo grupo do squid:
chown root.GRUPOSQUID /var/lib/samba/winbindd_privileged
  • Rodar diariamente no crontab
$ net rpc changetrustpw
  • Testar se logou com sucesso no domínio:
$ wbinfo -t
Secret is good
  • Testar autenticação do winbind:
$ wbinfo -a mydomain\\myuser%mypasswd
plaintext password authentication succeeded
error code was NT_STATUS_OK (0x0)
challenge/response password authentication succeeded
error code was NT_STATUS_OK (0x0)



MSNT

  • Editar o /etc/squid/msntauth.conf
server PDCNAME PDCNAME WORKGROUP
  • Editar o squid.conf:
auth_param basic program /usr/local/squid/libexec/msnt_auth
auth_param basic children 5
auth_param basic realm Usuário e Senha
auth_param basic credentialsttl 5 minutes

acl password proxy_auth REQUIRED
http_access allow LAN password



NTLM

  • Particularidade do squid RPM do SuSE:
    • No SUSE tem 2 ntlm_auth, um em /usr/bin outro em /usr/sbin. TEM QUE USAR O DO /usr/bin:
 $ /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
myuser mypasswd                   
OK
  • Testar o autenticador na linha de comando:
$ /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-basic
mydomain+myuser mypasswd                   
OK
  • Para debugar a autenticação, rodar o winbind com o parametro -d 6
  • Inserir no squid.conf:
#Auth AD
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 30
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Linux Proxy Server
auth_param basic credentialsttl 2 hours


  • OBS IMPORTANTE: Perceba que no arquivo squid.conf existem 2 chamadas ao ntlm_auth. A primeira é referente a autenticação automática, pegando o usuário do windows já logado e a segunda é para pedir senha, para usuários não logados. Caso deseje que ele sempre solicite senha, mesmo para usuários logados, comente a primeira opção (ntlmssp) e deixe somente a segunda opção (basic).


Configuração para SMB_AUTH

  • O smb auth é um módulo padrão que vem com o squid rpm do suse e pode também ser baixado em: [[1]]
  • Crie um arquivo chamado proxyauth dentro da pasta NETLOGON do servidor SAMBA.
    • Edite esse mesmo arquivo e coloque a palavra allow
  • No servidor squid, coloque a autenticação:
authenticate_program /usr/sbin/smb_auth -W WORKGROUP
acl domainusers proxy_auth REQUIRED
  • Basta entao reiniciar o squid e setar o proxy no navegador e verificar se a autenticação funciona.
  • Caso queira testar na linha de comando, execute:
$ smb_auth -W WORKGROUP -d
user senha
Domain name: WORKGROUP
Pass-through authentication: no
Query address options:
Domain controller IP address: 192.168.5.249
Domain controller NETBIOS name: SMBSERVER
Contents of //SMBSERVER/NETLOGON/proxyauth: allow
OK


Mais informações

Como configurar Internet Explorer Proxy Settings via GPO

http://blogs.technet.com/b/wokubo/archive/2010/11/02/como-configurar-internet-explorer-proxy-settings-via-gpo.aspx

Referências

http://www.squid-cache.org/Doc/FAQ/FAQ-23.html