Настройка pfSense в качестве корпоративного Прокси Сервера

Маршрутизатор pfSense - этот роутер основан на FreeBSD, а появился он как ответвление от проекта m0n0wall в 2006-м году. Если m0n0wall представляет собой простой программный маршрутизатор с базовым набором функций, то pfSense вобрал в себя почти весь функционал обычного BSD или linux дистрибутива, заточенного под сетевые нужды.

Основные функции

  1. Фаервол
  2. Правила для ограничения количества подключений
  3. Фильтрация трафика на основе данных об ОС пользователя
  4. Возможность логирования событий, когда трафик удовлетворяет каким-либо правилам  фаервола
  5. Гибкая политика роутинга в случае использования нескольких каналов: балансировка нагрузки, основной-резервный и пр.
  6. Любым IP-адресам и диапазонам можно назначать имена для более удобного составления правил
  7. Прозрачная фильтрация трафика.
  8. Нормализация пакетов — проверка фрагментированных пакетов (применяется для предотвращения специфических атак).
  9. NAT всякоразный
  10. Аппаратное резервирование. Две или более машины с установленным pfSense позволяют создать отказоустойчивый кластер
  11. VPN: IPSec, PPTP, OpenVPN, PPPoE
  12. Мониторинг всех параметров роутера
  13. Динамический DNS. Поддерживается 13 сервисов.
  14. Captive Portal
  15. DHCP-сервер

…и много другое.

pfSense можно запустить как LiveCD с возможностью и хранить конфиг на сменном носителе, а можно честно установить на хард. В последнем случае функционал роутера можно расширять, доустанавливая нужные компоненты: веб-сервер, samba, radius-сервер, ftp-сервер и пр (более 50 различных дополнений).
Минимальные системные требования выглядят следующим образом:
Процессор — 100 MHz Pentium 1
Оперативная память — 128 Mb
Здесь самое главное понять, что чем больше возможностей pfSense вы хотите задействовать, тем мощнее нужен комп под него. Вполне логично.

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

Установка

Для полного счастья нам надо установить два пакета. Делается это в меню System\packets. Здесь есть две вкладки. Available Packages — доступные для установки пакеты. Installed Packges — уже установленные пакеты.

Что где находится, думаю, понятно. В Available Packages в списке найдите и установите следующие пакеты (обязательно в указанном порядке):

  1. squid — сам прокси-сервер. Там есть еще похожий пакет squid3 — его устанавливать не надо!
  2. lightsquid — модуль статистики

Настройка

Установили? Все три пакета должны отобразиться в списке в Installed packages. Идем в меню Services\Proxy server. Здесь, во вкладке General, расположены основные настройки.

Во-первых выбираем сетевой интерфейс LAN, чтобы только на нем прокси принимал запросы. Далее ставим галку Allow users on interface — разрешаем пользоваться прокси всем, кто подключается со стороны выбранного интерфейса.

Знаете как в интернете появляются анонимные прокси (в большинстве случаев)? Это когда админ забыл ограничить доступ к прокси только из своей локальной сети. Т.е. получается, что его прокси-сервером может пользоваться кто угодно из интернета в своих корыстных целях. Никогда не наступайте на эти грабли!

