Введение
Ни для кого не секрет, что сегодня, подключаясь к Интернету, вы начинаете играть с огнём, – множество опасностей подстерегают на каждом углу. По крайней мере, нам сегодняшние правила игры представляются именно так. Однако, не всё так страшно, возможность защиты от большинства атак из Интернета всё же есть, именно для этого предназначены системы, называемые межсетевыми экранами или брандмауэрами (firewall).
Итак, каким образом они работают? При подключении вашего компьютера к какой-либо компьютерной сети, например, к Интернету, соединение устанавливается между определёнными портами систем. Межсетевой экран в общем виде представляет собой систему, позволяющую ограничивать как входящие, так и исходящие подключения на основе номеров портов. Например, если на вашей машине не запущен web-сервер, то никто не должен иметь возможность установить с ней соединение по 80 порту, таким образом, межсетевой экран должен блокировать такие запросы, но при этом позволять вам использовать Web, читать почту и многое другое.
Иногда в обязанности межсетевого экрана входит нечто большее, чем просто “блокировать ненужный трафик”. Например, у вас есть небольшая сеть с подключением к Интернету, используется также Web-сервер, доступный из Интернета. В таком случае брандмауэру придётся выполнять ещё и функции маршрутизатора. Это потребуется для распределения трафика по сети, чтобы доступ к Интернету можно было получить с любого компьютера. Кроме того, потребуется перенаправлять на web-сервер все запросы, поступающие снаружи на 80 порт, и при этом отфильтровывать те из них, которые потенциально опасны. В обязанности брандмауэра/маршрутизатора могут входить и такие функции, как DHCP, DNS, фильтрация содержания, просмотр пакетов, перенаправление трафика, создание туннелей VPN, web-прокси и многие другие, позволяющие обеспечить работу сети и оградить её от злоумышленников.
То, что обычно называют межсетевым экраном, может быть как достаточно простой и дешёвой программой, установленной на компьютер (например ZoneAlarm), так и отдельным устройством, использующим относительно дорогое аппаратное обеспечение и позволяющим применить практически все известные человечеству способы защиты сети. Сегодня мы познакомим вас с лучшим, на наш взгляд, решением, основанным на ПО с открытым кодом, – Open Source LEAF-Bering uClibc для ОС Linux. Недорого. Бесплатно. Надёжно. Функциональность этого решения настолько широка, насколько это необходимо. Для работы нужен лишь компьютер, на который устанавливается необходимое LEAF-Bering uClibc, и который в дальнейшем будет использоваться в качестве брандмауэра маршрутизатора.
Возможности и реализация
LEAF-Bering uClibc является потомком проекта “Linux Router Project”. Целью его разработки было создание операционной системы, основанной на Linux, которая не уступала бы по функциональности аппаратному маршрутизатору. LEAF означает “Linux Embedded Appliance Firewall” (межсетевой экран, построенный на базе Linux), ранее существовало (и продолжает существовать) несколько вариантов, из которых Bering uClibc, по всей видимости, развивается наиболее активно, в чём немалая заслуга команды разработчиков (Arne Bernin, Eric de Thouars, Eric Spakman, Luis Correia, KP Kirchdoerfer, Martin Hejl).
LEAF-Bering uClibc (далее будем называть LBU) весьма функционален, совместим с различным аппаратным обеспечением, имеет прекрасные возможности маршрутизации, совместим с IPV6, безопасен, прост и гибок в настройке. Базовая конфигурация LBU включает сервер DHCP, кэширование DNS, SSH и множество других функций.
В LBU, кроме непосредственно ядра Linux, входит межсетевой экран Shorewall, созданный Томом Истепом (Tom Eastep). Shorewall является достаточно функциональным приложением с простыми (и хорошо комментированными) конфигурационными файлами. Межсетевой экран опирается на систему фильтрации пакетов Netfilter ядра Linux, а также может выполнять функции маршрутизатора, включая фильтрацию содержания SPF.
Функциональность LBU не ограничивается базовым набором – дополнительно можно скачать множество добавлений (также бесплатных, с открытым кодом), расширяющих возможности системы. Отметим, что LBU нацелен, в первую очередь, на небольшие сети, хотя, на самом деле, всё зависит только от вашей фантазии.
При запуске LBU в оперативной памяти компьютера создаются виртуальные диски, на которых размещается операционная система. После завершения загрузки физические диски не используются – все необходимые данные хранятся в оперативной памяти. Благодаря подобной реализации система оказалась очень гибкой.
Базовая версия LBU поставляется в виде образа диска объёмом 1680K. Естественно, допускается использование не только дискеты, но и жёсткого диска или CDROM или всего, чего угодно, лишь бы была возможность загрузить компьютер. При желании можно хранить загрузочные файлы на одном диске, а конфигурационные – на другом. Такое решение позволяет обеспечить более высокую надёжность и защищённость системы.
Например, как только вы полностью сконфигурировали систему, можно установить защиту от записи на дискете с LBU или вообще убрать её – тогда даже в случае взлома брандмауэра (что практически невозможно) всё, что вам потребуется, – просто перезагрузить систему.
Установка и настройка
Мы устанавливали LEAF-Bering uClibc 2.1.1 на две разные системы:
- старый ПК Dell PII 500 со 128 Мбайт RAM, интегрированным сетевым адаптером 100BaseTX, и двумя адаптерами PCI 100BaseTX;
- ещё более старый Compaq P100 с 56 Мбайт RAM, двумя адаптерами PCI 100BaseTX и одним адаптером ISA 10BaseT.
Обе системы мы подключали почти одинаково. Одна сетевая карта (внешний интерфейс) подключалась к кабельному модему для обеспечения доступа к Интернету, вторая – к локальной сети (к концентратору или коммутатору) и, наконец, третья (DMZ) при помощи кросс-кабеля подключалась непосредственно к web-серверу.
Очевидно, что наш новый межсетевой экран LBU должен был разрешать пользователям локальной сети доступ в Интернет, перенаправлять запросы снаружи к локальному web-серверу и блокировать доступ злоумышленников. Кроме того, нам были нужны ещё несколько служб в нашей сети, типа сервера DHCP и кэширующего сервера DNS. К счастью, LBU поддерживает всё это (и кое-что ещё) уже в базовой комплектации.
Одним из наиболее значимых плюсов LBU и Shorewall является наличие прекрасной документации. Поскольку LEAF-Bering uClibc является наследником старого доброго LEAF-Bering, то вся документация представлена в виде базовой документации по установке LEAF-Bering и руководства пользователя, а также отдельного руководства по установке LBU и руководства пользователя, в которых обозначены нововведения и изменения.
Непременно прочитайте эти руководства (можно даже распечатать) перед тем, как приняться за дело, а можно даже обратиться и к рассылке LEAF. Также не помешает заглянуть в подробную документацию Shorewall, особенно в руководство по быстрой настройке. После того, как загрузка с дискеты LBU выполнена, вы увидите следующую текстовую утилиту конфигурирования.
Рис. 1. Меню настройки.
Кроме той документации, о которой мы только что упомянули, есть также краткий справочник, доступ к которому можно получить непосредственно из утилиты, как показано ниже.
Рис. 2. Меню помощи.
Первое, что нужно сделать, – настроить интерфейсы. Это может оказаться одной из самых сложных частей всей установки. Необходимо знать, какие сетевые адаптеры установлены и какой драйвер следует использовать для каждого из них. Кстати, если приходится иметь дело с модемом, то отметим, что LBU поддерживает и коммутируемый доступ.
Решить проблемы с настройкой “железа” лучше всего помогут команда “cat /proc/pci” и поисковые серверы типа Google. Загрузив необходимые модули, следует разобраться, какому интерфейсу присвоено имя eth0, какому – eth1, и так далее. Иногда это может оказаться не так просто, как вы могли подумать. Наконец, когда вопрос с интерфейсами разрешился, остаётся настроить всё остальное. Конечно, утилита конфигурирования LBU полезна, но она просто опирается на конфигурационные файлы и переключает вас в текстовый редактор, показанный ниже.
Рис. 3. Утилита конфигурирования.
Как видите, выглядит всё это не совсем привлекательно, особенно для тех, кто привык только щёлкать мышкой, но это всё же межсетевой экран, а не очередная стратегия. Как мы уже упоминали, большинство конфигурационных файлов подробно закомментированы, поэтому с учётом руководств, о которых мы уже успели написать, базовая настройка системы покажется вам вполне понятной. Не забывайте регулярно сохранять сделанные изменения.
Рис. 4. Сохранение конфигурации.
Поскольку мы не испытываем особого доверия к дискетам, мы решили установить LBU на жёсткий диск. Конечно, в таком случае пришлось добавлять модули для поддержки дисков IDE и переносить всё на раздел MSDOS. Но и здесь проблем не возникло – в документации LBU всё это подробно описано.
Следующий плюс LBU – это доступность дополнительных модулей. Если вам не нравится стандартный сервер DHCP, можно использовать другой, если необходимо использовать сервер NTP или настроить туннель VPN, то можно просто скачать новый модуль и установить его, так же просто можно и расстаться с ним.
Установка и настройка модулей
Какие модули мы используем? Ответим: initrd, root, config, etc, local, modules, iptables, shorwall и ulogd, которые являются стандартными и потребуются практически всем. В нашем случае внешний интерфейс, подключенный к кабельному модему, получал настройки от сервера chiefP провайдера, поэтому мы использовали dhcpcd (клиент DHCP).
В стандартную поставку LBU входит dhcpd (сервер/демон DHCP) и dnscache (сервер/демон кеширования dns), но нам удалось найти ошибку в работе dnscache с одной из онлайновых банковских систем. Эта же проблема замечалась и раньше, около года тому назад, с некоторыми web-сайтами, самым заметным из которых был weather.com. По этому поводу в форуме LEAF было большое обсуждение, в результате чего оказалось, что проблема заключается в слишком жёсткой реализации протокола DNS у dnscache, тогда как некоторые web-сайты используют не совсем стандартные DNS-решения.
Нам удалось найти альтернативу dnscache, которая позволяет разрешать адреса страниц даже для не слишком аккуратных сайтов. Мы имеем в виду модуль dnsmasq, который содержит также и сервер DHCP. Кроме того, dnsmasq позволяет разрешать локальные адреса через файл /etc/hosts или через собственный сервер DHCP, а для разрешения адресов удалённых узлов используются серверы, перечисленные в файле /etc/resolv.conf. Надеемся, что в дальнейших версиях LBU dnsmasq заменит dhcpd и dnscache.
Модуль dropbear (сервер SSH) также входит в стандартную поставку, что очень удобно для удалённого администрирования. Модуль ezipupd предназначен для автоматического обновления списков некоторых служб динамических имён, например dyndns.org. И, наконец, мы использовали ntpsimpl (сервер NTP), для которого также необходим libm.
В работе
LBU уже установлен и работает. Что дальше? На любой из машин локальной сети запустите браузер и укажите IP-адрес LBU (по умолчанию 192.168.1.254).
Рис. 5. Статус LBU.
Как видите, даже межсетевые экраны могут быть симпатичными. Модуль Weblet, являющийся стандартной частью LBU, выводит красивую страницу, отображающую информацию о статусе устройства со множеством ссылок, где можно узнать подробности.
Обратите внимание на предупреждение, показанное на иллюстрации. В нём нет ничего страшного – просто какая-то машина в Интернете, заражённая последним вирусом, попыталась заразить и вашу сеть. Конечно же, ей это не удалось. Если хотите узнать о предупреждении подробнее, достаточно лишь щёлкнуть по ссылке. Ниже показан вид журнала Shorewall.
Рис. 6. Журнал Shorewall.
Да, всё в порядке. Щёлкая по ссылкам можно получить практически всю необходимую информацию о состоянии брандмауэра. Ниже показаны ещё несколько скриншотов других страниц (нажмите на изображение для увеличения).
Для удалённого управления в базовой конфигурации LBU присутствует сервер SSH. Если вы используете такую ОС, как Windows, то можете скачать бесплатное клиентское приложение SSH, например, PuTTY и использовать его для удалённого управления. Конечно, если вы используете Linux, то, вероятно, у вас уже есть клиент SSH.
При удалённом входе в систему при помощи SSH перед вами предстанет уже знакомая утилита настройки LBU. Выполните необходимые изменения, после чего не забудьте их сохранить. В сеансе SSH можно использовать стандартные утилиты Linux, такие как “cat” и “less” для просмотра файлов журналов, или просто листать журналы в режиме реального времени. Предположим такую ситуацию: межсетевой экран блокирует выход в Интернет для локального компьютера с IP-адресом 192.168.1.10, когда с него пытаются проверить почту. Тогда следует подключиться к брандмауэру, используя SSH, и набрать, например, следующее.
tail -f /var/log/shorewall.log | grep 192.168.1.10
После чего можно наблюдать за всеми попытками пользователя проверить почту. Shorewall имеет функции “monitor”, “logwatch” и “show”, позволяющие в реальном времени отслеживать статус брандмауэра.
Производительность
Как же обстоят дела с производительностью LBU? Напомним, что ядро Linux изначально создавалось для работы в сети, поэтому оно очень эффективно работает с сетевым трафиком. В материале Why Use LRP FAQ указаны подробности того, чего стоит ожидать от Linux, на какую производительность рассчитывать, там же можно найти и прекрасный обзор, посвящённый производительности более ранних версий. Но, всё же, каких результатов удалось достичь на нашем оборудовании?
Для тестирования мы использовали целый набор средств, включая Qcheck и Netperf. В основном, можно дать следующий ответ: возможности LBU с лёгкостью превосходят производительность аппаратного сетевого оборудования. Тесты Qcheck на системе PII 400 (работал как PII 500) по прохождению данных через LBU на сервер, расположенный в DMZ, показали результат пропускной способности TCP 62,5 Мбит/с. При таком же тесте на системе P4 2,66 ГГц результат оказался 93,023 Мбит/с.
У нас сложилось впечатление, что сдерживающим фактором в обоих случаях была скорость передачи пакетов Qcheck на настольной системе. Мы запустили Netperf на трёх машинах таким образом, чтобы они одновременно передавали данные через межсетевой экран на сервер, помещённый в DMZ. Полученный результат удивил нас: 57,2 Мбит/с, 20,56 Мбит/с и 18,16 Мбит/с, что в сумме даёт 95,92 Мбит/с. Однако, многие скажут, что сетевые карты поддерживают скорость до 100 Мбит/с. Это правда, хотя на практике предел 100BaseTX Ethernet обычно оказывается между 60 и 95 Мбит/с, в зависимости от используемого “железа”, протоколов и многого другого.
На другой системе LBU, которая была построена на базе P100 и адаптера 10BaseT, при подобном запуске Netperf мы получили следующий результат: 2,4 Мбит/с, 3,52 Мбит/с и 1,04 Мбит/с, что в сумме составляет 6,96 Мбит/с, что вовсе неплохо для 10BaseT и, вероятно, упирается в ограничения адаптера. Таким образом, можно сделать вывод, что на протестированных платформах программное обеспечение не являлось сдерживающим фактором.
Что касается стабильности, то мы используем различные версии LEAF-Bering уже в течение нескольких лет, часто на оборудовании, которое многие просто выбрасывают. Мы ни разу не видели краха, зависаний или перезагрузок из-за ПО. LBU сродни обычному аппаратному брандмауэру – один раз установили и настроили. И можно отключить монитор и клавиатуру, и просто забыть о нём.
Заключение
Зачем же это всё нужно? Почему просто не купить аппаратный межсетевой экран и успокоиться на этом? Всё дело в управлении, гибкости и стоимости. Первый созданный нами межсетевой экран на базе Linux заменил аппаратный, стоимостью $200. Дело в том, что в сети было необходимо сделать web-сервер доступным из Интернета, но единственное решение этой проблемы на аппаратном брандмауэре заключалось в установке сервера в локальной сети и перенаправлении всех (!) входящих запросов на web-сервер, что, мягко говоря, не совсем хорошо.
Большинство аппаратных решений, даже дорогих систем верхнего уровня таких компаний, как Cisco, имеют ограничения. При использовании LBU вы можете управлять всем, чем угодно, предел – мощность компьютера и ваша фантазия. Например, как быть, если вам потребуется добавить ещё один сетевой интерфейс? При использовании большинства аппаратных решений сделать это будет либо крайне сложно, либо вообще невозможно. LBU же позволяет “дёшево и сердито” добавить ещё одну сетевую карту (конечно же, если есть свободный слот). Конечно, при настройке LBU придётся потрудиться, но это будет вполне оправданно, ведь вы получаете полный контроль над системой, максимально возможную гибкость, прекрасную производительность и низкую стоимость решения.
В заключение отметим, что LEAF-Bering uClibc является решением с открытым исходным кодом и представляет собой очень мощный продукт, предназначенный для работы под управлением Linux и позволяющий создать надёжный и полнофункциональный межсетевой экран на базе стандартного компьютера. Конечно, установка и настройка потребуют усилий, но в результате вы получите систему, позволяющую полностью удовлетворить все потребности небольшой сети за весьма скромные деньги.
Описание тестирования
При использовании Qcheck, все тесты проводились при передаче данных по протоколу TCP в три итерации пакетами по 1000 байт. Тесты Qcheck запускались из ОС Windows: на PII 400 использовалась Win2k, на P4 2,66 ГГц – WinXP Pro.
Сервер, расположенный в DMZ, работал на P200 под управлением Debian Linux, для тестирования на него была также установлена конечная точка Qcheck. К сожалению, консоль тестирования Qcheck работает только под Windows, и нам не удалось запустить более одного теста, не добавляя в этот процесс новые компьютеры.
Что касается Netperf, то после его установки мы настроили ту же систему P200 Debian Linux, находящуюся в DMZ, на получение тестовых пакетов netperf. Кроме того, мы установили netperf ещё на три 3 системы в локальной сети: ещё один P200 Debian Linux, древний AMD 486 DX/4-WB также под управлением Debian Linux и PII 400 под Win2k. На машине с Win2k в командной строке мы набрали следующее: netperf -l 30 -f M -H 192.168.2.50, но ВВОД пока не нажимали.
Примечание. Параметры обозначают следующее: (-l) время работы теста 30 секунд, (-f) формат результата – в мегабайтах, (-H) адрес назначения 192.168.2.50. Тест netperf по умолчанию длится 10 секунд, мы запускали его на 30 секунд, чтобы уменьшить влияние задержек в начале работы.
После этого при помощи PuTTY мы устанавливали SSH-соединение с машинами Debian и вводили эту же строку (не нажав ВВОД). Затем во всех трёх окнах быстро нажимали ВВОД.
Далее результаты пропускной способности, полученные в мегабайтах в секунду, складывались, и сумма умножалась на 8 (в 1 мегабайте 8 мегабит), чтобы получить результат в мегабитах в секунду. Конечно, можно было оставить параметр -f, но нам хотелось видеть пропускную способность в байтах, а не в битах.
Отметим, что во время тестирования сервер, находящийся в DMZ, на который направлялись все пакеты, работал одновременно и как web-сервер, и как почтовый сервер, так что вполне возможно, что реальная пропускная способность интерфейса DMZ была немного выше полученного результата.
Тестирование при помощи netperf во втором случае (с адаптером 10baseT) проходило практически так же, изменились лишь конфигурации систем. Сервер DMZ в этом случае работал на K6II 233 под управлением Debian Linux, а те две системы, к которым мы подключались через SSH, работали на базе P75 под управлением Debian. Система, с которой мы производили запуски всего этого добра, была построена на базе P4 2,8 ГГц и работала под управлением WinXP.
Итоговая информация о продукте | |
Итог | Бесплатный, гибкий и мощный межсетевой экран на базе Linux. Установка и настройка могут показаться сложными для тех, кто не знаком с интерфейсом командной строки. |
Преимущества | – Бесплатный – Быстрый (даже на старых процессорах) – Превосходная гибкость, включая возможность работы с несколькими физическими интерфейсами – Возможность запуска с одной дискеты. |
Недостатки | – Установка и настройка не для новичков |
Розничная цена | $0 |