PFSENSE: Squid + ADGroups + HTTPS
-
Лупбэк выбираем для lightsquid, но о нём в другой раз (возможно).
Отключаем Transparent HTTP Proxy
Отключаем HTTPS/SSL Interception если включен (для фильтрации HTTPS трафика данная галочка не нужна).
Затем идём на сервак с AD и формируем keytab файл.
Для этого создаём доменную учетную запись для нашего прокси, ЕСЛИ У ВАС СЛОЖНАЯ СТРУКТУРА ДОМЕНА используйте ПРОСТОЙ пароль! Просто набор букв, без цифр, спецсимволов и заглавных(последнее не точно).
Тут очень важен вопрос шифрования, у меня AES128 и AES256 не заработал(спасибо домену .local и еще очень многим факторам кривизны), но есть подтверждения что данная настройка работает.
Но! Если решите использовать нормальное шифрование не забудьте включить его в настройках учетной записи в AD.
Сам кейтаб формируется командой 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 согласно настройкам нашего домена (если его нет - создаём). Пример:
Желательно проверить работу kerberos с помощью kinit.
Далее самое интересное, возвращаемся в pfsense, открываем squid и в самом низу открываем расширенные опции (перед этим во вкладке аутентификации главное отключить всё).
В поле Custom Options (Before Auth) вносим следующее:
И да, кейтаб используемый мной для аутентификации валяется именно по тому пути, не помню почему так, но вроде как оттуда хелперу легче его брать.
Это и есть наша аутентификация, уже сейчас можно проверить её работу, при попытке идти в интернет пользователю домена должно пускать, а если локальный пользователь то запрашивать логин\пароль.
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"
Не могу сказать от чего это зависит, но в некоторых случаях решает проблемы, в моём работало и без скобочек.
Обязательно ставим эти галочки:
т.к вся эта система очень чувствительна к регистрам и тд.
Далее переходим в раздел Groups ACL и в поле Client (source) формируем лдап запрос по которому будет производится поиск принадлежности пользователя к группе, как пример:
Здесь же настраиваем target rules лист и радуемся жизни - должно всё работать!)
Ах да, чуть не забыл:
Если что то забыл-прошу дополнить, отредактируем, надеюсь данная статья кому то поможет в настройке и реализации прокси)
Извиняюсь за местами плохое качество текста, боролся с антиспамом 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.htmlKerberos 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":
Пример:
ldapusersearch ..
-
@werter в том то и дело) я его использовал, а все равно, я скрины делал с предпросмотра
-
This post is deleted! -
@werter я не знаю как это работает, но у меня задница горела долго, потому что после каждого вырезанного куска кода и вставленного вместо него скриншота я пробовал опубликовать запись и каждый раз антиспам меня имел)
-
This post is deleted! -
@werter это именно на сайте на этом встроенный антиспам как я понял, акисмет или как то так, возможно он ещё к рейтингу привязан какому нибудь
-
@flamel
Рейтинг? Хм, возможно ) -
@werter Хотел допилить статью и включить туда Lightsquid для мониторинга трафика и тд по пользователям, к тому же вернули возможность ковырять это все и уже с 50 пользователей начали ходить через пфсенс, как выяснилось что lightsquid в пакетах есть, запущен, sqstat открывается, а lightsquid вообще не открывается, не по порту, не через http://ip/lightsquid/, есть где нибудь внятные инструкции или рекомендации? Уже вроде открыл порт для lightsquid, но толку нет, по порту просто ответ не приходит, а по ссылке выше 403 ошибка
-
@flamel
httpS://ip/lightsquid/ ?lightsquid + pfsense --> гугл :
https://www.netgate.com/resources/videos/squid-squidguard-and-lightsquid-on-pfsense-24.html
https://shop.nativepc.ru/content/26--lightsquid-
https://1cloud.ru/help/bsd/nastroyka-proksi-servera-pfsense -
@werter lightsquid живёт на wan или на lan?
Видеоролик вообще крутой, он его просто включает и сразу он у него работает, браво завтра попробую по одной из инструкций что то сделать, если получится - дополню инструкцию и пойду смотреть почему clamav не запускается) -
Не, ну еси вам надо весь инет своим лайтсквидом "обслуживать" - тада и на ВАН тоже ) Все же надо думать немного.
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 есть?
и в какую дерикторию его лучше класть?