Squid3 + Ubuntu Lucid 10.04 + Kerberos Auth + AD

Esse artigo mostrará a configuração do Squid3 utilizando autenticação Kerberos. Ambiente utilizado: Squid3, Ubuntu 10.04, squid_kerb_auth e Windows 2003 AD.

[ Hits: 79.676 ]

Por: Vinicius Domingues em 24/05/2010


Configuração no Active Directory



Abra o Active Directory Users and Computer.
Linux: Squid3 + Ubuntu Lucid 10.04 + Kerberos Auth + AD
Crie um novo usuário no Active Directory "srvsquid", desmarque a opção para mudar a senha no próximo logon, marque a opção que a senha nunca expira, coloque uma senha grande (20 dígitos) e complexa.

Adicione um computer com o nome "srvsquid".

No seu servidor DNS adicione um registro para o srvsquid IP 192.168.1.2 (isso é realmente importante, não pule esse passo).

O DNS reverso deve estar habilitado para o srvsquid.

Baixe o arquivo WindowsServer2003-KB892777-SupportTools-x86-ENU.exe do site da Microsoft, instale no seu servidor ou em alguma máquina rodando Windows XP.

Abra o cmd: iniciar ---> executar ---> cmd

Vá para a pasta onde foi instalado o Support Tools.

cd c:\"arquivos de programas"\"Support Tools"

Digite o comando para gerar um keytab para o srvsquid:

ktpass -princ HTTP/srvsquid.meudominio.com.br@MEUDOMINIO.COM.BR -mapuser srvsquid -crypto rc4-hmac-nt -pass SENHA_DO_USR_SRVSQUID -ptype KRB5_NT_PRINCIPAL -out c:\srvsquid.keytab

O arquivo srvsquid.keytab será gerado no c:\, reserve esse arquivo, você precisará dele mais tarde.

Página anterior     Próxima página

Páginas do artigo
   1. Squid e suas autenticações
   2. Instalando o Kerberos
   3. Configuração no Active Directory
   4. Instalando e configurando o Squid3
   5. Configurando os navegadores
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Compilando o Squid3

Configurando o Squid no Slackware

SquidGuard: o bloqueador de listas para o Squid

Servidor proxy (Squid)

Squid3 com bloqueio HTTPS [que realmente funciona] - Versão 3.5.22

  
Comentários
[1] Comentário enviado por leandromoreirati em 24/05/2010 - 17:28h

Prezado troppy,
Muito interessante seu artigo, na pratica tenho q colocar senha no browser ou o processo de autenticação é automatico, o usuário logou no dominio ta logado?

Att.

Leandro Moreira

[2] Comentário enviado por gontijobh em 25/05/2010 - 01:51h

Uma pequena duvida, com essa configuração, um relatório feito com o sarg viria especificados os usuários do AD?

[3] Comentário enviado por jucaetico em 25/05/2010 - 11:39h

troppy ,

Parabéns pelo artigo. Você chegou a fazer autenticando atráves de um domínio configurado no Windows 2008?

Pelo que pesquisei na internet o windows 2008 mudou a maneira de autenticar está diferente do windows 2003. Não consegui fazer funcionar. Se tiver alguma coisa poste aqui mesmo.

Valeu

Abraços

[4] Comentário enviado por troppy em 25/05/2010 - 15:58h

Muito interessante seu artigo, na pratica tenho q colocar senha no browser ou o processo de autenticação é automatico, o usuário logou no dominio ta logado?

R= Para o internet explorer 7 ou superior e firefox3 ou superior a autenticação é automática não aparece a caixinha com usuário e senha, o modo LDAP Basic que tem no artigo faz isso caso falhe a autenticação é bom quando for implantar comentar o modo LDAP e testar somente o kerberos. Essa autenticação direta eu consegui no windows XP, Vista e windows 7. No linux eu consegui utilizando um pacote chamado likewise open que coloca a máquina no domínio do AD.

Uma pequena duvida, com essa configuração, um relatório feito com o sarg viria especificados os usuários do AD?
R=Sim os relatórios vem descriminados por cada usuário.

