• Home
  • How to
  • Блокировка рекламы с помощью pfSense

Как заблокировать рекламу на всех ваших устройствах с помощью pfSense, Squid и SquidGuard

Marc Dahan

By Marc Dahan . 22 февраля 2024

Cybersecurity Journalist

Miklos Zoltan

Fact-Checked this

pfSense — мощная операционная система маршрутизатора и брандмауэра с открытым исходным кодом, основанная на FreeBSD. С самого начала pfSense включает в себя набор надежных инструментов, позволяющих создавать безопасные сети.

Но pfSense также позволяет устанавливать пакеты из своего официального репозитория, чтобы добавить еще больше функциональности в вашу систему.

В этой статье вы узнаете о следующем:

  • Что такое pfSense и как им пользоваться
  • Что такое Squid и как им пользоваться
  • Как работают прокси-серверы
  • Как установить и настроить Squid
  • Как установить и настроить SquidGuard
  • Как заблокировать рекламу с помощью pfSense, Squid и SquidGuard

pfSense — мощная операционная система маршрутизатора и брандмауэра с открытым исходным кодом, основанная на FreeBSD. С самого начала pfSense включает в себя набор надежных инструментов, позволяющих создавать безопасные сети.
Но pfSense также позволяет устанавливать пакеты из своего официального репозитория, чтобы добавить еще больше функциональности в вашу систему.

Один из таких пакетов называется Squid. Squid — это кэширующий веб-прокси, который также может выполнять фильтрацию контента. Давайте немного подробнее рассмотрим это и предоставим некоторый контекст вокруг прокси-серверов и их использования.

Связанное руководство: Как настроить фильтрацию IP и DNS-блокировку на pfSense с помощью pfBlockerNG

Итак, в кратком виде: В обобщенном изложении, в этой статье я показал, как осуществить блокировку рекламы на всех устройствах с помощью pfSense, Squid и SquidGuard. pfSense представляет собой маршрутизатор и брандмауэр с открытым кодом, предлагающий расширенные возможности для защиты сети, тогда как Squid выполняет роль кэширующего веб-прокси, обеспечивающего фильтрацию контента.

Я описал функционал прокси-серверов в кэшировании и фильтрации контента, а также процесс настройки Squid и SquidGuard в pfSense для эффективной блокировки рекламы.

Применение этой методики способствует усилению безопасности и повышению конфиденциальности, понижению нагрузки на сеть и ускорению загрузки веб-страниц.

How to Block Ads

Прокси-серверы

Прокси-сервер — это посредник между вашим устройством (ноутбуком, планшетом, смартфоном) и вашим конечным интернет-назначением (любойсайт.ком).

Ваш трафик покидает ваше устройство, подключается к прокси-серверу и отправляется к своему конечному назначению уже через прокси-сервер.

Зачем отправлять свой трафик через прокси-сервер? Есть несколько причин. Одна из них — кэширование контента. Это означает, что прокси-сервер сохранит некоторый контент локально, чтобы в следующий раз, когда клиент запросит этот контент, он будет обслуживаться из кэша, а не загружаться заново из интернета.

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

Другая цель — фильтрация контента. Фильтрация контента означает блокирование соединений с определенными доменами или IP-адресами. Организации, которые блокируют доступ к Facebook, например, выполняют фильтрацию контента.

Еще одним применением фильтрации контента является блокировка рекламы. Онлайн-реклама надоедлива. Она нарушает вашу конфиденциальность, расходует вашу пропускную способность и является основным источником вредоносного программного обеспечения. Есть веские причины хотеть от них избавиться. И именно для этого мы будем использовать Squid в этой статье.

Мы покажем вам, как настроить Squid и SquidGuard (SquidGuard — это дополнительный компонент Squid, обеспечивающий фильтрацию на основе списков) на pfSense для блокировки рекламы на всех ваших устройствах.

В этом руководстве предполагается, что у вас есть рабочая система pfSense, настроенные рабочие интерфейсы WAN и LAN, а также доступ к графическому интерфейсу.

