Olá, vou apresentar neste tópico todas as etapas de configuração do Squid para que seja possível a autenticação de usuários do Active Directory de forma simplificado para o usuário, sem a necessidade de toda vez que abrir o navegador seja necessário informar usuário e senha.
Este artigo é baseado nas seguintes fontes:
http://www.vivaolinux.com.br/artigo/Squid-autenticando-em-base-Active-Directory/
http://wiki.squid-cache.org/ConfigExamples/Authenticate/WindowsActiveDirectory
http://www.vivaolinux.com.br/topico/Perguntas-Frequentes/SQUID-LENTO-AUTH-AD-VIA-NTLM
Para esta explicação, segue as versões utilizadas:
CentOS 5.0 2.6.18-128.1.6.el5
Squid 2.6.STABLE21
Samba 3.0.33 Release 3.7.el5
Vou apresentar esta implantação em 3 partes, nesta primeira fase iremos abordar o Linux conseguindo autenticar utilizando Kerberos, que é o padrão que a Microsoft utiliza ao gerar o token de autenticação no Active Directory, existe o formato simplificado chamado de ntlm, que é menos seguro e foi sendo substituido desde as versões do Windows 2000, largamente utilizado na era WinNT.
Vamos lá:
Editando o arquivo /etc/krb5.conf:
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = DOMINIO.LOCAL
[realms]
DOMINIO.LOCAL = {
kdc = domaincontroller.dominio.local
admin_server = domaincontroller.dominio.local
kpasswd_server = domaincontroller.dominio.local
default_domain = dominio.local
}
[domain_realm]
.dominio.local = DOMINIO.LOCAL
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
Com estas configurações acima (adequando as nomenclaturas de acordo com o seu ambiente), o kerberos estará pronto para "entender" o domínio do AD.
No arquivo /etc/hosts.conf corrija e insira algumas informações:
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.0.20 proxy.dominio.local proxy
::1 localhost6.localdomain6 localhost6
Novamente faça a adequação necessária dos nomes e ip conforme o seu ambiente
Segunda parte -
Agora faremos a configuração do Samba para que o nosso servidor Linux entre como uma "estação windows" cadastrada no domínio do AD.
Abaixo o arquivo smb.conf personalizado para que seja possível a conexão do Squid ao Active Directory:
Local do arquivo:
/etc/samba/smb.conf
[global]
workgroup = [DOMÍNIO_NO_FORMATO_NETBIOS]
server string = Proxy Server
netbios name = [NOME_NETBIOS_SERVIDOR_PROXY]
log level = 3
log file = /var/log/samba/%m.log
max log size = 50
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
security = ads
realm = [NOME_DOMÍNIO_NO_FORMATO_DNS]
encrypt passwords = yes
ldap ssl = no
password server = [NOME_SERVIDOR_DC_AD]
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind use default domain = yes
preferred master = no
dns proxy = no
Após configurar o arquivo acima, sincronize a hora do servidor linux com o servidor active directory:
ntpdate -4 [IP_DC_AD]
No arquivo /etc/resolv.conf deverá estar indicado os ips dos servidores DNS do AD. Digite o seguintes comandos para associar o servidor linux ao AD como membro do domínio:
Inicie o samba e o winbind:
service smb restart
service winbind restart
e depois:
#kinit administrator@DOMAIN.LOCAL.
#net ads join -U administrator@DOMAIN.LOCAL.
Substitua DOMAIN.LOCAL por suas configurações
Para verificar se tudo ocorreu como esperado:
#wbinfo -t <-- testa a conexão com o AD e retorna a seguinte mensagem em caso de sucesso: checking the trust secret via RPC calls succeeded
#wbinfo -u <-- retorna a lista de usuários do AD
Terceira Parte -
Agora vamos finalizar as configurações no arquivo do squid.conf, afim de completarmos a integração da autenticação squid juntamente ao active directory:
No arquivo /etc/squid/squid.conf:
O primeiro passo é ativar o processo de autenticação no squid:
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 30
o segundo criar algumas acl's para efetivar o processo de autenticação:
acl AuthorizedUsers proxy_auth REQUIRED
http_access allow all AuthorizedUsers
Com isso, basta você configurar o proxy em seu navegador, estar logado no domínio onde o seu servidor proxy está associado e pronto! Você vai observar que no log vai aparecer algumas mensagens de TCP_DENIED/407, isso é normal e tem haver com a tentativa de autenticação NTLM - vide informações em: http://wiki.squid-cache.org/ConfigExamples/Authenticate/WindowsActiveDirectory
Aprimorando suas regras:
Para criar uma acl específica para um usuário ou grupo, utiliza uma acl buscando informações de um comando externo:
external_acl_type ldap_group ttl=300 children=200 %LOGIN /usr/lib/squid/wbinfo_group.pl
Ela retornará os grupos de um determinado usuário autenticado, basta criar uma acl para selecionar o grupo:
acl TIN1 external ldap_group -i proxytin1
onde o grupo no active directory estará como "proxytin1"
Ai você pode criar uma acl para um determinado site:
acl sitesTIC1 url_regex orkut.com
E bloquear logo abaixo:
http_access deny sitesTIC1 TIN1
Agora teste tudo.
Obs: Realizei testes em varios windows o unico que não funciona e 2008R2.
Nenhum comentário:
Postar um comentário