Parabéns pelo artigo. Você chegou a fazer autenticando atráves de um domínio configurado no Windows 2008?
R= Infelizmente não tenho ambiente com o 2008 pra teste, mas creio que a alteração seja na hora de gerar o keymap, há outras maneiras de gerar o keymap, via samba mais creio que para tentar no 2008 eu verificava o modo de gerar o key map. "ktpass -princ HTTP/srvsquid.meudominio.com.br@MEUDOMINIO.COM.BR -mapuser srvsquid -crypto rc4-hmac-nt -pass SENHA_DO_USR_SRVSQUID -ptype KRB5_NT_PRINCIPAL -out c:\srvsquid.keytab" tentaria substituir a tag -crypto rc4-hmac-nt por outro método de criptografia.

Muito obrigado a todos pelo feedback

[5] Comentário enviado por aldivone em 25/05/2010 - 16:28h

Esse é o cara. Trezentos castelão e num bate nas beiradas.

[6] Comentário enviado por leandromoreirati em 26/05/2010 - 15:51h

troppy,
a linha :

sudo chmod proxy:proxy /etc/squid3/srvsquid.keytab

ta com um erro, e pra trocar o dono do arquivo:

sudo chown proxy:proxy /etc/squid3/srvsquid.keytab

Att.

Leandro Moreira.

[7] Comentário enviado por troppy em 27/05/2010 - 08:32h

Obrigado Leandro,
realmente foi um erro na hora da digitação.

[8] Comentário enviado por HC em 27/05/2010 - 15:33h

Muito bom o seu artigo Troppy, deixa eu postar um problema que ocorre aqui na empresa, aqui sempre usamos o squid com o método de autenticação NTLM, recentemente migramos todos os nossos Domain Controllers para Windows Server 2008 R2, e começaram a surgir problemas.
Depois de muita pesquisa e testes, constatamos que após a migração, só as estações com o Windows XP não autenticavam, o problema ainda persiste, só tirei essas estações da regra para passarem pelo proxy.
Caso alguem já passou por esse problema e quiser dar uma força é só postar.

Abraço a todos.

[9] Comentário enviado por leandromoreirati em 31/05/2010 - 14:19h

Troppy,
Segui o seu artigo na integra, quando vou acessar a internet, ele fica com a popup pedindo senha e ao entrar com login/senha além de nao logar ele retorna a seguinte mensagem no log do squid:

2010/05/31 14:17:01| squid_kerb_auth: Got 'YR TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAHEXAAAADw==' from squid (length: 59).
2010/05/31 14:17:01| squid_kerb_auth: Decode 'TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAHEXAAAADw==' (decoded length: 40).
2010/05/31 14:17:01| squid_kerb_auth: received type 1 NTLM token
2010/05/31 14:17:01| authenticateNegotiateHandleReply: Error validating user via Negotiate. Error returned 'BH received type 1 NTLM token'

[10] Comentário enviado por troppy em 01/06/2010 - 11:17h

Olá Leo,

qual o browser que você está usando?
aqui homologamos o IE7 e o firefox 3.0 ou superior, tivemos um problema com alguns IE 8 no windows XP e estamos tentando resolver.

lembrando que deve setar o proxy SRVSQUID.DOMINIO.COM.BR e estar com o dns reverso direitinho pra funcionar o kerberos.


O ambiente de teste é o mesmo ubuntu 10.04 squid3 e windows 2003?

tu ainda tem máquina 98 na rede? Recebi uns reports de quem tem máquina windows 98 o Domain Controler tem que habilitar umas autenticações mais fracas para compatibilidade e não funcionou também.


[11] Comentário enviado por leandromoreirati em 01/06/2010 - 14:42h

Troppy,
Estou testando de um IE 8 e no SO e windows 2008, setei na configuração do proxy o ip do servidor proxy, vou testar agora com o nome ja que esta td criado, inclusive o reverso no DNS.

Att.

Leandro Moreira

[12] Comentário enviado por cavanso em 14/06/2010 - 23:46h

Voce ja tentou utilizando o domian controller com ms w2k8 ?

[13] Comentário enviado por brunofreitas em 16/06/2010 - 11:34h

Fala ae cara,

primeiramente parabens pelo seu artigo.

porem estou com alguns problemas e pelo que percebi semelhantes aos do Leandro Moreira, o navegador fica pedindo usuario e senha e não aceita nenhum usuario do ad, o ambiente é exatamente o mesmo porem o navegador é o IE8, ja inclusive abilitei a autenticação LDAP e mesmo assim nada, poderia dar uma ajuda?

desde já agradeço

Bruno