WAN and LAN Settings

Установка Squid

Сначала нам нужно установить прокси-сервер Squid.

1. Из верхних меню выберите Система > Менеджер пакетов. Вы перейдете на вкладку Установленные пакеты в Менеджере пакетов.

Перейти в Менеджер пакетов

2. Выберите Доступные пакеты. Отобразится список доступных пакетов.

Выбор доступных пакетов Squid

3. Прокрутите вниз, пока не увидите squid, и нажмите Установить. Появится окно Установщика пакетов.

Пакет Squid

4. Нажмите Подтвердить. Установка начнется.

Подтверждение установки Squid

5. Как только установка завершится, внизу окна Установщика пакетов вы увидите Успешно. Squid теперь установлен.

Squid установлен

Now that Squid is installed, we'll configure our new proxy server. 1. From the top menus, select Services > Squid Proxy Server. You're taken to the General tab of the Squid Settings. Go To Squid Proxy Server We're going to go over configuring Squid section by section. Our purpose is to set up ad-blocking with Squid, so we're not going to go into every sub-menu. Only the ones we need to achieve our goal. Any settings that are not mentioned should be left at their default values. Before configuring Squid, we first need to go to the Local Cache tab and accept the default local caching settings by clicking Save at the bottom of the page. If you try to configure the proxy without accepting the default local cache settings, you'll be prompted to do so and lose the settings you configured so far. Local Cache Page If you want to tweak your local cache settings later, you can do that from the Squid Settings Local Cache tab.

Squid General Settings

  1. Leave Check to enable the Squid proxy box unchecked for now. We will first configure our proxy server before we enable it.
  2. If your pfSense box is using both IPv4 and IPv6, select IPv4+IPv6 from the Listen IP Version drop-down menu. If not, leave it set to IPv4.
  3. Make sure LAN is selected in Proxy Interface(s). If you add additional interfaces to your pfSense box and want the traffic from those interfaces to go through Squid, you'll need to select them here.
  4. Set the Outgoing Network Interface to Default (auto).
Squid General Settings

Transparent Proxy Settings

Proxy servers can work in one of two ways: transparent or explicit. In transparent mode, no configuration is required on your clients (computer, tablet, smartphone, etc.) - their traffic will be transparently proxied. However, this mode will only proxy HTTP traffic over port 80, not HTTPS traffic (unless you configure Man In the Middle SSL filtering - more on that below). Since most internet traffic uses HTTPS, the transparent mode has limited scope for ad-blocking but can still be useful for caching.

Теперь, когда Squid установлен, давайте настроим наш новый прокси-сервер.

Из верхних меню выберите Сервисы > Прокси-сервер Squid. Вы перейдете на вкладку Общие в Настройках Squid.
Перейти к прокси-серверу Squid

Мы пойдем по настройке Squid поэтапно. Наша цель — настроить блокировку рекламы с помощью Squid, поэтому мы не будем вдаваться в каждое подменю. Мы рассмотрим только те, которые необходимы для достижения нашей цели. Все настройки, о которых не упоминается, следует оставить значениями по умолчанию.

Перед настройкой Squid сначала перейдите на вкладку Локального кеша и примите настройки локального кэширования по умолчанию, нажав «Сохранить» внизу страницы.

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

Страница локального кеша

Если вы хотите впоследствии настроить настройки локального кеша, вы можете сделать это на вкладке «Локальный кеш» в настройках Squid.

Общие настройки Squid

  1. Оставьте флажок Отметьте, чтобы включить прокси-сервер Squid не установленным на данный момент. Сначала мы настроим наш прокси-сервер, прежде чем включим его.
  2. Если ваша система pfSense использует как IPv4, так и IPv6, выберите IPv4+IPv6 из выпадающего списка Версия IP для прослушивания. В противном случае оставьте его на IPv4.
  3. Убедитесь, что выбрана опция LAN в Параметрах прокси. Если вы добавите дополнительные интерфейсы на вашу систему pfSense и хотите, чтобы трафик с этих интерфейсов проходил через Squid, вам нужно будет выбрать их здесь.
  4. Установите исходящий сетевой интерфейс на По умолчанию (авто).

