Андрей Смирнов
Время чтения: ~26 мин.
Просмотров: 23

5. Настройка прокси в pfSense — Записная книжка компьютерщика

Что всегда заметит каждый пользователь? Правильно, отсутствие интернета. Но как? «Вконтакте» не грузится — значит, интернета нет. Но ведь бывает, что директор или бравые богатыри из отдела ИБ хотят что-то запретить, что-то собрать, где-то проконтролировать. И тут администратор начинает танцевать вокруг шлюза в интернет. Если в компании много денег, то танцы могут быть длительными и с галантными кавалерами (мар Checkpoint, мистер PaloAlto, господин SonicWall). А вот что делать, если денег только на железо, функционала хотят много, а делать надо быстро? Бежать. На помощь приходит Mr Proper Pfsense, активно поддерживаемый сообществом бесплатный, гибкий и несложный в настройке межсетевой экран на базе FreeBSD. В первой части рассмотрим классику жанра — межсетевой экран с прокси (аутентификация по учетным данным Active Directory) и фильтрацией контента, а также какой-никакой антивирусной проверкой трафика налету. Отдельно рассмотрим вопрос настройки удаленного доступа пользователей к сети предприятия. Если будет интерес, могу написать вторую часть инструкции по развертыванию, где рассмотрю вопросы балансировки между несколькими провайдерами, создания и одновременной работы двух шлюзов, а также добавления фич безопасности типа IPS/IDS, фильтр спама, более кошерной фильтрации средствами Dansguardian, сниффинга IM и HTTPS контента и много чего еще интересного. Для уменьшения возможного холивара: «Да, это можно сделать на %yourdistrname%» и «Да, все можно настроить из командной строки». Так, все формальности соблюдены — можно начинать. Установку сделаем с флешки. Для этого используем образ pfSense-memstick-2.2.2-RELEASE-i386.img.gz, скачанный с одного из зеркал, указанных на официальном сайте. Очень удобно, что сначала мы выбираем архитектуру, функционал, а потом уже нам предлагают список зеркал. Процесс установки детально расписывать не буду, там все элементарно, никаких дополнительных настроек не нужно. По окончанию установки вам предложат назначить VLAN и определить интерфейсы, а также их назначение. Выглядит это примерно так:97526fc2d7bb407db56adeecc485dbfe.jpg После настройки интерфейсов мы попадаем в меню с ограниченным числом пунктов, однако есть возможность выйти в шелл. На мой взгляд, самым полезным пуктом меню является возможность сброса пароля на веб-морду. Разработчики pfsense настоятельно рекомендуют проводить всю настройку только через графический интерфейс. А выглядит он достаточно симпатично, набор виджетов широк, можно кастомизировать их набор под себя.3b805e9e2ff548f5a089384387a0cc5a.jpg Первым делом создаем свой внутренний CA на pfsense или используем уже имеющийся. Для этого в меню System выбираем Cert Manager и в разделе CA проводим необходимые настройки: нужно указать длину ключа, алгоритм хэширования, время жизни и полное имя CA. Настроенный CA будет нам нужен для создания OpenVPN-сервера и для работы по LDAPS.269156b94380468bbb3e16d873b2023e.jpg Теперь интегрируем наш шлюз с Active Directory. В разделе Servers блока User Manager из меню System были проведены настройки на использование контроллера домена. Все до безобразия просто — указал адрес, транспорт, область поиска, контейнеры с учетками, креды для создания привязки и шаблон для заполнения Microsoft AD — можно выпускать кракена пользователей в интернет.9491a68950464d9e886ff036621a607a.jpg Перейдем к настройке правил фильтрации трафика. Во-первых, если требуется любая группировка адресов, портов, URL, тогда добро пожаловать на вкладку Aliases. Во-вторых, вы можете настроить временные промежутки, которые можно использовать для работы правил. По умолчанию создано правило «всем везде все можно», а также правило, которое не дает заблочить доступ к веб-морде. Создание правил выглядит довольно буднично:880fa7dabe97440da8ae545c58bd99e1.jpg Однако есть ряд дополнительных возможностей, например, разрешенные ОС, какие могут быть выставлены TCP-флаги, график работы правила, а также инспектор протоколов прикладного уровня.a5311a913fc64042850327a22c5a128c.jpg Настройка удаленного доступа OpenVPN с аутентификацией по паролю в локальной базе и сертификату можно посмотреть тут — www.youtube.com/watch?v=VdAHVSTl1ys. Выбор протоколов удаленного доступа невелик — IPSec, L2TP, PPTP и OpenVPN. При выборе PPTP сам pfsense напишет Вам, что протокол небезопасен и лучше выбрать другой. 0f15f6a551174b8195899cef63cbf5e6.jpg Аутентификация в локальной базе была выбрана с целью сохранения возможности удаленного подключения в случае каких-либо неполадок с серверами каталогов. Для экспорта настроек OpenVPN для устройств на разных платформах нужно установить пакет OpenVPN Client Export Utility, который есть в списке доступных для установки пакетов. Теперь возвращаемся к истокам – во вкладку Cert Manager, там создаем сертификат для сервера VPN и каждого клиента. Разница только в типе сертификата.1ca6768c9208471785d7b5764ba61c6f.jpg Переходим к настройке сервера OpenVPN. Выбираем режим работы сервера – в моем случае «Remote Access (SSL/TLS + User Auth)», сервер аутентификации, протокол, порт, нужный сертификат сервера VPN и выставляем нужные параметры шифрования. То, что предлагается по умолчанию — не лучший выбор.3b72eaaea27547e38a8535a80f119ba9.jpg Дальше настраиваем VPN-сеть и выставляем настройки для клиентов. Тут мы можем определить, стоит ли выдавать клиенту DNS-сервера, весь ли трафик клиента гнать в туннель и т.д. После этого сохраняемся и отправляемся на вкладку client export. Отсюда мы экспортируем нужные для подключения настройки и сертификат пользователя.d620600071ef4292b197f6bf9086ff04.jpg Кстати, при настройке сервера можно было воспользоваться Wizardом, который провел бы Вас через все “печали и невзгоды” настройки OpenVPN. Некий аналог кнопки “Сделать хорошо”. Конечно, если у вас многим пользователям нужен удаленный доступ, то работа по выдаче и отзову сертификатов, экспорту настроек, заведению пользователей в локальную базу превратиться в очень скучное, но ответственное задание. Считаю, что при подобных требованиях к масштабированию необходимо наличие отдельного CA с CRL и единой базы аутентификации, типа Active Directory. Но если пользователей мало, то предложенный выше вариант вполне работоспособен. Нам осталось настроить прокси, фильтрацию контента и антивирусную проверку. Устанавливаем HAVP-пакет – это прокси с ClamAV сканером. Для настройки указываем режим работы ClamAV и прокси, порт, интерфейс, настройки проверки проходящего трафика. Поскольку планируется использование squid, то наш режим работы — «Parent for Squid». Отдельно настраиваем параметры обновления антивирусной базы и ее зеркала. 0ea8c859704a4d028f7a7f8b67c3ceee.jpg Переходим к настройке Squid. После установки пакета выбираем режим работы прокси и порт, затем на вкладке «Auth Settings» указываем используемый метод аутентификации. Поскольку у нас стоит задача использования Active Directory в качестве базы пользователей, то используем протокол LDAP. Настройки для интеграции с контроллером домена представлены ниже.290e9d84c9db4c7f99a7b350251db907.jpg При необходимости настраиваем параметры вышестоящего прокси, управления кэшем и трафиком, а также ACL. Я, например, в whitelist вносил *microsoft.com/* для нормальной работы обновлений и активации ОС, и то не сканало. Но об этом чуть ниже. Теперь фильтрация – настраиваем squidGuardian. По подходам к фильтрации в принципе есть хорошая статья – «To-do: Фильтруем вся и всё». После установки squidGuardian через пункт «Proxy filter» меню «Services» переходим к его настройке. На вкладке «Blacklist» указываем откуда качать сами блэклисты в формате tar или tar.gz, а также на вкладке «General settings» ставим галочку для включения использования блэклистов. Я использовал бесплатные блэклисты отсюда. В случае необходимости работы контентного фильтра по времени, промежутки можно задать на вкладке Times. Дальше уже настраиваете общие или групповые ACL, главное не забыть поставить галочку напротив запрета использования IP-адресов в URL. Для настройки правил фильтрации нужно нажать «Target Rules List» и выбрать действия для нужных категорий, а также действие по умолчанию.4e2768b41e344b74809429edcbc08196.jpg Если у вас есть необходимость в создании собственных категорий, то можно воспользоваться страничкой «Target Categories». После сохранения ваша категория появится в общем перечне правил. Я создавал свою категорию для разрешения доступа к ресурсам по IP-адресам, у которых нет DNS-имени. А теперь ложка дегтя. Вполне допускаю, что проблемы вызваны собственной кривизной рук, но все же. Если кто-то из сообщества сможет подсказать какие-то решения, то я буду крайне признателен. 1. Разработчики давно обещают, но пока так и не сделали поддержку L2TP over IPSec. 2. Проблемы при попытке срастить pfsense для использования сертификатов AD CS. Я читал обсуждение отсюда, но так и не смог победить мелкомягкого дракона. 3. Проблемы работы клиент-банков в случае, если у вас есть балансировка между провайдерами. 4. Если у вас указана аутентификация пользователей через AD, а контроллер домена недоступен, то ваш встроенный(!!!) админ pfsense также откажется работать. Есть обсуждение на форуме, люди пишут скрипты на php для решения вопроса, но это не является рекомендуемым решением. 5. Видимо тут мои личные проблемы с кириллицей. Во-первых, не работает аутентификация в случае использования пароля в кириллической раскладке. Во-вторых, проблемы в отображении имен контейнеров AD на кириллице. 6. Несмотря на все усилия, время от времени возникают проблемы с сервисами от Microsoft. Чаще всего не работает активация ОС. Думаю, тут все же необходимо будет поправить конфиг squid вручную. В заключении хотел бы отметить, что данный дистрибутив импонирует мне широким функционалом и гибкостью, очень легко клонировать настройки на несколько шлюзов, есть возможность сделать embedded решения. Конечно, полная настройка через веб ИМХО не есть хорошо, но может именно таким образом разработчики огораживают начинающих админов от болезненных ударов граблей разной высоты.

Давайте начнём установку, скачав установочный файл с официального сайта www.pfsense.org Минимальные заявленные требования для версии 2.4.4: CPU 600 MHz или быстрее RAM 512 MB или больше 4 GB на HDD

Установка сложностей не вызывает, pfsense автоматически определит WAN и LAN интерфейсы. Если это не так, можно воспользоваться пунктом 1 из меню – assign interfaces, или назначить нужные IP адреса используя пункт 2.Screenshot_3.jpg Следующим этапом переходим в веб интерфейс. В моём примере это адрес WAN интерфейса, полученный по DHCP – https://192.168.1.202/. Что бы зайти через WAN интерфейс временно отключим через консоль firewall командой pfctl -d. Через LAN доступ есть по умолчанию. Используем дефолтные учетные данные – Логин admin пароль pfsense.

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

В принципе, мы уже получили рабочую систему с двумя интерфейсами. У нас в примере есть еще третий сетевой интерфейс – по умолчанию он выключен. Если вы хотите задействовать и его например в качестве третьей подсети – переходите на вкладку interfaces, Assignments. Тут мы можем добавить и сконфигурировать настройки для нового интерфейса, нажав сначала кнопку add, а затем кликнув по названию интерфейса и поставив галочку “Enable interface”.

pfsense_install_4-1024x348.jpg

Теперь давайте добавим правила для интерфейсов. Я хочу получать доступ к нашему маршрутизатору через WAN (в работающий среде такого делать не стоит, по умолчанию извне запрещены все подключения)

Добавим правило разрешающее подключение извне с любого IP и порта на 443 порт нашего маршрутизатора.

Block private network и block bogon networks означает, что по умолчанию блокируются диапазоны приватных частных сетей, и адреса из диапазонов еще не распределенных или зарезервированных.

Не забывайте, что правила обрабатываются по очереди, и если первое правило у вас разрешающее, а идущее за ним такое же правило запрещающее (или просто попадающее под такие же условия) то сработает первое правило и обработка остановится.

Теперь представим, что во внутренней сети у нас есть сервис, к которому нужно предоставить доступ извне. Представим что это почтовый сервер, и он должен принимать почту на 25-м порту. Нам нужно сделать проброс порта во внутреннюю сеть. Здесь нам поможет пункт firewall – NAT, port forward.

Выбираем интерфейс на который будет приходить запрос, выбираем протокол – в нашем случае это TCP, Destinantion port range – порт, или диапазон портов, при обращении на который произойдёт переадресация на Redirect target port, в нашем случае это SMTP, он же 25-й порт. Filter rule association выбираем add aassociation rule – в firewall автоматически добавится разрешающее правило привязанное к правилу проброса порта. Нажимаем save и apply – и теперь при обращению извне к 25-му порту произойдёт переадресация во внутреннюю сеть на 25-ё порт.

И так, теперь мы имеем: WAN интерфейс, смотрящий в интернет, и LAN интерфейс, смотрящий в локальную сеть. Достаточно указать всем компьютерам локальной сети в качестве шлюза LAN интерфейс – и у пользователей появится доступ в интернет, а снаружи периметр надежно защищен брандмауэром нашего маршрутизатора – работает он на основе packet filter, встроенного в FreeBSD.

Представим теперь, что у нас довольно много различных сервисов, проброшенных внутрь сети, надо их тоже как то обезопасить. Фаервол спасет нас только на уровне IP и TCP, то есть 4-го и 3-его уровня модели OSI. А нам нужно защищать пользователей внутри сети и наши внешние сервисы. В этом нам поможет suricata – анализатор сетевых пакетов. Установить его можно через package manager.

Теперь в меню services нам доступна наша IDS.

В меню interfaces нажимаем add, и добавляет WAN интерфейс, настройки можем оставить по умолчанию.

Важная вкладка Global Settings. Здесь мы выбираем какие правила скачивать. Правила – это предопределенные паттерны событий, списки IP адресов которые представляют угрозу. Они будут всё время обновляться. Есть платная и бесплатная версия этих обновлений. Для бесплатной нужно зарегестрироваться по ссылке, которая будет там же на странице – Sign Up for a free Registered User Rules Account. Поставить галочки, после регистрации получить Snort Oinkmaster Code и вставить его в соответсвующее поле.

Чуть ниже на странице выставляем интервал обновления правил, а еще ниже время удаления заблокированных IP адресов из списка.

Проверяем – переходим на вкладку update, и пробуем обновить наши правила.

Если правила у нас удачно загрузились, переходим на вкладку wan categories. Данная секция позволяет выбрать уровень срабатывания правил – IPS Policy Selection и действие при срабатывании правила – только предупреждение или заданное в правиле действие (например drop connection)

На вкладке interfaces – wan settings есть поле Alert and Block Settings, если поставить галочку Block Offenders хосты на которых сработали правила будут блокироваться.

Если suricata ошибочно заблокировал хост или сайт, переходим на вкладку blocks, и удаляем IP из таблицы.

Если же правило срабатывает постоянно, заходим на вкладку alerts, находим правило, и нажимаем красный крестик. Этим мы отключим данное правило.

Теперь представим, что мы хотим исключить какой-нибудь IP из проверки. Для этого идём в меню firewall – aliases, и создаём новый список с типом hosts.

Далее идём в suricata – passlists и добавляем созданный список алиасов. Теперь все адреса добавленные в этот список никогда не заблокируются. Не забываем после добавления перезапустить сервис.

Отлично, мы создали и защитили наш шлюз в интернет. Настало время подумать об удаленном доступе внутрь сети для пользователей. В этом нам поможет сервер OpenVPN.

Далее идём в System – Certificate Manager и создаём центр сертификации.

Теперь можно выбрать его в настройках

Раздел Advanced Client Settings. Опция DNS Default Domain отдаёт суффикс домена для односложных имён. DNS Server 1 – указываем внутренний DNS. Force DNS cache update – обновляем кеш DNS в клиенте.

В Advanced Configuration есть возможность прописать маршрут. Например мы хотим, что бы при запросе какого-то адреса мы заворачивали трафик на него в туннель. Это можно сделать с помощью команды push route, как на скриншоте.

Теперь сохраняем наш сервер, и устанавливаем через менеджер пакетов openvpn-client-export

Идём в user manage и создаём нового пользователя. Не забываем поставить галочку Click to create a user certificate. Следующий шаг перейти в OpenVPN – client export. Здесь мы увидим выбор установочных файлов для пользователя. Если выбрать windows vista and later, мы получим установочный файл для windows, который содержит сам клиент и сертификат. Можно так же скачать конфигурационный файл под android или под mac. После установки, клиент нужно запускать от имени администратора, что бы сработала очистка кеша и добавились маршруты. Не забываем, что в качестве шлюза у машин в локальной сети должен быть указан pfsense.

Отлично. Теперь у нас есть маршрутизатор, выход в интернет, опубликованы сервисы, настроена безопасность, и есть удалённый доступ. Уже неплохо.

Давайте теперь настроим прокси сервер squid с антивирусом. Так мы сможем контролировать трафик пользователей и проверять его на шлюзе антивирусом. Для начала установим пакет squid.

Перейдём в раздел настроек general. Что бы squid заработал, нужно поставить галочку Enable Squid Proxy. Выбираем интерфейс, на котором будем перехватывать запросы – Proxy Interface(s). Выбираем порт – по умолчанию 3128. Если мы не включим transparent mode, то есть прозрачный режим, то для доступа к интернету нам понадобится прописать адрес прокси сервера и порт в браузерах пользователей. Важный пункт Allow Users on Interface. Он означает, что пользователям на этом интерфейсе автоматически предоставляется доступ к прокси серверу, в противном случае будет запрошена аутентификация.

Следующий пункт SSL Man In the Middle Filtering является важным. Зашифрованный SSL трафик не может быть расшифрован шлюзом, поэтому блокировки сайтов а также проверка антивирусом работать не будет. Включаем enable ssl filtering, выбираем режим Splice Whitelist, Bump Otherwise. Это означает, что все сессии, которые не находятся в бело листе будут перехватываться. Для этого режима должен быть указан центр сертификации шлюза – CA, мы создали его раньше. Как это работает. Клиент посылает запрос на соединение с сайтом SSL через шлюз. Далее шлюз устанавливает от СВОЕГО имени соединение с сайтом SSL обратный трафик расшифровывается на шлюзе, шифруется сертификатом ШЛЮЗА и отправляется клиенту. Что бы это работало, на ВСЕХ компьютерах локальной сети сертификат сервера доложен быть установлен в Доверенные корневые сертификаты.

Наконец последний раздел – Headers Handling, Language and Other Customizations. Здесь важным пунктом будет Visible Hostname. Именно это это будет отображаться в сообщениях об ошибках.

Теперь включим антивирус на вкладке ClamAV Anti-Virus Integration Using C-ICAP, укажем периодичность обновления баз ClamAV Database Update, включим проверку Google Safe Browsing и исключим из проверки видео и аудио – Exclude Audio/Video Streams.

На вкладке ACLs мы можем задавать разрешения для IP адресов и подсетей, а на вкладке Traffic Mgmt устанавливать ограничения на полосу пропускания. Вкладка Authentication отвечает за выбор способов аутентификации пользователей.

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

В качестве примера, рассмотрим еще reverse proxy для сервере обновлений NOD32. Работает он на порту 2221.

На вкладке web servers укажем порт и IP внутри сети сервера обновлений.

А на вкладке mappings укажем созданного пира, и самое главное регулярные выражения, с которым будет работать reverse proxy. Например ^http://site.ru:2221/nod.*$ Означает что начало строки может быть только такое: http://site.ru:2221/nod а дальше любой символ и конец строки. Например nod6C47.nup, то есть файл обновления.

Можно посмотреть и конфиг для exchange. Для этого нужно зайти в Diagnostocts – Edit file – Browse. Перейти в папку usr/local/etc/squid/squid.conf.

Здесь мы увидим паттерны:

Вот сколько всего можно сделать при помощи 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 будет посвящен настройке прокси-сервера в этом программном маршрутизаторе. Дополнительно мы покажем вам, как снять статистику с прокси, т.е. как узнать кто и в каких количествах использует интернет.

Установка

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

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

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

Настройка

Установили? Все три пакета должны отобразиться в списке в Installed packages. Идем в меню ServicesProxy server. Здесь, во вкладке General, расположены основные настройки.001.pngВо-первых выбираем сетевой интерфейс 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 можно установить ограничения на максимальный размер скачиваемых и закачиваемых файлов. Имхо одна из самых полезных вещей simple-smile.pngЗакладка Auth Settings в режиме Transparent не работает вообще. Здесь настраиваются опции аутентификации.Последняя закладка нужна для добавления пользователей, авторизованных на прокси-сервере в случае использования обычного режима работы.

Firewall

Какой бы мы режим не выбрали, нам нужно сделать так, чтобы доступ в интернет осуществлялся только через прокси-сервер. И прежде чем мы пойдем дальше, нам необходимо внести некоторые коррективы в правила фаервола. Если вы устанавливали pfSense по нашим предыдущим обзорам, то набор правил по умолчанию в закладке LAN меню FirewallRules у вас будет выглядеть следующим образом:002.pngНа данном этапе нужно удалить все правила кроме первого, которое нужно только для того, чтобы бы мы сами себе не заблокировали доступ на web-интерфейс pfSense. Удалить любое правило можно нажатием кнопки с изображением крестика справа от нужного правила. После удаления список правил получился вот такой:003.pngТеперь добавим одно довольно простое правило, которое будет разрешать доступ с компьютеров локальной сети до машины с pfSense. Это делается кнопкой, я её указал стрелкой на скриншоте выше. Такое правило нужно по двум причинам как минимум:

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

По сути, можно было бы создать два отдельных правила под эти нужды, но новичкам мы рекомендуем все-таки ограничиться одним более универсальным правилом, которое дополнительно может избавить и от других проблем в процессе настройки. Итак, в процессе создания правило будет иметь следующий вид (самые важные моменты я выделил желтым):004.pngПосле удаления старых правил и создания новых не забудте нажать кнопку Apply Changes вверху! Итоговый вид будет вот такой:005.pngТеперь можно попробовать выйти в интернет с любого компьютера локальной сети. Весь трафик при этом будет проходить через прокси-сервер pfSense. Посетите несколько сайтов, попробуйте чито-нибудь скачать, кароче создайте вид бурной деятельности в интернете. Сейчас это нужно просто для того, чтобы создать некотрой объем записей в лог файле для нашей будущей статистики.

Статистика Lightsquid

Давайте посмотрим как ее настроить. Сначала пройдем в меню StatusProxy report.006.pngНа первой закладке Settings сделаем несколько манипуляций:

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

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

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

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

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

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

Идем в меню ServicesAntivirus, затем переходим на закладку HTTP Proxy и выставляем следующие опции:Enable — ставим галку. Это главный тумблер антивируса.Proxy Mode — Parent for Squid. Связываем его с нашим прокси-сервером.Proxy Interface — LAN. Указываем сетевой интерфейс, на котором он будет работать.Proxy port — оставляем по умолчанию, в моем примере 3125language — Russian. Чтобы антивирус все свои сообщения для пользователей выводил на понятном языке simple-smile.png002.pngВсе параметры продублированы на скриншоте. После настройки не забываем нажать кнопку Save внизу страницы!Теперь переходим на закладку Settings. Эти настройки уже не так важны, как на предыдущей закладке, но тем не менее выставить их не помешает.Первый параметр — частота обновления антивирусных баз. Я выставил 1 час, он вы можете взять любое другое удобное значение.Второй параметр — Регион зеркала для обновления баз. Выставляйте ближайший к себе.И последнее что я сделал — включил логирование событий — галка Log.003.pngНажимаем кнопку Save.

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

Переходим в меню ServicesProxy server и в первой закладке проматываем страницу в самый низ. В поле Custom Options у нас должно появиться несколько записей про антивирус havp:004.pngЕсли всё так, то нажимаем кнопку Save.Теперь переходим в меню StatusServices:005.pngНам здесь нужно убедиться, что службы havp и squid работают: статус должен быть Running. Если это не так, попробуйте нажать на кнопку Start (указал стрелкой на скриншоте).Если не поможет, перезагрузите pfSense через меню DiagnosticsReboot. Когда я настраивал у меня по непонятным для меня причинам служба havp запустилась сама минут через 5 после перезагрузки роутера.

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

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

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

Для ограничения доступа к различным сайтам мы будем использовать фильтр SquidGuard. Настройка этого компонента производится в меню ServicesProxy filter. Для начала включаем черные списки — установите галку Blacklist, а затем в поле Blacklist URL добавьте адрес для загрузки черных списков (например http://www.shallalist.de/Downloads/shallalist.tar.gz ). Нажимаем кнопку Save внизу страницы. После этих манипуляций идем в закладку Blacklist и жмем кнопку Download, чтобы скачать черные списки.008.pngПосле скачивания SquidGuard перестроит базу известных ему сайтов, что может занять некоторое время. На моей относительно не слабой машине это заняло порядка 5-7 минут, а на сайте разработчика вообще написано, что этот процесс может занять до получаса. По завершению этого чудного процесса вы должны получить надпись «Blacklist update complete».009.pngТеперь возвращаемся в закладку General Settings, выставляем галку Enable, можно активировать все галки логирования событий. Затем жмем Save внизу. В итоге должно получиться вот так:007.pngПосле включения фильтра весь трафик будет блокироваться. Чтобы это исправить — идем в настройки по умолчанию, за которые отвечает закладка 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.010.pngВы можете создать сколько угодно временных интервалов, затем их применять в пользовательских списках доступа.

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

Это делается в закладке Groups ACL. Сделаем одно правило для админского компа. Назовеем правило adminPC, укажем его IP-адрес, в ниспадающем списке Time при желании можно указать временной интервал из предварительно созданных на шаге 1.011.pngКатегории сайтов при разворачивании у нас будут представлены двумя столбцами. Левый столбец определяет фильтрацию категорий в установленном нами временном интервале, а правый столбец наоборот — в остальное время.012.pngНажимаем Save. Созданные правила можно редактировать, выключать, удалять. Чтобы выключить какое-либо правило надо зайти в него,014.png

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

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

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

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

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

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

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

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

Используемые источники:

  • https://habr.com/post/257787/
  • https://hobbycomp.ru/soft/pfsense-shlyuz-za-pyat-minut/
  • http://fadmin.ru/article/nastroyka-pfsense-v-kachestve-korporativnogo-proksi-servera

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации