Squid + ad + kerberos



  • Всем привет! pfsense 2.4.2_1
    Настраиваю сквид на работу с АД. Прописал сквид в ДНС, создал учётку, настроил krb5.conf, проверил - получил билет. Создал принципиал, keytab, скопировал keytab в /usr/local/etc/squid/. В настройках сквид: Custom Options (Before Auth), добавил правила:

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

    krb5.conf:
    [libdefaults]
    default_realm = EXAMPLE.LOCAL
    dns_lookup_realm = true
    dns_lookup_kdc = true

    [realms]
    EXAMPLE.LOCAL = {
    kdc = kdc.example.local
    }

    [domain_realm]
    .example.local = EXAMPLE.LOCAL
    example.local = EXAMPLE.LOCAL

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

    При попытке зайти на сайт, предлагает ввести логин пароль, авторизация не проходит. В windows 7 адрес сквида прописан как FQDN 3128

    В логах:
    negotiate_kerberos_auth: ERROR: gss_accept_sec_context() failed: Unspecified GSS failure.  Minor code may provide more information. Request ticket server HTTP/proxy.example.local@EXAMPLE.LOCAL not found in keytab (ticket kvno 3)

    Что ему не нравится в keytab? Нужна авторизация по Kerberos, т.к. по NTLM лог засоряется сообщениями TCP_DENIED/407 и сайт теряет подключение.

    wiki.squid-cache.org/ConfigExamples/Authenticate/Ntlm
    Note that when using NTLM authentication,you will see two "TCP_DENIED/407" entries in access.log for every request. This is due to the challenge-response process of NTLM.



  • Добрый.
    Поиск по "negotiate_kerberos_auth: ERROR: gss_accept_sec_context() failed: Unspecified GSS failure" должен помочь.



  • Я пишу сюда, потому что гугл не помог(



  • Возможно, не полностью создался keytab. Размер 382 байта. Может кто подскажет, почему так происходит?

    ktpass -out C:\squidproxy.keytab -princ HTTP/proxy.example.local@EXAMPLE.local -mapUser squid@EXAMPLE.LOCAL -crypto AES256-SHA1 -pass 'password' -ptype KRB5_NT_PRINCIPAL



  • Добрый.
    Попробуйте в англоветке задать вопрос. Хуже точно не будет.



  • Pfsense случаем не в виртуалке?



  • 1 pfsense в виртуалке и 1 железный.
    Проблему с кейтабом решил. Прокси работает с ad через kerberos, но внезапно сайт оказывается недоступен - Connection refused - 61 или 111. Помогает F5, но не всегда. Эта ошибка появляется со стандартными настройками, без авторизации , а также если настроить любой тип авторизации. Периодичность несколько раз в час, чем больше пользователей, тем чаще. Позже посмотрю wireshark'ом, в момент ошибки.
    Сейчас пробую с доп. параметрами:

    cache deny all
    balance_on_multiple_ip on
    ignore_unknown_nameservers on
    half_closed_clients off

    Если не получится, буду собирать 4 -ую версию.

    Ещё не до конца понял какой тип шифрования указывать в ktpass и в krb5.conf. Если везде ставлю AES256-SHA1, то авторизация не работает. Когда ставлю -crypto all, а в krb5.conf удаляю строки с шифрованием, тогда работает. При этом в настройках пользователя стоит использование AES128-SHA1 и AES256-SHA1.



  • Kerberos сильно грузит процессор. Куда я должен скопировать строку “KRB5RCACHETYPE=none export KRB5RCACHETYPE” в файле /usr/local/pkg/squid.inc, чтобы отключить кэш ?



  • Добрый.
    Никуда. Файл /usr/local/pkg/squid.inc после перезагрузки вернется к первоначальному состоянию.



  • Хитрый дистрибутив. Подскажите какой файл отредактировать, чтобы после перезагрузки сквид запустился без этого кеша.



  • Добрый.
    Правильный дистрибутив. Как и др., к-ые не дают править конф. файлы напрямую.

    Возможно, в настройках squid прописать свои опции в Custom Options, но вот в каком виде  :'(

    Попробуйте в англ. ветке задать вопрос - там разрабы сидят.

    Ps. https://forum.pfsense.org/index.php?topic=66105.0 https://forum.lissyara.su/soft-f3/squid-keshirovanie-kerberos-avtorizacii-t43042.html
    Как я понял, надо чтобы KRB5RCACHETYPE=none export KRB5RCACHETYPE отработало до запуска squid. Есть такой пакет в пф Shellcmd. Может он поможет.



  • Нашёл в документации хелпера, параметр -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



  • Супер  ;) Это в Custom Options сквида вписывать ?

    Ps. А я нашел /etc/rc.conf, куда вносить то, что необходимо запускать при старте pfsense.



  • В котором написано:

    THIS FILE DOES NOTHING, DO NOT MAKE CONFIG CHANGES HERE

    Позже напишу инструкцию.



  • Попробуйте перезагрузиться. И проверить этот файл на наличие вашей правки.



  • https://fakirss.wordpress.com/2017/05/04/авторизация-в-squid-через-kerberos-на-pfsense/

    На вкладке General нажимаем на кнопку Show Advanced Options и в поле Custom Options (Before Auth) прописываем:

    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

    P.s. https://doc.pfsense.org/index.php/2.4.3_New_Features_and_Changes

    Added support for custom shutdown scripts in /usr/local/etc/rc.d