Общие настройки Squid

Настройки прозрачного прокси

Прокси-серверы могут работать двумя способами: прозрачно или явно. В прозрачном режиме настройка на клиентах (компьютер, планшет, смартфон и т.д.) не требуется — их трафик будет проксироваться прозрачно.

Однако этот режим будет проксировать только HTTP-трафик через порт 80, а не HTTPS-трафик (если вы не настраиваете фильтрацию SSL среднего человека — об этом далее). Поскольку большая часть интернет-трафика использует HTTPS, прозрачный режим имеет ограниченные возможности для блокировки рекламы, но он все равно может быть полезен для кэширования.

Явный и прозрачный режимы

Явный режим требует настройки каждого клиента для «запроса» доступа к прокси. И в этом режиме весь интернет-трафик TCP проксируется (HTTP и HTTPS). Это то, что нам нужно в этом руководстве. Поэтому в этом руководстве мы не будем включать режим прозрачности, но вы можете включить оба режима без проблем.

Настройки прозрачного прокси

Фильтрация SSL среднего человека

Как я упомянул выше, возможно прозрачно проксировать HTTPS-соединения. Но для этого, по сути, нужно нарушить HTTPS.

Squid может заменить корректный SSL-сертификат с веб-сайта, к которому вы пытаетесь получить доступ, своим собственным, расшифровать соединение и затем перешифровать его с помощью своего сертификата. Это позволяет фильтровать SSL-соединения, но также нарушает проверку HTTPS, которая должна происходить в вашем браузере.

Я не рекомендую использовать фильтрацию SSL среднего человека, кроме специфических целей для тех, кто понимает, что делает. Мы также оставим эту функцию отключенной.

Фильтрация SSL среднего человека

Настройки журналирования

  1. Отметьте флажок «Включить журналирование доступа». Это позволит регистрировать ваш трафик Squid, чтобы вы могли видеть, как ведет себя Squid, если вам нужно что-то устранить.
  2. Отметьте флажок «Журналы страниц, запрещенных SquidGuard». Это позволяет просматривать журналы SquidGuard на вкладке «В реальном времени» наряду с журналами Squid Proxy. Это будет полезно, когда мы установим SquidGuard.

Настройки журналирования

Обработка заголовков, язык и другие настройки

Настройки здесь опциональны, но они ограничивают количество информации, отображаемой в заголовках Squid.

  • Установите режим заголовка X-Forwarded в значение off.
  • Отметьте флажок «Отключить заголовок VIA».
  • Отметьте флажок «Скрывать версию Squid».
  • Нажмите «Сохранить».

Обработка заголовков, язык

Вкладка ACL (Access Control Lists)

Чтобы увидеть, что мы можем явно заблокировать с помощью Squid, давайте перейдем на вкладку ACL (Access Control Lists).

Здесь мы видим несколько полей, в которых можно задать различные элементы для фильтрации Squid. Давайте рассмотрим каждое из них.

Вкладка ACL

Разрешенные подсети

Вы можете добавить дополнительные подсети для прохождения через прокси Squid. Это полезно для подсетей, которые не привязаны к интерфейсу системы, например, IPSec. В нашем примере здесь ничего не нужно добавлять.

Нерегулируемые IP-адреса

IP-адреса, указанные здесь, не будут фильтроваться прокси-сервером.

Заблокированные хост-адреса

IP-адресам, указанным здесь, не будет разрешено использовать прокси-сервер даже в том случае, если их подсеть разрешена.

Белый список

Домены, перечисленные в поле «Белый список», будут доступны для всех хостов, авторизованных использовать прокси. Записи в белом списке перекрывают записи в черном списке.

Черный список

Домены, перечисленные в поле «Черный список», будут недоступны для всех хостов, которым разрешено использовать прокси-сервер.

Блокировать агентов пользователей

