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 и она же единственная - чтение логов сквида. И гугление после.



  • @werter:

    А у нас идея №1 и она же единственная - чтение логов сквида. И гугление после.

    Снова Вы? Активность однако… Какой именно ответ Вы хотите услышать/увидеть? В каждом из описанных мною вариантов сайт icloud.com меня пускает к себе. Вот только приглашение ввода учетного имени и пароля появляется, увы, не каждый раз.  Картинки прилагаются. И даже какие-то куски логов… Разобраться бы :)





    deny1.txt
    allow1.txt



  • Доброго.
    Моя активность вам уже 1 проблему со сквидом решила.

    Как вы заметили (да?) в логах полно TCP_MISS/200, TCP_DENIED/407 etc. Гуглите.
    Так же смотрите cache.log Уверен, что там тоже есть сообщения , к-ые можно использовать для решения.

    Учу гуглить за деньги.



  • @werter:

    в логах полно TCP_MISS/200, TCP_DENIED/407 etc. Гуглите.
    Так же смотрите cache.log Уверен, что там тоже есть сообщения , к-ые можно использовать для решения.

    Блин, Зин, а где ответ-то? Мне не нужен психоаналитик, мне конкретные рекомендации по существу нужны. А лекции я и сам могу… ;)



  • Доброго.
    @MaximKa_Che:

    Блин, Зин, а где ответ-то? Мне не нужен психоаналитик, мне конкретные рекомендации по существу нужны. А лекции я и сам могу… ;)

    Дерзайте. Направление дано. Ветра в паруса.

    Учу гуглить. За деньги. Дорого.



  • @werter:

    Дерзайте. Направление дано. Ветра в паруса.

    По существу:

    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), однако разумного объяснения я там изначально не нашел.


Log in to reply