Брандмауэр m0n0wall: надёжное программное решение
Редакция THG,  14 ноября 2004


Введение

Введение

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

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

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

Основное различие в брандмауэрах различных производителей заключается в качестве и функциональности. Возможно, вы уже готовы приобрести аппаратное решение нижней ценовой категории, например Linksys BEFRS41, который можно найти всего за $40. Главной функцией этого маршрутизатора является разделение общего широкополосного подключения к Интернету между несколькими пользователями.

Из верхнего ценового диапазона можно выделить устройства таких производителей, как Watchguard, Cisco и Checkpoint, стоимостью несколько тысяч долларов. Такие модели позволяют одновременно пользоваться Интернетом тысячам пользователей и поддерживают множество различных интернет-служб.

Кроме того, выбор не ограничен исключительно аппаратными продуктами. Можно реализовать и альтернативное решение, превратив обычный ПК в межсетевой экран. Для этого достаточно установить на него соответствующее ПО, причём и здесь есть, из чего выбирать: коммерческие или бесплатные решения. Из коммерческих решений можно выделить SmoothWall, Astaro и Coyote/Wolverine. Однако, существует множество бесплатных открытых решений, например Freesco, IPCop, и, конечно же, LEAF. Большинство из них предназначено для использования на Unix-системах, чаще всего на Linux.

Не следует считать, что брандмауэры, выполненные на базе ОС Linux, менее надёжны или менее функциональны, чем коммерческие продукты. Скажем, та же серия брандмауэров Watchguard Firebox-X выполнена на аппаратном обеспечении стандартных ПК и работает под управлением специальной версии Linux. Даже недорогое решение Linksys выполнено на базе Linux.

На самом деле Linux - не единственное семейство открытых UNIX-подобных операционных систем. Есть ещё одно широко известное семейство - BSD (FreeBSD, OpenBSD и NetBSD), появившееся задолго до создания Линусом Торвальдсом (Linus Torvald) первого ядра Linux.

В этом материале мы познакомим читателей с программным межсетевым экраном m0n0wall, предназначенным для работы под управлением FreeBSD и Soekris net4501 - одной из специальных платформ ПК, для которых предназначен m0n0wall. В первой части статьи мы расскажем об установке m0n0wall на Soekris net4501, и покажем, как можно установить его на обычный ПК, удовлетворяющий минимальным требованиям.

Вторая часть материала посвящена платформе PC Engines WRAP. С ней вы можете ознакомиься здесь.

Что такое m0n0wall?

m0n0wall - это бесплатный программный брандмауэр, имеющий ряд особенностей:

  • предназначен для работы под управлением ОС FreeBSD, а не Linux;
  • оптимизирован для компактных интегрированных ПК, однако может использоваться и на ПК с обычным аппаратным обеспечением;
  • более приятные условия лицензирования под FreeBSD, а не GPL.

Большая часть m0n0wall разрабатывалась Маньюэлом Каспером (Manuel Kasper). Он начал создание m0n0wall, как web-интерфейса для фильтра пакетов под FreeBSD, установленной на интегрированный компьютер. Вскоре разработка переросла в полноценный брандмауэр с понятным и простым в использовании web-интерфейсом, основанным на PHP.

Вскоре Маньюэл задумал сделать интерфейс более гибким, для чего решил отказаться от стандартного метода конфигурирования Unix с помощью скриптов. Он сделал отважный шаг - задействовал для настройки системы PHP технологию, используемую для динамического создания web-страниц. Такое использование PHP достаточно интересно и позволяет хранить конфигурацию системы в одном структурированном файле XML. Кроме того, система в таком случае занимает очень мало места (менее 6 Мбайт), поскольку громоздкие компоненты типа PERL не требуются.

Первая бета-версия m0n0wall появилась в феврале 2003 года. Прошёл год, за который было выпущено ещё 26 бета-версий, и в феврале 2004 этого года появился релиз - m0n0wall v1.0. m0n0wall стал совместным проектом, но разработка ведётся под управлением Маньюэла Каспера.

Основные функции и возможности m0n0wall v1.0 перечислены ниже.

  • Фильтрация пакетов на основе содержания (SPI) с возможностью создания правил блокирования/пропускания для всех интерфейсов, а также журналирование.
  • Гибкие и опциональные системы NAT и PAT, включая 1:1.
  • Поддержка DHCP-клиента, PPPoE, PPTP для интерфейса WAN.
  • Статическая маршрутизация.
  • Ограничение трафика (traffic shaping).
  • Клиент динамического DNS.
  • DHCP-сервер с возможностью раздельной настройки для каждого интерфейса.
  • Кэширование DNS с возможностью задания статических записей.
  • Псевдонимы для хостов и сетей.
  • Поддержка беспроводного интерфейса.
  • Конечная точка IPSEC VPN для подключения сетей или мобильных клиентов.
  • Конечная точка PPTP VPN с поддержкой аутентификации на сервере RADIUS.
  • Агент SNMP.
  • Сохранения журналов на сервер Syslog.
  • Возможность онлайнового обновления прошивки.
  • Возможность сохранения и восстановления конфигурации.