Это поле чрезвычайно удобно для блокирования конкретных приложений доступа к интернету. Когда приложение запрашивает доступ к интернету, его заголовки включают поле, называемое агентом пользователя. Агент пользователя идентифицирует используемое приложение. К примеру, агент пользователя Google Chrome — это Chrome.

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

Чтобы заблокировать агент пользователя в Squid, вы должны добавить перед ним символ «^» (без кавычек).

Так, запись ^Chrome в поле Блокировать агентов пользователей Squid блокирует доступ Google Chrome к интернету.

Запись ^Mozilla заблокирует доступ Firefox к интернету. Запись ^WhatsApp заблокирует доступ WhatsApp к интернету.

Агенты пользователей довольно специфичны и не всегда так просты, как в приведенных выше примерах. Вам нужно знать точный агент пользователя, используемый приложением, чтобы его заблокировать здесь.

Блокировать типы MIME (только ответ)

MIME в MIME-типах означает «Multipurpose Internet Mail Extensions» и используется для определения типов файлов в URL. Типы MIME структурированы следующим образом:

тип/подтип

Так, добавление audio/mpeg в поле Блокировать типы MIME заблокирует загрузку файлов mp3. Добавление image/png в поле Блокировать типы MIME заблокирует загрузку изображений png.

Как и в случае с агентами пользователей, типы MIME очень конкретны. Вы должны ввести точный тип и подтип для работы фильтрации в Squid.

Тестирование Squid

Добавление записи в черный список Squid

Давайте проверим нашу установку Squid, чтобы убедиться, что всё работает правильно, перед тем как перейти к следующим шагам. Мы введем домен в поле Черный список, чтобы увидеть, будет ли Squid блокировать его, как ожидается.

На вкладке ACL (Access Control Lists) настроек прокси-сервера Squid введите facebook.com в поле Черный список.
Черный список Facebook

Нажмите Сохранить внизу страницы.

Перейдите на вкладку General (Общие) в настройках прокси-сервера Squid.

Отметьте галочкой поле Включить Squid Proxy.

Включить Squid Proxy

Нажмите Сохранить внизу страницы.
Теперь наш прокси-сервер включен и настроен для блокировки facebook.com.

Давайте быстро настроим веб-браузер, чтобы он проходил через прокси-сервер и проверим, работает ли всё нормально. Если всё правильно настроено, я не должен смочь получить доступ к facebook.com.

Настройка Firefox для использования прокси-сервера

Нажмите на значок Настройки в верхнем правом углу браузера и выберите Параметры (в Windows это называется Опции). Вы перейдете на страницу Общие параметры.
Настройки FireFox

Прокрутите страницу Общие параметры до раздела Параметры сети и нажмите кнопку Параметры.
Настройки сети FireFox

Выберите Ручная настройка прокси.
В поле HTTP-прокси укажите IP-адрес вашей платформы pfSense. В моем случае это 192.168.1.1.
Установите порт 3128.
Установите галочку Использовать этот прокси-сервер для FTP и HTTPS.
Нажмите OK внизу окна и закройте страницу Параметры.
Настройки прокси FireFox

Теперь, если я попробую получить доступ к facebook.com (по HTTP или HTTPS), мой браузер покажет следующую страницу:

Facebook заблокирован

Именно то, что нам нужно.

SquidGuard

Итак, у нас теперь есть работающий прокси-сервер, настроенный для блокировки facebook.com. Здорово. Однако, если мы хотим блокировать рекламу, нам придется добавить тысячи и тысячи доменов в поле Черный список Squid. Не слишком оптимально…

Вводите SquidGuard. SquidGuard — это дополнительный модуль к Squid, который может обрабатывать фильтрацию на основе списков.

При использовании фильтрации на основе списков вы вводите URL-адрес списка заблокированных доменов, и все домены, совпадающие с доменами из черного списка, блокируются.

Теперь, когда наш базовый прокси-сервер Squid работает, давайте установим и настроим SquidGuard.

Установка SquidGuard

1. Из верхнего меню выберите Система > Менеджер пакетов. Вы попадете на вкладку Установленные пакеты в Менеджере пакетов.

