Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    PFSENSE: Squid + ADGroups + HTTPS

    Russian
    7
    114
    15.2k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      andrey1039 @andrey1039
      last edited by

      @werter да, с одним.
      Итак, мои настройки.

      1. СквидГвард, вкладка Target categories, создаем категорию, ничего не заполняем кроме Redirect mode- там выбираем ext url redirect, в поле Перенаправление пишем http://5.6.7.8:82/ (что это значит- будет ниже
      2. На вкладке Groups ACL у нас уже заполнено поле Client (source), кроме этого в Redirect mode выбираем Нет. Здесь же щелкаем по плюсу напротив Target Rules List и везде выбираем allow
      3. Идем в 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
      т.е. используются регулярные выражения.

      A 1 Reply Last reply Reply Quote 0
      • werterW
        werter @andrey1039
        last edited by werter

        @andrey1039 said in PFSENSE: Squid + ADGroups + HTTPS:

        Если в поле Regular Expression ставлю точку(т.е. подразумевается, что это будет любой сайт)

        Сквид пользуют перловский (?) синтаксис регулярок. Тогда все сайты будет .* (точка + звездочка). А просто тчк - это любой ОДИН символ. Можете проверить?

        Маски:
        .   - одиночный символ
        *  - неограниченное повторение последнего символа 
        .* - соотв любая последовательность
        \. - точка
        \\ - один слеш
        ^ - от начала строки
        $ - конец строки
        () - скобки ограничивают токен
        [] - скобки допустимые символы
        |  - знак или
        
        http:\\\\\.*\.mail\.ru.* - соответствует http:\\*.mail.ru*
        
        1 Reply Last reply Reply Quote 0
        • A
          andrey1039 @andrey1039
          last edited by

          В общем, вылезла еще одна проблема. Некоторые сайты не хотят открываться при таких настройках, потому что в этом случае трафик сначала расшифровывается, а потом шифруется сертификатом сквида. В итоге получается такая вот ошибка(см ниже):
          Что бы такое дописать, чтобы эти сайты просто пропускались- без шифрования/расшифрования?

          При получении 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

          Для выполнения Вашего запроса этот кэш и удаленный узел не смогли согласовать взаимоприемлемые параметры безопасности. Возможно, удаленный узел не поддерживает безопасные соединения или кэш не удовлетворён удостоверением безопасности узла.

          werterW 1 Reply Last reply Reply Quote 0
          • werterW
            werter @andrey1039
            last edited by

            @andrey1039
            Добавьте в исключения. В чем проблема?

            A 1 Reply Last reply Reply Quote 0
            • A
              andrey1039 @werter
              last edited by

              @werter вы имеете в виду- в исключения в браузере? Это очень неудобно- надо каждый сайт прописывать в политиках, потом ждать, пока применятся, плюс на роутере делать прямой доступ к этому сайту. Вот если бы в самом сквиде где-то можно было прописывать..

              werterW 1 Reply Last reply Reply Quote 0
              • werterW
                werter @andrey1039
                last edited by werter

                @andrey1039

                Вот если бы в самом сквиде где-то можно было прописывать..

                Я про сквид, ес-но. В гугле это - 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.

                A 1 Reply Last reply Reply Quote 0
                • A
                  andrey1039 @werter
                  last edited by

                  @werter а разве эти настройки не исключительно для прозрачного режима? Это поле становится активным, если включить прозрачный режим, а мне он не нужен.

                  werterW 1 Reply Last reply Reply Quote 0
                  • werterW
                    werter @andrey1039
                    last edited by werter

                    @andrey1039

                    Гляньте 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 на ЛАН надо будет добавить правило для доступа к этим сайтам (эти сайты мы посещаем минуя сквид), создав для удобства сперва алиас из них.

                    A 1 Reply Last reply Reply Quote 0
                    • A
                      andrey1039 @werter
                      last edited by

                      @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. не вижу смысла этого делать

                      1 Reply Last reply Reply Quote 0
                      • A
                        andrey1039
                        last edited by

                        Хочу, чтобы лайтсквид писал в статистике не IP-адреса компов, а их имена. Выбираю в поле "IP Resolve Method" SMB- все-равно пишет IP. ДНС-ов у меня 2 штуки- один- мой, второй- яндекса. Выбираю DNS- вместо имен компов пишется что-то типа DOSA-HTH-FRNT.HEALTH.CMU.EDU - т.е. для резолва он использует не мой днс, а яндекса, при том, что в настройках мой IP стоит первым. Что можно сделать, чтобы он нормально резолвил?

                        werterW 1 Reply Last reply Reply Quote 0
                        • werterW
                          werter @andrey1039
                          last edited by

                          @andrey1039
                          В General галка касаемо DNS на Allow override DNS by ... стоит?

                          A 1 Reply Last reply Reply Quote 0
                          • A
                            andrey1039 @werter
                            last edited by

                            @werter галку поставил - ничего не изменилось. Там ниже еще есть поле "DNS Resolution Behavior", у меня там стоит "Use local DNS, fall back to remote DNS..."

                            werterW 1 Reply Last reply Reply Quote 0
                            • werterW
                              werter @andrey1039
                              last edited by

                              @andrey1039
                              Не надо ее ставить. Снимите. Под ней комментарий написан, переведите его для себя.

                              A 1 Reply Last reply Reply Quote 0
                              • A
                                andrey1039 @werter
                                last edited by

                                Была проблема, что некоторые сайты не отображаются, выдается ошибка, что не может определить адрес сайта. Методом тыка было определено, что виноват в этом Proxy filter SquidGuard - как я понял, эти сайты не умеют работать через прокси с авторизацией.
                                В общем: идем в нем в Target Categories, там уже у нас должна быть хотя бы одна строчка, идем в ее редактирование. Дальше- варианты.

                                1. В поле Domain List пишем домены целиком через пробел, например- government.ru gosuslugi.ru
                                2. Можно что-то написать в поле URL List, но я этот вариант не пробовал
                                3. В поле Regular Expression пишем через палку куски названий сайтов, например: gosuslugi|sbis.ru
                                  После этого Proxy filter SquidGuard пропускает нормально на эти сайты.
                                1 Reply Last reply Reply Quote 0
                                • G Garreth referenced this topic on
                                • First post
                                  Last post
                                Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.