Рубрика:
Сети /
Сети
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
СЕРГЕЙ ЯРЕМЧУК, фрилансер. Автор более 800 статей и шести книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС
m0n0wall – дистрибутив для создания межсетевого экрана
Интернет не только средство обмена сообщениями и информации, но и источник многих проблем. Среди них – вирусы, атаки хакеров, программы-шпионы, утечка информации, использование ресурсов в личных целях. Первым барьером на пути стоят межсетевые экраны.
Сегодня существует большое количество решений, как аппаратных, так и программных, позволяющих превратить обычный ПК в межсетевой экран, работающих под разными операционными системами, отличающимися стоимостью и лицензией.
Крупные организации могут себе позволить использовать такие продукты, как ISA 2006 Server. Но стоимость последнего вместе с операционной системой для средних и тем более небольших компаний будет значительной расходной статьей в бюджете.
В этом случае на помощь могут прийти специализированные решения на базе свободных операционных систем. Они просты в настройке, нетребовательны к системным ресурсам и в большинстве случаев бесплатны.
В журнале уже шла речь о некоторых реализациях [1, 2, 3], проект m0n0wall [4] предлагает решение, с которым стоит познакомиться.
Возможности 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, поддержка беспроводных устройств, статическая маршрутизация, режим фильтрующего моста, обновление через веб-интерфейс и многое другое.
Начиная с версии 1.1 появилась возможность посылки сигнала с административного интерфейса «Wake on Lan» для включения клиентов, настройка максимальной полосы пропускания для клиентских машин «Magic Shaper» поддержка 802.1Q VLAN.
Для работы m0n0wall можно использовать Flash-карту, жесткий диск или привод компакт-дисков. В последнем случае все настройки автоматически сохраняются на вставленной дискете, и при перезагрузке конфигурация восстанавливается. Кроме стандартной x86 PC-платформы, m0n0wall поддерживает встроенные системы: net45xx/net48xx от Soekris Engineering (www.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) или CD-ROM. В первом случае для переноса образа на диск при работе в 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. После регистрации попадаем на страницу, выводящую статус работы системы (рис. 1). Веб-интерфейс очень прост и понятен, хотя и не локализован. Все настройки сгруппированы по назначению (System, Interfaces,Firewall, Services, VPN, Status и Diagnostics) и прозрачны, запутаться в чем-либо очень сложно. Единственное, что следует помнить: используйте в описаниях настроек только латинские символы.
Рисунок 1. Статус работы m0n0wall
Для начала следует в «Status -> Interfaces» проверить, правильно ли настроены интерфейсы. Для изменения настроек выбираем «Interfaces -> Assign» и, используя выпадающий список, указываем, какой из них принадлежит WAN или LAN. После этого нажимаем «Save» и перегружаем m0n0wall. Далее, выбрав соответствующую вкладку, настраиваем параметры выбранного интерфейса. Так, LAN может использовать только статический адрес, здесь доступны для изменения лишь IP-адрес и сетевая маска. Для других интерфейсов настроек больше. В поле Type интерфейса WAN (рис. 2) можно выбрать один из вариантов: static, DHCP, PPPoE, PPTP и BigPond (крупнейший австралийский интернет-провайдер). После выбора активизируются соответствующие поля, которые необходимо заполнить.
Рисунок 2. Настройка WAN
Также обязательно следует зайти «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» (рис. 3). (можно разрешающее правило удалить, межсетевой экран и так будет блокировать все не разрешенные пакеты). Когда все изменения сделаны, следует нажать кнопку «Apply Changes», чтобы они вступили в силу.
Рисунок 3. Правила брандмауэра
Для того чтобы сделать правила более читабельными, следует использовать псевдонимы (aliases), которые можно использовать для назначения понятных имен IP-адресам и подсетям и затем использовать в правилах межсетевого экрана и других настройках m0n0wall. Настроить псевдонимы просто: заходим в «Firewall -> Aliases», нажимаем кнопку «+» и вводим имя (псевдоним), тип псевдонима (узел или сеть), вводим адрес и в поле Description краткое описание. Теперь в случае изменения сетевых настроек, например IP-адреса, достаточно указать эти изменения в Alias, после чего правила брандмауэра будут работать, как обычно. Очень удобно.
Ограничение полосы пропускания устанавливается во вкладке «Firewall -> Traffic shaper». Для начала следует указать максимальную полосу на внешнем интерфейсе для входящего и исходящего трафика. Для этого переходим в вкладку «Magic shaper wizard» и указываем необходимые значения в «Downstream speed» и «Upstream speed». Чтобы трафик распределялся равномерно между всеми подключенными компьютерами, устанавливаем флажок в «Share bandwidth evenly on LAN». А чтобы понизить приоритет для пользователей P2P-сетей, включаем «Set P2P traffic to lowest priority». Нажимаем кнопку «Install/Update». После внесения изменений в трех остальных вкладках (Rules, Pipes и Queues) появились правила. Они действительны для всех пользователей. Теперь создадим правило для конкретного IP-адреса. Сначала заходим в Pipes, нажимаем «+» и создаем новое правило. Вводим в Bandwidth значение максимальной полосы, параметры Delay и Packet loss rate в большинстве случаев стоит установить в 0, а поле Queue size оставить пустым. Поле Mask устанавливаем в source или destination (входящий или исходящий). Нажимаем «Save», в Pipes появится новое правило. Теперь в Rules, в котором необходимо привязать созданное правило к источнику. Нажимаем «+» и попадаем в окно «Edit Rule». Выбираем в раскрывающемся списке Target созданное в Pipes правило, затем указываем интерфейс, протокол, источник, порт, направление, TOS, флаги ТСР и другие параметры (большинство которых не являются обязательными). Обратите внимание на наличие флажка «not» в некоторых позициях. С его помощью можно создавать исключения, например, ограничив канал для всех, кроме шефа, установив IP-адрес его компьютера в поле Source и активировав not.
Рисунок 4. Сайт проекта m0n0wall – http://m0n0.ch/wall
Для разрешения просмотра статистики и изменения некоторых параметров самими пользователями в «User manager», можно создать группы и включить в них пользователей. Аналогично производятся и остальные настройки. Как видите, это несложно.
Дистрибутив m0n0wall представляет собой мощный и удобный в использовании продукт, позволяющий организовать совместный доступ в Интернет пользователям нескольких сетей и защитить их от нападения извне. Настроить его сможет любой администратор, понимающий конечную цель и необязательно разбирающийся в особенностях UNIX-систем.
- Яремчук С. Роутер без диска. //«Системный администратор», № 9, 2004 г. – С. 8-9.
- Яремчук С. Маленький линукс в качестве firewall. //«Системный администратор», № 9, 2003 г. – С. 24-32.
- Яремчук С. Сетевой полицейский. //«Системный администратор», № 1, 2005 г. – С. 42-45.
- Сайт проекта m0n0wall – http://m0n0.ch/wall.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|