Перейти к Менеджеру пакетов

2.Выберите Доступные пакеты. Отобразится список доступных пакетов.

Доступные пакеты SquidGuard

3. Прокрутите вниз, пока не увидите SquidGuard, и нажмите Установить. Отобразится окно Установщика пакетов.

Найти установку SquidGuard

4. Нажмите Подтвердить. Установка начнется.

Подтвердить установку SquidGuard

5. После завершения установки, внизу окна Установщика пакетов вы увидите Успешно. Теперь SquidGuard установлен.

SquidGuard установлен

Настройка SquidGuard

SquidGuard установлен. Перейдем к настройке фильтрации на основе списков.

Из верхнего меню выберите Службы > SquidGuard Proxy Filter. Вы попадете на вкладку Общие в Настройках SquidGuard Proxy Filter.
Перейти к страницам SquidGuard

Как и при настройке самого Squid, мы пойдем по разделам настройки SquidGuard по шагам. И снова, мы не будем заходить в каждое подменю — только в те, которые нам нужны для достижения нашей цели. Все настройки, которые не упоминаются, следует оставить с значениями по умолчанию.

Опции общие

Пока оставьте поле Включить не отмеченным.
Опции общие SquidGuard

Опции ведения журнала

  • Отметьте поле Включить GUI-журнал.
  • Отметьте поле Включить журнал.
  • Отметьте поле Включить ротацию журнала.

Опции ведения журнала SquidGuard

Разные опции

Отметьте поле Очищать рекламу.
Разные опции SquidGuard

Опции черного списка

Отметьте поле Черный список.

Введите следующий URL в поле URL черного списка: https://shallalist.de/Downloads/shallalist.tar.gz. Это наш URL черного списка. SquidGuard загрузит этот список и предоставит нам разные категории доменов, которые мы можем разрешить или заблокировать. Он предоставляется бесплатно и предоставляется Shalla Secure Services. Существуют и другие списки, но многие из них платные. Я долгое время использую Shallalist, и он работает очень хорошо, а также часто обновляется, поэтому рекомендую использовать его.

Нажмите Сохранить внизу страницы.

Опции черного списка SquidGuard

Загрузка черного списка

1. Перейдите на вкладку Черный список в Настройках SquidGuard Proxy Filter. URL черного списка будет отображен.

2. Нажмите кнопку Загрузить. Начнется загрузка и разбор черного списка.

Страница черного списка SquidGuard

3. По завершении вы увидите надпись Обновление черного списка завершено внизу окна Журнала обновления черного списка.

Обновление черного списка завершено

Настройка фильтрации черного списка в SquidGuard

1. Перейдите на вкладку Общие ACL в Настройках SquidGuard Proxy Filter.

2. Нажмите символ + рядом с Список целевых правил. Отобразится Список целевых правил.

Настройка фильтрации черного списка в SquidGuard

3. Первая запись в списке — adv, что означает рекламу. В выпадающем меню справа от нее выберите Отказать.

Запретить рекламу

4. Продолжайте блокировать любые другие категории контента, которые вы хотите заблокировать.

5. Когда вы заблокируете все категории, которые вы хотите, перейдите вниз списка и выберите Разрешить в выпадающем меню рядом с Стандартный доступ.

6. Нажмите Сохранить внизу страницы.

SquidGuard ACL

7. Вернитесь на вкладку Общие в Настройках SquidGuard Proxy Filter, установите флажок Включить и нажмите Сохранить внизу страницы.

8. После сохранения нажмите кнопку Применить.

Включить SquidGuard

Тестируем настройку

Теперь у нас есть настроенный Squid с фильтрацией черного списка. Если я использую свой браузер, который уже настроен на использование прокси, чтобы зайти на веб-страницу, известную своими рекламными объявлениями, они должны исчезнуть.

С включенным Squid:

SquidGuard Test

С выключенным Squid:

SquidGuard Test

Работает. Это замечательно. Но сейчас Squid будет перехватывать только трафик моего браузера, поэтому блокировка рекламы Squid будет действовать только в моем веб-браузере.

