pfSense — мощная операционная система маршрутизатора и брандмауэра с открытым исходным кодом, основанная на FreeBSD. С самого начала pfSense включает в себя набор надежных инструментов, позволяющих создавать безопасные сети.
Но pfSense также позволяет устанавливать пакеты из своего официального репозитория, чтобы добавить еще больше функциональности в вашу систему.
pfSense — мощная операционная система маршрутизатора и брандмауэра с открытым исходным кодом, основанная на FreeBSD. С самого начала pfSense включает в себя набор надежных инструментов, позволяющих создавать безопасные сети.
Но pfSense также позволяет устанавливать пакеты из своего официального репозитория, чтобы добавить еще больше функциональности в вашу систему.
Один из таких пакетов называется Squid. Squid — это кэширующий веб-прокси, который также может выполнять фильтрацию контента. Давайте немного подробнее рассмотрим это и предоставим некоторый контекст вокруг прокси-серверов и их использования.
Связанное руководство: Как настроить фильтрацию IP и DNS-блокировку на pfSense с помощью pfBlockerNG
Я описал функционал прокси-серверов в кэшировании и фильтрации контента, а также процесс настройки Squid и SquidGuard в pfSense для эффективной блокировки рекламы.
Применение этой методики способствует усилению безопасности и повышению конфиденциальности, понижению нагрузки на сеть и ускорению загрузки веб-страниц.
Прокси-сервер — это посредник между вашим устройством (ноутбуком, планшетом, смартфоном) и вашим конечным интернет-назначением (любойсайт.ком).
Ваш трафик покидает ваше устройство, подключается к прокси-серверу и отправляется к своему конечному назначению уже через прокси-сервер.
Зачем отправлять свой трафик через прокси-сервер? Есть несколько причин. Одна из них — кэширование контента. Это означает, что прокси-сервер сохранит некоторый контент локально, чтобы в следующий раз, когда клиент запросит этот контент, он будет обслуживаться из кэша, а не загружаться заново из интернета.
Это ускоряет просмотр интернета, потому что получение контента из локального кэша прокси гораздо быстрее, чем повторная загрузка через интернет.
Другая цель — фильтрация контента. Фильтрация контента означает блокирование соединений с определенными доменами или IP-адресами. Организации, которые блокируют доступ к Facebook, например, выполняют фильтрацию контента.
Еще одним применением фильтрации контента является блокировка рекламы. Онлайн-реклама надоедлива. Она нарушает вашу конфиденциальность, расходует вашу пропускную способность и является основным источником вредоносного программного обеспечения. Есть веские причины хотеть от них избавиться. И именно для этого мы будем использовать Squid в этой статье.
Мы покажем вам, как настроить Squid и SquidGuard (SquidGuard — это дополнительный компонент Squid, обеспечивающий фильтрацию на основе списков) на pfSense для блокировки рекламы на всех ваших устройствах.
В этом руководстве предполагается, что у вас есть рабочая система pfSense, настроенные рабочие интерфейсы WAN и LAN, а также доступ к графическому интерфейсу.
Сначала нам нужно установить прокси-сервер Squid.
1. Из верхних меню выберите Система > Менеджер пакетов. Вы перейдете на вкладку Установленные пакеты в Менеджере пакетов.
2. Выберите Доступные пакеты. Отобразится список доступных пакетов.
3. Прокрутите вниз, пока не увидите squid, и нажмите Установить. Появится окно Установщика пакетов.
4. Нажмите Подтвердить. Установка начнется.
5. Как только установка завершится, внизу окна Установщика пакетов вы увидите Успешно. Squid теперь установлен.
Теперь, когда Squid установлен, давайте настроим наш новый прокси-сервер.
Из верхних меню выберите Сервисы > Прокси-сервер Squid. Вы перейдете на вкладку Общие в Настройках Squid.
Мы пойдем по настройке Squid поэтапно. Наша цель — настроить блокировку рекламы с помощью Squid, поэтому мы не будем вдаваться в каждое подменю. Мы рассмотрим только те, которые необходимы для достижения нашей цели. Все настройки, о которых не упоминается, следует оставить значениями по умолчанию.
Перед настройкой Squid сначала перейдите на вкладку Локального кеша и примите настройки локального кэширования по умолчанию, нажав «Сохранить» внизу страницы.
Если вы попытаетесь настроить прокси-сервер без принятия настроек локального кеша по умолчанию, вам будет предложено это сделать, и вы потеряете настройки, которые вы уже настроили.
Если вы хотите впоследствии настроить настройки локального кеша, вы можете сделать это на вкладке «Локальный кеш» в настройках Squid.
Прокси-серверы могут работать двумя способами: прозрачно или явно. В прозрачном режиме настройка на клиентах (компьютер, планшет, смартфон и т.д.) не требуется — их трафик будет проксироваться прозрачно.
Однако этот режим будет проксировать только HTTP-трафик через порт 80, а не HTTPS-трафик (если вы не настраиваете фильтрацию SSL среднего человека — об этом далее). Поскольку большая часть интернет-трафика использует HTTPS, прозрачный режим имеет ограниченные возможности для блокировки рекламы, но он все равно может быть полезен для кэширования.
Явный и прозрачный режимы
Явный режим требует настройки каждого клиента для «запроса» доступа к прокси. И в этом режиме весь интернет-трафик TCP проксируется (HTTP и HTTPS). Это то, что нам нужно в этом руководстве. Поэтому в этом руководстве мы не будем включать режим прозрачности, но вы можете включить оба режима без проблем.
Как я упомянул выше, возможно прозрачно проксировать HTTPS-соединения. Но для этого, по сути, нужно нарушить HTTPS.
Squid может заменить корректный SSL-сертификат с веб-сайта, к которому вы пытаетесь получить доступ, своим собственным, расшифровать соединение и затем перешифровать его с помощью своего сертификата. Это позволяет фильтровать SSL-соединения, но также нарушает проверку HTTPS, которая должна происходить в вашем браузере.
Я не рекомендую использовать фильтрацию SSL среднего человека, кроме специфических целей для тех, кто понимает, что делает. Мы также оставим эту функцию отключенной.
Настройки здесь опциональны, но они ограничивают количество информации, отображаемой в заголовках Squid.
Чтобы увидеть, что мы можем явно заблокировать с помощью Squid, давайте перейдем на вкладку ACL (Access Control Lists).
Здесь мы видим несколько полей, в которых можно задать различные элементы для фильтрации Squid. Давайте рассмотрим каждое из них.
Разрешенные подсети
Вы можете добавить дополнительные подсети для прохождения через прокси 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 блокировать его, как ожидается.
На вкладке ACL (Access Control Lists) настроек прокси-сервера Squid введите facebook.com в поле Черный список.
Нажмите Сохранить внизу страницы.
Перейдите на вкладку General (Общие) в настройках прокси-сервера Squid.
Отметьте галочкой поле Включить Squid Proxy.
Нажмите Сохранить внизу страницы.
Теперь наш прокси-сервер включен и настроен для блокировки facebook.com.
Давайте быстро настроим веб-браузер, чтобы он проходил через прокси-сервер и проверим, работает ли всё нормально. Если всё правильно настроено, я не должен смочь получить доступ к facebook.com.
Нажмите на значок Настройки в верхнем правом углу браузера и выберите Параметры (в Windows это называется Опции). Вы перейдете на страницу Общие параметры.
Прокрутите страницу Общие параметры до раздела Параметры сети и нажмите кнопку Параметры.
Выберите Ручная настройка прокси.
В поле HTTP-прокси укажите IP-адрес вашей платформы pfSense. В моем случае это 192.168.1.1.
Установите порт 3128.
Установите галочку Использовать этот прокси-сервер для FTP и HTTPS.
Нажмите OK внизу окна и закройте страницу Параметры.
Теперь, если я попробую получить доступ к facebook.com (по HTTP или HTTPS), мой браузер покажет следующую страницу:
Именно то, что нам нужно.
Итак, у нас теперь есть работающий прокси-сервер, настроенный для блокировки facebook.com. Здорово. Однако, если мы хотим блокировать рекламу, нам придется добавить тысячи и тысячи доменов в поле Черный список Squid. Не слишком оптимально…
Вводите SquidGuard. SquidGuard — это дополнительный модуль к Squid, который может обрабатывать фильтрацию на основе списков.
При использовании фильтрации на основе списков вы вводите URL-адрес списка заблокированных доменов, и все домены, совпадающие с доменами из черного списка, блокируются.
Теперь, когда наш базовый прокси-сервер Squid работает, давайте установим и настроим SquidGuard.
1. Из верхнего меню выберите Система > Менеджер пакетов. Вы попадете на вкладку Установленные пакеты в Менеджере пакетов.
2.Выберите Доступные пакеты. Отобразится список доступных пакетов.
3. Прокрутите вниз, пока не увидите SquidGuard, и нажмите Установить. Отобразится окно Установщика пакетов.
4. Нажмите Подтвердить. Установка начнется.
5. После завершения установки, внизу окна Установщика пакетов вы увидите Успешно. Теперь SquidGuard установлен.
SquidGuard установлен. Перейдем к настройке фильтрации на основе списков.
Из верхнего меню выберите Службы > SquidGuard Proxy Filter. Вы попадете на вкладку Общие в Настройках SquidGuard Proxy Filter.
Как и при настройке самого Squid, мы пойдем по разделам настройки SquidGuard по шагам. И снова, мы не будем заходить в каждое подменю — только в те, которые нам нужны для достижения нашей цели. Все настройки, которые не упоминаются, следует оставить с значениями по умолчанию.
Пока оставьте поле Включить не отмеченным.
Отметьте поле Очищать рекламу.
Отметьте поле Черный список.
Введите следующий URL в поле URL черного списка: https://shallalist.de/Downloads/shallalist.tar.gz. Это наш URL черного списка. SquidGuard загрузит этот список и предоставит нам разные категории доменов, которые мы можем разрешить или заблокировать. Он предоставляется бесплатно и предоставляется Shalla Secure Services. Существуют и другие списки, но многие из них платные. Я долгое время использую Shallalist, и он работает очень хорошо, а также часто обновляется, поэтому рекомендую использовать его.
Нажмите Сохранить внизу страницы.
1. Перейдите на вкладку Черный список в Настройках SquidGuard Proxy Filter. URL черного списка будет отображен.
2. Нажмите кнопку Загрузить. Начнется загрузка и разбор черного списка.
3. По завершении вы увидите надпись Обновление черного списка завершено внизу окна Журнала обновления черного списка.
1. Перейдите на вкладку Общие ACL в Настройках SquidGuard Proxy Filter.
2. Нажмите символ + рядом с Список целевых правил. Отобразится Список целевых правил.
3. Первая запись в списке — adv, что означает рекламу. В выпадающем меню справа от нее выберите Отказать.
4. Продолжайте блокировать любые другие категории контента, которые вы хотите заблокировать.
5. Когда вы заблокируете все категории, которые вы хотите, перейдите вниз списка и выберите Разрешить в выпадающем меню рядом с Стандартный доступ.
6. Нажмите Сохранить внизу страницы.
7. Вернитесь на вкладку Общие в Настройках SquidGuard Proxy Filter, установите флажок Включить и нажмите Сохранить внизу страницы.
8. После сохранения нажмите кнопку Применить.
Теперь у нас есть настроенный Squid с фильтрацией черного списка. Если я использую свой браузер, который уже настроен на использование прокси, чтобы зайти на веб-страницу, известную своими рекламными объявлениями, они должны исчезнуть.
С включенным Squid:
С выключенным Squid:
Работает. Это замечательно. Но сейчас Squid будет перехватывать только трафик моего браузера, поэтому блокировка рекламы Squid будет действовать только в моем веб-браузере.
Я покажу вам, как настроить всё ваше устройство для отправки всего трафика через прокси-сервер. Таким образом, вы сможете воспользоваться блокировкой рекламы не только в браузере, но и в ваших приложениях. Я покажу вам, как это сделать на macOS, Windows, Linux, iOS и Android.
Давайте отменим ручные настройки прокси, которые мы настроили в Firefox для тестирования соединения, перед тем как настроить устройство клиента для системной конфигурации прокси.
1. Вернитесь в Настройки сети в Firefox и выберите Использовать системные настройки прокси. Это указывает браузеру использовать системные настройки как настройки прокси. Это настройка по умолчанию.
2. Нажмите ОК и закройте страницу Настройки.
1. В приложении Параметры системы выберите Сеть.
2. Убедитесь, что выбрано ваше текущее подключение, и нажмите Дополнительно в нижнем правом углу.
3. Выберите вкладку Прокси.
4. Отметьте оба пункта: Веб-прокси (HTTP) и Безопасный веб-прокси (HTTPS).
5. Введите IP-адрес вашего pfSense-устройства и порт прокси — 192.168.1.1 и 3128 в моем случае.
6. Нажмите ОК и Применить.
1. Откройте приложение Настройки (сочетание клавиш Win+I).
2. Перейдите в раздел Сеть и интернет.
3. Выберите вкладку Прокси.
4. Прокрутите вниз до раздела Настройка прокси вручную.
5. Включите переключатель Использовать прокси-сервер.
6. Введите IP-адрес вашего pfSense-устройства и порт прокси — 192.168.1.1 и 3128 в моем случае.
7. Нажмите Сохранить.
1. Из окна Настроек сети выберите Сетевой прокси.
2. Выберите Вручную в выпадающем меню Метод.
3. Введите IP-адрес вашего pfSense-устройства и порт прокси — 192.168.1.1 и 3128 в моем случае — рядом с HTTP-прокси и HTTPS-прокси.
4. Закройте окно Настроек сети.
1. В приложении Настройки > WiFi коснитесь «i» справа от вашего WiFi-подключения.
2. Прокрутите вниз и выберите Настроить прокси.
3. Выберите Вручную.
4. Введите IP-адрес вашего pfSense-устройства и порт прокси — 192.168.1.1 и 3128 в моем случае — рядом с Сервер и Порт.
5. Закройте приложение Настройки.
1. Из приложения Настройки выберите WiFi.
2. Удерживайте нажатой сеть WiFi, с которой вы соединены.
3. Выберите Изменить сеть.
4. Разверните Дополнительные параметры.
5. Выберите Вручную из выпадающего меню Прокси.
6. Введите IP-адрес вашего pfSense-устройства и порт прокси — 192.168.1.1 и 3128 в моем случае — в поля Имя хоста прокси и Порт прокси.
7. Нажмите Сохранить.
Обратите внимание, что для работы прокси через мобильные данные на iOS или Android, вам понадобится установить профиль управления мобильными устройствами (MDM), что выходит за рамки данного руководства. Мы, возможно, рассмотрим это в будущем.
Так что теперь у вас есть работающий прокси-сервер с фильтрацией черного списка, который вы можете использовать для блокировки рекламы на всех ваших устройствах. Вы улучшили свою безопасность и конфиденциальность, избавившись от надоедливых рекламных объявлений, которые крадут ваши данные.
Вы также будете потреблять меньше пропускной способности. И ваши веб-страницы будут загружаться быстрее, так как реклама не будет загружаться и отображаться. К тому же Squid кэширует контент для вас. Так что контент, который вы часто запрашиваете, будет загружаться быстрее.
Здорово! Оставайтесь в безопасности.