LDAP+iCloud+Mozilla
-
День добрый!
Настроив авторизацию Squid посредством Kerberos, неожиданно получил противную проблему: на моей машине с Mac OS X пропал доступ к App Store и iCloud. Пытаясь разобраться глубже, понял, что проблема кроется именно в реакции iCloud на ldap авторизацию. Стоит отметить, что по понятным причинам сама машина с Mac OS доменный способ авторизации не поддерживает ;). Для этого у нее предусмотрен другой (Basic) способ получения доступа к прокси серверу. Тем не менее, проблема оказалась еще интереснее…
Подумав о том, что доступ к iCloud через "родное" приложение можно заменить на менее приятный, но работающий вариант с Web-интерфейсом браузера, я жестоко ошибался. Проще привести результаты:1. Win10 с авторизацией Kerberos
Moziila - запрашивает имя и пароль (все остальные сайты работают без проблем)
IE - пускает на сайт2. Win10 с авторизацией по IP
Moziila - пускает на сайт
IE - пускает на сайт3. Mac OS X (Basic авторизация)
Moziila - НЕ пускает на сайт
Safary - НЕ пускает на сайт4. Win 2012 ведёт себя с Moziila и IE аналогично пунктам 1 и 2
Пример конфигурации, вызывающей проблемы с iCloud:
Authorization through Kerberos
auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -r -s HTTP/pfsense.домен.ru@ДОМЕН.RU
auth_param negotiate children 10
auth_param negotiate keep_alive on
external_acl_type ldap_groups ttl=15 %LOGIN /usr/local/libexec/squid/ext_ldap_group_acl -R -v 3 -b "dc=домен,dc=ru" -D Admin@домен.ru -w Password -f "(&(objectclass=user)(sAMAccountName=%v)(memberOf=CN=%a,CN=Users,DC=домен,DC=ru))" -K -P mdc.домен.ru
acl SquidAccessGroup external ldap_groups SquidAccessGroup
http_access deny !SquidAccessGroup -
А у нас идея №1 и она же единственная - чтение логов сквида. И гугление после.
-
А у нас идея №1 и она же единственная - чтение логов сквида. И гугление после.
Снова Вы? Активность однако… Какой именно ответ Вы хотите услышать/увидеть? В каждом из описанных мною вариантов сайт icloud.com меня пускает к себе. Вот только приглашение ввода учетного имени и пароля появляется, увы, не каждый раз. Картинки прилагаются. И даже какие-то куски логов… Разобраться бы :)
-
Доброго.
Моя активность вам уже 1 проблему со сквидом решила.Как вы заметили (да?) в логах полно TCP_MISS/200, TCP_DENIED/407 etc. Гуглите.
Так же смотрите cache.log Уверен, что там тоже есть сообщения , к-ые можно использовать для решения.Учу гуглить за деньги.
-
в логах полно TCP_MISS/200, TCP_DENIED/407 etc. Гуглите.
Так же смотрите cache.log Уверен, что там тоже есть сообщения , к-ые можно использовать для решения.Блин, Зин, а где ответ-то? Мне не нужен психоаналитик, мне конкретные рекомендации по существу нужны. А лекции я и сам могу… ;)
-
Доброго.
@MaximKa_Che:Блин, Зин, а где ответ-то? Мне не нужен психоаналитик, мне конкретные рекомендации по существу нужны. А лекции я и сам могу… ;)
Дерзайте. Направление дано. Ветра в паруса.
Учу гуглить. За деньги. Дорого.
-
Дерзайте. Направление дано. Ветра в паруса.
По существу:
1. Опытным путем мною установлено, что при отсутствии возможности вручную ввести имя/пароль, iCloud выдает сообщение об ошибке.
a. При явном использовании LDAP авторизации (Squid - Authentification - LDAP) запрашивается имя и пароль: как следствие, все работает
b. При использовании только Basic авторизации в Custom Options запрашивается имя и пароль: как следствие, все работает
c. При использовании только Kerberos авторизации в Custom Options НЕ запрашивается имя и пароль: как следствие, при доступе к сайту возникает ошибкаОднако это справедливо только для доменных машин с установленной Windows. На Mac OS X и пункты 1a, 1b не работают.
2. Повторю еще раз: попадание в кеш и записи TCP_HIT в access.log преобладают. Со всеми остальными сайтами кроме icloud.com проблем нет. Куда "до ветру" идти?
Пример конфигурации, вызывающей проблемы с iCloud:
Authorization through Kerberos
auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -r -s HTTP/pfsense.домен.ru@ДОМЕН.RU
auth_param negotiate children 10
auth_param negotiate keep_alive on
external_acl_type ldap_groups ttl=15 %LOGIN /usr/local/libexec/squid/ext_ldap_group_acl -R -v 3 -b "dc=домен,dc=ru" -D Admin@домен.ru -w Password -f "(&(objectclass=user)(sAMAccountName=%v)(memberOf=CN=%a,CN=Users,DC=домен,DC=ru))" -K -P mdc.домен.ru
acl SquidAccessGroup external ldap_groups SquidAccessGroup
http_access deny !SquidAccessGroup -
Ощущение такое, что negotiate_kerberos_auth, извлекая имя пользователя, неверно передает его в запрос к сайту. Включив Debug режим в negotiate_kerberos_auth, получил сообщение об ошибке:
negotiate_kerberos_auth.cc(180): pid=9011 :2017/11/19 08:43:47|
negotiate_kerberos_auth: ERROR: gss_accept_sec_context() failed: Unspecified GSS failure.
Minor code may provide more information. Request is a replayИ это только с iCloud, и только с Mozilla (в Windows). C Mac'ом все еще печальнее. Буду разбираться.
-
Ну что, спасение утопающих - дел их же рук?
Вдруг кому-нибудь пригодится: все сервисы от Apple оказались слишком защищенными, в результате чего включенная по умолчанию опция ssl-bump, перехватывающая https-трафик, воспринималась, судя по всему, как попытка взлома, после чего, в частности, iCloud не пускал к себе. Пришлось отключить :-).
Не думаю, что отключение критично для всех доменов от Apple, однако пока я решил проблему так:
acl SquidPass dstdom_regex -i .*apple.com
acl SquidPass dstdom_regex -i .*icloud.com
acl SquidPass dstdom_regex -i .*akamaihd.net
acl SquidPass dstdom_regex -i .*ssl.gstatic.com
acl SquidPass dstdom_regex -i .*mzstatic.com
acl SquidPass dstdom_regex -i .*itunes.com
acl SquidPass dstdom_regex -i .*icloud-content.com
ssl_bump none SquidPassПомог английский топик (https://forum.pfsense.org/index.php?topic=90908.0), однако разумного объяснения я там изначально не нашел.