[14] Comentário enviado por troppy em 16/06/2010 - 15:12h

Voce ja tentou utilizando o domian controller com ms w2k8 ?

R: Não, infelizmente não possuo esse ambiente e nem muito tempo pra montar um em VM pra teste.


Bruno,
muito obrigado, quanto aos erros da um tail -f no /var/log/squid3/access.log e no cache.log e tenta realizar o acesso.
eu tive problemas com o IE8 no windows XP no windows7 funcionou, teria como tu fazer o teste do firefox, só pra ver se funciona??

outra coisa é muito importante setar o proxy no navegador com o nome completo srvsquid.meudominio.com.br, pois o kerberos precisa fazer um reverso do dns pra funcionar. Não deve setar o IP nem o nome WINS.

Tanta aí e posta o results do log pra ver qual o prob.

Vlws

[15] Comentário enviado por brunofreitas em 17/06/2010 - 16:54h

troppy,

bom quanto ao log não pude pegar pois após testar sem sucesso também no IE7 resolvi começar do zero novamente, quanto a setagem do proxy no navegador eu tinha feito exatamente como voce falou, nesse momento eu estou fazendo por partes e começei a ver se consigo fazer o kerberos funcionar ele tem me retornado erros dizendo que não consegue chegar até o meu KDC, vou colar o conf dele aqui. outro ponto é que no AD eu tenho a opção de liberar o acesso de qualquer máquina especifica para acessar o kerberos, e dei essa permissão ao meu servidor proxy também, no mais o dns reverso está funcionando e o squid está adicionado no computers do AD, o arquivo do 2003 foi gerado, que no momento está sem uso uma vez que ainda não instalei o squid e pelo que itnendi é ele quem vai usar o arquivo. sou iniciante em linux por isso talvez esteja cometendo erros simples hehehe. segue o conf do kerberos e o erro:

[libdefaults]
default_realm = SYGMAMOTORS.LOCAL
dns_lookup_realm = no
dns_lookup_kdc = no
ticket_lifetime = 24h
forwardable = yes

# The following krb5.conf variables are only for MIT Kerberos.
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true

# for Windows 2003
default_tgs_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
default_tkt_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
permitted_enctypes = rc4-hmac des-cbc-crc des-cbc-md5

# For Windows XP:
default_tgs_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
default_tkt_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
permitted_enctypes = rc4-hmac des-cbc-crc des-cbc-md5


# The following libdefaults parameters are only for Heimdal Kerberos.
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true

[realms]
SYGMAMOTORS.LOCAL = {
kdc = 192.168.1.2
admin_server = 192.168.1.2
dafault_domain = sygmamotors.local
}

[domain_realm]
.sygmamotors.local = SYGMAMOTORS.LOCAL
sygmamotors.local = SYGMAMOTORS.LOCAL

[kdc]
profile = /etc/krb5kdc/kdc.conf

[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}

[login]
krb4_convert = true
krb4_get_tickets = false

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log




----------------------------------------------------
Erro:

sygma@srvsquid:/etc$ cd
sygma@srvsquid:~$ sudo /etc/init.d/krb5-kdc restart
* Restarting Kerberos KDC krb5kdc
krb5kdc: cannot initialize realm SYGMAMOTORS.LOCAL - see log file for details
...fail!


isso ai cara

novamente obrigado desde já

att,

Bruno

[16] Comentário enviado por kepler001 em 07/09/2010 - 22:22h

com windows server 2008 tem como fazer autenticação via ntlm ????
com squid 2 ???

[17] Comentário enviado por troppy em 08/09/2010 - 08:41h

Eu nunca tive um ambiente windows 2008 para teste, aqui na empresa utilizamos 2000 e 2003.

Porém tivemos alguns problemas com o windows7, este tinha que mudar uma opção no registro para funcionar o ntlm, talves fazendo esse procedimento no seu 2008 funcione também.

1) Em HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
caso nao exista crie uma DWORD value com o nome LmCompatibilityLevel e coloque o valor de 1 para LM NTLM e NTLMv2 se é negociavel. Deve ser colocado valores entre 0 e 2

2) reinicie

[18] Comentário enviado por andrefreire em 02/10/2010 - 07:46h

Bom dia !