Следующая галка — Transparent proxy. Есть два основных режима работы сервера: обычный и прозрачный (transparent). По существу два режима отличаются тем, что в последнем варианте не нужно настраивать никакие опции прокси-сервера в броузерах на компьютерах локальной сети. Т.е. выходя в интернет со своего компа, человек думает, что подключен на прямую, а на самом деле — нет. Недостаток у прозрачного режима только один — нельзя сделать ограничения по логину и паролю на доступ в интернет. Т.е. либо все компьютеры сети выходят в интернет прозрачно либо никто не выходит. Либо пользуйтесь обычным режимом прокси-сервера с проверкой по логину и паролю для каждого человека.
На самом деле, прокси-сервер squid умеет работать в двух режимах одновременно, но в pfSense включить их одновременно через web-интерфейс нельзя. Можно попробовать вручную отредактировать конфигурационный файл. Мы проведем этот эксперимент в другой раз.
Если вы только начинаете изучать pfSense и вы раньше никогда не настраивали squid, то мы вам рекомендуем для начала попробовать режим transparent — он проще в настройке.
Давайте еще разберем несколько основных настроек, которые, кстати говоря, будут одинаково справедливы для обоих режимов работы прокси-сервера в pfSense:

  1. Enable logging — включить запись логов. Если вы собираетесь пользоваться статистикой, то обязательно включите.
  2. Log store directory — каталог хранения лог-файлов. Значение по умолчанию менять крайне не желательно.
  3. Log rotate — ротация логов. Делается для автоматического архивирования старых лог-файлов. Статистика прокси-сервера смотрится только из актуального лог-файла, а не из архивного. Поэтому интервал ротации нужно брать столько дней, когда лог перестает быть актуальным для вас, например, 2 месяца, т.е. 60 дней.
  4. Proxy port — порт, на котором будет работать прокси-сервер. Обычно ставится значение 3128.
  5. Language — язык, на котором будут отображаться различные сообщения для пользователей прокси-сервера. Обычно ставится Russian-1251.

И еще пара интересных опций, которые работают только в режиме Transparent:

  1. Bypass proxy for these source IPs — сюда можно вписать список компьютеров локальной сети через разделитель ; которым разрешено ходить в обход прокси-сервера.
  2. Bypass proxy for these destination IPs — сюда можно вписать список внешних ресурсов через разделитель ; до которых все компьютеры локальной сети смогут ходить напрямую (не через прокси).

После выставления всех опций не забываем нажать кнопку Save внизу страницы.
Давайте рассмотрим другие закладки. В Upstream Proxy указывается вышестоящий прокси-сервер. В закладке Cache Mgmt — настраивается кеширование. В закладке Access Control — можно прописать разрешенные и запрещенные есть. Вся эта закладка не имеет смысла, если мы установили опции Allow users on interface и Transparent proxy. В закладке Traffic Mgmt можно установить ограничения на максимальный размер скачиваемых и закачиваемых файлов. Имхо одна из самых полезных вещей :)
Закладка Auth Settings в режиме Transparent не работает вообще. Здесь настраиваются опции аутентификации.
Последняя закладка нужна для добавления пользователей, авторизованных на прокси-сервере в случае использования обычного режима работы.

Firewall

Какой бы мы режим не выбрали, нам нужно сделать так, чтобы доступ в интернет осуществлялся только через прокси-сервер. И прежде чем мы пойдем дальше, нам необходимо внести некоторые коррективы в правила фаервола. Если вы устанавливали pfSense по нашим предыдущим обзорам, то набор правил по умолчанию в закладке LAN меню Firewall\Rules у вас будет выглядеть следующим образом:

На данном этапе нужно удалить все правила кроме первого, которое нужно только для того, чтобы бы мы сами себе не заблокировали доступ на web-интерфейс pfSense. Удалить любое правило можно нажатием кнопки с изображением крестика справа от нужного правила. После удаления список правил получился вот такой:

Теперь добавим одно довольно простое правило, которое будет разрешать доступ с компьютеров локальной сети до машины с pfSense. Это делается кнопкой, я её указал стрелкой на скриншоте выше. Такое правило нужно по двум причинам как минимум:

  1. <Чтобы компьютеры локальной сети могли разрешать DNS-имена через наш pfSense-маршрутизатор
  2. Чтобы на начальном этапе мы могли,например, пинговать роутер и выполнять любые другие необходимые диагностические действия.

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

После удаления старых правил и создания новых не забудте нажать кнопку Apply Changes вверху! Итоговый вид будет вот такой:

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

Статистика Lightsquid

Давайте посмотрим как ее настроить. Сначала пройдем в меню Status\Proxy report.