Интегрированные платформы ПК

Одним из основных отличий m0n0wall и похожих продуктов является то, что m0n0wall изначально создавался для работы на интегрированных платформах ПК (embedded system). Платформой ПК мы считаем аппаратное обеспечение, совместимое с Intel x86 (AMD, VIA и т.д.). После загрузки программная часть работает исключительно в ОЗУ, при этом в файл XML на внешнем носителе сохраняются только изменения конфигурации.

Интегрированные платформы применяются для создания прекрасных маршрутизаторов и брандмауэров по множеству причин:

  • компактность - не занимают много места;
  • экономичность, поскольку потребление энергии обычно составляет не более 10 Вт, что важно для устройства, которое должно работать постоянно;
  • незначительное тепловыделение, что важно при установке в компактном корпусе;
  • надёжность - не имеют или почти не имеют движущихся частей.

Единственным недостатком таких платформ является то, что они не поддерживают модернизацию, поскольку все основные компоненты, в том числе процессор и память, впаяны в плату.

m0n0wall официально поддерживает платформы net45xx / net48xx Soekris (Santa Cruz, USA) и WRAP (Wireless Router Application Platform) от компании PC Engines (Switzerland). Вы можете скачать готовые образы m0n0wall для этих платформ.

Сегодня платформы Soekris net45xx/net48xx наиболее популярны среди пользователей m0n0wall, не использующих обычные ПК. Мы считаем, что это связано с тем, что PC Engines раньше не поставляла свои решения в собранном виде - в готовых корпусах.

В таблице представлены спецификации и стоимость этих платформ.

Интегрированные платформы ПК
Спецификации платформ. Цены указаны на лето 2004.

Во второй части статьи мы сравним производительность платформ.

Стандартый ПК

m0n0wall не ограничен использованием только интегрированных платформ. Образы для ПК могут работать на большинстве распространённого "железа" и различных интегрированных платформах, например Lex Light, главное, чтобы выполнялись минимальные системные требования:

  • процессор, совместимый с Intel i486-100 или более скоростной;
  • ОЗУ 64 Мбайт;
  • 2 сетевых интерфейса, поддерживаемых FreeBSD 4.9;
  • жёсткий диск или карта памяти Compact Flash с интерфейсом IDE, объёмом не менее 8 Мбай или дисковод с интерфейсом ATAPI, привод CD-ROM с интерфейсом IDE и BIOS с поддержкой загрузки с CD-ROM (стандарт El Torito);
  • адаптер VGA.

Как видно, минимальным требованием может удовлетворить практически любое оборудование. Однако, если кто-то решил использовать свой старый ПК, то наибольшей проблемой, вероятно, станут 64 Мбайт ОЗУ. Это связано с тем, что система полностью находится в ОЗУ и учитывает запас для скачивания обновления прошивки, его распаковки и записи на носитель - для последующей загрузки без отключения брандмауэра.

Если в вашем распоряжении менее 64 Мбайт ОЗУ, то можно использовать установку при помощи CD-ROM и дисковода. Поскольку скачивание образа и обновление обычным способом выполнить не удастся (в случае с CD-ROM нужно записать обновление на CD-ROM и перезагрузить брандмауэр), 32 Мбайт - это тот минимум ОЗУ, который необходим для работы.

С проблемами можно столкнуться и при настройке сетевых интерфейсов, хотя FreeBSD 4.9 поддерживает большинство популярных чипсетов сетевых адаптеров. Подробнее о совместимости можно узнать на сайте FreeBSD 4.9.

Платформа Soekris net4501

Платформа Soekris net4501 является базовой моделью линейки интегрированных платформ Soekris. Компания Soekris разработала net45xx для создания маршрутизаторов, брандмауэров и беспроводных точек доступа. net4501 использует процессор AMD ElanSC520 с частотой 133 МГц, производительность которого сравнима с Intel Pentium P100.

В отличии от линейки VIA mini-ITX, которая также разрабатывалась с учётом максимальной компактности, Soekris net45xx не позволяет использовать операционные системы с графическим интерфейсом, такие, как MS Windows или Linux/FreeBSD с X-Windows. Однако, так или иначе, в ваше распоряжение поступает полнофункциональное устройство, имеющее всё, включая процессор и память. Полностью отсутствуют движущиеся части, нет жёсткого диска, вентиляторов, поэтому при работе устройство будет абсолютно бесшумным, да и механика внезапно не выйдет из строя.

Платформа net4501 поставляется в виде платы с опциональным металлическим корпусом. При заказе комплектом плата будет сразу установлена в корпус. Спецификации платы следующие:

  • процессор AMD ElanSC520 с частотой 133 МГц;
  • ОЗУ 64 Мбайт;
  • разъём для CF Type I/II;
  • 3 порта 10/100 Ethernet, RJ-45;
  • 1 последовательный порт, DB9;
  • индикатор питания, индикатор активности и индикатор ошибки;
  • слот Mini-PCI type III;
  • слот PCI, 3,3 В;
  • диапазон рабочих температур 0-60°C.

Внешний блок питания 12 В также можно также заказать у Soekris, причём доступны модели на 110 и 220 В.

