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

    Pfsense + Squid + NTLM (Autenticação AD transparente)

    Scheduled Pinned Locked Moved Portuguese
    108 Posts 41 Posters 64.7k 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.
    • M
      mcury Rebel Alliance
      last edited by

      Segue:

      Estou utilizando o mesmo domínio do exemplo acima.
      O que está em maiúsculo precisa ficar em maiúsculo, exatamente como está aí embaixo, ok?

      pi@raspsrv:~ $ cat /etc/krb5.conf
      [libdefaults]
      default_realm = LOCAL.LAN
      dns_lookup_realm = false
      dns_lookup_kdc = true
      [realms]
      LOCAL.LAN = {
      kdc = raspsrv.local.lan
      admin_server = raspsrv.local.lan
      default_domain = local.lan
      }
      [domain_realm]
      .local.lan = LOCAL.LAN
      local.lan = LOCAL.LAN

      dead on arrival, nowhere to be found.

      F 1 Reply Last reply Reply Quote 0
      • F
        fabiogleao @mcury
        last edited by fabiogleao

        @mcury
        Bom dia amigo.

        o usuário do pFsense é pfsense e a senha é somente com números e fica no Users do AD.

        qual seria o comando que indica o usuário como SPN para que depois se exporte a keytab? o correspondente ao comando do windows "setspn".

        no log do meu squid:

        Date IP Status Address User Destination
        24.10.2018 08:29:59 10.0.2.106 TCP_DENIED/407 clients4.google.com:443 - -

        Date-Time Message
        31.12.1969 21:00:00 negotiate_kerberos_auth: WARNING: received type 1 NTLM token
        31.12.1969 21:00:00 negotiate_kerberos_auth: DEBUG: Decode 'TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAKAO5CAAAADw==' (decoded length: 40).

        Krb5.conf (PFSENSE)

        [logging]
        default = FILE:/var/log/krb5libs.log
        kdc = FILE:/var/log/krb5kdc.log
        admin_server = FILE:/var/log/kadmind.log

        [libdefaults]
        default_realm = DOMINIO.LAN
        dns_lookup_realm = false
        dns_lookup_kdc = true
        ticket_lifetime = 48h
        forwardable = yes
        ; for Windows 2008 with AES
        default_tgs_enctypes = aes128-cts-hmac-sha1-96 aes256-cts-hmac-s
        ha1-96 rc4-hmac des-cbc-crc des-cbc-md5
        default_tkt_enctypes = aes128-cts-hmac-sha1-96 aes256-cts-hmac-s
        ha1-96 rc4-hmac des-cbc-crc des-cbc-md5
        permitted_enctypes = aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha
        1-96 rc4-hmac des-cbc-crc des-cbc-md5

        [appdefaults]
        pam = {
        debug = false
        ticket_lifetime = 36000
        renew_lifetime = 36000
        forwardable = true
        krb4_convert = false
        }

        [realms]
        DOMINIO.LAN = {
        kdc = ad-dc.dominio.lan
        admin_server = ad-dc.dominio.lan
        default_domain - dominio.lan

        }

        [domain_realm]
        .dominio.lan = DOMINIO.LAN
        dominio.lan = DOMINIO.LAN

        Krb5.conf (AD)

        [libdefaults]
        default_realm = DOMINIO.LAN
        dns_lookup_realm = false
        dns_lookup_kdc = true

        [realms]
        DOMINIO.LAN = {
        kdc = ad-dc.dominio.lan

        }

        [domain_realm]
        .dominio.lan = DOMINIO.LAN
        dominio.lan = DOMINIO.LAN

        1 Reply Last reply Reply Quote 0
        • M
          mcury Rebel Alliance
          last edited by

          Infelizmente o setspn só pode ser feito no Windows, com o pacote RSAT.
          Já o ktpass pode ser usado tanto no samba como no Windows Server.

          Primeiro ponto:

          O pfsense está com domain override no DNS para o seu dominio, e apontando pro DNS do AD?
          Ou o pfsense está configurado para utilizar apenas o DNS do AD?

          Tudo que for relacionado ao seu AD, inclusive as atividades do Kerberos, precisam resolver corretamente, portanto precisa de uma dessas configurações.

          Segundo ponto:

          O /etc/krb5.conf do PFSENSE precisa estar da forma abaixo, observe que removi alguns parâmetros de criptografia para facilitar (dessa forma funciona), pois existem diferenças entre o MIT e o Heimdal, que não vem ao caso agora.

          [2.4.4-RELEASE][root@pfsense.local.lan]/root: cat /etc/krb5.conf
          [libdefaults]
          default_realm = LOCAL.LAN
          dns_lookup_realm = false
          dns_lookup_kdc = true

          [realms]
          LOCAL.LAN = {
          kdc = raspsrv.local.lan
          }

          [domain_realm]
          .local.lan = LOCAL.LAN
          local.lan = LOCAL.LAN

          [logging]
          kdc = FILE:/var/log/kdc.log
          Default = FILE:/var/log/krb5lib.log

          A configuração do smb.conf localizado no AD, eu já postei anteriormente.

          Após ter feito essas configurações, você já pode testar com o kinit svc_squid ou pfsense como você criou diretamente do PFSENSE.

          Caso funcione, você conseguirá listar o ticket com o comando klist em seguida.

          Depois desse passo, você segue com as configurações que já citei acima ok?

          dead on arrival, nowhere to be found.

          F 2 Replies Last reply Reply Quote 1
          • F
            fabiogleao @mcury
            last edited by

            This post is deleted!
            1 Reply Last reply Reply Quote 0
            • F
              fabiogleao @mcury
              last edited by

              @mcury

              Consegui, muito obrigado.

              no navegador estava o IP do proxy e ao mudar pro nome funcionou.
              NS Lookup funcionando e reconhecendo normalmente quando informo o nome do PC, não entendi pq não encontrou com o IP e somente com o nome.

              Agora vou pra 2a etapa que é com o sarg. Vou seguir as suas orientações. Obrigado

              1 Reply Last reply Reply Quote 0
              • M
                mcury Rebel Alliance
                last edited by

                De nada Fabio, é um prazer ajudar.
                Agora, SSO sem precisar alterar os pacotes originais do Pfsense.

                Saiu atualização, voce atualiza, sem se preocupar com samba.

                Abraços.

                dead on arrival, nowhere to be found.

                F 1 Reply Last reply Reply Quote 0
                • F
                  fabiogleao @mcury
                  last edited by fabiogleao

                  @mcury
                  agora pode atualizar sem preocupação, bem melhor.

                  Mas o Squidguard não tá bloqueando reconhece o usuário, mas não faz o bloqueio.

                  segue as configs dele:
                  0_1540558367651_ead44ee6-fd4f-44dd-a7f5-b1f11d72acfd-image.png

                  0_1540559908872_ae4bcc86-7ffc-40e1-b576-4fc36970217c-image.png
                  com ip ou nome não bloqueia

                  .

                  usuário abaixo era pra ser bloqueado o acesso no grupo Internet_L0:

                  0_1540558562748_7f69719b-b1e1-4ba2-a023-77b3590c4707-image.png

                  1 Reply Last reply Reply Quote 0
                  • M
                    mcury Rebel Alliance
                    last edited by

                    Desmarca as opções de STRIP NT domain e STRIP Kerberos Kealm e tenta de novo.

                    Caso não funcione, checa o ldapusersearch para ver se está de acordo, o que eu colei aqui, funcionou perfeitamente para o meu AD em samba 4.

                    ldapusersearch ldap://raspsrv.local.lan:3268/dc=local,dc=lan?userPrincipalName?sub?(&(memberof=CN=internet_group%2cCN=Users%2cDC=local%2cDC=lan)(userPrincipalName=%s))

                    Você pode estar testando a porta 389 também.

                    Você desativou a autenticação do Squid, certo?
                    A configuração é praticamente toda no Squidguard

                    dead on arrival, nowhere to be found.

                    1 Reply Last reply Reply Quote 0
                    • F
                      fabiogleao
                      last edited by

                      nada amigo, quebrando cabeça aqui.

                      fiz o que me orientou, mas não bloqueia por grupo.

                      se o problema fosse no ticket ele também não mostraria o usuário no log do squid né?

                      no log squidguard ele nem mostra nada, somente no cache.

                      1 Reply Last reply Reply Quote 0
                      • M
                        mcury Rebel Alliance
                        last edited by

                        Exato, o mais difícil você já fez, que é o ticket e a autenticação no proxy.
                        O problema agora é simplesmente a sintaxe do ldapusersearch.

                        O meu funcionou daquela maneira, já testou outras sintaxes?

                        dead on arrival, nowhere to be found.

                        F 1 Reply Last reply Reply Quote 0
                        • F
                          fabiogleao @mcury
                          last edited by

                          @mcury
                          mano do céu!!!

                          já tentei de tudo velho.

                          ldapusersearch ldap://ad-dc.dominio.lan:389/dc=dominio,dc=lan?userPrincipalName?sub?(&(userPrincipalName=%s)(memberof=cn=internet_L0%2cou=Ti%2cdc=dominio%2cdc=lan))

                          ldapusersearch ldap://10.0.0.22:389/dc=dominio,dc=lan?userPrincipalName?sub?(&(userPrincipalName=%s)(memberof=cn=internet_L0%2cou=Ti%2cdc=dominio%2cdc=lan))

                          ldapusersearch ldap://ad-dc.dominio.lan:3268/dc=dominio,dc=lan?userPrincipalName?sub?(&(userPrincipalName=%s)(memberof=cn=internet_L0%2cou=Ti%2cdc=dominio%2cdc=lan))

                          ldapusersearch ldap://10.0.0.22:3268/dc=dominio,dc=lan?userPrincipalName?sub?(&(userPrincipalName=%s)(memberof=cn=internet_L0%2cou=Ti%2cdc=dominio%2cdc=lan))

                          squid.conf

                          This file is automatically generated by pfSense

                          Do not edit manually !

                          http_port 10.0.0.250:3128
                          icp_port 0
                          digest_generation off
                          dns_v4_first off
                          pid_filename /var/run/squid/squid.pid
                          cache_effective_user squid
                          cache_effective_group proxy
                          error_default_language en
                          icon_directory /usr/local/etc/squid/icons
                          visible_hostname localhost
                          cache_mgr admin@localhost
                          access_log /var/squid/logs/access.log
                          cache_log /var/squid/logs/cache.log
                          cache_store_log none
                          netdb_filename /var/squid/logs/netdb.state
                          pinger_enable on
                          pinger_program /usr/local/libexec/squid/pinger

                          logfile_rotate 14
                          debug_options rotate=14
                          shutdown_lifetime 3 seconds

                          Allow local network(s) on interface(s)

                          acl localnet src 10.0.0.0/22
                          forwarded_for on
                          uri_whitespace strip

                          acl dynamic urlpath_regex cgi-bin ?
                          cache deny dynamic

                          cache_mem 2000 MB
                          maximum_object_size_in_memory 256 KB
                          memory_replacement_policy heap GDSF
                          cache_replacement_policy heap LFUDA
                          minimum_object_size 0 KB
                          maximum_object_size 4 MB
                          cache_dir ufs /var/squid/cache 60000 256 256
                          offline_mode off
                          cache_swap_low 90
                          cache_swap_high 95
                          cache allow all
                          ###Add any of your own refresh_pattern entries above these.
                          refresh_pattern ^ftp: 1440 20% 10080
                          refresh_pattern ^gopher: 1440 0% 1440
                          refresh_pattern -i (/cgi-bin/|?) 0 0% 0
                          refresh_pattern . 0 20% 4320

                          ###Remote proxies

                          Setup some default acls

                          ACLs all, manager, localhost, and to_localhost are predefined.

                          acl allsrc src all
                          acl safeports port 21 70 80 210 280 443 488 563 591 631 777 901 3128 3129 1025-65535
                          acl sslports port 443 563

                          acl purge method PURGE
                          acl connect method CONNECT

                          Define protocols used for redirects

                          acl HTTP proto HTTP
                          acl HTTPS proto HTTPS
                          http_access allow manager localhost

                          http_access deny manager
                          http_access allow purge localhost
                          http_access deny purge
                          http_access deny !safeports
                          http_access deny CONNECT !sslports

                          Always allow localhost connections

                          http_access allow localhost

                          request_body_max_size 0 KB
                          delay_pools 1
                          delay_class 1 2
                          delay_parameters 1 -1/-1 -1/-1
                          delay_initial_bucket_level 100
                          delay_access 1 allow allsrc

                          Reverse Proxy settings

                          Package Integration

                          url_rewrite_program /usr/local/bin/squidGuard -c /usr/local/etc/squidGuard/squidGuard.conf
                          url_rewrite_bypass off
                          url_rewrite_children 16 startup=8 idle=4 concurrency=0

                          Custom options before auth

                          acl whitelist dstdomain .local.lan
                          auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -k /usr/local/etc/squid/squidproxy.keytab
                          auth_param negotiate children 100
                          auth_param negotiate keep_alive on
                          http_access allow whitelist
                          acl auth proxy_auth REQUIRED
                          http_access deny !auth
                          http_access allow auth

                          Setup allowed ACLs

                          Allow local network(s) on interface(s)

                          http_access allow localnet

                          Default block all to be sure

                          http_access deny allsrc

                          SquidGuard

                          logdir /var/squidGuard/log
                          dbhome /var/db/squidGuard
                          ldapbinddn CN=pfsense,CN=Users,DC=dominio,DC=lan
                          ldapbindpass 123456
                          ldapprotover 3

                          #ACL Bloqueio Nivel 1
                          src Internet_L0 {
                          ldapusersearch ldap://ad-dc.dominio.lan:389/dc=dominio,dc=lan?userPrincipalName?sub?(&(userPrincipalName=%s)(memberof=cn=internet_L0%2cou=Ti%2cdc=dominio%2cdc=lan))
                          log block.log
                          }

                          dest blk_BL_adv {
                          domainlist blk_BL_adv/domains
                          urllist blk_BL_adv/urls
                          log block.log
                          }

                          rew safesearch {
                          s@(google../search?.q=.)@&safe=active@i
                          s@(google..
                          /images.q=.)@&safe=active@i
                          s@(google../groups.q=.)@&safe=active@i
                          s@(google..
                          /news.q=.)@&safe=active@i
                          s@(yandex../yandsearch?.text=.)@&fyandex=1@i
                          s@(search.yahoo..
                          /search.p=.)@&vm=r&v=1@i
                          s@(search.live../.q=.)@&adlt=strict@i
                          s@(search.msn..
                          /.q=.)@&adlt=strict@i
                          s@(.bing..*/.q=.)@&adlt=strict@i
                          log block.log
                          }

                          acl {
                          # ACL Bloqueio Nivel 1
                          Internet_L0 {
                          pass permitidos_todos none
                          log block.log
                          }
                          #
                          default {
                          pass none
                          redirect http://10.0.0.250:80/sgerror.php?url=403%20&a=%a&n=%n&i=%i&s=%s&t=%t&u=%u
                          log block.log
                          }
                          }

                          1 Reply Last reply Reply Quote 0
                          • M
                            mcury Rebel Alliance
                            last edited by

                            Pelo que eu vi nas suas tentativas, você não usou o memberof logo após o sub como está ai embaixo, tem que por memberof antes do caminho da arvore.

                            O seu ficaria assim:

                            ldapusersearch ldap://ad-dc.dominio.lan:3268/DC=dominio,DC=lan?userPrincipalName?sub?(&(memberof=CN=internet_L0%2cOU=Ti%2cDC=dominio%2cDC=lan)(userPrincipalName=%s))

                            Testa ai e me fala ok?

                            dead on arrival, nowhere to be found.

                            F 1 Reply Last reply Reply Quote 0
                            • F
                              fabiogleao @mcury
                              last edited by fabiogleao

                              @mcury

                              já tinha tentado antes assim e tb não rolou.

                              notei q não registrou no log do squidguard depois do dia 26-10

                              0_1541009428353_d81a71b6-a923-4c79-8669-886a5fe025d9-image.png

                              já no log do squid tá ok.

                              0_1541009494356_163c54c3-5119-4207-b9a6-a0af00222367-image.png

                              vou tentar as variações de porta e mudar pra IP do AD, mas acredito que não seja isso.

                              Mano se vc tiver tempo de dar uma olhada remotamente na minha config pra ter uma ideia melhor ou sei lá, te passo meu Cel e vc me add no whats ou telegram e te passo o id do TV ou Any Desk.

                              1 Reply Last reply Reply Quote 0
                              • M
                                mcury Rebel Alliance
                                last edited by

                                0_1541097472765_squid_squidguard.JPG

                                É pra ficar assim os logs caso você configure corretamente...

                                No squidguard, você habilitou a autenticação?

                                No squid, ela deve ficar desabilitada.

                                dead on arrival, nowhere to be found.

                                F 1 Reply Last reply Reply Quote 0
                                • F
                                  fabiogleao @mcury
                                  last edited by

                                  @mcury

                                  squid autenticação desabilitada
                                  e no squid guard configurado LDAP versão 3

                                  1 Reply Last reply Reply Quote 0
                                  • M
                                    mcury Rebel Alliance
                                    last edited by

                                    Eu to online, posso compartilhar minha tela pra você ver a configuração e comparar com a sua
                                    Inclusive o samba, krb5.conf e etc, te passei o contato por msg, abraço

                                    dead on arrival, nowhere to be found.

                                    1 Reply Last reply Reply Quote 0
                                    • K
                                      kioshiito
                                      last edited by

                                      @fabiogleao

                                      Boa tarde
                                      Sou bastante leigo e o meu continua solicitando Usuário e senha, como assim mudar de IP para nome. Acho que meu problema é esse.

                                      @fabiogleao said in Pfsense + Squid + NTLM (Autenticação AD transparente):

                                      @mcury

                                      Consegui, muito obrigado.

                                      no navegador estava o IP do proxy e ao mudar pro nome funcionou.
                                      NS Lookup funcionando e reconhecendo normalmente quando informo o nome do PC, não entendi pq não encontrou com o IP e somente com o nome.

                                      Agora vou pra 2a etapa que é com o sarg. Vou seguir as suas orientações. Obrigado

                                      F 1 Reply Last reply Reply Quote 0
                                      • F
                                        fabiogleao @kioshiito
                                        last edited by

                                        @kioshiito

                                        ainda na luta aqui, mas no squidguard

                                        no lugar de:
                                        ldapusersearch ldap://10.0.0.22:3268/DC=dominio,DC=lan?userPrincipalName?sub?(&(memberof=CN=internet_L0%2cOU=Ti%2cDC=dominio%2cDC=lan)(userPrincipalName=%s))

                                        ficaria:
                                        ldapusersearch ldap://ad-dc.dominio.lan:3268/DC=dominio,DC=lan?userPrincipalName?sub?(&(memberof=CN=internet_L0%2cOU=Ti%2cDC=dominio%2cDC=lan)(userPrincipalName=%s))

                                        1 Reply Last reply Reply Quote 0
                                        • S
                                          suporte-in
                                          last edited by

                                          Pessoal,

                                          Como próprio titulo diz, estou com um problema em fazer funcionar as regras de bloqueio no SquidGuard. Tenho duas categorias criadas no campo Target Categories e um grupo ACL para teste com nome de NIVEL_1_LIMITADO e com o usuário dentro desse grupo.

                                          Segue o meu cenário atual:

                                          1- Todos os serviços envolvidos estão iniciados: (SAMBA, SQUID e SquidGuard). "CACHES FORAM LIMPADOS!"
                                          2- O pfsense consegue se comunicar com o servidor de AD!
                                          3- Ao criar regras no SQUID elas funcionam na máquina em questão, e que está sendo utilizada para teste.
                                          4- QUANDO A REGRA É APLICADA NO SQUIDGUARD, CHEGA A BARRAR INICIALMENTE, MAS NA MESMA TELA DANDO UM "F5 "O SITE ATÉ ENTÃO QUE DEVERIA SER BLOQUEADO É LIBERADO!
                                          5- ANALISANDO O CAMPO "REAL TIME" É VISTO QUE O STATUS DA MÁQUINA APRESENTA "TCP_DENID/407 E INFORMANDO QUAL FOI O NAVEGADOR UTILIZADO.
                                          6- A CONFIGURAÇÃO DE PROXY NA MÁQUINA TESTE ESTÁ APLICADA, HAJA VISTO QUE FUNCIONA COM O SQUID.

                                          • Em contato com Luiz Gustavo, que foi o vendedor da ferramenta PF2AD o mesmo informa que a aplicação não tem problema algum, pois a mesma habilita a função do samba AD e aparentemente procede a informação passada pelo mesmo. Pois o PFSENSE encontra as configurações de usuários e grupos do servidor AD.

                                          A minha necessidade é criar categorias com níveis de grupos limitando o acesso de alguns usuários que estão em seus respectivos grupos. Conto com ajuda de vocês!

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