Squid+AD+Kerberos+https without password



  • Всем привет,
    уже не первый день закипаю, стоит задача реализовать прокси с фильтрацией https и аутентификацией по группам из AD, с ограничениями.
    Уже что только не перепробовал, готовые решения вроде centos7 + squid4 начальство неудовлетворяют, мол все самое новое подавай.
    Набрел на pfsense, установил, настроил, по LPAD столкнулся с тем что пароль надо постоянно вводить, настроил по https://fakirss.wordpress.com/2017/05/04/авторизация-в-squid-через-kerberos-на-pfsense/ сквид умирает при добавлении конфига.
    Конфиг:

    прозрачная авторизация через Kerberos

    auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -r -i -s GSS_C_NO_NAME
    auth_param negotiate children 10
    auth_param negotiate keep_alive on</code>

    обычная авторизация по логину и паролю

    пользователь squid нужен для чтения инфы из AD

    auth_param basic program /usr/local/libexec/squid/basic_ldap_auth -R -v 3 -b dc=primvoda,dc=local -D pfsense@primvoda.local -w 123 -f "sAMAccountName=%s" -u uid -P 192.168.8.10:389
    auth_param basic children 10
    auth_param basic realm CORP PROXY BASIC AUTH
    auth_param basic credentialsttl 5 minutes

    включаем проверку принадлежности пользователя к группам

    пользователь squid нужен для чтения инфы из AD

    external_acl_type ldap_groups ttl=60 %LOGIN /usr/local/libexec/squid/ext_ldap_group_acl
    -R -v 3 -b "dc=primvoda,dc=local" -D pfsense@primvoda.local -w 123 -f "(&(objectclass=user)(sAMAccountName=%v)(memberOf=CN=%a,OU=service-accounts,DC=primvoda,DC=local))" -P 192.168.8.10:389

    подключаем группы через которые распределяем доступ к сайтам

    acl Group_0 external ldap_groups Group_0
    acl Group_1 external ldap_groups Group_1
    acl Group_2 external ldap_groups Group_2

    подключаем списки разрешенных и запрещенных сайтов

    acl deny_sites url_regex -i "/var/squid/acl/deny_sites.txt"
    acl allow_sites url_regex -i "/var/squid/acl/allow_sites.txt"

    включаем авторизацию по паролю

    acl password proxy_auth REQUIRED

    настраиваем разрешения и блокировки

    запрещаем пользователям группы Group_1 доступ на "плохие" сайты

    http_access deny Group_1 deny_sites

    группе Group_0 можно ходить везде

    http_access allow Group_0

    разрешаем доступ группе Group_1

    http_access allow Group_1

    разрешаем пользователям группы Group_2 доступ на "хорошие сайты"

    http_access allow Group_2 allow_sites

    Памагити, с unix в целом все сложно у меня, а на freebsd вообще темный лес



  • Добрый

    Версия пф? Версия сквида?

    forum.netgate.com/topic/132302/squid-ldap-группы-ad-нужен-совет/



  • @werter squid 3.5.27 и pfsense 2.4.4(вроде), в общем последнее что есть в доступе на сайте стабильное.
    Спасибо за ответ, увидел много интересного, завтра буду пробовать



  • @flamel
    Просьба отписаться о проделанном. С картинками ) Тема оч актуальна.
    Заранее благодарен.



  • @werter В общем вчера весь день промучился, но успехов ноль, сейчас Squid умирает даже при таком коде:

    auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -k /etc/krb5.keytab
    auth_param negotiate children 15
    auth_param negotiate keep_alive on
    
    acl password proxy_auth REQUIRED
    http_access allow auth
    

    При этом krb5.conf выглядит так:

    [libdefaults]
    default_keytab_name = /etc/krb5.keytab
    default_realm = PRIMVODA.LOCAL
    [realms]
    PRIMVODA.LOCAL = {
    kdc = BDC.PRIMVODA.LOCAL
    kdc = dc.primvoda.local
    admin_server = bdc.primvoda.local
    default_domain = primvoda.local
    }
    [domain_realm]
    .primvoda.local = PRIMVODA.LOCAL
    primvoda.local = PRIMVODA.LOCAL
    

    HOSTS выглядит так:

    127.0.0.1	localhost localhost.primvoda.local
    ::1	localhost localhost.primvoda.local
    192.168.8.8	pfsense.primvoda.local pfsense
    

    А resolf.conf так:

    nameserver 192.168.8.10
    nameserver 192.168.8.11
    search primvoda.local
    

    Причем умирает он после добавления строчки http_access allow auth
    Т.е хелпер negotiate_kerberos_auth не работает?

    Bungled /usr/local/etc/squid/squid.conf line 129: http_access allow auth
    

    Полностью squid.conf выглядит так:

    # This file is automatically generated by pfSense
    # Do not edit manually !
    
    http_port 192.168.8.8:8080 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=10MB cert=/usr/local/etc/squid/serverkey.pem capath=/usr/local/share/certs/ cipher=EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:HIGH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS tls-dh=prime256v1:/etc/dh-parameters.2048 options=NO_SSLv2,NO_SSLv3,SINGLE_DH_USE,SINGLE_ECDH_USE
    
    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 ru
    icon_directory /usr/local/etc/squid/icons
    visible_hostname pfsense
    cache_mgr tech@primvoda.ru
    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
    sslcrtd_program /usr/local/libexec/squid/ssl_crtd -s /var/squid/lib/ssl_db -M 4MB -b 2048
    sslcrtd_children 5
    sslproxy_capath /usr/local/share/certs/
    sslproxy_options NO_SSLv2,NO_SSLv3,SINGLE_DH_USE,SINGLE_ECDH_USE
    sslproxy_cipher EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:HIGH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS
    sslproxy_flags DONT_VERIFY_PEER
    
    logfile_rotate 0
    debug_options rotate=0
    shutdown_lifetime 3 seconds
    # Allow local network(s) on interface(s)
    acl localnet src  192.168.8.0/24
    forwarded_for on
    uri_whitespace strip
    
    acl dynamic urlpath_regex cgi-bin \?
    cache deny dynamic
    
    cache_mem 64 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 100 16 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  8080 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
    
    # SslBump Peek and Splice
    # http://wiki.squid-cache.org/Features/SslPeekAndSplice
    # http://wiki.squid-cache.org/ConfigExamples/Intercept/SslBumpExplicit
    # Match against the current step during ssl_bump evaluation [fast]
    # Never matches and should not be used outside the ssl_bump context.
    #
    # At each SslBump step, Squid evaluates ssl_bump directives to find
    # the next bumping action (e.g., peek or splice). Valid SslBump step
    # values and the corresponding ssl_bump evaluation moments are:
    #   SslBump1: After getting TCP-level and HTTP CONNECT info.
    #   SslBump2: After getting TLS Client Hello info.
    #   SslBump3: After getting TLS Server Hello info.
    # These ACLs exist even when 'SSL/MITM Mode' is set to 'Custom' so that
    # they can be used there for custom configuration.
    acl step1 at_step SslBump1
    acl step2 at_step SslBump2
    acl step3 at_step SslBump3
    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
    
    
    # Custom options before auth
    auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -k /etc/krb5.keytab
    auth_param negotiate children 15
    auth_param negotiate keep_alive on
    
    # включаем авторизацию по паролю
    acl password proxy_auth REQUIRED
    http_access allow auth
    
    ssl_bump peek step1
    ssl_bump bump all
    # Setup allowed ACLs
    # Allow local network(s) on interface(s)
    http_access allow localnet
    # Default block all to be sure
    http_access deny allsrc
    

    Squid просто не знает кто такие auth? Или как?

    При вводе

    kinit -k -t /etc/krb5.keytab HTTP/pfsense.primvoda.local
    
    klist
    Credentials cache: FILE:/tmp/krb5cc_0
            Principal: HTTP/pfsense.primvoda.local@PRIMVODA.LOCAL
    
      Issued                Expires               Principal
    Nov 13 08:41:32 2019  Nov 13 18:41:32 2019  krbtgt/PRIMVODA.LOCAL@PRIMVODA.LOCAL
    
    

    Единственное почему-то ключ -V не работает, он должен заставлять выводить сообщение об успешной авторизации, но на сколько я понимаю если запись появляется то и авторизация работает?

    В общем совсем не могу понять в чем проблема, куда смотреть, это еще не дошел до групп доступа даже.



  • Копаю дальше, проверяю работу хелпера ext_kerberos_ldap_group_acl

    ext
    kerberos_ldap_group.cc(278): pid=82148 :2019/11/13 13:50:21| kerberos_ldap_group: INFO: Starting version 1.3.1sq
    support_group.cc(382): pid=82148 :2019/11/13 13:50:21| kerberos_ldap_group: INFO: Group list group_0@primvoda.local
    support_group.cc(447): pid=82148 :2019/11/13 13:50:21| kerberos_ldap_group: INFO: Group group_0  Domain primvoda.local
    support_netbios.cc(83): pid=82148 :2019/11/13 13:50:21| kerberos_ldap_group: DEBUG: Netbios list NULL
    support_netbios.cc(87): pid=82148 :2019/11/13 13:50:21| kerberos_ldap_group: DEBUG: No netbios names defined.
    support_lserver.cc(82): pid=82148 :2019/11/13 13:50:21| kerberos_ldap_group: DEBUG: ldap server list NULL
    support_lserver.cc(86): pid=82148 :2019/11/13 13:50:21| kerberos_ldap_group: DEBUG: No ldap servers defined.
    
    
    
    support_resolv.cc(407): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: DEBUG: Adding PRIMVODA.LOCAL to list
    support_resolv.cc(443): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: DEBUG: Sorted ldap server names for domain PRIMVODA.LOCAL:
    support_resolv.cc(445): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: DEBUG: Host: uran.primvoda.local Port: 389 Priority: 0 Weight: 100
    support_resolv.cc(445): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: DEBUG: Host: dc.primvoda.local Port: 389 Priority: 0 Weight: 100
    support_resolv.cc(445): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: DEBUG: Host: BDC.primvoda.local Port: 389 Priority: 0 Weight: 100
    support_resolv.cc(445): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: DEBUG: Host: PRIMVODA.LOCAL Port: -1 Priority: -2 Weight: -2
    support_ldap.cc(942): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: DEBUG: Setting up connection to ldap server uran.primvoda.local:389
    support_ldap.cc(953): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: DEBUG: Bind to ldap server with SASL/GSSAPI
    support_sasl.cc(259): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: ERROR: Could not set LDAP_OPT_X_SASL_SECPROPS: maxssf=56: Can't contact LDAP server
    support_ldap.cc(957): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: ERROR: Error while binding to ldap server with SASL/GSSAPI: Can't contact LDAP server
    support_ldap.cc(942): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: DEBUG: Setting up connection to ldap server dc.primvoda.local:389
    support_ldap.cc(953): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: DEBUG: Bind to ldap server with SASL/GSSAPI
    support_sasl.cc(259): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: ERROR: Could not set LDAP_OPT_X_SASL_SECPROPS: maxssf=56: Can't contact LDAP server
    support_ldap.cc(957): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: ERROR: Error while binding to ldap server with SASL/GSSAPI: Can't contact LDAP server
    support_ldap.cc(942): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: DEBUG: Setting up connection to ldap server BDC.primvoda.local:389
    support_ldap.cc(953): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: DEBUG: Bind to ldap server with SASL/GSSAPI
    support_sasl.cc(259): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: ERROR: Could not set LDAP_OPT_X_SASL_SECPROPS: maxssf=56: Can't contact LDAP server
    support_ldap.cc(957): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: ERROR: Error while binding to ldap server with SASL/GSSAPI: Can't contact LDAP server
    support_ldap.cc(942): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: DEBUG: Setting up connection to ldap server PRIMVODA.LOCAL:389
    support_ldap.cc(953): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: DEBUG: Bind to ldap server with SASL/GSSAPI
    support_sasl.cc(259): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: ERROR: Could not set LDAP_OPT_X_SASL_SECPROPS: maxssf=56: Can't contact LDAP server
    support_ldap.cc(957): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: ERROR: Error while binding to ldap server with SASL/GSSAPI: Can't contact LDAP server
    support_ldap.cc(979): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: DEBUG: Error during initialisation of ldap connection: No error: 0
    support_ldap.cc(1048): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: DEBUG: Error during initialisation of ldap connection: No error: 0
    support_member.cc(76): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: INFO: User netscan is not member of group@domain group_0@primvoda.local
    support_member.cc(91): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: DEBUG: Default domain loop: group@domain group_0@primvoda.local
    support_member.cc(119): pid=46565 :2019/11/13 14:05:09| kerberos_ldap_group: DEBUG: Default group loop: group@domain group_0@primvoda.local
    
    

    В конце видно что он отвечает что пользователь не является членом группы, но он является.
    Да и в целом на сколько я понял он не подключается к серверу, на одном из серверов временно отключили брандмауэр - ничего не изменилось.
    Местный антиспам не даёт отправить весь код, там кусок в котором он видит все три контроллера домена вырезан





  • @werter да я уже читал это, но с пфсенс какая то другая оказия



  • Остается собраться с духом (и гуглопереводчиком) и обратиться в англо-ветку.



  • Приветствую!

    Я настраивал по https://journeyofthegeek.com/2017/12/30/pfsense-squid-kerberos/.

    Все получилось. (Только не надо включать ssl фильтрацию в настройках Squid-а. Он и так теперь работает как надо)

    Использую непрозрачный Squid + SquidGuard.
    Авторизация в Squid - Kerberos.
    Доступ ограничиваю SquidGuard + фильтры LDAP.



  • @Gonzales Приветствую!
    Всё получилось! Пользователь получает тикет и успешно заходит в интернет без всяких логинов\паролей.
    Расскажите подробней, а при отключении фильтрации ssl как ограничивать пользователям доступ к сайтам по https?
    И про фильтры ldap вы имеете ввиду хелпер ext_ldap_group_acl ???



  • При отключенной опции
    Services
    -> Squid Proxy Server
    ->HTTPS/SSL Interception


    https благополучно фильтруются. ( https://forum.netgate.com/topic/127178/очередной-вопрос-по-фильтрации-https-в-squid )

    В SquidGuard в настройках Target categories указываем для фильтрации Domain List (Например mail.ru youtube.com) и URL List (mail.ru/ youtube.com/)

    Фильтры LDAP:

    в SquidGuard -> General settings:

    Strip NT domain name [ V ]
    Strip Kerberos Realm [ V ]

    без этих опций не работает, т.к. имя объекта будет иметь вид user@domain.local, а нам надо просто user.

    в SquidGuard -> Groups ACL -> Client (source):

    ldapusersearch ldap://serverDC.domain.local:3268/DC=DOMAIN,DC=LOCAL?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=IT_Group%2cOU=IT%2cOU=Users%2cDC=DOMAIN%2cDC=LOCAL))

    И говорим этой группе, как поступать с каждым таргетом в Target Rules List.

    Еще ссылки:
    http://sophie.aero.jussieu.fr/distrib/Mandriva/2011.0/x86_64/by-pkgid/11346c3ea8d66e97756aab0a36574da7/files/34
    тут про фильтр ldap. Мне помогла, т.к. я не указывал порт (пол дня потратил из за тупости и/или лени).

    https://open-networks.ru/d/47-pfsense-squid-clamav
    тут на коротке общие настройки



  • @Gonzales

    Enable LDAP FilterEnable options for setup ldap connection to create filters with ldap search
    LDAP DN
    CN=**учетка та же что и керберос?**,OU=service-accounts,DC=primvoda,DC=local
    Configure your LDAP DN (ex: cn=Administrator,cn=Users,dc=domain)
    LDAP DN Password
    **какойтопароль**
    Password must be initialize with letters (Ex: Change123), valid format: [a-zA-Z\/][a-zA-Z0-9/_\-\.\/\:\%\+\?=&]
    [V] Strip NT domain nameStrip NT domain name component from user names (/ or \ separated).
    [V] Strip Kerberos RealmStrip Kerberos Realm component from user names (@ separated).
    

    Я правильно все понял?

    ldapusersearch ldap://bdc.primvoda.local:3268 почему именно этот порт?/DC=PRIMVODA,DC=LOCAL?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=group_0%2cOU=squid%2cOU=service-groups%2cDC=PRIMVODA%2cDC=LOCAL))

    так выглядит группа, но суть в том что фильтрация не работает, лог пустой, сквидгуард говорит что все ок - включен. Пытался фильтровать через common ACL, там стоит запрет на все вообще, а все равно пускает в сеть, может я где то на сквиде не так что-то ввел?

    Аутентификация керберос выглядит так:

    auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -k /usr/local/etc/squid/krb5.keytab
    auth_param negotiate children 1000
    auth_param negotiate keep_alive on
    
    # включаем авторизацию по паролю
    acl auth proxy_auth REQUIRED
    http_access allow auth
    http_access deny !auth
    

    Интеграция squidguard создана автоматически

    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
    


  • Порт можно узнать nmap-ом.

    3268/tcp  open  globalcatLDAP
    

    После того как делаете изменения в настройках SquidGuard, нажимаете в Global settings кнопку [V]Apply ?

    Что в логах cat /var/squidGuard/log/squidGuard.log?

    Попробовать в Squid поставить http_access deny !auth перед http_access allow auth.



  • @Gonzales
    На счет порта уже разобрался, даже проверил открыт ли он на контроллере.

    18.11.2019 13:20:36	squidGuard stopped (1574047236.554)
    18.11.2019 13:20:36	squidGuard stopped (1574047236.552)
    18.11.2019 13:20:36	squidGuard stopped (1574047236.527)
    18.11.2019 13:20:36	squidGuard stopped (1574047236.527)
    18.11.2019 13:20:36	squidGuard stopped (1574047236.526)
    18.11.2019 13:20:36	squidGuard stopped (1574047236.525)
    18.11.2019 13:20:36	squidGuard stopped (1574047236.523)
    18.11.2019 13:20:36	squidGuard stopped (1574047236.520)
    18.11.2019 13:20:29	Added LDAP source: krivoshein-ay@primvoda.local
    18.11.2019 13:20:29	(squidGuard): ldap_search_ext_s failed: Operations error (params: dc=primvoda,dc=local, 2, (&(sAMAccountName=krivoshein-ay@primvoda.local)(memberOf=CN=group_0,OU=squid,OU=service-groups,DC=primvoda,DC=local)), sAMAccountName)
    18.11.2019 13:17:43	squidGuard ready for requests (1574047063.673)
    18.11.2019 13:17:43	Info: recalculating alarm in 38477 seconds
    18.11.2019 13:17:43	squidGuard 1.4 started (1574047063.464)
    

    Примерно так выглядит весь лог, только одинаковых записей о попытке авторизации пользователя больше.
    В конфиге местами поменял строчки, ничего не поменялось.
    apply применял, как и перезагрузку собственно



  • krivoshein-ay@primvoda.local - должно быть krivoshein-ay

    Галки в SquidGuard в General стоят?
    Strip NT domain name [ V ]
    Strip Kerberos Realm [ V ]



  • @Gonzales стоят



  • @Gonzales не совсем понимаю как логи пишутся, последняя запись "остановлено", а в general settings "STARTED"



  • @Gonzales ошибка с логином

    18.11.2019 13:57:46	Added LDAP source: krivoshein-ay@primvoda.local
    18.11.2019 13:57:46	(squidGuard): ldap_search_ext_s failed: Operations error (params: dc=primvoda,dc=local, 2, (&(sAMAccountName=krivoshein-ay@primvoda.local)(memberOf=CN=group_0,OU=squid,OU=service-groups,DC=primvoda,DC=local)), sAMAccountName)
    

    Возникает когда я отключаю лдап в general settings, когда включаю начинается событие

    18.11.2019 13:57:49	squidGuard stopped (1574049469.524)
    


  • Попробуй убрать enable ldap filter в General settings, нажать apply и посмотреть логи на предмет отсутствия
    squidGuard stopped.

    В учетной записи (на контроллере домена) посмотреть :

    Не стоит галка на "Без предварительной проверки подлинности Kerberos" (вот с этим в свое время тоже намучался, когда отдельно squid настраивал на centos-е)
    Стоит галка на "Данная учетная запись поддерживает 128-разрядное" (если делал по мануалу)

    d3b56fad-d308-4ee8-af39-c9e8191f31c6-image.png

    Можно скрин с General settings или строку с LDAP DN?



  • @Gonzales 1123.JPG
    учетка создавалась по более простому шифрованию, не AES, попробовать пересоздать?
    Если убрать галочку enable LDAP filter SG чудесным образом оживает



  • @Gonzales аутентификация при этом на самом сквиде должна быть "none"? помимо того что в дополнительных свойствах прописали



  • На сквиде все норм. (должно быть).

    У меня так:
    В настройках Squid:
    [General]
    Enable Squid Proxy - [ V ]
    Keep Settings/Data - [ V ]
    Proxy Interface(s) - [ LAN, loopback ]
    Proxy Port - [ 3128 ]
    ICP Port - <empty>
    Allow Users on Interface - [ V ]
    Resolve DNS IPv4 First - [V]
    Disable ICMP - [ ]
    Use Alternate DNS Servers for the Proxy Server - <empty>
    Transparent HTTP Proxy - [ ]
    HTTPS/SSL Interception - [ ]

    в адвансед:
    auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -d -k /usr/local/etc/squid/proxy-pf.keytab
    auth_param negotiate children 60
    auth_param negotiate keep_alive off

    acl auth proxy_auth REQUIRED
    http_access deny !auth
    http_access allow auth

    На вкладке Real time можно посмотреть.

    С SG непонять.. Надо попробовать убрать enable LDAP filter, добавить пару сайтов в блэклист и попробовать на них зайти. Если не заходится, значит SG отрабатывает и значит проблема только в подключении к LDAP, т.е. в строке LDAP DN и/или LDAP DN Password в General settings.

    Не стоит галка на "Без предварительной проверки подлинности Kerberos" - это проверял?



  • @Gonzales галка не стоит, только я так и не понял, она должна стоять или нет?
    Поидее для работы с Ldap SG нужна любая учетка способная читать каталоги LDAP, т.е я могу попробовать любую другую учетку поставить сюда?



  • Да, можно попробовать другую. Вот еще господа с форума писали

    "Разобрался с авторизацией squid через LDAP. Нужно указать порт 3268 вместо стандартного 389. Теперь pf2ad не нужен.

    Squidguard заработал, когда поставил пароль на учётку из 8 букв без цифр, символов. Со сложным паролем не работает(

    Подключение к AD прошло успешно! :)"

    https://forum.netgate.com/topic/122291/pf2ad-squidguard-не-работает-squidguard/7



  • @flamel Ну как успехи?



  • @Gonzales
    Я почти обрадовался, пароль поставил простой и СГ отвис, но теперь веселее, бесконечный запрос логина и пароля

    ldapusersearch ldap://bdc.primvoda.local:3268/DC=PRIMVODA,DC=LOCAL?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=group_0%2cOU=squid%2cOU=service-groups%2cDC=PRIMVODA%2cDC=LOCAL))
    

    Лист блокировок:

    18.11.2019 11:48:35	192.168.12.147/192.168.12.147	r2---sn-ug5onuxaxjvh-n8vs.googlevideo.com:443	Request(default/none/-) krivoshein-ay@primvoda.local CONNECT REDIRECT
    18.11.2019 11:48:21	192.168.12.147/192.168.12.147	sync.opera.com:443	Request(default/none/-) krivoshein-ay@primvoda.local CONNECT REDIRECT
    18.11.2019 11:48:18	192.168.12.147/192.168.12.147	r2---sn-ug5onuxaxjvh-n8vs.googlevideo.com:443	Request(default/none/-) krivoshein-ay@primvoda.local CONNECT REDIRECT
    18.11.2019 11:48:01	192.168.12.147/192.168.12.147	r2---sn-ug5onuxaxjvh-n8vs.googlevideo.com:443	Request(default/none/-) krivoshein-ay@primvoda.local CONNECT REDIRECT
    

    СГ работает

    18.11.2019 16:08:27	squidGuard ready for requests (1574057307.294)
    18.11.2019 16:08:27	Info: recalculating alarm in 28233 seconds
    18.11.2019 16:08:27	squidGuard 1.4 started (1574057307.050)
    

    может дело в галке "Без предварительной проверки подлинности kerberos"? она должна стоять или нет?



  • Нет не должна.. И это к Squid-у относится, но у тебя авторизация проходит. Или нет?



  • @Gonzales в том то и дело что нет, бесконечный запрос логина и пароля



  • @flamel Попробуй пока вырубить SG и разобраться со Squid.

    УЗ пересоздавал или просто пароль изменил?

    keytab переформировывал?



  • @Gonzales так все таки надо чтобы одна и та же учетка была? Тогда думаю завтра смогу решить проблему, а то выгнали с работы из за снега) если все получится напишу здесь статью, а то сам потом забуду все)



  • Если изменил пароль на УЗ на которую изначально формировал keytab для squid-а , то его вроде бы надо заново сформировать.



  • @Gonzales нет, я создал ещё одну учетку, про то что если изменил пароль надо ещё и Кейтаб делать я вкурсе, просто учетка сг и сквида должна быть одна или можно разные? Если должна быть одна то вот в этом у меня и проблема



  • @flamel Не исключено.. Ждем результата :)



  • @Gonzales В общем решил по мануалу попробовать AES 128, и столкнулся со странной проблемой, сначала пришлось делать ktutil destroy т.к было две записи в ktutil, исправил, теперь:

    FILE:/etc/krb5.keytab:
    
    Vno  Type                     Principal                                   Aliases
      6  aes128-cts-hmac-sha1-96  HTTP/pfsense.primvoda.local@PRIMVODA.LOCAL
    
    

    Но сквид ругается на то что шифрование не "rc4-hmac"

    negotiate_kerberos_auth: ERROR: gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information. Request ticket server HTTP/pfsense.primvoda.local@PRIMVODA.LOCAL kvno 6 found in keytab but not with enctype rc4-hmac
    

    до смешного уже) пока не могу никак найти информацию где и как прописывается использование AES 128



  • @flamel В AD в настройках пользователя поставил поддержку aes128?



  • @Gonzales да, и в krb5.conf прописал aes, но такое чувство будто хелпер запрашивает именно rc



  • @Gonzales в общем победил тем что сделал новый кейтаб с прежним шифрованием, и все заработало, я от радости чуть не умер, но радость была не долгой, через пол часа аутентификация отвалилась с ошибкой:

    Date-Time	Сообщение
    01.01.1970 10:00:00	negotiate_kerberos_auth: ERROR: gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information. Request ticket server HTTP/Pfsense.primvoda.local@PRIMVODA.LOCAL not found in keytab (ticket kvno 8)
    

    и почему то все даты стали 01.01.1970



  • Добрый

    https://forum.netgate.com/topic/128203/squid-ad-kerberos/

    Нашёл в документации хелпера, параметр -t ^_^/
    Итоговая запись:
    auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -s GSS_C_NO_NAME -k /usr/local/etc/squid/proxy.keytab -t none

    https://blog.stefan-macke.com/2011/04/19/single-sign-on-with-kerberos-using-debian-and-windows-server-2008-r2/

    Unspecified GSS failure. Minor code may provide more information (, )
    → wrong kvno or machine password in /etc/krb5.keytab → recreate the keytab using the correct information
    → OR problem with local Kerberos ticket cache on your workstation, use Kerbtray.exe to purge the ticket cache and open the website in IE again

    Вместо Kerbtray пользовать klist (https://blogs.technet.microsoft.com/tspring/2014/06/23/viewing-and-purging-cached-kerberos-tickets/)

    https://forum.ubuntu.ru/index.php?topic=279873.0

    еще важно в настройках прокси писать имя прокси сервера так, как это было при получении keytab файла, настраиваем DNS прямую и обратную зоны, или вообще используем всегда только ip адрес, но важно чтобы всегда всё было одинаково. Например для моего домена domain.ru и имени прокси squid мы делаем keytab для squid.domain.ru, соответственно например в винде в настройках прокси пишем squid.domain.ru, а не просто squid или 192.168.1.7
    у вас соответственно s76-proxy.yar.local но не 10.42.60.23
    Помогла вот эта статья, рекомендую
    https://rtzra.ru/wiki/software/squid/squid-active-directory-kerberos

    Подробный мануал по squid + ldap + kerberos. Рекомендую заглянуть docs.diladele.com/administrator_guide_stable/active_directory/index.html

    https://www.linux.org.ru/forum/general/14639957
    https://www.opennet.ru/openforum/vsluhforumID12/7019.html
    Целых 10 статей по настройке squid blog.it-kb.ru/2014/06/16/forward-proxy-squid-3-3-on-ubuntu-server-14-04-lts-part-1-install-os-on-hyper-v-generation-2-vm/

    Зы. Нашел еще "Снижение нагрузки на процессорные ресурсы при использовании хелпера Kerberos-аутентификации (negotiate_kerberos_auth) для прокси-сервера Squid 3" blog.it-kb.ru/2015/04/30/reduction-of-high-peak-load-on-cpu-resources-by-using-kerberos-authentication-helper-negotiate_kerberos_auth-for-the-squid-3-proxy-server/ Может пригодиться.



  • Добрый.
    @flamel
    Все карты на руках. Ждем мануал с картинками )


Log in to reply