Autenticação "transparente" com pfsense + squid + active directory
-
Mas não sei como fazer (aqui no fórum) ….
O que preciso ? Já tenho ele pronto porque estava preparando um tutorial para o meu funcionário fazer lá na empresa ...filipe.nanclarez, basta acessar no Blog da Comunidade Brasileira do pfSense (http://www.pfsense-br.org/blog/), se registrar (criar uma conta) e postar o tutorial por lá… Você pode usar links, imagens e tudo que julgar necessário para ilustrar o tutorial.
Assim que tiver publicado por lá, basta avisar por aqui que o marcelloc insere uma chamada ao seu tutorial nos links fixos que ficam aqui em cima (área "sticky" do fórum).
Abraços!
JackOk, obrigado. Assim que eu terminar aviso aqui.
-
Galera alguem poderia post um tutorial, porque tentei fazer do geito que sta no topico mais nao conseguir
-
Galera alguem poderia post um tutorial, porque tentei fazer do geito que sta no topico mais nao conseguir
Estou fazendo, assim que terminar eu aviso aqui …
Qual erro que deu no seu setup ?
-
Filipe, Bom dia.
Cara, estou apannhando feio aqui para implementar esse cenário, dê um help por favor.
Instalei os pacotes conforme dicas do Marcello, porém quando instalo o samba via pkg_add ele não instala o suporte a ADS, como você fez para instala-lo?
mesmo sem o suporte ao ADS, quando teste via kinit mesmo tendo certeza que coloco a senha correta ele retorna kinit: password incorrect
dê uma luz por favor, nobre mortal que já passou por isso!!!
-
Olá pessoal estou com problema, nao estou conseguindo achar o arquivos de configuração do heimdal mesmo reiniciando ou fazendo logout.
Alguem sabe porque acontece, e qual a solução? -
cristianonix,
Bem vindo ao fórum! :)
Você instalou o pacote seguiu o procedimento?
att,
Marcello Coutinho -
Obrigado , estou feliz em entrar no fórum pfsense, espero ajudar muito e ser ajudado.
Gostaria de agradecer pelo seu excelente trabalho Marcello Coutinho, pelo que voce fez no dansguardian.Muito Fera.Uso pfsense 2.0.1 64bits.
Instalei o seguintes pacotes, e instalei as bibliotecas do do procedimento.
amd64
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.tbzReiniciei e fiz logout, mesmo assim não funcionou
Não acho os arquivos de confs do kerberos, só achei o do samba.
Preciso disso para autenticar no dominio, via ntlm. -
Não acho os arquivos de confs do kerberos, só achei o do samba.
Se me recordo bem do tutorial, alguns arquivos são criados na mão.
leia o post de novo com mais atenção ainda.
O procedimento não é trivial mas também não é impossivel :) -
Ok, vou ler novamente.
-
Bom refiz todo o processo, criei os arquivos olha ai, mas deu problema, nao mostra os usuários e grupos utilizando wbinfo -u e grupos, wbinfo -g, mas wbinfo -t e wbinfo -p funciona. Já consegui adicionar o servidor no AD, pois aparece meu netbios name no computers do Ad, só que nao listo usuário no meu servidor linux. SAbe oque pode ser?
cat /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 = FREESOLUTIONS.INFO 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] FREESOLUTIONS.INFO = { kdc = 192.168.100.181:88 admin_server = 192.168.100.181:749 default_domain = domain. } [domain_realm] .domain. = FREESOLUTIONS.INFO domain. = FREESOLUTIONS.INFO [kdc] profile = /var/heimdal/kdc.conf [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false }
cat /usr/local/etc/smb.conf
[global]
netbios name = FREEBSD
workgroup = FREESOLUTIONS
realm = FREESOLUTIONS.INFO
server string = Domain Proxy Server
encrypt passwords = yes
security = ADSwins server = 192.168.100.181
password server = 192.168.100.181
password server = FREESOLUTIONS.INFO
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
hosts allow = 192.168–------------
cat /var/heimdal/kadm5.acl
*/administrador@FREESOLUTIONS.INFO *
–-----
cat /var/heimdal/kdc.conf
[kdcdfefaults]
acl_file = /var/heimdal/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/heimdal/kadm5.keytab
v4_mode = noreauth
[libdefaults]
default_realm = FREESOLUTIONS.
[realms]
FREESOLUTIONS. = {
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
} -
Onde você quer listar estes usuarios?
Se a maquina já esta no ad, coloque as regras do squid,squidguard/dansguardian e pronto.
att,
Marcello Coutinho -
quando digito wbinfo -u
não aparece nada no pfsense.
-
você já colocou as configurações de autenticação no squid?
O que aparece no access.log?
-
Caros,
Consegui inserir o Firewall no domínio, iniciar o samba, sem erros, e configurar o seu serviço para reconhecer o winbind, que também é iniciado
Porém estou parado justamente no winbindAbaixo seguem meus arquivos de configuração
SAMBA
[global] netbios name = FIREWALL workgroup = DEVPARTNER realm = DEVPARTNER.LOCAL server string = Domain Proxy Server encrypt passwords = yes security = ADS password server = server01.devpartner.local log level = 3 log file = /var/log/samba/%m.log max log size = 50 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 printcap name = /etc/printcap preferred master = No dns proxy = No ldap ssl = no idmap uid = 10000-20000 idmap gid = 10000-20000 idmap backend = idmap_rid:DEVPARTNER=10000-20000 winbind use default domain = yes winbind separator = / winbind enum users = yes winbind enum groups = yes cups options = raw
krb5
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/ksadmind.log [libdefaults] default_realm = DEVPARTNER.LOCAL dns_lookup_kdc = true dns_lookup_realm = true ticket_lifetime = 24h forwardable = yes ; 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 2008 with AES default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc- md5 default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc- md5 permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md 5 [realms] DEVPARTNER.LOCAL = { kdc = 192.168.0.10:88 admin_server = server01.devpartner.local.:749 default_domain = devpartner. } [domain_realm] .devpartner.local = DEVPARTNER.LOCAL devpartner.local = DEVPARTNER.LOCAL [kdc] profile = /var/heimdal/kdc.conf [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false }
kdc
[kdcdefaults] acl_file = /var/heimdal/kadm5.acl dict_file = /usr/share/dict/words admin_keytab = /var/heimdal/kadm5.keytab v4_mode = noreauth [libdefaults] default_realm = DEVPARTNER. [realms] DEVPARTNER. = { master_key_type = des-cbc-crc supported_enctypes = des3-hmac-sha1:normal arcfour-hmac:normal d es-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal des-cbc-crc:v4 des-cbc-crc:afs3
kadm.acl
*/administrator@DEVPARTNER.LOCAL *
serviço do samba
#!/bin/sh # # $FreeBSD: ports/net/samba36/files/samba.in,v 1.2 2012/01/14 08:56:26 dougb Exp $ # # PROVIDE: nmbd smbd # PROVIDE: winbindd # REQUIRE: NETWORKING SERVERS DAEMON ldconfig resolv # BEFORE: LOGIN # KEYWORD: shutdown # # Add the following lines to /etc/rc.conf.local or /etc/rc.conf # to enable this service: # samba_enable="YES" # or, for fine grain control: nmbd_enable="YES" smbd_enable="YES" # You need to enable winbindd separately, by adding: winbindd_enable="YES" # # Configuration file can be set with: samba_config="/usr/local/etc/smb.conf" # . /etc/rc.subr name="samba" rcvar=samba_enable # Defaults samba_enable=${samba_enable:=NO} samba_config_default="/usr/local/etc/smb.conf" samba_config=${samba_config="${samba_config_default}"} command_args=${samba_config:+-s "${samba_config}"} # Fetch parameters from configuration file testparm_command="/usr/local/bin/testparm" smbcontrol_command="/usr/local/bin/smbcontrol" samba_parm="${testparm_command} -s -v --parameter-name" samba_idmap=$(${samba_parm} 'idmap uid' "${samba_config}" 2>/dev/null) samba_lockdir=$(${samba_parm} 'lock directory' "${samba_config}" 2>/dev/null) # Load configuration load_rc_config "${name}" # Setup dependent variables if [ -n "${rcvar}" ] && checkyesno "${rcvar}"; then nmbd_enable=${nmbd_enable=YES} smbd_enable=${smbd_enable=YES} # Check that winbindd is actually configured if [ -n "${samba_idmap}" ]; then winbindd_enable=${winbindd_enable=YES} fi fi # XXX: Hack to enable check of the dependent variables eval real_${rcvar}="\${${rcvar}:=NO}" ${rcvar}=YES # nmbd rcvar=nmbd_enable nmbd_enable=${nmbd_enable:=NO} nmbd_flags=${nmbd_flags="-D"} # smbd rcvar=smbd_enable smbd_enable=${smbd_enable:=NO} smbd_flags=${smbd_flags="-D"} # winbindd rcvar=winbindd_enable winbindd_enable=${winbindd_enable:=NO} winbindd_flags=${winbindd_flags=''} # Custom commands extra_commands="reload status" start_precmd="samba_start_precmd" start_cmd="samba_cmd" stop_cmd="samba_cmd" status_cmd="samba_cmd" restart_precmd="samba_checkconfig" reload_precmd="samba_checkconfig" reload_cmd="samba_reload_cmd" rcvar_cmd="samba_rcvar_cmd" # samba_daemons="nmbd smbd" samba_daemons="${samba_daemons} winbindd" # Requirements required_files="${samba_config}" required_dirs="${samba_lockdir}" samba_checkconfig() { echo -n "Performing sanity check on Samba configuration: " if ${testparm_command} -s ${samba_config:+"${samba_config}"} >/dev/null 2>&1; then echo "OK" else echo "FAILED" return 1 fi return 0 } samba_start_precmd() { # XXX: Never delete winbindd_idmap, winbindd_cache and group_mapping if [ -n "${samba_lockdir}" -a -d "${samba_lockdir}" ]; then echo -n "Removing stale Samba tdb files: " for file in brlock.tdb browse.dat connections.tdb gencache.tdb \ locking.tdb messages.tdb namelist.debug sessionid.tdb \ unexpected.tdb do rm "${samba_lockdir}/${file}" /dev/null && echo -n '.' done echo " done" fi } samba_rcvar_cmd() { local rcvar rcvar=${name}_enable eval ${rcvar}=\${real_${rcvar}} # Prevent recursive calling unset "${rc_arg}_cmd" "${rc_arg}_precmd" "${rc_arg}_postcmd" # Check master variable run_rc_command "${_rc_prefix}${rc_arg}" ${rc_extra_args} } samba_reload_cmd() { local name rcvar command pidfile # Prevent recursive calling unset "${rc_arg}_cmd" "${rc_arg}_precmd" "${rc_arg}_postcmd" # Apply to all daemons for name in ${samba_daemons}; do rcvar=${name}_enable command="/usr/local/sbin/${name}" pidfile="/var/run/samba/${name}${pid_extra}.pid" # Daemon should be enabled and running if [ -n "${rcvar}" ] && checkyesno "${rcvar}"; then if [ -n "$(check_pidfile "${pidfile}" "${command}")" ]; then debug "reloading ${name} configuration" echo "Reloading ${name}." # XXX: Hack with pid_extra ${smbcontrol_command} "${name}${pid_extra}" 'reload-config' ${command_args} >/dev/null 2>&1 fi fi done } samba_cmd() { local name rcvar rcvars v command pidfile samba_daemons result # Prevent recursive calling unset "${rc_arg}_cmd" "${rc_arg}_precmd" "${rc_arg}_postcmd" # Stop processes in the reverse order if [ "${rc_arg}" = "stop" ] ; then samba_daemons=$(reverse_list ${samba_daemons}) fi # Assume success result=0 # Apply to all daemons for name in ${samba_daemons}; do rcvar=${name}_enable # XXX rcvars=''; v='' command="/usr/local/sbin/${name}" pidfile="/var/run/samba/${name}${pid_extra}.pid" # Daemon should be enabled and running if [ -n "${rcvar}" ] && checkyesno "${rcvar}"; then run_rc_command "${_rc_prefix}${rc_arg}" ${rc_extra_args} # If any of the of the commands failed, take it as a total result result=$((${result} || $?)) fi done return ${result} } run_rc_command "$1"
Ao testar o wbinfo -u -t -g ele apresenta o erro que o domínio winbind não foi encontrado.
Além disso a autenticação com o AD não está funcional.
Outra dúvida, gostaria de integrar essa autenticação com permissões de grupos do AD. Vi no blog pauloxmachado que isso era possível, mas não sem a janela de autenticação do popup. -
ubezerra,
Bem vindo ao fórum! :)
Ao testar o wbinfo -u -t -g ele apresenta o erro que o domínio winbind não foi encontrado.
No arquivo de inicialização do samba, troque todos os NO por YES e tente denovo.
O winbind provavelmente não está subindoatt,
Marcello Coutinho -
Caros,
Me basta agora montar um documento mostrando os passos para o meu sucesso. Agradeço as informações de todos nesse post.
Minha solução foi checar o serviço do samba em /usr/local/etc/rc.d/samba para iniciar todos os serviços. Porém sem prestar atenção ao SMB.conf personalizado, o winbind não inicia. Precisei efetuar a alteração de dns no krb5.conf para que ele efetuasse a busca pelo dns na seção de kdc.Em minha solução adotei
VM com Windows 2008 R2 e AD 2008 R2
VM pfsense 2.0.1
Squidguard 1.4 e squid 2.7.9Vou agora realizar os testes com a versão estável, sem vários pacotes instalados no meio do caminho.
Estou com uma dúvida justamente nesse squid, queria por o 3, mas com o squidguard. é possível, desde que com a gui de configuração?
-
Estou com uma dúvida justamente nesse squid, queria por o 3, mas com o squidguard. é possível, desde que com a gui de configuração?
Sim, basta instalar o squid3 por último.
-
marcelloc boa tarde.
Tenho o Squid + NTLM + AD no proxy atual (CentOS).
Estou com dificuldade em algum ponto do seu tutorial.
Estou migrando o meu servidor para o pfSense, parei na etapa de ingressar o pfSense no AD, mas recebo a seguinte mensagem:[2.0.1-RELEASE][admin@meudominio]/usr/local/etc(42): net ads -u meuusuario@MEUDOMINIO
/libexec/ld-elf.so.1: /usr/local/lib/libiconv.so.3: unsupported file layoutSerá que você poderia me ajudar?
Obrigado. -
Será que você poderia me ajudar?
mzambretti, bem vindo ao fórum! :)
Aparentemente seu erro está na instalação de pacotes de outra arquitetura, por exemplo pacotes i386 no pfsense amd64.
att,
Marcello Coutinho -
Marcello, obrigado pela ajuda.
Comecei do zero e passei daquele ponto.
Agora estou com problema ao ingressar no domínio utilizando o net ads e recebo o seguinte erro:Host is not configured as a member server.
Invalid configuration. Exiting….
Failed to join domain: This operation is only allowed for the PDC of the domain.Como contorno isso?
Obrigado mais uma vez.