Pfsense + Squid + NTLM (Autenticação AD transparente)
-
Alguma previsão para a versão 2.4.4 ?
-
@julianoxt tem sim... até a versão 2.4.3 segue o link com o passo a passo.
https://pf2ad.mundounix.com.br/pt/index.html -
com a atualização parou de funcionar o squid e tive que reinstalar, porém sem autenticação transparente. Nem instalando a versão 2.4.3 não rola a instalação do squid.
To preso na 2.4.4 sem autenticação no samba4 (NTLM)
existe alguma outra ofrma de por pra funcionar com NTLM (autenticação transparente)? -
Não seria melhor utilizar autenticação SSO por Kerberos? Já que não precisa utilizar nenhum pacote extra?
SETSPN:
Criar usuário svc_quid no AD
C:\WINDOWS\system32>setspn -S HTTP/pfsense.local.lan svc_squid
Verificando o domínio DC=local,DC=lanDepois, através do samba-tools, ou através diretamente do AD, através do ktpass
sudo samba-tool domain exportkeytab mykeytab.keytab --principal=HTTP/pfsense.local.lan
Squid:
acl whitelist dstdomain .local.lan
auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -k /usr/local/etc/squid/mykeytab.keytab
auth_param negotiate children 100
auth_param negotiate keep_alive on
http_access allow whitelist
acl auth proxy_auth REQUIRED
http_access deny !auth
http_access allow authSquidguard
ldapusersearch ldap://raspsrv.local.lan:3268/dc=local,dc=lan?userPrincipalName?sub?(&(memberof=CN=internet_group%2cCN=Users%2cDC=local%2cDC=lan)(userPrincipalName=%s))
Depois de configurado, loguem novamente no AD, e chamem o proxy pelo nome, ele deve associar ao ticket kerberos.
Digitem klist no CMD do DOS para ver se ele foi adicionado corretamente.Maiores detalhes:
https://journeyofthegeek.com/2017/12/30/pfsense-squid-kerberos/
-
@mcury
Meu DC é samba4 vou pesquisar se encontro um guia pra ele, vlw pela dica -
Olá Fabio,
Esse tutorial que pus ali em cima, funciona para samba 4.
Funciona em AD de servidor Windows tambem. -
quando vou criar o keytab me retorna esse erro:
ktpass : O termo 'ktpass' não é reconhecido como nome de cmdlet, função, arquivo de script ou programa
operável. Verifique a grafia do nome ou, se um caminho tiver sido incluído, veja se o caminho está
correto e tente novamente.
No linha:1 caractere:1- ktpass -out c:\pfsense.keytab -princ HTTP/pfsense.dominio.lan@DOMINIO ...
Estou tentando pelo CMD no windows (membro do dominio)
-
O seu comando ktpass está igualzinho lá no link que eu passei?
https://journeyofthegeek.com/2017/12/30/pfsense-squid-kerberos/Caso queira dar uma aprofundada no ktpass:
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/ktpassCaso não funcione pelo ktpass, voce pode extrair a chave utilizando o samba-tools:
Abaixo segue o comando que eu usei no meu domínio:sudo samba-tool domain exportkeytab mykeytab.keytab --principal=HTTP/pfsense.local.lan
Quando fiz esse comando, o meu samba 4 era o domain controller
Depois copiei a chave para a pasta do pfsense /usr/local/etc/squid/mykeytab.keytab -
@mcury
Obrigado pelas dicas.
Eu fiz pelo samba-tools, mas agora o navegador fica solicitando login infinitamente.
não importa o que eu use ele fica solicitando e não deixa navegar.usei: samba-tool domain exportkeytab pfsense.keytab --principal=HTTP/pfsense.dominio.lan
qual seria o comando pra gerar o spn no samba-tools? vou tentar fazendo tudo por ele.
squid ficou assim:
auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -d -k /usr/local/etc/squid/pfsense.keytab
auth_param negotiate children 1000
auth_param negotiate keep_alive on
acl auth proxy_auth REQUIRED
http_access deny !auth
http_access allow authps.: o PC pfsense precisa estar adicionado ao dominio?
antes com o pf2ad ele adicionava e agora q não tem não está adicionado. -
Olá Fabio, o pfsense não precisa estar no domínio.
O que aparece nos logs do Squid/Squidguard durante os acessos?O comando que eu utilizei foi exatamente esse:
sudo samba-tool domain exportkeytab mykeytab.keytab --principal=HTTP/pfsense.local.lan
Você configurou o krb5.conf no /etc/ do samba server?
Ele também precisa ser configurado conforme no link que te mandei.Eu infelizmente agora não estou em casa, mas assim que chegar copio o meu krb5.conf aqui pra ajudar.
Teste inicialmente um usuário com uma senha simples (sem caracteres especiais), e se possível, que seja membro de um grupo de AD onde o caminho da arvore não tenha espaços ou caracteres especiais.
Isso me atrapalhou bastante no inicio.
Até breve
-
Segue:
Estou utilizando o mesmo domínio do exemplo acima.
O que está em maiúsculo precisa ficar em maiúsculo, exatamente como está aí embaixo, ok?pi@raspsrv:~ $ cat /etc/krb5.conf
[libdefaults]
default_realm = LOCAL.LAN
dns_lookup_realm = false
dns_lookup_kdc = true
[realms]
LOCAL.LAN = {
kdc = raspsrv.local.lan
admin_server = raspsrv.local.lan
default_domain = local.lan
}
[domain_realm]
.local.lan = LOCAL.LAN
local.lan = LOCAL.LAN -
@mcury
Bom dia amigo.o usuário do pFsense é pfsense e a senha é somente com números e fica no Users do AD.
qual seria o comando que indica o usuário como SPN para que depois se exporte a keytab? o correspondente ao comando do windows "setspn".
no log do meu squid:
Date IP Status Address User Destination
24.10.2018 08:29:59 10.0.2.106 TCP_DENIED/407 clients4.google.com:443 - -Date-Time Message
31.12.1969 21:00:00 negotiate_kerberos_auth: WARNING: received type 1 NTLM token
31.12.1969 21:00:00 negotiate_kerberos_auth: DEBUG: Decode 'TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAKAO5CAAAADw==' (decoded length: 40).Krb5.conf (PFSENSE)
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log[libdefaults]
default_realm = DOMINIO.LAN
dns_lookup_realm = false
dns_lookup_kdc = true
ticket_lifetime = 48h
forwardable = yes
; for Windows 2008 with AES
default_tgs_enctypes = aes128-cts-hmac-sha1-96 aes256-cts-hmac-s
ha1-96 rc4-hmac des-cbc-crc des-cbc-md5
default_tkt_enctypes = aes128-cts-hmac-sha1-96 aes256-cts-hmac-s
ha1-96 rc4-hmac des-cbc-crc des-cbc-md5
permitted_enctypes = aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha
1-96 rc4-hmac des-cbc-crc des-cbc-md5[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}[realms]
DOMINIO.LAN = {
kdc = ad-dc.dominio.lan
admin_server = ad-dc.dominio.lan
default_domain - dominio.lan}
[domain_realm]
.dominio.lan = DOMINIO.LAN
dominio.lan = DOMINIO.LANKrb5.conf (AD)
[libdefaults]
default_realm = DOMINIO.LAN
dns_lookup_realm = false
dns_lookup_kdc = true[realms]
DOMINIO.LAN = {
kdc = ad-dc.dominio.lan}
[domain_realm]
.dominio.lan = DOMINIO.LAN
dominio.lan = DOMINIO.LAN -
Infelizmente o setspn só pode ser feito no Windows, com o pacote RSAT.
Já o ktpass pode ser usado tanto no samba como no Windows Server.Primeiro ponto:
O pfsense está com domain override no DNS para o seu dominio, e apontando pro DNS do AD?
Ou o pfsense está configurado para utilizar apenas o DNS do AD?Tudo que for relacionado ao seu AD, inclusive as atividades do Kerberos, precisam resolver corretamente, portanto precisa de uma dessas configurações.
Segundo ponto:
O /etc/krb5.conf do PFSENSE precisa estar da forma abaixo, observe que removi alguns parâmetros de criptografia para facilitar (dessa forma funciona), pois existem diferenças entre o MIT e o Heimdal, que não vem ao caso agora.
[2.4.4-RELEASE][root@pfsense.local.lan]/root: cat /etc/krb5.conf
[libdefaults]
default_realm = LOCAL.LAN
dns_lookup_realm = false
dns_lookup_kdc = true[realms]
LOCAL.LAN = {
kdc = raspsrv.local.lan
}[domain_realm]
.local.lan = LOCAL.LAN
local.lan = LOCAL.LAN[logging]
kdc = FILE:/var/log/kdc.log
Default = FILE:/var/log/krb5lib.logA configuração do smb.conf localizado no AD, eu já postei anteriormente.
Após ter feito essas configurações, você já pode testar com o kinit svc_squid ou pfsense como você criou diretamente do PFSENSE.
Caso funcione, você conseguirá listar o ticket com o comando klist em seguida.
Depois desse passo, você segue com as configurações que já citei acima ok?
-
This post is deleted! -
Consegui, muito obrigado.
no navegador estava o IP do proxy e ao mudar pro nome funcionou.
NS Lookup funcionando e reconhecendo normalmente quando informo o nome do PC, não entendi pq não encontrou com o IP e somente com o nome.Agora vou pra 2a etapa que é com o sarg. Vou seguir as suas orientações. Obrigado
-
De nada Fabio, é um prazer ajudar.
Agora, SSO sem precisar alterar os pacotes originais do Pfsense.Saiu atualização, voce atualiza, sem se preocupar com samba.
Abraços.
-
@mcury
agora pode atualizar sem preocupação, bem melhor.Mas o Squidguard não tá bloqueando reconhece o usuário, mas não faz o bloqueio.
segue as configs dele:
com ip ou nome não bloqueia.
usuário abaixo era pra ser bloqueado o acesso no grupo Internet_L0:
-
Desmarca as opções de STRIP NT domain e STRIP Kerberos Kealm e tenta de novo.
Caso não funcione, checa o ldapusersearch para ver se está de acordo, o que eu colei aqui, funcionou perfeitamente para o meu AD em samba 4.
ldapusersearch ldap://raspsrv.local.lan:3268/dc=local,dc=lan?userPrincipalName?sub?(&(memberof=CN=internet_group%2cCN=Users%2cDC=local%2cDC=lan)(userPrincipalName=%s))
Você pode estar testando a porta 389 também.
Você desativou a autenticação do Squid, certo?
A configuração é praticamente toda no Squidguard -
nada amigo, quebrando cabeça aqui.
fiz o que me orientou, mas não bloqueia por grupo.
se o problema fosse no ticket ele também não mostraria o usuário no log do squid né?
no log squidguard ele nem mostra nada, somente no cache.
-
Exato, o mais difícil você já fez, que é o ticket e a autenticação no proxy.
O problema agora é simplesmente a sintaxe do ldapusersearch.O meu funcionou daquela maneira, já testou outras sintaxes?