Troppy testei seu modelo de autenticação e funcionou muito bem porém quando tentei fazer o controle dos usuários pelos grupos criados no AD não consegui fazer funcionar. Na autenticação NTLM, embora um pouco menos segura funciona perfeito inclusive com o Win7 mesmo sem alterações no registro.

[19] Comentário enviado por troppy em 02/10/2010 - 13:00h

Se tu tiver trazendo os usuários por consulta via winbind ou ntlm tem que ver aonde tu tá jogando esses grupos. tipo digamos que tu quer colocar os grupos

GRUPO DIRETORIA
/etc/squid3/diretoria.txt
PEDRO
CARLOS
PAULO
MATHEUS


GRUPOGALERADETI
/etc/squid3/galerati.txt
KILLER
JONNYDARK
SPPLATERGORE

quando tu utiliza o Kerberos se tu deres um tail -f /var/log/squid3/access.log tu vais ver os acessos via kerberos possui @MEU.DOMINIO.COM aí pra funcionar nos grupos criados além de ter o nome do usuário tu tem que fazer um script com o SED para adicionar @MEU.DOMINIO.COM. por exemplo o grupo diretoria ficaria
/etc/squid3/diretoria.txt
PEDRO
CARLOS
PAULO
MATHEUS
PEDRO@MEU.DOMINIO.COM
CARLOS@MEU.DOMINIO.COM
PAULO@MEU.DOMINIO.COM
MATHEUS@MEU.DOMINIO.COM

Eu não sei se tu tah fazendo consulta na base LDAP via winbind e jogando em grupos no arquivo txt se tiver fazendo isso é só testar adicionar o domínio. tente também deixar tudo maiúsculo.

[20] Comentário enviado por jonathan.giga2 em 16/11/2010 - 13:43h

Boa tarde Troppy,

Gostei muito do seu post....com certeza vc está de Parabéns.

Entretanto eu segui passo a passo ou seu Tuto...e deu tudo certo, contudo na hora de restartar o squid3 deu o seguinte erro:

Restarting Squid HTTP Proxy 3.0: squid32010/11/16 13:39:21| Parsing Config File: Unknown authentication scheme 'negotiate'.
2010/11/16 13:39:21| Parsing Config File: Unknown authentication scheme 'negotiate'.
2010/11/16 13:39:21| Parsing Config File: Unknown authentication scheme 'negotiate'.
2010/11/16 13:39:21| Can't use proxy auth because no authentication schemes are fully configured.
FATAL: ERROR: Invalid ACL: acl auth proxy_auth REQUIRED

Squid Cache (Version 3.0.STABLE8): Terminated abnormally.
CPU Usage: 0.012 seconds = 0.000 user + 0.012 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 0
failed!

Me dá uma ajuda ai...porque eu ja revisei tudo e até agora não vi o erro.

Vou postar aqui o squid.conf

auth_param negotiate program /usr/lib/squid3/squid_kerb_auth -d -s HTTP/cnc.com@CNC.COM
auth_param negotiate children 20
auth_param negotiate keep_alive on

#Segue a configuração BASIC LDAP, basta descomentar as 4 linhas abaixo.
#O usuário fornecido deve ter permissão de consultar a base LDAP.
#auth_param basic program /usr/lib/squid3/squid_ldap_auth -R -b "DC=cnc,DC=com" -D "CN=Proxy-User,OU=Proxy-User,OU=internet,DC=cnc,DC=com" -w "123456" -f sAMAccountName=%s -P -v 3 -h 192.168.0.5

#auth_param basic children 20
#auth_param basic realm Autenticacao internet
#auth_param basic credentialsttl 2 hours

acl auth proxy_auth REQUIRED

acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT

http_access allow auth
http_access deny all

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow localhost

auth_param negotiate program /usr/lib/squid3/squid_kerb_auth -d -s HTTP/cnc.com@CNC.COM
auth_param negotiate children 20
auth_param negotiate keep_alive on

#Segue a configuração BASIC LDAP, basta descomentar as 4 linhas abaixo.
#O usuário fornecido deve ter permissão de consultar a base LDAP.
#auth_param basic program /usr/lib/squid3/squid_ldap_auth -R -b "DC=cnc,DC=com" -D "CN=Proxy-User,OU=Proxy-User,OU=internet,DC=cnc,DC=com" -w "123456" -f sAMAccountName=%s -P -v 3 -h 192.168.0.5

#auth_param basic children 20
#auth_param basic realm Autenticacao internet
#auth_param basic credentialsttl 2 hours

