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

    SQUID + LDAP + AD

    Scheduled Pinned Locked Moved Russian
    57 Posts 17 Posters 49.6k 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.
    • S
      SysR
      last edited by

      Вообщем выкладываю статейку о том как я заставил сквид понять авторизацию по группам через ЛДАП и рекурсивно искать пользователей в АД, может кому пригодится:
      Для начала настраиваем параметры авторизации как на картинке:

      В АД нужен пользователь с правами чтения групп и пользователей. 192.168.1.1 это ИР контроллера домена.
      Пояснение:
      LDAP server user DN: squid_user@domain.com пользователь на чтение АД, некоторые указывают что то в роде: cn=Squid User,ou=users,dc=domain,dc=com что тоже есть правильно, мне удобнее первый вариант.
      LDAP base domain: dc=domain,dc=com это корень домена domain.com к которому мы привязываемся.
      LDAP username DN attribute: cn я не знаю зачем этот параметр я просто указал cn.
      LDAP search filter: sAMAccountName=%s фильтр поиска в ЛДАП, в этом поле указан логин пользователя, по нему и ищем. %s получим позже от аутентификатора.

      Далее дополнительные параметры:

      external_acl_type ldap_users %LOGIN /usr/local/libexec/squid/squid_ldap_group -R -b "dc=domain,dc=com" -f "(&(sAMAccountName=%v)(memberOf=cn=%a,ou=users,dc=domain,dc=com))" -D squid_user@domain.com -w super_password 192.168.1.1;
      acl ad_inet external ldap_users InetUsers;
      http_access allow ad_inet;

      Пояснение:
      Первая строчка разруливает сопоставление пользователей и групп
      Вторая и треться назначает ACL группе из АД и разрешает этой группе доступ к интернету, InetUsers это наша группа в АД ad_inet это внутрений acl сквида. Такой АЦЛ может быть не единственным а например из группы в АД можно задать соответствие пользователя скорости в delay_pools:

      acl ad_inet1m external ldap_users InetUsers1m
      acl ad_inet2m external ldap_users InetUsers2m
      acl ad_inet3m external ldap_users InetUsers3m

      http_access allow ad_inet1m
      http_access allow ad_inet2m
      http_access allow ad_inet3m
      Так  можно разрулить скорость в пулах через группу в АД.

      Но так все это работать не будет если АД упорядочена в виде дерева. Для этого я подправил в файле /usr/local/pkg/squid.inc строчку добавив параметр -R как накартинке:

      Это заставило аутентификатор искать пользователей рекурсивно по дереву а не только в OU к которому мы привязывались в начале.

      1 Reply Last reply Reply Quote 0
      • D
        dvserg
        last edited by

        Добавил в http://forum.pfsense.org/index.php/topic,22839.msg117446.html#msg117446

        SquidGuardDoc EN  RU Tutorial
        Localization ru_PFSense

        1 Reply Last reply Reply Quote 0
        • D
          default666
          last edited by

          Что-то с группой (InetUsers) не получается, все под ряд в инет выходят.
          А ещё при первом запуске и первом заходе на веб страницу браузер долго думает, ну очень долго, потом нормально, после перезапуска компа при первом запуске и первом заходе на веб страницу браузер снова долго думает, около минуты.

          1 Reply Last reply Reply Quote 0
          • S
            SysR
            last edited by

            В списках доступа по ИП не должно быть ничего. Сам по себе авторизированный пользователь уже в списке доступа.
            Скорость авторизации зависит от скорости сети и времени отклика домен-контроллера.

            1 Reply Last reply Reply Quote 0
            • D
              default666
              last edited by

              Что-то не пашет оно:
              pfsense 2.0.1 Release
              win 2003 ee r2 sp2
              лес и домен 2003-го уровня
              win xp pro sp 3

              Proxy server: Access Control > Allowed subnets - пусто
              Proxy server: General settings > Allow users on interface - стоит галка

              squid.conf

              # Do not edit manually !
              http_port 192.168.1.1:8080
              icp_port 0
              
              pid_filename /var/run/squid.pid
              cache_effective_user proxy
              cache_effective_group proxy
              error_directory /usr/local/etc/squid/errors/English
              icon_directory /usr/local/etc/squid/icons
              visible_hostname pfsense.rrsrv.ath.cx
              cache_mgr adm@rrsrv.ath.cx
              access_log /dev/null
              cache_log /var/squid/logs/cache.log
              cache_store_log none
              logfile_rotate 0
              shutdown_lifetime 3 seconds
              # Allow local network(s) on interface(s)
              acl localnet src  192.168.1.0/255.255.255.0
              uri_whitespace strip
              
              cache_mem 16 MB
              maximum_object_size_in_memory 32 KB
              memory_replacement_policy heap GDSF
              cache_replacement_policy heap LFUDA
              cache_dir diskd /var/squid/cache 100 16 256
              minimum_object_size 0 KB
              maximum_object_size 4 KB
              offline_mode off
              cache_swap_low 90
              cache_swap_high 95
              
              # No redirector configured
              
              # Setup some default acls
              acl all src 0.0.0.0/0.0.0.0
              acl localhost src 127.0.0.1/255.255.255.255
              acl safeports port 21 70 80 210 280 443 488 563 591 631 777 901  3128 1025-65535 
              acl sslports port 443 563  
              acl manager proto cache_object
              acl purge method PURGE
              acl connect method CONNECT
              acl dynamic urlpath_regex cgi-bin \?
              cache deny dynamic
              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
              
              quick_abort_min 0 KB
              quick_abort_max 0 KB
              request_body_max_size 10240 KB
              reply_body_max_size 10485760 deny all
              delay_pools 1
              delay_class 1 2
              delay_parameters 1 -1/-1 -1/-1
              delay_initial_bucket_level 100
              # Throttle extensions matched in the url
              acl throttle_exts urlpath_regex -i "/var/squid/acl/throttle_exts.acl"
              delay_access 1 allow throttle_exts
              delay_access 1 deny all
              
              # Custom options
              external_acl_type ldap_users %LOGIN /usr/local/libexec/squid/squid_ldap_group -R -b "dc=rrsrv,dc=ath,dc=cx" -f "(&(sAMAccountName=%v)(memberOf=cn=%a,ou=users,ou=HQ,dc=rrsrv,dc=ath,dc=cx))" -D pfs@rrsrv.ath.cx -w pfs 192.168.1.1
              acl ad_inet external ldap_users InetUsers_GSG
              http_access allow ad_inet
              
              auth_param basic program /usr/local/libexec/squid/squid_ldap_auth -R -v 3 -b dc=rrsrv,dc=ath,dc=cx -D pfs@rrsrv.ath.cx -w pfs -f "sAMAccountName=%s" -u cn -P 192.168.1.11:389
              auth_param basic children 5
              auth_param basic realm Please enter your credentials to access the proxy
              auth_param basic credentialsttl 60 minutes
              acl password proxy_auth REQUIRED
              http_access allow password localnet
              # Default block all to be sure
              http_access deny all
              
              

              В группе InetUsers_GSG один юзер, однако в нет попадают все кто есть в AD. Сама группа лежит в подразделении - ou=users,ou=HQ,dc=rrsrv,dc=ath,dc=cx, юзеры в подразделении - OU=IT,OU=users,OU=HQ,DC=rrsrv,DC=ath,DC=cx

              1 Reply Last reply Reply Quote 0
              • S
                SysR
                last edited by

                http_access allow password localnet

                ??

                # These hosts do not have any restrictions
                http_access allow unrestricted_hosts
                # Always allow access to whitelist domains
                http_access allow whitelist
                # Block access to blacklist domains
                http_access deny blacklist
                auth_param basic program /usr/local/libexec/squid/squid_ldap_auth -R -v 3 -b dc=domain,dc=com -D srv@domain.com -w pwd -f "sAMAccountName=%s" -u cn -P 192.168.1.1:389
                auth_param basic children 5
                auth_param basic realm Please enter your credentials to access the proxy
                auth_param basic credentialsttl 60 minutes
                acl password proxy_auth REQUIRED
                http_access allow unrestricted_hosts
                # Custom options
                external_acl_type ldap_users %LOGIN /usr/local/libexec/squid/squid_ldap_group -R -b "dc=domain,dc=com" -f "(&(sAMAccountName=%v)(memberOf=cn=%a,ou=hq,dc=domain,dc=com))" -D srv@domain.com -w pwd 192.168.1.1
                acl ad_inet external ldap_users gginet
                http_access allow ad_inet
                
                # Default block all to be sure
                http_access deny all
                

                Попробуй в консоли посмотреть что возвращают:

                /usr/local/libexec/squid/squid_ldap_group -R -b "dc=domain,dc=com" -f "(&(sAMAccountName=%v)(memberOf=cn=%a,ou=hq,dc=domain,dc=com))" -D srv@domain.com -w pwd 192.168.1.1
                
                 /usr/local/libexec/squid/squid_ldap_auth -R -v 3 -b dc=domain,dc=com -D srv@domain.com -w pwd -f "sAMAccountName=%s" -u cn -P 192.168.1.1:389
                

                Первой команде в консоли указываешь **user[пробел]group[энтэр]**Должно вернуть ОК или ERR
                Второй user[пробел]passwd[энтэр] так же должен увидеть ОК или ERR

                1 Reply Last reply Reply Quote 0
                • D
                  default666
                  last edited by

                  http_access allow password localnet
                  ```- хз, сам не знаю что это такое.
                  
                  /usr/local/libexec/squid/squid_ldap_group -R -b "dc=rrsrv,dc=ath,dc=cx" -f "(&(sAMAccountName=%v)(memberOf=cn=%a,ou=IT,ou=users,ou=HQ,dc=rrsrv,dc=ath,dc=cx))" -D pfs@rrsrv.ath.cx -w pfs 192.168.1.11 > **ERR**
                  
                  /usr/local/libexec/squid/squid_ldap_auth -R -v 3 -b dc=rrsrv,dc=ath,dc=cx -D pfs@rrsrv.ath.cx -w pfs -f "sAMAccountName=%s" -u cn -P 192.168.1.11:389 > **OK**
                  
                  А группу какую указывать основную или любую в которую входит пользователь?
                  1 Reply Last reply Reply Quote 0
                  • S
                    SysR
                    last edited by

                    На группу в который пользователь должно вернуть ОК на левую ERR.

                    Скорее всего у тебя срабатывает АЦЛ по ЛОКАЛНЕТ то есть доступ всем авторизированым не зависимо от того в группе или нет.
                    Кстати у тебя какой сквид? Я устанавливал 3ий но установился 2,7  ???

                    Allow users on interface включен? У меня нет.

                    1 Reply Last reply Reply Quote 0
                    • D
                      default666
                      last edited by

                      Кое-какая продрись произошла:
                      [2.0-RELEASE][admin@hqgw3.rrsrv.ath.cx]/root(1): /usr/local/libexec/squid/squid_ldap_group -R -b "dc=rrsrv,dc=ath,dc=cx" -f "(&(objectclass=person)(sAMAccountName=%v)(memberOf=cn=%a,ou=HQ,dc=rrsrv,dc=ath,dc=cx))" -D pfs@rrsrv.ath.cx -w pfs 192.168.1.11
                      adm InetUsers
                      OK

                      косяк видимо был в пути: (memberOf=cn=%a,ou=HQ,dc=rrsrv,dc=ath,dc=cx)

                      squid 2.7.9 STABLE  устанавливал его

                      Allow users on interface включен. Без этого squid не стартует.

                      Перестало тормозить при первом входе на веб страницу, однако пускает всех авторизованных.

                      1 Reply Last reply Reply Quote 0
                      • D
                        default666
                        last edited by

                        @SysR:

                        Скорее всего у тебя срабатывает АЦЛ по ЛОКАЛНЕТ то есть доступ всем авторизированым не зависимо от того в группе или нет.

                        Как его прибить ПРАВИЛЬНО этот ACL? Ибо при тупом комментировании оного в squid.conf всё начинает правильно работать, однако при сохранении настроек через веб интерфейс squid.conf перезаписывыается с настройками http_access allow password localnet.

                        1 Reply Last reply Reply Quote 0
                        • S
                          SysR
                          last edited by

                          Выложи скрин страницы General в рабочем состоянии ну и логи, чего не стартует без Allow users on interface

                          1 Reply Last reply Reply Quote 0
                          • D
                            default666
                            last edited by

                            Вот такая хрень БЫЛА:
                            [2.0-RELEASE][admin@hqgw3.rrsrv.ath.cx]/root(1): /usr/local/etc/rc.d/squid.sh restart
                            [2.0-RELEASE][admin@hqgw3.rrsrv.ath.cx]/root(2): /usr/local/etc/rc.d/squid.sh restart
                            2012/03/05 00:53:41| ACL name 'localnet' not defined!
                            FATAL: Bungled squid.conf line 75: http_access allow password localnet
                            Squid Cache (Version 2.7.STABLE9): Terminated abnormally.
                            [2.0-RELEASE][admin@hqgw3.rrsrv.ath.cx]/root(3): /usr/local/etc/rc.d/squid.sh restart
                            2012/03/05 00:54:56| ACL name 'localnet' not defined!
                            FATAL: Bungled squid.conf line 75: http_access allow password localnet
                            Squid Cache (Version 2.7.STABLE9): Terminated abnormally.
                            2012/03/05 00:55:01| ACL name 'localnet' not defined!
                            FATAL: Bungled squid.conf line 75: http_access allow password localnet
                            Squid Cache (Version 2.7.STABLE9): Terminated abnormally.
                            Щас нормально запускается без Allow users on interface, squid нормально пашет, не тормозит, пускает только тех кого нужно.

                            1 Reply Last reply Reply Quote 0
                            • D
                              default666
                              last edited by

                              SysR

                              Такой АЦЛ может быть не единственным а например из группы в АД можно задать соответствие пользователя скорости в delay_pools:

                              Накатай на эту тему отдельную статью. Для pfsense.

                              1 Reply Last reply Reply Quote 0
                              • S
                                SysR
                                last edited by

                                К сожалению стандартная схема пулов в пфСенсе настроена на ограничение по типам файлов а не по группам. Поэтому пока что разрулись скорось по (внешним) групам не представляется возможным стандартным способом.

                                Если кому интересно поправить файл через консоль то могу накидать небольшой мануал что и как.

                                1 Reply Last reply Reply Quote 0
                                • A
                                  Alevander_V_G
                                  last edited by

                                  À â êàêîé ñòðî÷êå ôàéëà squid.inc äîáàâëÿòü -R ?
                                  Âñå, âðîäå, çàðàáîòàëî, êàê îïèñàíî â ñòàòüå. Íî âîò ïðîáëåììà: êàê áûòü åñëè èìÿ ãðóïïû ñîäåðæèò ïðîáåëû? Íèêàê íå ïîëó÷àåòñÿ ïåðåäàòü. "" - íå ïîìîãàþò.
                                  È ïðîáîâàë ëè êòî-íèáóäü äåëàòü negotiate àâòîðèçàöèþ ñ ó÷åòîì ïðèíàäëåæíîñòè ãðóïïàì?

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    SysR
                                    last edited by

                                    /usr/local/libexec/squid/squid_ldap_auth -R [….]

                                    1 Reply Last reply Reply Quote 0
                                    • A
                                      Alevander_V_G
                                      last edited by

                                      ×òîáû ðàáîòàëî äåéñòâèëåëüíî ïî ãðóïïàì, íàäî ôàéë /usr/local/pkg/squid.inc ïîïðàâèòü òàê, ÷òîáû â squid.conf íå äîáàâëÿëèñü ñòðîêè:
                                      acl password proxy_auth REQUIRED
                                      http_access allow password localnet
                                      Äëÿ ýòî äîñòàòî÷íî ïåðåä íèìè ïîñòàâèòü #.

                                      Ïîïðîáîâàë âñå ýòî íà squid 3.1.19. Òàì ïðèøëîñü ñåðüåçíåå ïîïðàâèòü squid.inc, òàê êàê îáëàñòü Custom Settings, çà÷åì òî, âïèñûâàåòñÿ ðàíüøå ÷åì íàì ýòî íàäî. Íî ïîêà íå çàðàáîòàëî.  ëîãàõ ïèøåò:
                                      WARNING: Cannot run '/usr/local/libexec/squid/squid_ldap_group' process
                                      Õîòÿ èç êîììàíäíîé ñòðîêè âñå ñðàáàòûâàåò.
                                        :(

                                      1 Reply Last reply Reply Quote 0
                                      • S
                                        SysR
                                        last edited by

                                        Не обновляйте 3ий сквид кто пользуется ЛДАП авторизацией. Рискуете получить:

                                        Can't use proxy auth because no authentication schemes are fully configured.

                                        1 Reply Last reply Reply Quote 0
                                        • A
                                          Alevander_V_G
                                          last edited by

                                          А хоть кто-нибудь настраивал Negotiate authentication method в pfSense? Ну не красиво это в 21 веке заставлять пользователей по 10 раз на дню вводить пароли и передавать их в открытом виде.

                                          1 Reply Last reply Reply Quote 0
                                          • S
                                            SysR
                                            last edited by

                                            Браузер не просит пароль снова пока его не закроешь.

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