Я покажу вам, как настроить всё ваше устройство для отправки всего трафика через прокси-сервер. Таким образом, вы сможете воспользоваться блокировкой рекламы не только в браузере, но и в ваших приложениях. Я покажу вам, как это сделать на macOS, Windows, Linux, iOS и Android.

Настройка системной фильтрации контента на клиентских устройствах

Сброс настроек браузера

Давайте отменим ручные настройки прокси, которые мы настроили в Firefox для тестирования соединения, перед тем как настроить устройство клиента для системной конфигурации прокси.

1. Вернитесь в Настройки сети в Firefox и выберите Использовать системные настройки прокси. Это указывает браузеру использовать системные настройки как настройки прокси. Это настройка по умолчанию.

2. Нажмите ОК и закройте страницу Настройки.

FireFox System Proxy

macOS

1. В приложении Параметры системы выберите Сеть.

2. Убедитесь, что выбрано ваше текущее подключение, и нажмите Дополнительно в нижнем правом углу.

3. Выберите вкладку Прокси.

4. Отметьте оба пункта: Веб-прокси (HTTP) и Безопасный веб-прокси (HTTPS).

5. Введите IP-адрес вашего pfSense-устройства и порт прокси — 192.168.1.1 и 3128 в моем случае.

6. Нажмите ОК и Применить.

macOS Proxy Settings

Windows

1. Откройте приложение Настройки (сочетание клавиш Win+I).

2. Перейдите в раздел Сеть и интернет.

3. Выберите вкладку Прокси.

4. Прокрутите вниз до раздела Настройка прокси вручную.

5. Включите переключатель Использовать прокси-сервер.

6. Введите IP-адрес вашего pfSense-устройства и порт прокси — 192.168.1.1 и 3128 в моем случае.

7. Нажмите Сохранить.

Windows 10 Proxy Settings

Linux

1. Из окна Настроек сети выберите Сетевой прокси.

2. Выберите Вручную в выпадающем меню Метод.

3. Введите IP-адрес вашего pfSense-устройства и порт прокси — 192.168.1.1 и 3128 в моем случае — рядом с HTTP-прокси и HTTPS-прокси.

4. Закройте окно Настроек сети.

Linus Proxy Setup

iOS

1. В приложении Настройки > WiFi коснитесь «i» справа от вашего WiFi-подключения.

2. Прокрутите вниз и выберите Настроить прокси.

3. Выберите Вручную.

4. Введите IP-адрес вашего pfSense-устройства и порт прокси — 192.168.1.1 и 3128 в моем случае — рядом с Сервер и Порт.

5. Закройте приложение Настройки.

iPhone Proxy Settings

Android

1. Из приложения Настройки выберите WiFi.

2. Удерживайте нажатой сеть WiFi, с которой вы соединены.

3. Выберите Изменить сеть.

4. Разверните Дополнительные параметры.

5. Выберите Вручную из выпадающего меню Прокси.

6. Введите IP-адрес вашего pfSense-устройства и порт прокси — 192.168.1.1 и 3128 в моем случае — в поля Имя хоста прокси и Порт прокси.

7. Нажмите Сохранить.

Android Proxy

Обратите внимание, что для работы прокси через мобильные данные на iOS или Android, вам понадобится установить профиль управления мобильными устройствами (MDM), что выходит за рамки данного руководства. Мы, возможно, рассмотрим это в будущем.

Заключение

Так что теперь у вас есть работающий прокси-сервер с фильтрацией черного списка, который вы можете использовать для блокировки рекламы на всех ваших устройствах. Вы улучшили свою безопасность и конфиденциальность, избавившись от надоедливых рекламных объявлений, которые крадут ваши данные.

Вы также будете потреблять меньше пропускной способности. И ваши веб-страницы будут загружаться быстрее, так как реклама не будет загружаться и отображаться. К тому же Squid кэширует контент для вас. Так что контент, который вы часто запрашиваете, будет загружаться быстрее.

Здорово! Оставайтесь в безопасности.