Pfsense + Squid + NTLM (Autenticação AD transparente)
-
Também estou com o mesmo problema….
Segui esse tutorial (http://www.dev2infra.com/pfsense-squid-squidguard-autenticacao-transparente/) em varias instalações de Pfsense 2.1.5 amd64 sem problemas. Estão todos funcionando normalmente.
Porem estou querendo usar o Pfsense 2.2.1 e seguindo o mesmo tutorial apresenta o mesmo erro:
"Fatal error: Call-time pass-by-reference has been removed; If you would like to pass argument by reference, modify the declaration of validate_form_samba3(). in /usr/local/www/pkg_edit.php(147) : eval()'d code on line 1"
Pesquisei um pouco sobre o erro e encontrei varias pessoas dizendo ser sobre a atualização do PHP.
Não tenho muito conhecimento sobre PHP então não consigo ajudar muito.Com os problemas listados pelo LFCavalcanti acredito que a atualização desse pacote não é uma coisa muito fácil e provavelmente vai demorar um pouco.
Estou com um ambiente de teste com Pfsense 2.2.1 + Squid3 + Squidguard rodando normalmente, falta só a integração com AD.
Com as ferramentas de hoje, como podemos criar um ambiente com Pfsense 2.2 + Squid + Squidguard + Autenticação AD que seja o mais transparente possível para o usuário final??
Alguém já usa um ambiente desse com Pfsense 2.2??
-
Boa Tarde, alguém sabe onde os patch estão, dev2infra ta fora.
-
Não se ajuda, mas em todo caso:
https://github.com/pszafer/SambaForFreeradiusPFSENSE -
Obrigado, mais preciso do que tinha o dv2infra, já tinha implantando num servidor de teste e tinha funcionado, mais sai de ferias e conseguiram deletar minha VM de teste, agora preciso implementar mais não tenho onde baixar mais.
-
Quando uso o comando net ads join -U administrador dá a mensagem de erro. net: Command found o que faço para corrigir.
Obrigado. -
Quando uso o comando net ads join -U administrador dá a mensagem de erro. net: Command found o que faço para corrigir.
Obrigado.Provavelmente o teu samba nao veio com o ads compilado (aconteceu comigo). Veja nos logs se e isso mesmo.
-
ja tem o pacote pronto para 2.4.2 ou 2.3.5?
-
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?