Autenticando o Proxy Squid + DansGuardian no AD (samba4)

Autenticando o Proxy Squid + DansGuardian no AD (samba4)
A autenticação do usuário e senha e feita sempre pelo squid, mesmo que trabalhe em conjundo com o DansGuardiam e sua porta do browser esteja `virada` para o dans, toda a autenticação eh feita no squid.
Há três maneiras de serem feitas as autenticações do squid no samba4 sendo que duas há necessidade de ingressar anteriormente esse servidor squid no domínio existente do samba4.
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:
o 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.
o MSNT: Solicita que o usuário digite o usuário e senha. O NTLM é bem melhor, sugiro usar ele.
o 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.

Uma forma fácil e rápida eh pelo executável distribuído no squid chamada smb_auth (no freebsd localizado em /usr/local/libexec/squid/smb_auth). Usando deste executável não há necessidade de ingressar o servidor ao domínio.
1 – No servidor samba4 sera necessário criar um compartilhamento chamado netlogon contendo um arquivo dentro do diretório de nome proxyauth escrito em seu conteúdo o nome allow.
[root@dominio ~]# vim /etc/samba/smb.conf

[netlogon]
comment = The domain logon service
path = /share/netlogon
# valid users = @”Domain Users”
valid users = %U
browseable = no
guest ok = yes
writeable = no
read only = yes
[root@dominio ~]# cat /share/netlogon/proxyauth
allow

[root@dominio ~]# chmod 777 /share/netlogon/proxyauth

[root@dominio ~]# ls -lah /share/netlogon/
total 12K
drwxr-xr-x. 2 root root 4.0K Mar 20 19:35 .
drwxr-xr-x. 6 root root 4.0K Mar 20 19:35 ..
-rwxrwxrwx. 1 root root 6 Mar 20 19:35 proxyauth

Abaixo iremos realizer um teste do usuario e senha. Onde escrevo USUARIO SENHA substitui por dados reais. Após dar um enter no comando escreva com um espaço o Usuario e senha e posterior de enter e espere.

Quando eu escrevo um usuário e senha corretos tenho a mensagem de OK ao final.
Observação para o domínio no qual omite o .net, .com, etc..

(root@proxy)~# /usr/local/libexec/squid/smb_auth -W DOMINIOTESTE -d
USUARIO SENHA
Domain name: DOMINIOTESTE
Pass-through authentication: no
Query address options:
Domain controller IP address: 192.168.218.190
Domain controller NETBIOS name: DOMINIO
Contents of //DOMINIO/NETLOGON/proxyauth: allow
OK

Quando introduzo um usuario e senha incorretos tenho a mensagem de ERR ao final.

(root@proxy)~# /usr/local/libexec/squid/smb_auth -W DOMINIOTESTE -d
uferes 123
Domain name: DOMINIOTESTE
Pass-through authentication: no
Query address options:
Domain controller IP address: 192.168.218.190
Domain controller NETBIOS name: DOMINIO
Contents of //DOMINIO/NETLOGON/proxyauth:
ERR

Para finalizar iremos aplicar no arquivo squid.conf a autenticação (não irei abortar o arquivo todo e muito menos a configuração do squid):

auth_param basic program /usr/local/libexec/squid/smb_auth -W DOMINIOTESTE -U 192.168.218.190

Mas abaixo temos a clausula de requerimento.
acl auth proxy_auth REQUIRED

Reinicie o squid e teste a autenticação.

Alguns artigos mandam alterar o conteúdo com um patch ou manualmente do arquivo abaixo:
/usr/local/libexec/squid/smb_auth.sh
Trocando
USER=”$SMBUSER%$SMBPASS”
por
USER=”$SMBUSER”
PASSWD=”$SMBPASS”

Porem isso não foi necessário. Quando realizei essa modificação parou de funcionar.

Outras formas de integrar o squid com o samba4
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:
o 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.
o MSNT: Solicita que o usuário digite o usuário e senha. O NTLM é bem melhor, sugiro usar ele.
o 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:
o 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).

Ulisses Féres

Blog destinado a documentação. Se você deseja postar algo interessante peça seu login e senha no email abratel@abratel.com.br

Você pode gostar...

Deixe uma resposta