PFSENSE: Squid + ADGroups + HTTPS



  • 4f9adef8-c804-43b4-a05e-373c005b7f8f-image.png
    5f93b9d5-4c08-47eb-b4e0-6c7db22607fc-image.png
    Лупбэк выбираем для lightsquid, но о нём в другой раз (возможно).
    Отключаем Transparent HTTP Proxy
    Отключаем HTTPS/SSL Interception если включен (для фильтрации HTTPS трафика данная галочка не нужна).
    Затем идём на сервак с AD и формируем keytab файл.
    Для этого создаём доменную учетную запись для нашего прокси, ЕСЛИ У ВАС СЛОЖНАЯ СТРУКТУРА ДОМЕНА используйте ПРОСТОЙ пароль! Просто набор букв, без цифр, спецсимволов и заглавных(последнее не точно).
    Тут очень важен вопрос шифрования, у меня AES128 и AES256 не заработал(спасибо домену .local и еще очень многим факторам кривизны), но есть подтверждения что данная настройка работает.
    Но! Если решите использовать нормальное шифрование не забудьте включить его в настройках учетной записи в AD.
    5f468c07-5118-4bc0-b562-973e0271f501-image.png
    Сам кейтаб формируется командой ktpass, советую подробнее почитать что да как, прежде чем использовать её, но как пример:

    # ktpass -princ HTTP/pfsense.domain.local@DOMAIN.LOCAL -mapuser admin_squid -pass 3EYldza1sR -**crypto All** -ptype KRB5_NT_PRINCIPAL -out C:\keytabs\PROXY.keytab
    

    где crypto All не забудьте подставить своё! Я же использовал простое шифрование.

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

    Переходим в терминальный режим подключившись по SSH или напрямую и там редактируем /etc/krb5.conf согласно настройкам нашего домена (если его нет - создаём). Пример:
    fe16d5e3-d6df-4e62-b07f-0a390b1cbd41-image.png
    Желательно проверить работу kerberos с помощью kinit.
    Далее самое интересное, возвращаемся в pfsense, открываем squid и в самом низу открываем расширенные опции (перед этим во вкладке аутентификации главное отключить всё).
    В поле Custom Options (Before Auth) вносим следующее:
    bed5b9aa-f9a6-4f22-80b1-87c749f386f0-image.png

    И да, кейтаб используемый мной для аутентификации валяется именно по тому пути, не помню почему так, но вроде как оттуда хелперу легче его брать.
    Это и есть наша аутентификация, уже сейчас можно проверить её работу, при попытке идти в интернет пользователю домена должно пускать, а если локальный пользователь то запрашивать логин\пароль.
    SquidGuard:
    Устанавливаем также стандартным менеджером пакетов, здесь мы настроим наши группы доступа, вайт и блек листы и тд.
    В настройка SquidGuard, в блоке LDAP Options вводим данные нашей учетной записи используемой для керберос аутентификации в следующем виде:

    CN=sg,OU=service-accounts,DC=domain,DC=local
    

    В некоторых случаях данный блок надо заключить либо в одинарные, либо в двойные скобочки:

    'CN=sg,OU=service-accounts,DC=domain,DC=local'
    "CN=sg,OU=service-accounts,DC=domain,DC=local"
    

    Не могу сказать от чего это зависит, но в некоторых случаях решает проблемы, в моём работало и без скобочек.
    Обязательно ставим эти галочки:
    fce1ce90-77fa-4e15-96f5-394b145b59ee-image.png
    т.к вся эта система очень чувствительна к регистрам и тд.
    Далее переходим в раздел Groups ACL и в поле Client (source) формируем лдап запрос по которому будет производится поиск принадлежности пользователя к группе, как пример:
    a8f11fbb-16b0-4954-b28f-20c289b53b5c-image.png
    Здесь же настраиваем target rules лист и радуемся жизни - должно всё работать!)
    Ах да, чуть не забыл:
    7ad9cae9-6bbc-42aa-a2e5-5e75dcb48c8c-image.png
    Если что то забыл-прошу дополнить, отредактируем, надеюсь данная статья кому то поможет в настройке и реализации прокси)
    Извиняюсь за местами плохое качество текста, боролся с антиспамом akismet.com, будь он проклят.



  • Добрый

    @flamel
    Спасибо за труд )

    Для этого создаём доменную учетную запись для нашего прокси,

    Я бы только на этой учетке поставил галку на "Без предварительной проверки подлинности Kerberos".

    В некоторых случаях данный блок надо заключить либо в одинарные, либо в двойные скобочки:

    Предположу ,что кавычки нужны, если есть пробелы или НЕлатинские символы.

    Ошибка? В строке "auth_param negotiate program ..." указано "-k /usr/local/etc/squid/squid.keytab". Однако, выше в /etc/krb5.conf указано "default_keytab_name /etc/krb5.keytab". И согласно manpages.ubuntu.com/manpages/bionic/en/man8/negotiate_kerberos_auth.8.html

    -k Keytab-Name
    Provide Kerberos Keytab Name (Default: /etc/krb5.keytab)

    Ах да, чуть не забыл:

    Это можно прямо в ГУИ сквида делать? Есть ли пункт для таких случаев (что-то типа Custom Options (Before Start))? Сквид же правленное руками в его конфигах после ребута затирает ? Проверяли ребутом пф?
    Разобрался )
    manpages.ubuntu.com/manpages/bionic/en/man8/negotiate_kerberos_auth.8.html

    Kerberos can keep a replay cache to detect the reuse of Kerberos tickets (usually only
    possible in a 5 minute window) . If squid is under high load with Negotiate(Kerberos)
    proxy authentication requests the replay cache checks can create high CPU load. If the
    environment does not require high security the replay cache check can be disabled for MIT
    based Kerberos implementations by adding the below to the startup script or use the -t none option.

    KRB5RCACHETYPE=none export KRB5RCACHETYPE

    Т.е. или пользовать "костыль" в виде ручной правки squid.inc с добавлением строки с "KRB5RCACHETYPE=none export KRB5RCACHETYPE" или добавить в конец "auth_param negotiate program /path/to/negotiate_kerberos_auth" параметр "-t none". Что у вас и сделано.
    Смело можно удалять добавленную руками строку в squid.inc, перезагружать squid и проверять.

    На время теста можно добавить в "auth_param negotiate program /path/to/negotiate_kerberos_auth" параметр -d
    interface31.ru/tech_it/2015/06/nastraivaem-squid-dlya-raboty-s-active-directory-chast-2-kerberos-autentifikaciya.html

    Зы. Просьба, вместо скринов (части конфигов) пользовать текст.



  • @werter я полностью не разобрался с -t none и правкой записи в стартовом скрипте, но вроде правка записи в стартовом скрипте не работает именно на ПФсенс, мол где то это исправляется, сейчас уже не вспомню.
    Скрины были использованы потому что местный антиспам блокировал все :( пропустил только так



  • Добрый
    @flamel

    я полностью не разобрался с -t none и правкой записи в стартовом скрипте

    Объяснение и решение выше. Пробуйте.

    Скрины были использованы потому что местный антиспам блокировал все :( пропустил только так

    Пользуйте тэг "Code":

    40627d18-81de-435e-8cab-da6990ea4c71-image.png

    Пример:

    ldapusersearch ..
    


  • @werter в том то и дело) я его использовал, а все равно, я скрины делал с предпросмотра



  • @flamel
    Уговорили.
    ЧЯДНТ?

    У нас с вами "интернеты" разные, видимо.

    [loggining]
    Default = FILE:/var/log/krb5libs.log
    kdc = FILE:/var/log/krb5kdc.log
    admin_server = FILE:/var/log/kadmin.log
    
    [libdefaults]
    default_realn = DOMAIN,LOCAL
    default_keytab_nane = /etc/krb5.keytab
    dns_lookup_realn = false
    dns_lookup_kdc = true
    
    [realms]
    DOMAIN.LOCAL = {
    kdc = del.donain.local
    kdc = dc2.donain.local
    kdc = dc3.donain.leal
    adnin_server = dc.donain.local
    default domain = domain.local
    
    [domain_realm]
    .domain.local = DOMAIN.LOCAL
    domain.local = DOMAIN.LOCAL
    
    ldapusersearch ldap://dc2.domain.local:3268/DC=DOMAIN,DC=LOCAL?sAMAccountName?sub?(&(sAMAccountNane=%s) (memberOf=CN=group_0%2cOU=squid%2cOU=service-groups%2cDC=DOMAIN%2cDC=LOCAL))
    


  • @werter 😅 я не знаю как это работает, но у меня задница горела долго, потому что после каждого вырезанного куска кода и вставленного вместо него скриншота я пробовал опубликовать запись и каждый раз антиспам меня имел)



  • @flamel
    У меня Vivaldi (хромоподобный). Как видите -все ок.
    Откл. вкл. дополнения в своем, перезагрузить браузер и проверить.



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



  • @flamel
    Рейтинг? Хм, возможно )



  • @werter Хотел допилить статью и включить туда Lightsquid для мониторинга трафика и тд по пользователям, к тому же вернули возможность ковырять это все и уже с 50 пользователей начали ходить через пфсенс, как выяснилось что lightsquid в пакетах есть, запущен, sqstat открывается, а lightsquid вообще не открывается, не по порту, не через http://ip/lightsquid/, есть где нибудь внятные инструкции или рекомендации? Уже вроде открыл порт для lightsquid, но толку нет, по порту просто ответ не приходит, а по ссылке выше 403 ошибка





  • @werter lightsquid живёт на wan или на lan?
    Видеоролик вообще крутой, он его просто включает и сразу он у него работает, браво😅 завтра попробую по одной из инструкций что то сделать, если получится - дополню инструкцию и пойду смотреть почему clamav не запускается)



  • @flamel

    Не, ну еси вам надо весь инет своим лайтсквидом "обслуживать" - тада и на ВАН тоже ) Все же надо думать немного.

    LAN + loopback (если выбирается)

    ClamAV? Сразу НЕТ. Выкл. и даже не думайте его пользовать. Толку-нуль, а проблем типа "апачимуминяниработаить" - куча.



  • @werter у меня и Лан и Ван просто в локале торчат) в интернет не они смотрят



  • @flamel
    Тогда и WAN у вас НЕ WAN в прямом понимании этой аббревиатуры.



  • Дошел до первой проблемы!

    Проверка kinit: kinit my.user@MYDOMAIN.LOCAL

    выдает: kinit: krb5_init_context failed to parse configuration file

    куда смотреть?



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



  • @millenium я бы ещё крб5.конф глянул, там синтаксис должен соблюдаться и синхронизацию нтп проверить стоит. А также пингануть контроллер домена



  • @flamel КД пингуется, по имени, все ок.

    какие еще способы конфигурирования krb5 есть?

    и в какую дерикторию его лучше класть?



  • [libdefaults]
    default_realn = DOMAIN,LOCAL
    default_keytab_nane = /etc/krb5.keytab - тут должно быть .conf
    dns_lookup_realn = false
    dns_lookup_kdc = true

    • получается ошибка тут!

    сам C:\keytabs\PROXY.keytab



  • @millenium default_realm
    и не должно быть там .conf



  • не могу победить, запущу по старинке PF2AD, вроде нашел бесплатный сайт


Log in to reply