PFSENSE: Squid + ADGroups + HTTPS
-
@andrey1039 Можно, на хабре вроде описывал как
acl nonauth dstdomain "/etc/squid/nonauth.txt" — сообщаем сквиду о списке доступа nonauth в котором содержатся домены назначения, к которым всегда будет разрешен доступ всем. Сам файл создаем, а внутрь него вписываем домены в формате .whatsapp.com .whatsapp.net Whatsapp не зря используется как пример — он очень привередлив к прокси с аутентификацией и не будет работать если его не разрешить до аутентификации.
-
@andrey1039 said in PFSENSE: Squid + ADGroups + HTTPS:
Нужно сделать, чтобы на определенные адреса/сайты доступ шел мимо прокси, т.е. чтобы сквид вообще "не принимал участия" в доступе на такие сайт. Интересно, можно ли это сделать через Pfsense ?
Если работает в transparent режиме, то создаёте алиас с сайтами (главное чтобы IP адреса всегда возвращались одни и те же) и добавляете его в поле "Bypass Proxy for These Destination IPs"
-
@flamel у меня заполнены поля в разделе "SSL Man In the Middle Filtering" - т.е. SSL-трафик тоже анализируется. Я пробовал добавлять строку acl nonauth dstdomain "/etc/squid/nonauth.txt" - ничего не изменилось, на некоторые сайты все-равно не пускает. Например, у меня в nonauth.txt есть строчка .eias.ru , но на сайт https://web.eias.ru/ не пускает, приходится добавлять его в исключения в IE и потом открывать туда доступ на шлюзе.
На "обычном" сквиде на FreeBSD такая же проблема, кстати. Там тоже приходилось доступ на такие сайты делать в обход прокси. -
Добрый.
@andrey1039у меня заполнены поля в разделе "SSL Man In the Middle Filtering"
Скрины того, как настроено покажите, пож-та.
-
@werter Интересно то, что сквид не то чтобы не пускает- он почему-то не может найти этот сайт.(см ниже). И почему он пишет "Невозможно определить IP-адрес по имени узла «http»", а не web.eias.ru ?
Пишет:
При получении URL https://http/* произошла следующая ошибка
Невозможно определить IP-адрес по имени узла «http»
Сервер DNS ответил:
Server Failure: The name server was unable to process this query.
Это означает, что кэш не смог распознать имя узла в URL. Проверьте адрес на корректность.Скрин настроек прицепил.
![alt text]( image url) -
-
@werter да, с одним. По вашей ссылке- попробую. Но у меня есть подозрение, что я что-то неправильно настроил.
Пересмотрел еще раз настройки и кое-что поменял в соответствии с инструкцией и логикой.
У СквидГвард есть вкладка Target categories. Если я там ничего не заполняю- то браузер пишет: "Невозможно определить IP-адрес по имени узла «http»"
Если в поле Regular Expression ставлю точку(т.е. подразумевается, что это будет любой сайт) - то пускает любого- независимо от того- есть он в группе или нет.
Вопрос: что нужно заполнять на вкладке Target categories, чтобы он пускал на ВСЕ сайты всех, кто есть в нужной группе? -
@werter да, с одним.
Итак, мои настройки.- СквидГвард, вкладка Target categories, создаем категорию, ничего не заполняем кроме Redirect mode- там выбираем ext url redirect, в поле Перенаправление пишем http://5.6.7.8:82/ (что это значит- будет ниже
- На вкладке Groups ACL у нас уже заполнено поле Client (source), кроме этого в Redirect mode выбираем Нет. Здесь же щелкаем по плюсу напротив Target Rules List и везде выбираем allow
- Идем в Common ACL, щелкаем по плюсу напротив Target Rules List и везде выбираем allow. Redirect mode и Redirect info заполняем так же, как и в п.1
Кстати, то, что выбираем Target Rules List "allow" для всех- мне кажется нелогичным и вроде как после этого он вообще должен всех пускать- и кто входит в нужную группу, и кто не входит. Но это не так- я проверял.
По поводу http://5.6.7.8:82/. На pfsense(в нашем примере у него адрес 5.6.7.8) установлен nginx- это web-сервер типа апача, но проще, настройки лежат в /usr/local/etc/nginx/nginx.conf
Так что поднимаем на нем сайт на порту 82(можно и на другом), создаем страницу и пишем там текст, например, "Вам низзя в инет, пшел отседова" и со всякими картинками. Если юзеру нельзя в инет- его перекидывает на эту страницу.
Заставить сквид+сквидгвард выдавать свои сообщения об ошибке у меня не получилось. Как мне кажется, тут получается так: сквид отправляет сквидгварду "на согласование" юрл, а если тому что-то не понравилось(например, юзеру нельзя в инет)- то он вовзращает сквиду или пустой юрл, или свое сообщение. В 1-ом случае сквид пишет, что не может отобразить страницу, у которой юрл состоит только из букв https/http, а во 2-ом случае- зависит хз от чего и юзер может получить как сообщение об ошибке, так и вообще какие-то непонятные сообщения.
По поводу исключений, я сделал так:
В Custom Options (Before Auth) в самом начале вписал:
acl allow_sites url_regex -i "/usr/local/etc/squid/mimo_squid"
http_access allow allow_sites
и в файле /usr/local/etc/squid/mimo_squid прописал куски сайтов, например gov.ru
т.е. используются регулярные выражения. -
@andrey1039 said in PFSENSE: Squid + ADGroups + HTTPS:
Если в поле Regular Expression ставлю точку(т.е. подразумевается, что это будет любой сайт)
Сквид пользуют перловский (?) синтаксис регулярок. Тогда все сайты будет .* (точка + звездочка). А просто тчк - это любой ОДИН символ. Можете проверить?
Маски: . - одиночный символ * - неограниченное повторение последнего символа .* - соотв любая последовательность \. - точка \\ - один слеш ^ - от начала строки $ - конец строки () - скобки ограничивают токен [] - скобки допустимые символы | - знак или http:\\\\\.*\.mail\.ru.* - соответствует http:\\*.mail.ru*
-
В общем, вылезла еще одна проблема. Некоторые сайты не хотят открываться при таких настройках, потому что в этом случае трафик сначала расшифровывается, а потом шифруется сертификатом сквида. В итоге получается такая вот ошибка(см ниже):
Что бы такое дописать, чтобы эти сайты просто пропускались- без шифрования/расшифрования?При получении URL https://frprf.ru/* произошла следующая ошибка.
Не удалось установить безопасное соединение с 31.41.246.25
The system returned:
(92) Protocol error (TLS code: X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY)
SSL Certficate error: certificate issuer (CA) not known: /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=GeoTrust RSA CA 2018
Для выполнения Вашего запроса этот кэш и удаленный узел не смогли согласовать взаимоприемлемые параметры безопасности. Возможно, удаленный узел не поддерживает безопасные соединения или кэш не удовлетворён удостоверением безопасности узла.
-
@andrey1039
Добавьте в исключения. В чем проблема? -
@werter вы имеете в виду- в исключения в браузере? Это очень неудобно- надо каждый сайт прописывать в политиках, потом ждать, пока применятся, плюс на роутере делать прямой доступ к этому сайту. Вот если бы в самом сквиде где-то можно было прописывать..
-
Вот если бы в самом сквиде где-то можно было прописывать..
Я про сквид, ес-но. В гугле это - squid + exceptions + pfsense
https://docs.netgate.com/pfsense/en/latest/recipes/http-client-proxy.html#squid-caching-web-proxy
Bypass Proxy for these Destination IPs
If certain remote servers need to bypass the proxy, put them in this box. Multiple addresses, networks, or alias names may be entered separated by a semicolon. -
@werter а разве эти настройки не исключительно для прозрачного режима? Это поле становится активным, если включить прозрачный режим, а мне он не нужен.
-
Гляньте https://youtu.be/ZqZm-BgWcNc?t=50 - WhitelistПардон, это не про то, что вам надо.
Можно попробовать создать файл с перечнем доменов, к-ые нужно пускать напрямую минуя сквид и в Advanced сквида добавить строку acl со ссылкой на этой файл.
Примеры есть тут https://habr.com/ru/post/347212/
Пример regexp https://itslashfix.wordpress.com/2015/07/14/allowing-cific-services-from-google-through-a-proxy-in-blanket-block-mode/Возможно, в fw на ЛАН надо будет добавить правило для доступа к этим сайтам (эти сайты мы посещаем минуя сквид), создав для удобства сперва алиас из них.
-
@werter почитал, исключения у меня так и настроены, правда там написаны "целые" домены, а у меня через рег. выражения- "куски".
Но, похоже, я неправильно понял проблему.
SSL Certficate error: certificate issuer (CA) not known: /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=GeoTrust RSA CA 2018 - означает, что сквиду не нравится сертификат сайта(или, скорее всего, сертификат СА).
Добавил после строки "auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -s GSS_C_NO_NAME -k /etc/squid.keytab -t none"
строку "sslproxy_cert_error allow all" и на всякий случай еще "tls_outgoing_options flags=DONT_VERIFY_PEER"- проблема ушла.
Конечно, правильно было бы скормить сертификаты сквиду, но: 1. не знаю, как это сделать 2. не вижу смысла этого делать -
Хочу, чтобы лайтсквид писал в статистике не IP-адреса компов, а их имена. Выбираю в поле "IP Resolve Method" SMB- все-равно пишет IP. ДНС-ов у меня 2 штуки- один- мой, второй- яндекса. Выбираю DNS- вместо имен компов пишется что-то типа DOSA-HTH-FRNT.HEALTH.CMU.EDU - т.е. для резолва он использует не мой днс, а яндекса, при том, что в настройках мой IP стоит первым. Что можно сделать, чтобы он нормально резолвил?
-
@andrey1039
В General галка касаемо DNS на Allow override DNS by ... стоит? -
@werter галку поставил - ничего не изменилось. Там ниже еще есть поле "DNS Resolution Behavior", у меня там стоит "Use local DNS, fall back to remote DNS..."
-
@andrey1039
Не надо ее ставить. Снимите. Под ней комментарий написан, переведите его для себя.