Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Autenticação "transparente" com pfsense + squid + active directory

    Scheduled Pinned Locked Moved Portuguese
    114 Posts 24 Posters 83.9k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • W
      wilsaojr
      last edited by

      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!!!

      1 Reply Last reply Reply Quote 0
      • C
        cristianonix
        last edited by

        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?

        1 Reply Last reply Reply Quote 0
        • marcellocM
          marcelloc
          last edited by

          cristianonix,

          Bem vindo ao fórum!  :)

          Você instalou o pacote seguiu o procedimento?

          att,
          Marcello Coutinho

          Treinamentos de Elite: http://sys-squad.com

          Help a community developer! ;D

          1 Reply Last reply Reply Quote 0
          • C
            cristianonix
            last edited by

            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.tbz

            Reiniciei 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.

            1 Reply Last reply Reply Quote 0
            • marcellocM
              marcelloc
              last edited by

              @cristianonix:

              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  :)

              Treinamentos de Elite: http://sys-squad.com

              Help a community developer! ;D

              1 Reply Last reply Reply Quote 0
              • C
                cristianonix
                last edited by

                Ok, vou ler novamente.

                1 Reply Last reply Reply Quote 0
                • C
                  cristianonix
                  last edited by

                  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 = ADS

                  wins 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
                              }

                  1 Reply Last reply Reply Quote 0
                  • marcellocM
                    marcelloc
                    last edited by

                    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

                    Treinamentos de Elite: http://sys-squad.com

                    Help a community developer! ;D

                    1 Reply Last reply Reply Quote 0
                    • C
                      cristianonix
                      last edited by

                      quando digito  wbinfo -u

                      não aparece nada no pfsense.

                      1 Reply Last reply Reply Quote 0
                      • marcellocM
                        marcelloc
                        last edited by

                        você já colocou as configurações de autenticação no squid?

                        O que aparece no access.log?

                        Treinamentos de Elite: http://sys-squad.com

                        Help a community developer! ;D

                        1 Reply Last reply Reply Quote 0
                        • U
                          ubezerra
                          last edited by

                          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 winbind

                          Abaixo 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.

                          1 Reply Last reply Reply Quote 0
                          • marcellocM
                            marcelloc
                            last edited by

                            ubezerra,

                            Bem vindo ao fórum! :)

                            @ubezerra:

                            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á subindo

                            att,
                            Marcello Coutinho

                            Treinamentos de Elite: http://sys-squad.com

                            Help a community developer! ;D

                            1 Reply Last reply Reply Quote 0
                            • U
                              ubezerra
                              last edited by

                              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.9

                              Vou 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?

                              1 Reply Last reply Reply Quote 0
                              • marcellocM
                                marcelloc
                                last edited by

                                @ubezerra:

                                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.

                                Treinamentos de Elite: http://sys-squad.com

                                Help a community developer! ;D

                                1 Reply Last reply Reply Quote 0
                                • M
                                  mzambretti
                                  last edited by

                                  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 layout

                                  Será que você poderia me ajudar?
                                  Obrigado.

                                  1 Reply Last reply Reply Quote 0
                                  • marcellocM
                                    marcelloc
                                    last edited by

                                    @mzambretti:

                                    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

                                    Treinamentos de Elite: http://sys-squad.com

                                    Help a community developer! ;D

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      mzambretti
                                      last edited by

                                      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.

                                      1 Reply Last reply Reply Quote 0
                                      • D
                                        Daniel Herzer
                                        last edited by

                                        Segui o tutorial e todas as dicas dos amigos e consegui realizar a autenticação mostrada aqui…

                                        No entanto não consegui fazer com que no pacote "Lightsquid" fosse mostrado o nome dos usuários logados nos logs, só mostra o endereço IP do mesmo.

                                        Será que há como fazer com que o Lightsquid entenda/descubra esses IPs também?

                                        Obs: No Lightsquid ele dá algumas opções para resolver as informações que ele vai mostrar nos logs:

                                        IP - return IP
                                        Demo - return AUTHNAME, else DNSNAME, else IP
                                        DNS - return DNSNAME
                                        Simple - return AUTHNAME else IP
                                        SMB - return SMB name of pc
                                        Squidauth - return AUTHNAME else IP, allow cyrilyc name

                                        Os que estão em vermelho eu tentei…

                                        1 Reply Last reply Reply Quote 0
                                        • marcellocM
                                          marcelloc
                                          last edited by

                                          @Daniel:

                                          Os que estão em vermelho eu tentei…

                                          Viu se no log do squid aparece o usuário autenticado?

                                          Já tentou o sarg????

                                          Treinamentos de Elite: http://sys-squad.com

                                          Help a community developer! ;D

                                          1 Reply Last reply Reply Quote 0
                                          • P
                                            pfarias
                                            last edited by

                                            Olá sou novo por aqui mas vamos lá..

                                            Fiz as configurações conforme manda o tutorial, consegui executar o kinit para ingressa-lo no dominio.. tudo certinho…
                                            mas como o comando "wbinfo -t" ele me retorna esse erro abaixo:

                                            could not obtain winbind interface details: WBC_ERR_WINBIND_NOT_AVAILABLE
                                            could not obtain winbind domain name!
                                            checking the trust secret for domain (null) via RPC calls failed
                                            failed to call wbcCheckTrustCredentials: WBC_ERR_WINBIND_NOT_AVAILABLE
                                            Could not check secret

                                            trabalho parado até aqui.....

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.