Корпус выполнен из качественного металла. Чтобы заглянуть внутрь, достаточно открутить четыре винта. Размеры корпуса 216 x 150 x 30 мм, при этом вес вместе с платой и карточкой CompactFlash (CF) составляет менее 750 граммов.

Платформа Soekris net4501
Рис. 1. Soekris net4501. Вид спереди.

На лицевой панели расположены три индикатора: "Питание", "Сетевая активность" и "Ошибка". Отметим, что пока m0n0wall не поддерживает индикатор "Ошибка", хотя его использование для отображения статуса соединения WAN уже занесено в список ближайших изменений.

Платформа Soekris net4501
Рис. 2. Soekris net4501. Вид сзади.

На задней панели, слева направо, находятся три порта RJ45 Ethernet, последовательный порт DB9, и, конечно же, разъём питания.

К сожалению, несмотря на то, что на плате есть один слот 3,3 В PCI, на боковой панели корпуса нет отверстия для доступа снаружи. Ещё нам не понравилась расцветка корпуса - доступна только странная зеленоватая.

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

Платформа Soekris net4501
Рис. 3. Soekris net4501. Без верхней крышки, вид спереди.

Карточка CF, предназначенная для хранения системного ПО, удерживается при помощи ещё одного винта. Хотя такое крепление вовсе не требуется при обычном использовании, оно позволяет удерживать карточку в слоте, например, при перевозке устройства.

Слот miniPCI Type III находится между карточкой CF и задней стенкой корпуса. miniPCI часто встречается на материнских платах для ноутбуков, где он обычно используется для установки беспроводной сетевой карточки (как и в net45xx, кстати). m0n0wall позволяет использовать различные беспроводные карты 802.11b в качестве сетевого интерфейса. Более скоростные карты 802.11a и 802.11g пока не поддерживаются. Это ограничение связано с драйверами FreeBSD 4.9, а не с m0n0wall.

Кстати, стальной корпус экранирует сигнал достаточно хорошо, в результате установленная карточка с внутренними антеннами не будет обеспечивать желаемую скорость и расстояние. В корпусе не предусмотрено никаких отверстий или разъёмов для антенн.

Лучше всего в таком случае купить готовый кабель с подходящим разъёмом. Тогда потребуется просверлить отверстие соответствующего диаметра и установить разъём. Такое решение позволит существенно увеличить радиус действия получившейся точки доступа на базе net45xx /m0n0wall.

Платформа Soekris net4501
Рис. 4. Плата Soekris net4501.

На Рис. 4 показана плата net4501 с высокой степенью интеграции. Слот 3,3 В PCI расположен на торце платы. Три больших и три маленьких чипа, расположенные рядом с портами RJ45, это контроллеры интерфейсов и MAC для сетевых интерфейсов National Semiconductor DP83815 Fast Ethernet. В центре расположен процессор AMD ElanSC520, выше него находятся два чипа памяти SDRAM, по 32 Мбайт, а справа от процессора - флэш-память BIOS/BOOT.

Установка m0n0wall на net4501

Единственное, что нужно сделать для установки m0n0wall на net4501, - это записать образ на карту памяти CF. Распакованный образ m0n0wall занимает 5-6 Мбайт.

