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 authkrb5.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.
-
-
Попробуйте перезагрузиться. И проверить этот файл на наличие вашей правки.
-
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