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

    Заблокировать внешнюю сеть по src признаку

    Scheduled Pinned Locked Moved Russian
    16 Posts 4 Posters 2.1k Views
    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.
    • N
      NegoroX
      last edited by

      у меня pfsense 215
      разрешаю 01vk алиас - несколько ip адресов сети кому "можно" в ВК

      allov IPv4 *  01vk *  87.240.128.0/18  *  *  none

      и следующее правило закрываю всем
      deny  IPv4 *  01vk *  87.240.128.0/18  *  *  none

      для "ок" 217.20.144.0/20 много, иначе пролезут.
      (правила на ЛАН - но можно как и у тебя на флоате.

      1 Reply Last reply Reply Quote 0
      • M
        misant
        last edited by

        @NegoroX:

        разрешаю 01vk алиас - несколько ip адресов сети кому "можно" в ВК

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

        К тому же хочется разобраться, как это так получается, что пакет сначала попадает в сквид, если обращение идет по 80 порту. Правило прекрасно работает для все остальных запросов.

        1 Reply Last reply Reply Quote 0
        • M
          misant
          last edited by

          Ответов не много, но продолжаю разбираться.

          Если выполнить в cli  "pfctl -sn", то можно увидеть все правила трансляции, даже те, что не видно в gui:

          no nat proto carp all
          nat-anchor "natearly/" all
          nat-anchor "natrules/
          " all
          no rdr proto carp all
          rdr-anchor "relayd/" all
          rdr-anchor "tftp-proxy/
          " all
          rdr on xl0 inet proto tcp from any to ! (xl0) port = http -> 127.0.0.1 port 3128
          rdr-anchor "miniupnpd" all

          Выделена строка, которая как раз исключает моих жертв из запрещающего правила. Стало понятно почему запросы от них по 80 порту не попадают в запрет. Теперь нужно придумать как красиво это обойти.

          1 Reply Last reply Reply Quote 0
          • M
            misant
            last edited by

            Сделал так:

            rdr on xl0 proto tcp from <disable_soc>to <vkontakte_nets>port = http -> <vkontakte_nets>port 444 round-robin
            rdr on xl0 proto tcp from <disable_soc>to <odnoklassniki_nets>port = http -> <odnoklassniki_nets>port 444 round-robin
            rdr on xl0 inet proto tcp from any to ! (xl0) port = http -> 127.0.0.1 port 3128

            Теперь сижу в засаде, жду когда полезут, запросы должны попасть в первоначальное правило, в логе должно быть обращение по 444 порту.</odnoklassniki_nets></odnoklassniki_nets></disable_soc></vkontakte_nets></vkontakte_nets></disable_soc>

            1 Reply Last reply Reply Quote 0
            • M
              misant
              last edited by

              Да, всё работает. Тема закрыта.
              Если кто сюда попадет поиском, буду нюансы постить, вдруг пригодится.

              1 Reply Last reply Reply Quote 0
              • M
                misant
                last edited by

                Ну что коллеги, все работает. Может быть и не совсем красиво, зато надежно.

                Формулировка для поисковиков: Как заблокировать Вконтакте и Одноклассники pfSense?
                Формулировка задачи от бизнеса: Нужно закрыть доступ к Вконтакте и Одноклассники для нескольких ПК.

                Решение.

                1. Создание алиасов. В Disable_soc вносим хосты, которым нужно запретить. Vkontakte_nets и Odnoklassniki_nets соответственно хосты\подсети блокируемых ресурсов. Удобный инструмент против таких монстров: http://bgp.he.net/search?search%5Bsearch%5D=odnoklassniki&commit=Search

                2. Создаем правило для файрволла. См. картинку 1.

                3. Создаем правило для ната. См. картинку 2. Т.к. у меня прокси в прозрачном режиме, то запросы на 80 порт перехватывает squid и шлет уже от своего имени, поэтому правило не блокирует такие запросы (только https, т.к. они идет на 443 порт). Редирект можно сделать и на корпоративный сервер, у меня так сделано, чтобы попадало в лог правила из пункта 2.

                4. Профит!

                ЗЫ:  Блокировать https трафик средствами одного сквида сейчас не удалось (в прозрачном режиме), хотя потенциально возможно, если настроить что-то из Dansquard, Squid3 + man in the middle. Возможно когда починят Layer7, можно будет закрыть регулярными выражениями и кастомными фильтрами L7

                02_rules_firewall.png
                02_rules_firewall.png_thumb
                ![01_port forward.png](/public/imported_attachments/1/01_port forward.png)
                ![01_port forward.png_thumb](/public/imported_attachments/1/01_port forward.png_thumb)

                1 Reply Last reply Reply Quote 0
                • S
                  Scodezan
                  last edited by

                  Думаю, можно обойтись без первого скрина, если во втором не указывать dest port.

                  1 Reply Last reply Reply Quote 0
                  • M
                    misant
                    last edited by

                    @Scodezan:

                    Думаю, можно обойтись без первого скрина, если во втором не указывать dest port.

                    Да, это мысль правильная. Можно логировать нат попадания в правило?

                    1 Reply Last reply Reply Quote 0
                    • S
                      Scodezan
                      last edited by

                      Поставьте соответствующую галочку в связанном правиле fw.

                      1 Reply Last reply Reply Quote 0
                      • M
                        misant
                        last edited by

                        Может быть есть успешный опыт фильтрации https трафика?
                        Какое оптимальное решение? Можно ли обойтись squid2 или обязательно третий нужен? Видел мануалы с разными вариантами, за 5 минут не вышло, возможно будет позже время поразбираться, но если кто-то поделится опытом, буду признателен.

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

                          2 misant
                          Исп-те reject вместо block в Ваших правилах по соцсетям.  Иначе при откр страниц со ссылками на соцсети будут дикие "тормоза".
                          И это не панацея. Про анонимайзеры слыхали ?
                          Рекомендую squid + squidguard + http://blog.bigbytenetworks.com/2014/09/pfsense-squid-squidguard-configuration/ + https-фильтрация.
                          Прийдется сертификаты пользователям "доверять" для серфинга, но это дело поправимое.

                          P.s. Зачем Вы Port forwarding вообще трогаете? Что это за перенаправление с 80-го на 444-ый причем на теже адреса ? Оно вообще работает ?
                          Если нужна прозрачная фильтрация - исп. squid со вкл. опцией transparent (описал выше)

                          1 Reply Last reply Reply Quote 0
                          • M
                            misant
                            last edited by

                            Про reject дельный совет, спасибо.
                            Про анонимайзеры конечно знаю, но т.к. ведется журнал посещений, то тут уже сотрудник не сможет сказать что случайно нажал на иконку соц сети на нормальном сайте. Использование анонимайзеров это умышленный обход запрета при использовании корпоративных ресурсов, это уже административно должно решаться.

                            Спасибо за рекомендацию, на тестовом стенде при возможности посмотрю. Squid2 там хватит или третий обязательно? Сертификаты подсунем если что, не проблема.

                            PS: Порт форвардинг нужен, в моих сообщениях сначала темы описывается зачем. Да, оно работает. Редирект можно делать куда угодно, мне так было нужно, чтобы в лог попадало по тому же правилу, что и запросы на 443 порт. Сквид работает как прозрачный прокси.

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

                              Squid2 там хватит или третий обязательно?

                              Squid3

                              1 Reply Last reply Reply Quote 0
                              • M
                                misant
                                last edited by

                                @werter:

                                Squid3

                                Да, спасибо. Удалось добиться нормальной работы squid3 + squidguard для фильтрации https. Сходу не получилось - генерились сертификаты для ip адресов вместо доменных имен. В IE хоть как-то работало, в Chrome вообще никак, несмотря на добавленный в доверенный корневой сертификат.

                                Спасла строчка "ssl_bump server-first all" в секции Custom ACLS (After_Auth) настроек squid3.

                                Тестирую, пока проблем не всплыло.

                                1 Reply Last reply Reply Quote 0
                                • First post
                                  Last post
                                Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.