acl auth proxy_auth REQUIRED

acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT

http_access allow auth
http_access deny all

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow localhost

A máquina já está no dominio etc.

[21] Comentário enviado por ulisses.santos em 10/02/2011 - 17:36h

Amigo boa tarde, quando eu rodo o comando DIG ele me retorna isso, que besterira posso estar fazendo?

; <<>> DiG 9.7.0-P1 <<>> -x 192.168.10.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 50203
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;1.10.168.192.in-addr.arpa. IN PTR

;; AUTHORITY SECTION:
168.192.in-addr.arpa. 7691 IN SOA prisoner.iana.org. hostmaster.root-servers.org. 2002040800 1800 900 604800 604800

;; Query time: 1 msec
;; SERVER: 192.168.7.1#53(192.168.7.1)
;; WHEN: Thu Feb 10 17:38:07 2011
;; MSG SIZE rcvd: 120

[22] Comentário enviado por plague70 em 18/04/2011 - 14:38h

como faco se eu tiver visitantes na empressa como eles vão fazer para usar a internet com proxy autenticado se eles não estão no mesmo dominio?????????

[23] Comentário enviado por plague70 em 18/04/2011 - 14:38h

e pra quem esta tendo erro com 2008 para gerar o key tem que ser feito com runas........

[24] Comentário enviado por troppy em 18/04/2011 - 15:04h

Aqui criamos como uma outra OU=
tipo:

usuarios.minhaempresa.com.br "OU=usuarios,DC=minhaempresa,DC=com,DC=br"

visitantes.minhaempresa.com.br "OU=visitantes,DC=minhaempresa,DC=com,DC=br"

o acesso será dado conforme a política de segurança da informação da tua empresa. aqui quando é algum parceiro, instrutor, auditor, visitante, whatever... é colocado na OU Visitante. a pessoa responsável pelo visitante abre um chamado na central de TI e é criada uma conta com uma senha padrão, e repassado para o usuário. criamos um portal em java para o usuário alterar a senha sem ter que entrar no domínio, essa senha não entra no domínio.

por enquanto a classe faz alteração em clear text por conta de uma config de compatibilidade do AD para funcionamento da autenticação de impressão do mainframe, mas resolvemos a parte cliente servidor com ssl, o trafego clear é só entre o srvapl e o AD


Quanto ao 2008 infelizmente eu não posso falar pois não possuo esse cenário para testar, usamos 2003 aqui. Mas se alguém puder dar um feedback para ver se funcionou.

[25] Comentário enviado por hiroshibata em 05/08/2011 - 12:39h

Pessoal,
Quando tento gerar uma keytab no Server AD Windows 2008 Server dá uma mensagem de erro.

c:\Users\Hiro\Desktop>ktpass -princ HTTP/proxy-auth.domain.com.br@DOMAIN.COM.BR
-mapuser squid2 -crypto rc4-hmac-nt -pass ???????????? -ptype KRB5_NT_PRINCIPAL
-out c:\proxy-auth.keytab
Targeting domain controller: SRVAD.domain.com.br
Using legacy password setting method
Failed to set property 'servicePrincipalName' to 'HTTP/proxy-auth.domain.com.br' on
Dn 'CN=Squid2,OU=Admin IT,OU=TI,DC=domain,DC=com,DC=br': 0x32.
WARNING: Unable to set SPN mapping data.
If squid2 already has an SPN mapping installed for HTTP/proxy-auth.domain.com.br, t
his is no cause for concern.
Failed to retrieve user info for squid2: 0x5.
Aborted.

O que isso significa? Alguém já se deparou com esse problema?
Provavelmente esse keytab é que está gerando erro no meu /var/log/squid3/cache.log,
onde diz:

2011/08/05 11:33:37| squid_kerb_auth: DEBUG: Got 'YR TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAARABDdAAAADw==' from squid (length: 59).
2011/08/05 11:33:37| squid_kerb_auth: DEBUG: Decode 'TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAARABDdAAAADw==' (decoded length: 40).
2011/08/05 11:33:37| squid_kerb_auth: WARNING: received type 1 NTLM token
2011/08/05 11:33:37| authenticateNegotiateHandleReply: Error validating user via Negotiate. Error returned 'BH received type 1 NTLM token'


Você podem me ajudar?
Att,
Hiro


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts