Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Безопасность работы с системой Linux

Файрволл pfSense на страже вашей сети

Оригинал: Protect your network with pfSense firewall/router
Автор: Cory Buford
Дата: 3 октября 2008
Перевод: Александр Тарасов aka oioki
Дата перевода: 28 октября 2008

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

В последней версии 1.2 включены функции, которые обычно можно встретить только в коммерческих файрволлах или аппаратных маршрутизаторах. Среди этих функций есть и веб-интерфейс для простого управления файрволлом. Хотя pfSense и обладает уникальными продвинутыми функциями (среди свободных файрволлов/маршрутизаторов), однако у него есть некоторые ограничения.

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

Одной из лучших функций файрволла является пассивный сбор информации об операционной системе (passive operating system fingerprinting, p0f). Файрволл определяет, с какой операционной системы идет соединение, и на основе этих данных можно разрешить или запретить отдельные виды трафика. Программа также поддерживает Policy routing (более гибкий механизм маршрутизации, нежели обычная адресная маршрутизация), работу в режиме прозрачного моста, что позволяет размещать pfSense между двумя устройствами без какой-либо дополнительной их настройки. pfSense позволяет настроить трансляцию сетевых адресов (NAT) и проброс портов, однако при использовании NAT есть ограничения использования протоколов Point-to-Point Tunneling Protocol (PPTP), Generic Routing Encapsulation (GRE) и Session Initiation Protocol (SIP).

Дистрибутив pfSense основан на FreeBSD, и в нем есть традиционный для FreeBSD протокол Common Address Redundancy Protocol (CARP), который предоставляет возможность группировки двух и более файрволлов для обеспечения отказоустойчивости. Есть поддержка нескольких глобальных соединений (WAN), поэтому можно настраивать распределение нагрузки входящего и исходящего трафика. Единственным ограничением является то, что возможно разделить трафик поровну между WAN-соединениями, однако нельзя указать, чтоб определенный трафик шел по какому-то определенному соединению.

pfSense поддерживает виртуальные частные сети (VPN) за счет реализации протоколов Internet Protocol Security (IPSec), OpenVPN и PPTP. Есть некоторые ограничения их использования при наличии NAT, а именно при подключении удаленных или мобильных IPSec VPN-клиентов через NAT их поддержка будет ограничена. Файрволл не поддерживает продвинутые функции IPSec, а именно NAT Traversal (также известно как NAT-T или Xauth) в процессе обмена интернет-ключами (Internet key exchange, IKE). Для обхода этих ограничений можно воспользоваться OpenVPN, однако также и он поддерживается не со всеми функциями. В то же время, разработчики планируют разделаться с этими ограничениями в следующей версии pfSense. На сайте pfSense эти ограничения и упущения расписаны более подробно.

Устанавливаем pfSense

Для начала скачайте pfSense, и выберите образ для встраиваемых устройств либо ISO-образ Live CD. Первый вариант следует выбирать лишь тогда, когда вы собираетесь использовать файрволл на компактном сетевом устройстве с Flash-накопителем. Обычным людям с обычными ПК следует выбирать ISO-образ Live CD. Для нормальной работы pfSense потребуется компьютер с минимальной тактовой частотой процессора 100 МГц, 128 Мб оперативной памяти и как минимум двумя сетевыми картами - для глобального (WAN) и локального (LAN) интерфейсов. Это минимальное ограничение годится для сетей с малым трафиком (менее 10 Мбит). С ростом пропускной способности сети и повышением функциональных требований будут расти и требования pfSense к аппаратуре. Просмотрев страницу selection and sizing, можно определиться с компьютером, на котором должен будет работать файрволл pfSense.

Я скачал ISO-образ Live CD размером 60 Мб и записал его на компакт-диск. В самом начале вам предложат на выбор несколько вариантов установки. Если вы впервые ставите pfSense, выбирайте опцию default. Первый процесс загрузки состоит из настройки VLAN и выбора интерфейсов - внутреннего LAN и внешнего WAN. Можно предоставить установщику возможность автоматически определить настройки этих интерфейсов, но тогда нужно убедиться, что они подключены. Если они не подключены, придется ввести имена интерфейсов вручную. К примеру, в моем случае LAN-интерфейсом оказался le0, а WAN-интерфейсом - le1.

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

Перед установкой pfSense необходимо создать и отформатировать раздел жесткого диска. Если выбрать рекомендуемые параметры, тогда pfSense создаст раздел автоматически. Однако можно сделать это и самому. В моем случае я выбрал рекомендуемый вариант. Далее вас спросят, на систему какого типа производится установка. Это может быть обыкновенная рабочая станция (одно- или многопроцессорная), сервер без консоли или клавиатуры, либо встраиваемая система. У меня был обыкновенный ПК - поэтому я выбрал однопроцессорную систему. После установки перезагрузите компьютер. Теперь можно получить доступ к настройкам через веб-интерфейс - просто введите указанный вами IP-адрес LAN-интерфейса в адресной строке своего браузера.

Используем pfSense

Конфигурирование pfSense ненамного отличается от любого сетевого файрволла или маршрутизатора с веб-интерфейсом. После входа в систему со стандартными логином и паролем, можно настраивать интерфейсы файрволла и его правила. Для более безопасной настройки нужно сразу сменить стандартный пароль и сменить тип сессии на HTTPS, это делается в general setup properties. Здесь можно также установить DNS-настройки файрволла.

Конфигурация LAN проста и понятна. Здесь можно поменять IP-адрес, если вдруг вас не устраивает адрес, указанный вами при установке. Во вкладке WAN можно выбрать одно из нескольких типов соединений, таких как Static, Dynamic Host Configuration Protocol (DHCP), Point-to-Point Protocol over Ethernet (PPPoE) либо кабель BigPond. Выберите соединение, в соответствии с тем, что дает вам ваш интернет-провайдер.

После настройки интерфейсов можно перейти к политикам файрволла. Порядок работы здесь такой же как и с обычными файрволлами - указываете интерфейс (WAN или LAN), адрес и порт источника, адрес и порт назначения, протоколы и службы, а также что со всем этим делать - пропускать (pass), блокировать (block) или отклонять (reject). Блокирование приводит к полной потере пакетов, в то время как отклонение пакетов возвращает ответ "недоступен" к хосту, который инициировал соединение. В целях безопасности рекомендуется блокировать, а не отклонять запросы. Во вкладке Firewall также можно настроить NAT для проброса отдельных портов на службы, либо настроить статический NAT (один к одному) отдельных хостов. Настройка по умолчанию для исходящих соединений - automatic/dynamic (автоматически/динамически), однако можно сменить ее на manual (ручной режим). Я опробовал несколько правил, например блокирование доступа к FTP для внешних сетей, и pfSense успешно блокировал доступ к этой службе.

Еще я тестировал VPN-функции pfSense. Дистрибутив поддерживает протоколы IPSec, OpenVPN и PPTP. Если вам требуется быстрое VPN-соединение, либо у вас узкий интернет-канал (требующийся для шифрованных по SSL VPN-соединений), рекомендую выбрать IPSec VPN. Если вы раньше настраивали IPSec VPN, тогда настройка IPSec в pfSense для вас будет проста и займет не более нескольких минут. Обратите внимание, что параметры алгоритмов должны совпадать на обеих концах туннеля. Обратите внимание на ограничения реализации IPSec VPN в pfSense - это есть в вики разработчиков. Для простых конфигураций IPSec эти ограничения можно не учитывать, для простых соединений типа машина-машина IPSec-соединение работало исправно. Однако возникнут трудности, когда у вас появляются мобильные клиенты и аутентификация. pfSense это не поддерживает.

Как альтернатива IPSec, можно воспользоваться OpenVPN. Стоит отметить, что OpenVPN безопаснее, так как использует SSL для шифрования трафика. Недостатком является то, что на поддержание канала в рабочем состоянии требуется больше накладных расходов (как раз из-за SSL) в виде пропускной способности интернет-канала.

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

Также стоит попробовать и другие функции pfSense, такие как несколько WAN-подключений и балансировка нагрузки. Можно также настроить т.н. Captive portal. Тогда каждый пользователь, пытающийся войти в сеть, должен будет перед выполнением любых действий аутентифицировать себя в локальной базе данных или через Remote Authentication Dial-In User Service (RADIUS). Для пользователей, которым нужно иметь доступ к сети по протоколу PPPoE, имеется сервер PPPoE, аутентификация также может производиться локально или через RADIUS.

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

Стоит ли попробовать pfSense?

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

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