На первой закладке Settings сделаем несколько манипуляций:

  1. Language — устанавливаем Russian
  2. IP resolve method — самый универсальный способ — Demo
  3. Refresh sheduler — интервал обновления статистики. Чем меньше интервал, тем больше будет нагружен pfSense. На этапе настройки и отладки мы рекомендуем минимально возможное значение — 10 мин, но затем лучше выбрать более рациональное значение, например, 60 мин.

Нажимаем внизу страницы кнопку Save, а после этого кнопку Refresh full. Затем перейдите на саму страницу статистики — вторая закладка Lightsquid report. Сначала там может появиться страница с ошибкой. Ничего страшного, оставьте ее в покое, просто чуть позже (минут через 10-15) попробуйте обновить страницу в броузере. Должно появиться примерно вот это:

Если у вас всё так, то значит что все настроено правильно. Статистика имеет довольно простой и на наш взгляд понятный интерфейс.

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

Как это работает

Изначально этого раздела не было в нашем обзоре, но учитывая комментарии наших постоянных читателей, мы решили внести некоторую ясность.
Итак, вот схема (кликните для увеличения):

HAVP (антивирус) по сути является самостоятельным мини-прокси, который только фильтрует вирусы. Для работы ему необходим отдельный порт (по умолчанию в pfSense используется 3125). Затем отфильтрованный трафик он отдает основному прокси-серверу Squid, который работает через порт 3128. Этот трафик по необходимости фильтруется контентным фильтром SquidGuard и после этого отдается компьютерам локальной сети. Как вы понимаете, такая многоступенчатая фильтрация требует определенных ресурсов, поэтому если pfSense установлен на слабую машину, вы можете получить ощутимые тормоза при серфинге в интернете.

Настройка Антивируса

Идем в меню Services\Antivirus, затем переходим на закладку HTTP Proxy и выставляем следующие опции:
Enable — ставим галку. Это главный тумблер антивируса.
Proxy Mode — Parent for Squid. Связываем его с нашим прокси-сервером.
Proxy Interface — LAN. Указываем сетевой интерфейс, на котором он будет работать.
Proxy port — оставляем по умолчанию, в моем примере 3125
language — Russian. Чтобы антивирус все свои сообщения для пользователей выводил на понятном языке :)

Все параметры продублированы на скриншоте. После настройки не забываем нажать кнопку Save внизу страницы!
Теперь переходим на закладку Settings. Эти настройки уже не так важны, как на предыдущей закладке, но тем не менее выставить их не помешает.
Первый параметр — частота обновления антивирусных баз. Я выставил 1 час, он вы можете взять любое другое удобное значение.
Второй параметр — Регион зеркала для обновления баз. Выставляйте ближайший к себе.
И последнее что я сделал — включил логирование событий — галка Log.

Нажимаем кнопку Save.

Проверка сопряжения с прокси-сервером.

Переходим в меню Services\Proxy server и в первой закладке проматываем страницу в самый низ. В поле Custom Options у нас должно появиться несколько записей про антивирус havp:

Если всё так, то нажимаем кнопку Save.
Теперь переходим в меню Status\Services:

Нам здесь нужно убедиться, что службы havp и squid работают: статус должен быть Running. Если это не так, попробуйте нажать на кнопку Start (указал стрелкой на скриншоте).
Если не поможет, перезагрузите pfSense через меню Diagnostics\Reboot. Когда я настраивал у меня по непонятным для меня причинам служба havp запустилась сама минут через 5 после перезагрузки роутера.

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

Есть специальный сайт, откуда можно «скачать» вирус. Наш HAVP должен его не пропустить и сказать об этом пользователю.
Вот вам ссылочка для проверки — http://www.rexswain.com/eicar.zip
Попробуйте зайти по ней. В ответ у вас должно появиться следующее:

Настраиваем фильтры SquidGuard

Для ограничения доступа к различным сайтам мы будем использовать фильтр SquidGuard. Настройка этого компонента производится в меню Services\Proxy filter. Для начала включаем черные списки — установите галку Blacklist, а затем в поле Blacklist URL добавьте адрес для загрузки черных списков (например http://www.shallalist.de/Downloads/shallalist.tar.gz ). Нажимаем кнопку Save внизу страницы. После этих манипуляций идем в закладку Blacklist и жмем кнопку Download, чтобы скачать черные списки.

После скачивания SquidGuard перестроит базу известных ему сайтов, что может занять некоторое время. На моей относительно не слабой машине это заняло порядка 5-7 минут, а на сайте разработчика вообще написано, что этот процесс может занять до получаса. По завершению этого чудного процесса вы должны получить надпись «Blacklist update complete».

Теперь возвращаемся в закладку General Settings, выставляем галку Enable, можно активировать все галки логирования событий. Затем жмем Save внизу. В итоге должно получиться вот так:

После включения фильтра весь трафик будет блокироваться. Чтобы это исправить — идем в настройки по умолчанию, за которые отвечает закладка Common ACL. Там есть надпись Target Rules List, выделенная красным. Если по ней нажать, то раскроется список категорий сайтов, которые входят в blacklist. Напротив каждой категории можно выставить следующие значения:

  • —— — не обрабатывать фильтром
  • whitelist — не блокировать никогда, даже если перекрывается другими правилами
  • deny — запрещать
  • allow — разрешать

В самом конце списка будет категория Default access (доступ по умолчанию). Мы рекомендуем поставить там allow, а на «нужных» категориях ставить deny. Тем самым по умолчанию мы разрешим доступ куда угодно за исключением запрещенных категорий. Каждый раз когда вы будете менять доступ до категорий не забывайте нажимать Save внизу и кнопку Apply в закладке General settings.

Важное замечание: после нажатия кнопки Apply фильтр перенастраивается несколько минут, поэтому не торопитесь сразу проверять изменения.

Типовые задачи для фильтра SquidGuard

1. Ограничить доступ по времени

Для этого сначала нужно определить временные интервалы. Это делается в закладке Times. При добавлении временного интервала его название не должно содержать пробелы. В нашем примере мы сделали сложный интервал. По будням доступ разрешен с 8 до 18, а в выходные с 9 до 15.

Вы можете создать сколько угодно временных интервалов, затем их применять в пользовательских списках доступа.

2. Индивидуальные настройки категорий для компа

Это делается в закладке Groups ACL. Сделаем одно правило для админского компа. Назовеем правило adminPC, укажем его IP-адрес, в ниспадающем списке Time при желании можно указать временной интервал из предварительно созданных на шаге 1.

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

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

установить саму первую галку — Disabled и сохранить правило.

3. Как добавить какой-либо сайт в белый список

В закладке Target Categories создаем новую категорию, куда добавляем нужные нам домены и/или нужные ссылки. Если у нас несколько адресов или доменов, то их можно вписать через пробел.

После создания категории, оно появится в общем списке категорий. Установите для нее режим доступа whitelist.

4. Как запретить загрузку файлов определенных типов

Создаем еще одну категорию, где в поле Extension вводим специальное регулярное выражение вида:
(.*\/.*\.(asf|wm|wma|wmv|zip|rar|mp3|avi|mpg|mpeg|mpv|mp3|vpu))
Список запрещаемых расширений файлов можете отредактировать сами. В итоге у вас должно получиться вот так:

Далее настраиваете режим доступа для созданной категории и дело в шляпе.

Самое главное на забывайте нажать кнопку Apply в закладке General Settings после всех манипуляций.
На этом пока всё. Удачи в освоении

Источник: http://macrodmin.ru/2011/10/vvedenie-v-pfsense

Вы можете задать вопрос по статье специалисту.

Ваш компьютер или ноутбук перестал работать? Требуется профессиональный ремонт?

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