Последние версии образов m0n0wall для всевозможных платформ можно найти в разделе "downloads" на сайте m0n0wall (страница http://www.m0n0.ch/wall/downloads.php). В разделе представлен список зеркал сайта, с которых можно скачать образ, обычно наибольшая скорость достигается при скачивании с ближайшего в географическом отношении зеркала.

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

Запись образа при использовании MS Windows NT/2000/XP

Если вы используете MS Windows NT/2000/XP, то проще всего будет воспользоваться утилитой physdiskwrite.exe, специально написанной Маньюэлом Каспером. Заранее предупреждаем, что утилита не работает под операционными системами MS Windows 9x и MS Windows Millennium.

Кроме ПО, потребуется считывающее устройство, который позволяет работать с картой памяти CF как с дисковым накопителем. Подойдёт большинство USB-считывателей. Под MS Windows XP вы не заметите никаких проблем. Если же вы используете MS Windows 2000 и карточка не обнаружилась, то необходимо установить Service Pack 3, в котором добавлена поддержка устройств хранения данных с интерфейсом USB. Если воспользоваться USB не представляется возможным, то можно подключить адаптер IDE CF.

После установки считывателя вам нужно сделать следующее:

  1. скачать образ m0n0wall для net45xx с ближайшего зеркала;
  2. скачать свежую версию physdiskwrite.exe с сайта m0n0wall, для простоты использования её лучше сохранить в папку "c:\winnt\". Вставить карту CF в адаптер;
  3. открыть командную строку (Пуск -> Выполнить -> "cmd.exe"). Набрать "physdiskwrite net45xx-yy.img", где "yy" - это версия;
  4. далее будут показаны дисковые накопители, среди которых нужно найти карту CF. В нашем случае это устройство 1, а устройство 0 - это жёсткий диск Western Digital IDE объёмом 40 Гбайт;
  5. затем нужно ответить на вопрос "На какой диск нужно записать? (0..x)", в нашем случае 1 - карта CF. После чего произойдёт распаковка и запись образа на карту, что займёт около 20 секунд.

Запись образа при использовании MS Windows NT/2000/XP
Рис. 5. Запись образа m0n0wall на карту CF при помощи утилиты physdiskwrite.

Открыть и просмотреть содержимое карты средствами Windows Explorer не получится, поскольку она записана в формате FreeBSD UFS.

Запись образа на карту под ОС FreeBSD или Linux

Здесь, как и в случае сMS Windows, потребуется считывающее устройство CF для интерфейсов USB или IDE. В FreeBSD для распаковки образа используются команды "gzcat" и "dd". В Linux вместо "gzcat" следует использовать "gunzip".

Подробнее обо всём процессе можно узнать на сайте m0n0wall здесь.

После успешного завершения записи нужно снять крышку с net4501 и установить карту CF в соответствующий слот на материнской плате.

Первая загрузка m0n0wall

На сайте m0n0wall указано, что нужно включить питание net4501 и войти в систему по терминалу. Для этого можно воспользоваться такой утилитой, как Windows HyperTerminal, или любым другим терминалом. Однако вам потребуется нуль-модемный кабель.

На самом деле, терминал через COM-порты можно и не использовать, поскольку изначально интерфейс Net0 net4501 назначен внутренним LAN-интерфейсом m0n0wall и ему присвоен IP-адрес 192.168.1.1/24 (маска 255.255.255.0). DHCP также включён.

Поэтому вам потребуется подключить интерфейс LAN0 к коммутатору или концентратору при помощи стандартного кабеля с прямой обжимкой (MDI) или непосредственно к компьютеру при помощи перекрёстно обжатого кабеля (MDI-X). Если в вашей сети нет другого сервера DHCP, то можно в свойствах TCP/IP указать "Получать IP-адрес автоматически", тогда адрес вашему компьютеру будет назначен встроенным DHCP-сервером m0n0wall. Если вы желаете назначить IP-адрес вручную, то используйте диапазон 192.168.1.2 - 192.168.1.254 с маской 255.255.255.0.

Далее следует открыть окно браузера и перейти по адресу http://192.168.1.1, где вам будет предложено выполнить вход. Имя пользователя по умолчанию admin, пароль - mono, используются только строчные буквы. После входа можно изменить параметры IP так, как вам нужно.

Установка m0n0wall на платформу ПК

Установка на обычный ПК мало чем отличается, отличие состоит лишь в установке версии, использующей CD-ROM.

Образ для платформы PC Engines

Поскольку эта платформа также позволяет загружаться с карты CF, то последовательность действий будет точно такой же, что и для Soekris net4501. Разве что нужно будет указать соответствующий файл образа при заливке на стадии physdiskwrite/dd.

Версия для PC Engines настроена на использование интерфейса LAN1 в качестве локального, и ему назначен адрес 192.168.1.1/24. Так же, как в случае с Soekris net4501, LAN1 расположен рядом с разъёмом питания. Интерфейсы на Soekris net4801 назначены так же, как на net4501.

Универсальные образы для ПК

Как мы уже писали, на платформу ПК, совместимую с Intel x86 и удовлетворяющую минимальным требованиям, можно установить универсальный образ. Это может быть как интегрированная платформа, для которой нет готового образа m0n0wall, так и обычный настольный ПК, который будет доживать свой век, работая в качестве брандмауэра.

Наиболее сложный вопрос заключается в том, как выполнять загрузку: с Compact Flash, IDE или CD-ROM? Мы считаем, что если возможно, то следует выбрать вариант с CompactFlash. Адаптеры IDE CF и сами карты памяти относительно дёшевы, и m0n0wall разрабатывался именно с учётом их использования.

Единственный недостаток CF заключается в том, что карты рассчитаны на относительно небольшое число циклов записи. Хотя это число измеряется сотнями тысяч, брандмауэр, постоянно подключённый к Интернету и настроенный на запись в журнал всех отброшенных пакетов, достаточно быстро сможет вывести карту памяти из строя.

Для того, чтобы этого не произошло, m0n0wall обращается к карте только в трёх случаях:

  • загрузка системы и программного обеспечения в ОЗУ;
  • запись изменений конфигурации в файл XML;
  • запись нового образа при использовании обновления прошивки "Firmware Upgrade" без отключения устройства.

Всё остальное происходит в ОЗУ. Это объясняет столь высокие требования m0n0wall к объёму оперативной памяти (64 Мбайт) по сравнению с другими решениями. В то же время, другие решения часто используют виртуальную память в виде swap-файла на диске, к тому же у них нет преимуществ по энергопотреблению и надёжности, которые возможны при использовании загрузки с CompactFlash.

Если по какой-то причине использовать CompactFlash не предоставляется возможным, то рекомендуем остановиться на жёстком диске. Вероятно, в старом ПК, которому вы хотите дать второе дыхание, уже есть жёсткий диск. Конечно, в этом случае энергопотребление устройства окажется выше, чем при использовании CompactFlash, однако такое решение вполне традиционно, при этом сохраняется возможность обновления ПО без отключения устройства.

Запись образа на жёсткий диск практически не отличается от записи на CompactFlash. Некоторое неудобство возникнет в связи с тем, что придётся выключать и разбирать системный блок компьютера, чтобы подключить к нему винчестер, на который нужно записать образ m0n0wall. Также будьте внимательны при выборе винчестера для записи образа m0n0wall, чтобы не перезаписать свой!

Наконец, последним вариантом является использование привода CD-ROM. С точки зрения надёжности, этот способ наименее интересен, поскольку работа в таком случае будет зависеть как от привода CD-ROM, так и от дискет!!! Однако этот способ как нельзя лучше подходит для проверки работы m0n0wall на платформе обычного ПК. Конечно, возможности онлайнового обновления ПО у вас не будет, но при этом никогда не поздно начать использовать CF или жёсткий диск, или даже перейти к другим решениям.

Для работы нужно просто записать образ ISO на диск CD-R, используя для этого любое программное обеспечение, позволяющее работать с образами в режиме Mode-1 2048 байт на сектор. Затем нужно взять дискету и отформатировать её под FAT16. Установить диски в соответствующие приводы и настроить BIOS ПК на загрузку с CD-ROM.

Подробнее о том, как записать образ на компакт диск и отформатировать дискету под ОС FreeBSD, можете прочитать на сайте m0n0wall по этому адресу.

Первая загрузка m0n0wall на платформе ПК

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

Наиболее популярные сетевые адаптеры изначально поддерживаются системой. Однако, на всякий случай, рекомендуем посмотреть список совместимости FreeBSD 4.9, поскольку неподдерживаемые карты не будут распознаны и инициализированы, а возможности самостоятельной настройки сетевых интерфейсов не предусмотрено. Также не предусмотрено и добавление драйверов прочих устройств в образ m0n0wall.

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

Совет Совет. m0n0wall использует концепцию логических интерфейсов. Как минимум, должно быть два физических интерфейса: для LAN (локальной сети) и WAN (внешнего подключения). Все остальные интерфейсы будут определены как OPTx (опциональные), где x - номер интерфейса. Имена можно сменить на более понятные, воспользовавшись для этого графическим интерфейсом. Например "DMZ" (Demilitarized Zone) для подключения машин, доступных из Интернета или "LAN2" - для второго локального сегмента.

Отметим, что если у вас есть два или более интерфейса одного типа, то единственным их отличием будет MAC-адрес. Чтобы не запутаться при настройке, система рекомендует по очереди подключать интерфейсы к концентратору или коммутатору. m0n0wall определяет, какой адаптер подключился, после чего предлагает его настроить.

Совет Совет. На практике при настройке m0n0wall сетевые интерфейсы, скорее всего, будут находиться в том же порядке, что и слоты PCI, в которые они установлены. Обычно слот с номером один располагается ближе к процессору и/или слоту AGP (если он есть).

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

Настройка m0n0wall

Сразу отметим, что m0n0wall имеет очень простой и удобный в использовании web-интерфейс. Приведённые ниже скриншоты и примеры взяты при установке m0n0wall на платформу Soekris net4501, но при использовании других образов m0n0wall интерфейс будет таким же.

После перехода по IP-адресу брандмауэра m0n0wall, система запросит имя пользователя и пароль, после чего вы попадёте непосредственно на страницу статуса (Рис. 6).

Нажмите на картинку для увеличения
Рис. 6. Экран статуса m0n0wall.

Административный web-интерфейс достаточно прост - все функции и группы сгруппированы и расположены в левой части, а сами параметры выбранной группы отображаются в правой части экрана.

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

  • Интерфейс WAN настроен на получение параметров IP по DHCP.
  • Трафик, поступающий на интерфейс LAN, пропускается на любой другой интерфейс, будь то WAN или опциональный.
  • Трансляция адресов NAT по умолчанию включена; весь исходящий трафик уходит от имени внешнего интерфейса, то есть от IP-адреса WAN.
  • Поступающий на WAN-интерфейс трафик блокируется.

Что касается администрирования, то здесь действуют следующие ограничения.

  • Администрирование разрешено только с внутреннего интерфейса LAN на внутренний IP-адрес (по умолчанию 192.168.1.1/24) порт 80 (http).
  • Сервер DHCP включён для интерфейса LAN и настроен на использование адресов из диапазона 192.168.1.100 - 199. Настроено перенаправление запросов DNS, что позволяет компьютерам, подключенным к интерфейсу LAN, использовать внутренний IP-адрес брандмауэра как адрес сервера DNS. Запросы перенаправляются на серверы DNS, указанные статически или полученные при WAN-подключении по DHCP / PPP.
  • Часовой пояс установлен на Etc/UTC, при этом каждые пять часов выполняется синхронизация времени с одним из серверов, указанных в pool.ntp.org.

Настроек по умолчанию будет достаточно для большинства сценариев, в которых необходимо предоставить в небольшой сети TCP/IP защищённый доступ в Интернет. Все остальные службы отключены.

Кстати, pool.ntp.org - это добровольный проект, предоставляющий доступ к серверам времени. Проект использует "Round Robin" DNS для распределения запросов на достаточно большое число серверов, в настоящее время их насчитывается 188.

Параметры, которые вы, скорее всего, пожелаете изменить сразу же после включения, находятся на странице System -> General (Рис. 7):

Нажмите на картинку для увеличения
Рис. 7. Страница основных настроек.

  • Имя пользователя и пароль. Не стоит напоминать, что значения, установленные по умолчанию, известны всем. Особенно важно изменить пароль, хотя и изменение имени пользователя не менее эффективно, обеспечивая защиту за счёт неизвестности.
  • Часовой пояс необходимо выбрать в соответствии с местоположением.
  • Сервер времени NTP. Ваш провайдер, скорее всего, имеет свой сервер NTP, так что укажите его. Обычно DNS-серверы провайдера работают и как серверы NTP.

После этого, нужно настроить параметры TCP/IP для интерфейса WAN, чтобы брандмауэр мог работать с вашим DSL, кабельным модемом, ISDN-терминалом или другим устройством, которое вы используете для доступа в Интернет. Основное требование к устройству - наличие порта Ethernet для подключения к брандмауэру. Параметры настройки интерфейса WAN находятся на странице Interfaces -> WAN (Рис. 8).

Нажмите на картинку для увеличения
Рис. 8. Страница настроек интерфейса WAN

Для интерфейса WAN можно выбрать следующее:

  • Static - статическая настройка, используется для прямых подключений к другим сетям и маршрутизаторам, когда выделяется статический IP-адрес;
  • DHCP - используется как для прямых подключений к другим сетям, так и при работе с кабельными модемами;
  • PPPoE - иногда используется с кабельными модемами и с большинством xDSL-модемов;
  • PPTP - менее популярно, но, тем не менее, используется некоторыми провайдерами для назначения IP-адресов при кабельных или xDSL-подключениях.

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

При использовании беспроводного адаптера miniPCI можно получить беспроводной доступ к Интернету, однако это выходит за рамки данной статьи.

Кроме того, m0n0wall v1.1 поддерживает Telstra Big Pond, который используется в Австралии.

NAT, PAT и маршрутизация IP-трафика

Если вам нужно разрешить подключение из Интернета к компьютерам, расположенным в локальной сети, то для этого есть несколько вариантов. Во-первых, можно настроить трансляцию сетевых адресов (NAT) с опцией трансляции портов (PAT). Вполне вероятно, что сначала гибкость m0n0wall в этом отношении смутит вас, но только стоит разобраться, и настройка станет простой, понятной и последовательной.

На странице настройки NAT можно выбрать следующие закладки: "Входящий" (Inbound), "Сервер" (Server NAT), "1:1" и "Исходящий" (Outbound). Закладка "Входящий" обеспечивает тот же набор функций, что и большинство других брандмауэров и некоторых маршрутизаторов. Она разрешает подключения к IP-адресу интерфейса WAN, привязывая их к указанному внутреннему IP-адресу сети. Также можно выполнить и перенаправление портов. В качестве примера мы привели привязку входящих соединений SMTP (25) к внутреннему почтовому серверу.

Нажмите на картинку для увеличения
Рис. 9. Страница настройки NAT.

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

Закладку "1:1" можно использовать в двух случаях. Первый - для сопоставления всех подключений по всем портам внешнего адреса на все порты внутреннего. Это удобно в том случае, если вы используете сервер со множеством служб, что позволяет не задумываться о привязке портов для каждой из них. Второй обеспечивает более мощное решение и позволяет привязывать внутреннюю подсеть к внешней подсети соответствующего размера. Это может оказаться особенно полезным, если нужно настроить несколько доступных снаружи серверов, которые находятся во внутреннем сегменте сети.

И, наконец, закладка "Исходящий" может использоваться для отключения NAT, тогда m0n0wall будет работать как обычный маршрутизатор. При включении галочки расширенной настройки NAT (Enable advanced outbound NAT) вы удалите все созданные автоматически правила. При этом будут только указанные на закладке правила. Здесь вы можете настроить привязки исходящего трафика для определённых внутренних сетей и указанных внешних IP-адресов.

Нажмите на картинку для увеличения
Рис. 10. Страница настройки "Исходящий" NAT.

Для закладок "Сервер NAT", "1:1" и "Расширенный исходящий NAT", вероятно, потребуется настроить Proxy ARP, чтобы m0n0wall отвечал на интерфейсе WAN по IP-адресам, отличающимся от IP-адреса порта WAN. Proxy ARP используется вместо обращения к внутреннему серверу по его внешнему IP-адресу (server loopback) - дело в том, что Proxy ARP оказывается удобнее для управления несколькими IP-адресами или даже подсетями.

Примите во внимание, что Proxy ARP работает только в том случае, если WAN-интерфейс настроен на использование статического IP-адреса или DHCP. Он не требуется, если дополнительные IP-адреса маршрутизируются на ваш WAN IP или назначены интерфейсу WAN по PPPoE или PPTP.

Осталось напомнить, что с NAT/PAT работают правила брандмауэра, о которых пойдёт речь далее.

Правила брандмауэра

На Рис. 11 показан интерфейс правил брандмауэра m0n0wall. Правила работают по принципу первого совпадения - то есть пакет будет обработан по первому правилу, которому он соответствует. Для обеспечения максимальной защиты m0n0wall блокирует весь трафик, который не разрешён явным образом. Для удобства в начальной конфигурации задано правило, разрешающее весь исходящий из LAN-интерфейса трафик.

Нажмите на картинку для увеличения
Рис. 11. Страница настройки правил брандмауэра.

Правило, созданное по умолчанию для интерфейса LAN, находится в нижней части экрана. Правила, расположенные выше, используются для блокирования исходящего трафика NetBIOS. В этом сценарии, при попадании пакета на интерфейс LAN, первым правилом проверяется, что он не предназначается для порта TCP 137-139, для порта 135 - вторым и для порта 445 - третьим. И последнее правило разрешает все остальные пакеты.

То есть пакет с портом назначения 80 (HTTP) не будет заблокирован первыми тремя правилами и будет разрешён последним. Последнее правило очень важно, поскольку оно разрешает проходить всем пакетам, которые не запрещены предыдущими правилами. Если бы этого правила не было, то все пакеты просто блокировались бы параметрами, заданными по умолчанию.

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

Приведём созданные нами правила.

  • Трафик Windows Terminal Services на порт TCP 3389 из определённой сети (JPNET) к внутреннему серверу "homer".
  • Трафик HTTPS на порт TCP 443 из JPNET на адрес WAN IP для удалённого администрирования.
  • Трафик HTTP на порт TCP 80 из JPNET на адрес WAN IP для удалённого администрирования.
  • Трафик HTTPS на порт TCP 443 с любого адреса из Интернета на "homer".
  • Трафик HTTP на порт TCP 80 с любого адреса из Интернета на "homer".
  • Трафик SMTP на порт TCP 25 с любого адреса из Интернета на "homer".

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

Очень важный фактор, о котором мы ещё не успели поговорить, - это порядок правил. Покажем его работу на примере. Предположим, что задано правило, пропускающее трафик с интерфейса WAN по порту 21 к внутреннему серверу FTP. Если его расположить после правила блокирования всего трафика, то пакеты будут отброшены правилом "block all" до того, как они дойдут до разрешающего правила. Поэтому для работы правила его следует поместить выше, то есть перед правилом, блокирующим весь трафик.

Отметим, что правила, блокирующие все пакеты, мы создали для наглядности. В любом случае, по умолчанию брандмауэр будет блокировать все не прописанные пакеты. Порядок правил можно легко изменить - для этого нужно воспользоваться кнопками со стрелками, расположенными рядом с каждым из правил. Когда все необходимые изменения выполнены, нужно просто нажать на кнопку "Принять изменения" ("Apply Changes").

Нажмите на картинку для увеличения
Рис. 12. Страница редактирования правил брандмауэра.

Экран редактирования правил также достаточно интуитивен и последователен. На Рис. 12 показано правило, разрешающее проходить трафику MS Terminal Server с внешнего интерфейса на внутренний сервер. Как видно, источник и приёмник указаны как имена JPNET1 и POWERDGE, соответственно. То есть вместо IP-адресов вида 192.168.55.6 можно использовать имена - это ещё одна функция m0n0wall, называемая "псевдонимы" (aliases). Псевдонимы позволяют назначать IP-адресу или подсети понятное имя, которое можно в дальнейшем использовать вместо IP-адреcа или адреса подсети при создании правил и для других действий с m0n0wall.

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

Производительность

Ниже приведены результаты тестирования производительности, выполненного Маньюэлом Каспером, которые отражают производительность брандмауэра с использованием NAT и фильтрации пакетов, а также пропускную способность IPSec VPN.

Тестовая конфигурация

[Ноутбук с WinXP] ----- LAN [Тестовая система] WAN ----- [ПК c FreeBSD]

  • При тестировании пропускной способности туннелей IPsec, туннель ESP устанавливался между m0n0wall и FreeBSD (использовались racoon и FAST_IPSEC).
  • FreeBSD работала на ПК с процессором P4 2,8 ГГц (загрузка процессора во время тестирования не превышала 50%).
  • Конфигурация m0n0wall: параметры по умолчанию (кроме отключения правила "блокировать частные адреса на WAN", включения привязки NAT для входящего трафика + правило в тесте WAN->LAN без Ipsec, и, конечно же, туннель IPsec).
  • Использовалось наибольшее из трёх полученных значений iperf TCP (по 10 секунд).
  • Все сетевые подключения использовали 100 Мбит/с Ethernet.
  • Пропускная способность между ноутбуком с XP и ПК с FreeBSD без m0n0wall составляла 94 Мбит/с в обоих направлениях.
  • Все результаты приведены в Мбит/с (LAN->WAN / WAN->LAN).

Производительность
Таблица 2.

В реальных условиях производительности net4501 окажется более чем достаточно для большинства задач, поскольку немногие из нас являются счастливыми обладателями каналов со скоростью более 15 Мбит/с. Однако, производительность IPSec вполне может стать недостаточной, особенно при использовании нескольких туннелей.

Как видно, скорость процессора влияет на производительность (2,07/2,02 Мбит/с). Однако использование более эффективного алгоритма шифрования Blowfish позволяет увеличить пропускную способность до 3,99/3,89 Мбит/с.

Хотя мы более подробно остановились на платформе Soekris net4501, информация, приведённая в таблице выше, отражает и возможности стандартного аппаратного обеспечения для ПК. Производительность net4501 примерно соответствует производительности Pentium 100; net4801 и WRAP.1C-2 - Pentium 266 и 233 МГц, соответственно.

Если такой производительности вам недостаточно, то можно использовать более современное "железо", например, процессор уровня Pentium III, 128 Мбайт ОЗУ и хорошие сетевые карты, скажем, 3Com или Intel, которые показывают скорость передачи данных порядка 90 - 95 Мбит/с. Такая конфигурация позволит использовать m0n0wall в качестве маршрутизатора/брандмауэра между подразделениями сети крупной организации.

Более подробное результаты тестирования можно найти по адресу http://m0n0.ch/wall/list/?action=show_msg&actionargs[]=62&actionargs[]=57.

Что должно появиться в m0n0wall?

В августе 2004 года вышла версия m0n0wall 1.1. В которой были добавлены следующие функции:

  • поддержка опциональных модулей от третьих производителей;
  • графическое отображение трафика в реальном времени при помощи Adobe SVG;
  • Captive Portal с возможностью аутентификации RADIUS;
  • возможность включения клиентов с поддержкой "Wake on Lan" с административного интерфейса;
  • поддержка дисков USB и SCSI;
  • поддержка 802.1Q VLAN;
  • автоматическая настройка обрезания трафика "Magic Shaper";
  • улучшенная защита HTTP (web-интерфейса);
  • обновлённая версия системы - FreeBSD 4.10-RELEASE;
  • обновлённые версии утилит (PHP, racoon, MPD, ipfilter);
  • множество исправлений (PPTP VPN, ipfilter и другие).

Полное описание изменений можно найти на странице m0n0wall Change Log.

Наиболее значимой нам показалась поддержка Captive Portal и VLAN. Captive Portal позволяет строить публичную сеть на одном из интерфейсов брандмауэра, что позволяет реализовать общественную точку беспроводного доступа - хотспот или зону общественного доступа, например, в библиотеках. При первой попытке выхода в Интернет из публичной зоны Captive Portal отображает специальную web-страницу, на которой обычно находятся правила пользования, с которыми нужно ознакомиться перед тем, как будет разрешён доступ в сеть. Captive Portal также позволяет использовать внешний сервер RADIUS для аутентификации клиентов перед тем, как предоставить доступ в Интернет.

VLAN обеспечивает совместную работу с управляемым коммутатором, поддерживающим 802.1Q VLAN на основе тэгов. Это позволяет создавать дополнительные виртуальные интерфейсы на m0n0wall и работать с большим количеством сегментов сети.

Следующие возможности занесены в список ближайшей работы "To do/Wish list":

  • поддержка OpenVPN;
  • поддержка аутентификации с использованием сертификатов для IPSec VPN;
  • группы хостов/сетей, что позволит задавать правила брандмауэра на их основе;
  • активация правил брандмауэра по времени и дню недели;
  • определение сканирования портов с автоматическим отбрасыванием пакетов;
  • дополнительные сети WAN, возможно, с балансировкой нагрузки;
  • резервное коммутируемое соединение, использующее последовательный порт.

Здесь нам особенно интересной показались поддержка сертификатов IPSec VPN, группы хостов/сетей, вторых интерфейсов WAN и резервных соединений.

Заключение

Надеемся, что мы представили достаточно подробное описание возможностей m0n0wall, а также показали лёгкость их настройки. Но за рамками изложения остались другие функции. Кроме того, следует отметить небольшой размер готового образа (4-5 Мбайт), возможность загрузки с CD-ROM без установки программного обеспечения на диск. Так что m0n0wall крайне удобен в использовании.

Подробнее о проекте можно узнать на сайте m0n0wall. К сожалению, документация пока весьма скудна, но поскольку это совместный проект, то она постоянно пополняется. Документация доступна здесь.

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

Итоговая информация о продукте
Модель Программный брандмауэр m0n0wall
Заключение Мощный и простой в настройке брандмауэр для FreeBSD с web-интерфейсом, конечными точками IPsec и PPTP, позволяющий ограничивать трафик
Преимущества - Может работать как на интегрированных платформах, так и на обычных ПК
- Позволяет ограничивать трафик и может работать как сервер VPN
- Бесплатен
Недостатки - Настройка брандмауэра может отпугнуть неопытных пользователей
Розничная цена $0

КОНЕЦ СТАТЬИ


Координаты для связи с редакцией:

Общий адрес редакции: thg@thg.ru;
Размещение рекламы: Roman@thg.ru;
Другие координаты, в т.ч. адреса для отправки информации и пресс-релизов, приглашений на мероприятия и т.д. указаны на этой странице.


Все статьи: THG.ru

 

Rambler's Top100 Рейтинг@Mail.ru