Статья напечатана в журнале Системный Администратор (http://www.samag.ru/)
Ну люблю я разные специализированные дистры, не могу отказать себе в удовольствии что-нибуть поставить и потестить.
Интернет не только средство обмена сообщениями и информации, но и источник многих проблем. Среди них — вирусы, атаки хакеров, программы шпионы, утечка информации, использование ресурсов в личных целях. Первым барьером на пути стоят межсетевые экраны.
Сегодня существует большое количество решений, как аппаратных, так и программных позволяющих превратить обычный ПК в межсетевой экран, работающих под разными операционными системами, отличающиеся стоимостью и лицензией. Крупные организации могут себе позволить использовать такие продукты как ISA 2006 Server. Но стоимость последнего вместе с операционной системой для средних и тем более небольших компаний будет значительной расходной статьей в бюджете. В этом случае на помощь могут прийти специализированные решения на базе свободных операционных систем. Они просты в настройке, нетребовательны к системным ресурсам и в большинстве случаев бесплатны.
Возможности m0n0wall
Задачу, которую поставил перед собой автор m0n0wall Маньюэл Каспер (Manuel Kasper), кратко можно сформулировать так – создание полноценного межсетевого экрана, по функциональности не уступающего коммерческим решениям, легкого в настройке и простого в использовании, но при этом бесплатного. В качестве основы послужила FreeBSD. Поначалу m0n0wall представлял собой простой веб-интерфейс для фильтра пакетов, первая бета версия которого появилась в 2003 году. Полноценный анонс состоялся в начале 2004 года после более 20 предрелизов. Сейчас архитектура m0n0wall значительно переработана. Для большей гибкости интерфейса все системные настройки сохраняются в файл формата XML, во время загрузки вместо привычных сценариев оболочки используется PHP. Актуальной на момент написания статьи версия m0n0wall была 1.23. Ее размер составляет менее 6 Мб. И это при том, что в его состав помимо необходимых для работы ядра и пользовательских утилит включен: легкий веб-сервер поддерживающий PHP, сервер DHCP, кэширующий DNS Dnsmasq и для обновления DNS таблиц ez-ipupdate, racoon (IPsec IKE), UCD-SNMP, BPALogin, MPD, сервер ISC и choparp. Обеспечивается NAT/PAT, PPPoE, туннели IPsec VPN и PPTP, поддержка беспроводных устройств, статическая маршрутизация, режим фильтрующего моста, обновление через веб-интерфейс и многое другое.
Для работы m0n0wall можно использовать Flash карту, жесткий диск или привод компакт дисков. В последнем случае все настройки автоматически сохраняются на вставленную дискету, и при перезагрузке конфигурация восстанавливается. Кроме стандартной x86 PC платформы, m0n0wall поддерживает встроенные системы: net45xx/net48xx от Soekris Engineeringwww.soekris.com) и WRAP (Wireless Router Application Platform) от PC Engines (www.pcengines.ch). Последние две платформы весьма интересны, занимают мало места, малошумны, экономичны и надежны, так как большинство из них не имеет жесткого диска (движущихся частей). Распространяется m0n0wall под собственной лицензией разрешающей использование и модификацию исходного текста, без какого либо ограничения, но при условии, что будет оставлено авторское соглашение. (
Записываем образ
Минимальные требования m0n0wall это компьютер с процессором i486-100, ОЗУ 64 Мбайт
2 и более сетевых карты, поддерживаемые FreeBSD 4.11, жесткий диск или карта Flash с IDE интерфейсом размером не менее 8 Мб. Если BIOS поддерживает загрузку с CD-ROM, то можно выбрать и этот вариант. Сравнив системные требования с подобными дистрибутивами можно увидеть, что m0n0wall очень требователен к объему ОЗУ. Объясняется это просто, m0n0wall ориентирован на работу с Flash, которые критичны к количеству циклов записи/перезаписи. Поэтому обращение к носителю сокращено до минимума. После загрузки образ помещается в ОЗУ, обращение к носителю идет только во время сохранения конфигурации, и обновления системы и ли программного обеспечения входящего в его состав.
При загрузке дистрибутива следует выбрать образ под используемую систему или вариант использования. В случае с ПК это generic-pc (жесткий диск, Flash) или cdrom. В первом случае для переноса образа на диск при работе в Windows используем утилиту physdiskwrite.exe, которая доступна на сайте. Для чего в командной строке необходимо ввести “physdiskwrite generic-pc-1.23.img”, и затем указать на какой диск устанавливать образ. Под Linux вводим, такую команду:
# gunzip -c generic-pc-1.23.img | dd of=/dev/hdb bs=16k
Аналогично устанавливаются образы для Soekris и WRAP. В случае с CD-ROM просто записываем образ и загружаемся.
Установки из консоли
Теоретически к системному блоку можно не подключаться вообще, а зайти сразу удаленно через webGUI, откуда и произвести все необходимые. Установки по умолчанию весьма рациональны, и m0n0wall выполняет основную свою задачу из коробки, без какого либо дополнительного вмешательства. Так LAN интерфейс будет использовать IP адрес 192.168.1.1/24, на нем будет запущена служба DHCP, раздающая адреса в диапазоне 192.168.1.100 — 199. Используется перенаправление DNS запросов (адреса DNS серверов берутся при DHCP подключении WAN), поэтому внутренние системы могут использовать m0n0wall в качестве DNS сервера. Интерфейс WAN получает адрес по DHCP. Внешний трафик блокируется, весь поступающий из LANнаоборот разрешен. Для внутренней сети включен NAT. Доступ к webGUI разрешен только из LAN. Часовой пояс установлен в Etc/UTC, периодически производится синхронизация времени с сервером pool.ntp.org.
Проблема здесь одна, часто весьма проблематично определить какой из интерфейсов m0n0wall посчитал за LAN. Особенно если на компьютере установлено несколько однотипных сетевых карт, отличающихся только сетевыми адресами. Загрузка происходит очень быстро (около 40 секунд) за выводимой информацией уследить трудно. В этом случае можно подобрать имя сетевой карты экспериментально. Обычно номера картам присваиваются, начиная от процессора, хотя мне встречался вариант, когда m0n0wall поступил с точностью наоборот. После загрузки в консоли будет выведено следующее меню:
LAN IP address: 192.168.1.1
Port configuration:
LAN -> sis0
WAN -> sis1
m0n0wall console setup
**********************
1) Interfaces: assign network ports
2) Set up LAN IP address
3) Reset webGUI password
4) Reset to factory defaults
5) Reboot system
6) Ping system
Очевидно, m0n0wall ориентирован больше на встроенные устройства, поэтому иногда выплывают имена вроде sis. Для указания того, какие карты, какому интерфейсу принадлежат, выбирается первый пункт. После ввода 1 будет выведена информация об интерфейсах, один из которых будет активирован.
ed0 00:30:4f:2a:6b:16 (up)
vr0 00:30:4f:2a:6b:16
Вот и все. Если с внешнего компьютера активированный интерфейс не пингуется, следует переключить кабель или переназначить интерфейс. Будут заданы вопросы о том, будем ли использовать VLAN, какой интерфейс ему назначить:
Do you want to set up VLANs now? (y/n) n
Затем LAN и WAN:
Enter the LAN interface name or ‘a’ for auto-detection: ed0
Следует ввести название интерфейса, либо нажатием “a” попробовать найти его автоматически (без проблем работает, только когда остался один не занятый). Это обязательно. Также m0n0wall позволяет использовать интерфейсы, обозначенные как Optional с номером. В последствии ему можно дать любое другое название (например, DMZ). По окончании настройки последует перезагрузка, если для работы используется CD-ROM, вставьте дискету, иначе все придется повторять сначала. После перезагрузки в пункте 2, можно указать другой сетевой адрес и сетевую маску (в CIDR) для LAN, а также включить или отключить DHCP. Проверить правильность установок, можно выбрав пункт 6 и пропинговав любую систему в сети. Назначение пунктов 3, 4 и 5 я думаю понятно.
Настройки webGUI
Для вызова веб-интерфейса следует набрать в браузере http://192.168.1.1 или другой адрес, назначенный при настройке интерфейсу LAN, для аутентификации используем пользователя admin с паролем mono. После регистрации попадаем на страницу выводящую статус работы системы.
Веб-интерфейс очень прост и понятен, хотя и не локализован. Все настройки сгруппированы по назначению (System, Interfaces,Firewall, Services, VPN, Status и Diagnostics) и прозрачны, запутаться, в чем-либо очень сложно.
Для начала следует в Status->Interfaces проверить, правильно ли настроены интерфейсы. Для изменения настроек выбираем Interfaces -> Assign и используя выпадающий список указываем, какой из них принадлежит WAN или LAN. После этого нажимаем Save и перегружаем m0n0wall. Далее выбрав соответствующую вкладку, настраиваем параметры выбранного интерфейса. Так LAN может использовать только статический адрес, здесь доступны для изменения лишь IP-адрес и сетевая маска. Для других интерфейсов настроек больше. В поле Type интерфейса WAN можно выбрать один из вариантов: static, DHCP, PPPoE, PPTP и BigPond (крупнейший австралийский интернет-провайдер). После выбора активизируется соответствующие поля, которые необходимо заполнить.
Также обязательно следует зайти System -> General setup, где настраивается имя узла, адреса серверов DNS (если они не получаются автоматически), указывается имя пользователя и пароль для администрирования m0n0wall, использование защищенного протокола при подключении через webGUI, порт для соединения. Здесь же выбирается часовой пояс и сервер NTP.
Для настройки статической маршрутизации следует перейти в Static Routes, нажать “+”. В появившемся меню выбрать интерфейс, ввести адрес сети, шлюз и краткое описание. Как уже говорилось в межсетевом экране по умолчанию два правила, разрешающих все соединения наружу и запрещающих из вне. Такой вариант подходит только для очень безответственных администраторов. Настройка правил фильтрации производится в Firewall -> Rules. Количество вкладок здесь равно числу используемых интерфейсов. Сначала создаем разрешающее правило позволяющее соединяться удаленно через webGUI. Выбираем “Add new rule” и указываем в Action – Pass, Interface – LAN, Protocol – TCP. Поля Source и Destination, в том случае, когда используется 80 порт можно установить в Any, так как в этом случае пользователи не смогут получить доступ к веб-ресурсам Интернет. В “Destination port” устанавливаем HTTP. Аналогично настраивается доступ к остальным сервисам Интернет. Затем следует отметить разрешающее правило в интерфейсе LAN, установив флажок. Выбрав кнопку “Edit rule” и изменив в выпадающем списке Action параметр Pass на Block или Reject. Следует помнить, что правила работают до первого совпадения, поэтому запрещающее правило следует разместить последним, используя кнопки “Move selected rule”.
Для просмотра статистики и изменения некоторых параметров в “User manager”, можно создать группы и включить в них пользователей. Аналогично производятся и остальные настройки. Как видите это не сложно.
Дистрибутив m0n0wall представляет собой мощный и удобный в использовании продукт, позволяющий организовать совместный доступ в Интернет, пользователям нескольких сетей и защитить их от нападения из вне. Настроить его сможет любой администратор, понимающий конечную цель и не обязательно разбирающийся в особенностях UNIX систем.
Ссылки:
1. Яремчук С. Роутер без диска – Журнал “Системный администратор”, № 9, 2004 г. – 8 – 9 с.
2. Яремчук С. Маленький линукс в качестве firewall – Журнал “Системный администратор”, № 9, 2003 г. – 24 – 32 с.
3. Яремчук С. Сетевой полицейский – Журнал “Системный администратор”, № 1, 2005 г. – 42 – 45 с.
4. Сайт проекта m0n0wall — http://m0n0.ch/wall/
//
Уважаемый Сергей Яремчук, прошу вас написать статью вот к этому дистрибутиву для создания межсетевого экрана: pfSense-LiveCD-1.0-RELEASE-Installer, тем более, что он потомок m0n0wall. Дело в том, что у меня не получается настроить статическую маршрутизацию. В правилах всё что надо прописано. Использую как мост между WAN и LAN, т.е. всё — всем, а хотелось бы каждому в отдельности… 🙁
С уважением, Борис Лукин.
//
Я на сайте нашел только pfSense-1.2-RC4-LiveCD-Installer.iso
Наскольок я знаю к 1.1 ее собирались локализовать. А в чем проблема то.
//
>>Я на сайте нашел только pfSense-1.2-RC4-LiveCD-Installer.iso
>>Наскольок я знаю к 1.1 ее собирались локализовать. А в чем проблема то.
Насколько я понял установка Данного дистра нигде не описана..
Будем очень признательны статье по установке данного дистра..
Гугл молчит. Все говорят только про m0n0wall.
Заранее спасибо!
//
В журнале Системный Администратор опубликован обзор pfSence правда pfSense-1.2-RC4, но в релизе все что нарыл уже поправлено. Скоро выложу, я могут только через 2 месяца после выхода журнала.
Permalink
Permalink
//
Сергей Яремчук помогите пожалуйста настроить правила в m0n0wall. Включен шейпер. При этом необходимо канал в инет делится на всех поровну по нагрузке. Но для 2-х отдельный IP надо установить на вход скорость 512кбит и на выход 128 кбит. Пользовался вашей статьёй в журнале Системный Администратор №5\2007 — но не понятно как правильно сделать именно такие правила.