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.
    • 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
                                        • marcellocM
                                          marcelloc
                                          last edited by

                                          um tutorial detalhado em inglês a partir deste tópico

                                          http://forum.pfsense.org/index.php/topic,58700.0.html

                                          contribuição: wheelz

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

                                          Help a community developer! ;D

                                          1 Reply Last reply Reply Quote 0
                                          • N
                                            neo_X
                                            last edited by

                                            Olá pessoal,

                                            Alguém criou o procedimento completo no site?

                                            []'s

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