Autenticação "transparente" com pfsense + squid + active directory
-
Senhores,
Seguindo um tutorial um pouco antigo sobre squid+ntlm, compilei o kerberos(heimdal) e o samba(3.6.3) para o pfsense e consegui autenticar sem popup de tela de autenticação.
Estou agora adaptando este tutorial do site para o squid3 usando negotiate com kerberos e ldap.
http://wiki.squid-cache.org/ConfigExamples/Authenticate/WindowsActiveDirectory
Os pacotes necessarios no pfsense são:
i386
http://e-sac.siteseguro.ws/packages/8/All/samba36-3.6.3.tbz
http://e-sac.siteseguro.ws/packages/8/All/heimdal-1.4_1.tbzamd64
http://e-sac.siteseguro.ws/packages/amd64/8/All/samba36-3.6.3.tbz
http://e-sac.siteseguro.ws/packages/amd64/8/All/heimdal-1.4_1.tbzAlgo que já percebi é que os keytabs serão gerados no proprio ad e transferidos para o pfsense.
Não gosto de instalar o samba no pfsense por ele ser um firewall, mas existem situações onde o cliente só tem uma maquina para isso.
Se eu conseguir finalizar o procedimento posto aqui.
Se alguem já conseguiu isso no pfsense, pode postar aqui tambem ;)att,
Marcello Coutinho -
Então Marcello, eu não consegui configurar isso no pfSense, minha solução para uma máquina só foi instalar o vmware no host e criar 2 máquinas virtuais, uma com pfSense e outra com o Squid no modo NTLM.
Se conseguir fazer iso com uma máquina só vai agilizar e muito minha vida, então mais do que nunca já me disponho a ajudar como testador ou de outra maneira que você precise, compilando gerando algum script ou etc…
Atenciosamente...
-
fneto,
Com ntlm eu já consegui, estou tentando via negociate e keytab.
Segui este tutorial antigo com o squid do pfsense apenas prestando atenção nas pastas.
/etc/krb5.conf ok
mude /var/kerberos/krb5kdc/kdc.conf para /var/heimdal/kdc.conf
mude /var/kerberos/krb5kdc/kadm5.acl para /var/heimdal/kadm5.acl
mude gpasswd -a proxy winbindd_priv para chgrp proxy /var/run/squid/windindd_priv… -
O arquivo do tutorial não está legal, não consegui abrir nem como TXT nem como PDF, aparece todo zoado!
-
tenta neste link
https://docs.google.com/open?id=1PAhHvC1jtC9lrLpEmr47vpQqBYeB9zW5Zq4bD1gsfrwzbicQIR_ooAGnZN45
-
Então, olá para todos, boa noite.
Bem eu estou a procura exatamente disso, fazer o ntlm funcionar no squid do pfsense. Abri até um tópico para isso.
Lí o arquivo abaixo, mas parece que o ambiente é diferente.
Eu preciso instalar todos esses pacotes, mesmo na distribuição no pfSense ?
Ou basta alterar esses arquivos ?
Seria interessante nos ajudar, já que voce já conseguiu fazer funcionar …
-
Filipe,
Juntando tudo em um único post, fica assim:
Instale os pacotes no seu pfsense através da console/ssh respeitando a plataforma instalada e por garantia, copie algumas libs necessárias para gssapi e kerberos que não estão incluídas no pfsense
i386
pkg_add -r http://e-sac.siteseguro.ws/packages/8/All/samba36-3.6.3.tbz pkg_add -r http://e-sac.siteseguro.ws/packages/8/All/heimdal-1.4_1.tbz cd /usr/local/lib fetch http://e-sac.siteseguro.ws/pfsense/8/All/ldd/libasn1.so.10 fetch http://e-sac.siteseguro.ws/pfsense/8/All/ldd/libgssapi.so.10 fetch http://e-sac.siteseguro.ws/pfsense/8/All/ldd/libheimntlm.so.10 fetch http://e-sac.siteseguro.ws/pfsense/8/All/ldd/libhx509.so.10 fetch http://e-sac.siteseguro.ws/pfsense/8/All/ldd/libkrb5.so.10 fetch http://e-sac.siteseguro.ws/pfsense/8/All/ldd/libroken.so.10
amd64
pkg_add -r http://e-sac.siteseguro.ws/packages/amd64/8/All/samba36-3.6.3.tbz pkg_add -r http://e-sac.siteseguro.ws/packages/amd64/8/All/heimdal-1.4_1.tbz cd /usr/local/lib fetch http://e-sac.siteseguro.ws/pfsense/8/amd64/All/ldd/libasn1.so.10 fetch http://e-sac.siteseguro.ws/pfsense/8/amd64/All/ldd/libgssapi.so.10 fetch http://e-sac.siteseguro.ws/pfsense/8/amd64/All/ldd/libheimntlm.so.10 fetch http://e-sac.siteseguro.ws/pfsense/8/amd64/All/ldd/libhx509.so.10 fetch http://e-sac.siteseguro.ws/pfsense/8/amd64/All/ldd/libkrb5.so.10 fetch http://e-sac.siteseguro.ws/pfsense/8/amd64/All/ldd/libroken.so.10
Siga este tutorial antigo com o squid do pfsense instalado acertando os caminhos de pastas/comandos por conta da divergência entre os sistemas operacionais.
/etc/krb5.conf está ok
mude /var/kerberos/krb5kdc/kdc.conf para /var/heimdal/kdc.conf
mude /var/kerberos/krb5kdc/kadm5.acl para /var/heimdal/kadm5.acl
mude gpasswd -a proxy winbindd_priv para chgrp proxy /var/db/samba/winbindd_privilegedQuando estiver com o pfsense no domínio e conseguindo fazer os testes via kinit/klist e wbinfo -t, acesse:
services -> proxy server -> general settings -> custom options
e cole estas linhas
auth_param ntlm program /usr/local/bin/ntlm_auth --use-cached-creds --helper-protocol=squid-2.5-ntlmssp;auth_param ntlm children 30;auth_param ntlm keep_alive on;acl password proxy_auth REQUIRED;http_access allow password
Agora no cliente, basta marcar o proxy no browser.
NOTA IMPORTANTE PARA WINDOWS 7
No windows 7 são implementadas uma série de novas politicas de segurança , uma delas inclusive barra a autenticação transparente que usamos em nossos proxys. Para resolver este problema siga este pequeno manual que orienta como dever ser feita esta liberação
Antes de mais nada , para rodar este procedimento é necessário que você seja administrador da máquina local.
Execute o Execute o comando "gpedit.msc" e navegue na arvore seguindo esta sequencia:-
Diretiva computador local
-
Configurações do windows
-
Configurações de segurança
-
Diretivas locais
-
Opções de segurança
-
Segurança de rede: nível de autenticação lan manager
-
Marque a opção: enviar lm e ntlm - usar nivel de segurança NTLMv2
att,
Marcello Coutinho -
-
Ok, muito obrigado pela atenção. ;D
Vou fazer os testes já agora, e posto aqui os resultados ….
-
Marcelo, o primeiro arquivo quando fui procurar, não achei …
/etc/krb5.conf está ok
Voce escreveu que está ok, significa que preciso criá-lo ?
Essa parte de atentar para mudança, não entendi muito bem, quer dizer que no tutorial, onde estiver esses nomes, o caminho dos arquivos será diferente por causa da versão, mas o conteudo devemos alterar de acordo com o tutorial ?
O arquivo smb.samba.conf tambem está aparecendo como novo.
-
Marcelo, o primeiro arquivo quando fui procurar, não achei …
/etc/krb5.conf está ok
Voce escreveu que está ok, significa que preciso criá-lo ?
Isso mesmo
Essa parte de atentar para mudança, não entendi muito bem, quer dizer que no tutorial, onde estiver esses nomes, o caminho dos arquivos será diferente por causa da versão, mas o conteudo devemos alterar de acordo com o tutorial ?
certo denovo, onde voce encontrar no doc a referencia para /var/kerberos/krb5kdc/kdc.conf leia e configure como /var/heimdal/kdc.conf
O arquivo smb.samba.conf tambem está aparecendo como novo.
procure o arquivo com este comando
find / -name smb.conf
Não estou perto da maquina agora para conferir o caminho. -
Ok, os que não achei, fui criando segundo seu caminho, os que achei, editei conforme o tutorial. Mas antes de inserir o pf no dominio, o comando kinit está dadno "not found".
Seguem abaixo os conteúdos dos meus arquivos com a minhas configurações tentando seguir o tutorial.
Estou fazendo em um ambiente virtual, antes de por em produção
Ip do meu pdc = 192.168.15.2
nome do meu PDC = pdc001
OS do pdc = W2K8R2 x64
FQDN do dominio = virtual.local
Nome Admin = Administrator
senha admin = 1@abcde/usr/local/etc/smb.conf
[global]
netbios name = pdc001
workgroup = virtual
realm = virtual.local
server string = Domain Proxy Server
encrypt passwords = yes
security = ADS
password server = pdc001.virtual.local
log level = 3
log file = /var/log/samba/%m.log
max log size = 50
socket options = TCP_NODELAY SO_SNDBUF=8192
printcap name = /etc/printcap
preferred master = no
dns proxy = no
ldap ssl = no
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind use default domain = yes
cups options = raw/etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/ksadmind.log
[libdefaults]
default_realm = virtual.local.
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes
default_tgs_enctypes = DES-CBC-CRC DES-CBC-MD5 RC4-HMAC
default_tkt_enctypes = DES-CBC-CRC DES-CBC-MD5 RC4-HMAC
preferred_enctypes = DES-CBC-CRC DES-CBC-MD5 RC4-HMAC
[realms]
virtual.local = {
kdc = pdc001.virtual.local.:88
admin_server = pdc001.virtual.local.:749
default_domain = domain.
}
[domain_realm]
.domain. = virtual.local.
domain. = virtual.local.
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}/var/heimdal/kdc.conf
[kdcdfefaults]
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
v4_mode = noreauth
[libdefaults]
default_realm = virtual.
[realms]
virtual. = {
master_key_type = des-cbc-crc
supported_enctypes = des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
des-cbc-crc:v4 des-cbc-crc:afs3
}/var/heimdal/kadm5.acl
*/administrator@virtual.local * -
Depois que você instalou o heimdal e o samba você fez um logoff em seguida logon para ele atualizar o path dos binários?
-
Depois que você instalou o heimdal e o samba você fez um logoff em seguida logon para ele atualizar o path dos binários?
Ops, não.
Estou reiniciando …
-
Só um logoff na console já resolve, não precisa de boot. ;)
-
Só um logoff na console já resolve, não precisa de boot. ;)
Ok, confesso, não sei como fazer logoff no pfsense, mas já tá reiniciado. Vou tentar o kinit agora …
-
Ok, confesso, não sei como fazer logoff no pfsense, mas já tá reiniciado. Vou tentar o kinit agora …
Sem problema :). Para fazer o logoff basta digitar exit
-
agora recebo o seguinte erro:
kinit: krb5_get_init_creds: unable to reach any KDC in realm virtual.local
teria alguma coisa a ver com colocar o ip no arquivo hosts para ele achar ?
editado
coloquei o seguinte conteudo no meu /etc/hosts
127.0.0.1 localhost localhost.localdomain
192.168.15.101 pfsense.localdomain pfsense
192.168.15.2 pdc001.virtual.local pdc001mas mesmo assim, o erro permanece …
-
Tentei ignorar esse passo, e dar o join
net ads join -U Administrator@virtual.local
retorna a seguinte mensagemkinit succeeded but ads_sasl_spnego_krb5_bind failed: Invalid credentials
Failed to join domain: failed to connect do AD: Invalid credentials -
Não vejo a hora de arrumar tempo pra testar o ambiente!
-
Não vejo a hora de arrumar tempo pra testar o ambiente!
Estou tentando com pf 2.0.1 e Windows 2008 Server R2 …
marcelloc, o seu ambiente era esse mesmo ?
-
Como devo substituir essa linha do tutorial ?
password server = ad-master.domain.com.au
eu fiz assim, mas fiquei na dúvida
password server = pdc001.virtual.local
-
filipe.nanclarez,
Marque o dns do firewall com o ip do ad, o samba/kerberos precisam saber quem são os hosts do seu domínio.
-
filipe.nanclarez,
Marque o dns do firewall com o ip do ad, o samba/kerberos precisam saber quem são os hosts do seu domínio.
sim sim, eu já tinha feito, inclusive testei na tela "diagnostics>ping" com o nome e como ip pra saber se estava ok …
alterei algumas coisas nos arquivos que acredito que estavam erradas (eu não interpretei direito) agora está dando "Password incorrect" tem alguma coisa a ver com ser 2008 server ? Nesse site, diz que precisa ser outra config pra o 2008 server ....
http://wiki.squid-cache.org/ConfigExamples/Authenticate/WindowsActiveDirectory
-
Você pode seguir o tutorial ntlm mais atual do site do squid sem problemas. Toma cuidado só com a questão da localização das pastas.
-
Você pode seguir o tutorial ntlm mais atual do site do squid sem problemas. Toma cuidado só com a questão da localização das pastas.
então, usei ele só para verificar como deveria fazer as substituições dos valores, mas estou seguindo o seu pra não bagunçar aqui.
estou recebendo o primeiro erro novamente (depois de arrumar o dns, e acertar o ntp):
kinit: krb5_get_init_creds: unable to reach any KDC in realm virtual.local
no join, retorna:
Failed to join domain: failed to connect to AD: Operations error
tentei olhar nos não estou achando os arquivos dos logs pra verificar … ???
-
pessoal, alguma luz ?
marcelloc, quando voce conseguiu foi no windows 2003 ?
-
Toda vez que arrumo o dns, ele dá outro erro, dá password incorrect.
Já mudei a senha, mas continua dando isso.
Há algum log onde eu possa identificar o que está acontecendo ?
-
tentei olhar nos não estou achando os arquivos dos logs pra verificar … ???
da uma olhada nos logs do samba /var/log/samba/
olha tambem nos logs no windows para ver se aparece alguma coisa
marcelloc, quando voce conseguiu foi no windows 2003 ?
Sim, foi no 2003
-
tentei olhar nos não estou achando os arquivos dos logs pra verificar … ???
da uma olhada nos logs do samba /var/log/samba/
a pasta esta vazia …
-
marcelloc, tem um arquivo que eu não estou vendo
é o /var/kerberos/krb5kdc/kadm5.keytab
eu mudei a pasta de acordo com o caminho para
/var/heimdal/kadm5.keytab
ele não está gerando … algo a mais que preciso fazer ?
-
O keytab é gerado no ad. ainda não vi nenhum port do mskutil para o freebsd.
-
marcelloc, vou instalar um 2003 para podermos isolar as variaveis
em qual versão do pf voce fez ? e a versão do squid ?
-
Senhores Boa Noite!
Primeiramente obrigado marcelloc pelo caminho das pedras :).
Durante o dia realizei alguns testes seguindo a orientação do macelloc e consegui uns tropeços e acertos, agora vim informar que obtive êxito na configuração com autenticação transparente sem o pop-up.
Cenário:
Controlador de dominio usado para autenticar: Windows Server 2008 R2.
Clientes testados: Windows XP e 7
Versão do squid utilizado: Squid Cache: Version 2.7.STABLE9Problemas encontrados:
Ao reiniciar o servidor pfsense e tentar navegar novamente… a janela de autenticação era apresentada... logo fui ver se o serviço do samba (winbindd) estava e iniciado, mas o mesmo estava parado.
Tentei iniciar e o serviço não subia:
[2.0.1-RELEASE][root@trinity.domain.local]/: /usr/local/etc/rc.d/samba onestart
Removing stale Samba tdb files: . done
Starting winbindd.
[2.0.1-RELEASE][root@trinity.domain.local]/: /usr/local/etc/rc.d/samba onestatus
winbindd is not running.Fui ver o log do samba e encontro:
lib/pidfile.c:130(pidfile_create ERROR: can't open /var/run/samba/winbindd.pid: Error was No such file or directory
Ou seja… quando o pfsense reiniciou o diretorio /var/run/samba tinha sumido!... só foi cria-lo novamente na mão e o serviço voltou a funcionar juntamente com à autenticação transparente.
Agora vem as dúvidas:
- Como fazer para que o serviço seja iniciado automaticamente? (criei e editei o arquivo /etc/rc.conf mas ele some depois que inicia o servidor).
- Depois que o servidor inicia é necessário utilizar novamente o comando kinit?
- Quando instalei o samba ele gerou um erro informando que havia um conflito de pacote que existia, porém se eu removesse ele implicava dizendo que o squid depende dele... o que fiz foi forçar a instalação e ele pulou essa etapa.
-
Peraí pessoal, não é possível. Todo mundo tá fazendo isso dar certo.
Estou a três dias nisso. Não é possível que eu sou tão leigo assim.
doug, como voce fez isso funcionar. Segui o tutorial, e ainda não achei a parte onde precisa instalar o winbind. Na realidade, tentei dar um start no serviço do samba e não rolou, sem falar nos logs que até agora não aparecem.
Fiz passo a passo, e quando tento usar o kinit, ele dá password invalid ….
Já fiz, e refiz, e formatei várias vezes.
Tem algo que eu não sei ? algum comando que está sendo dado, por se muito óbvio e eu não estou fazendo ?
Por gentileza, meu ambiente é o mesmo que o seu, me ajude a fazer funcionar, pelo menos uma vez ...
-
marcelloc, vou instalar um 2003 para podermos isolar as variaveis
Em qual versão do pf voce fez ? e a versão do squid ?
pfsense 2.0.1 64 bits
squid 2.x da instalação dos pacotes -
- Como fazer para que o serviço seja iniciado automaticamente? (criei e editei o arquivo /etc/rc.conf mas ele some depois que inicia o servidor).
Edite o arquivo /usr/local/etc/rc.d/samba e mude tudo o que estiver com NO para YES
- Depois que o servidor inicia é necessário utilizar novamente o comando kinit?
Acredito que não. Já vi minha chave vencer e o serviço continuou no ar. Porém é melhor testar
- Quando instalei o samba ele gerou um erro informando que havia um conflito de pacote que existia, porém se eu removesse ele implicava dizendo que o squid depende dele… o que fiz foi forçar a instalação e ele pulou essa etapa.
pkg_add -r é utilizado com uma certa freqüência nas instalações de pacotes no pfsense.
Parabéns pelo setup. ;)
-
Segui o tutorial, e ainda não achei a parte onde precisa instalar o winbind. Na realidade, tentei dar um start no serviço do samba e não rolou, sem falar nos logs que até agora não aparecem.
Altere o script de inicialização como descrito acima.
O winbind é um dos binarios instalados pelo pacote do sambaFiz passo a passo, e quando tento usar o kinit, ele dá password invalid ….
Já tentou uma senha sem caracteres especiais ou a prova de configuração de teclados?
Já fiz, e refiz, e formatei várias vezes.
Tem algo que eu não sei ? algum comando que está sendo dado, por se muito óbvio e eu não estou fazendo ?
Por gentileza, meu ambiente é o mesmo que o seu, me ajude a fazer funcionar, pelo menos uma vez …Continue tentando, não desista! Tenho certeza que o problema vai estar em algum detalhe deixado para trás. :)
-
puxa gente … que sofrimento ...
venho compartilhar com vocês como fiz para conseguir fazer o kinit funcionar ...
lendo um artigo a respeito em http://www.vivaolinux.com.br/artigo/Linux-e-Active-Directory-(Integrando-COMPLETAMENTE-sua-estacao-Linux-a-um-dominio-MS-Windows-2000-2003-Server)?pagina=5
vi a seguinte frase ...
IMPORTANTE: Observe que o realm foi especificado com caracteres em maiúsculo. Este é um requisito do krb5. Caso você se esqueça e coloque em minúsculo ocorrerá um erro (que será visto mais adiante).
dificil de acreditar, mas era exatamente isso que estava dando problema ….
agora vou continuar com os testes ....
obrigado a todos ...
-
Bom, estava nos pequenos detalhes. :)
Se você voltar no tutorial, vai ver que o realm está em maiúsculo.
Segunda dica, o universo unix/linux é praticamente 100% case sensitive, ou seja, caracteres minúsculos são diferentes de caracteres maiúsculos.
-
é, não tenho como negar que eu já sabia do case sensitive, só não tive essa percepção por estar acostumado com windows.
agora, só estou estranhando o seguite, quando dou o net ads join, e digito a senha, ele fica sem fazer nada, não dá msg, não volta para o prompt, fica lá …
demora tudo isso mesmo ? já cancelei tentei denovo, esperei mais de 20min ... e nada ....