- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF85:Ideco ICS
Материал из Linuxformat.
О SmoothWall, IPCop и Astaro Security Firewall слышали многие. Сегодня Михаил Журухин расскажет вам об отечественной разработке – Ideco Internet Control Server
Содержание |
IDECO: Internet Control Server
Все крупные фирмы, которые сейчас присутствуют на IT-рынке, когда-то были всего лишь start-up компаниями и начинали с малого. Обратное, к сожалению, неверно – по данным информационного агентства «Курсор», в первом полугодии 2006 г. закрылось более половины новых «start-up’ов»! Молодые компании нестабильны, подвергаются большому давлению со стороны конкурентов и… закрываются. Но некоторым удается выжить. Так, в 2002 г. небольшой коллектив единомышленников – сотрудников УГТУУПИ (г. Екатеринбург), рискнул выйти на рынок со своей разработкой – комплексным решением по контролю доступа в Интернет, подсчету трафика и защите локальной сети и серверов предприятия. Проект участвовал в конкурсе «Старт» Российского государственного фонда развития и предпринимательства в научно-технической сфере (фонд Бортника) и получил грант на коммерциализацию продукта.
В 2005 уже сформировавшийся продукт Ideco Internet Control Server получил золотую медаль на выставке в ВВЦ(ВДНХ) (г. Москва), а также был представлен и на крупнейшей в России выставке программного обеспечения Softool’2005. Сейчас Ideco ICS успешно развивается, и, как утверждают разработчики, уже бросил вызов Microsoft ISA Server.
В последнее время на рынке все чаще и чаще стали появляться готовые коммерческие решения на базе ОС Linux. Это и брандмауэры, и маршрутизаторы, почтовые шлюзы и прочие системы класса «поставил и забыл». Обычно такие системы стоят где-нибудь в углу серверной комнаты и работают круглосуточно, передавая пакеты из локальной сети в Интернет и обратно.
Ideco ICS относится к классу подобных систем и является Интернет-шлюзом, который предоставляет доступ в сеть всем пользователям. Сегодня организация, столкнувшаяся с проблемой учета трафика и контроля доступа при использовании Интернет-канала, может пойти несколькими путями:
Linux 2.4.24 i686 SMP | firebird 1.0.3.972-0.64IO |
poptop-1.2.1 | iptables 1.2.9a-2 |
pppd 2.4.2 | dnrd 2.17 |
thttpd 2.23 | dhcpd 3.0pl1-2 |
postfix 2.1.5 | php 4.3.8 |
teapop 0.3.8 | vsftpd 1.1.3 |
openssh-3.5 | ntpd 4.1.1c |
Если есть несколько вариантов, используются наиболее компактные и простые компоненты, т.к. огромный функционал их собратьев-гигантов просто не нужен. Хорошим примером может быть thttpd (77 Кб) или dnrd (50 Кб).
Почему именно Firebird?
«Из всех открытых решений, в качестве базы данных был выбран Firebird 1.0 (реализация Interbase). Эта база данных версионного типа, и вся информация о транзакциях хранится прямо в БД, а не в промежуточном журнале, поэтому в случае аппаратного отказа, восстановление БД происходит очень быстро и в подавляющем большинстве случаев без потерь. Firebird, по сравнению с MySQL, более стабилен и изначально поддерживает хранимые процедуры, что обеспечивает целостность данных. По функционалу Firebird ближе к таким БД, как PostgreSQL, но при этом не требует сопровождения. Вся информация хранится в одном файле, что уменьшает вероятность критических сбоев.Вообще, Firebird/Interbase оптимально подходит для встраиваемых систем: например, он применяется в США в авиастроении и даже в бортовой системе американских танков». Марк Коренберг, ведущий разработчик Ideco Software
- Установить аппаратный маршрутизатор или Firewall + компьютер с программой обработки статистики и управления.
- Использовать собственные разработки на базе Linux/FreeBSD.
- Использовать программы и службы под Windows.
- Развернуть комплексное решение, реализующее необходимые функции.
С первыми тремя пунктами все ясно: все системные администраторы, так или иначе, имели с ними дело. Последний пункт – самый заманчивый. Комплексных решений, тем более на базе ОС Linux, не слишком много, и Ideco ICS является интересным представителем этой категории продуктов. В числе его возможностей: фильтрация трафика, блокирование рекламы, интеллектуальная приоритизация трафика (QoS), удаленное подключение сотрудников и подразделений, почтовый сервер с антивирусом, корпоративный web-сервер, DHCP, шейпер трафика, FTP-сервер.
При этом все компоненты Ideco ICS легко настроить. Интерфейс продукта можно назвать дружественно-интуитивным, поэтому Ideco ICS может настроить и человек, не знакомый с Linux.
Установка и управление
Установка происходит на чистый компьютер, т.к. Ideco не соседствует с другими ОС. Инсталляция происходит в автоматическом режиме и не отнимает много времени. В результате получается уже настроенная система, остается только произвести «доводку»: ввести пароль (по умолчанию – «servicemode») и получить доступ к настройкам. В разделе «Конфигурирование сервера» вводятся IP-адрес, маска подсети, имя сервера, параметры VPN и DNS.
Управление сервером осуществляется с любой рабочей станции Windows с помощью Ideco ICS Manager или через web-интерфейс. Здесь создаются тарифные планы, происходит управление пулами IP-адресов, добавление и удаление пользователей. Теперь, когда система работает, самое время узнать, как и почему.
Принцип работы
Сервер имеет два сетевых интерфейса: один интерфейс подключен к Интернету, а второй – к локальной сети предприятия. Принцип работы хорошо известен: сервер подключается к Интернету и имеет реальный IP-адрес. Все остальные компьютеры получают доступ к сети через шлюз по технологии NAT (Network Address Translation) и имеют «фиктивные» адреса, чаще всего, вида 192.168.x.y. В случае необходимости, сервера, расположенные за периметром брандмауэра, могут получить через VPN реальный IP-адрес. Поддерживается и публикация серверов с помощью отображения портов DNAT.
Пользователи подключаются к шлюзу с помощью технологии VPN, что позволяет ввести надежную схему аутентификации. Учет трафика также ведется по пользователям, а не по компьютерам (IP-адресам).
Иногда у пользователей локальной сети, находящихся в другом городе или просто вне здания организации, возникает потребность обратиться к ресурсам родной локальной сети. Любому пользователю Ideco ICS можно разрешить доступ из Интернета к локальной сети; при этом VPN-канал, разумеется, шифруется.
Внутреннее устройство
В основе Ideco Internet Control Server лежит Red Hat Linux 9.0, однако, за время своего существования продукт был практически полностью переделан. Система включает в себя такие компоненты, как ядро 2.4.24 i686 SMP, poptop-1.2.1 (открытая реализация протокола PPTP, используется для создания VPN), база данных Firebird (открытый аналог Interbase) и другие. В системе присутствуют и модули собственной разработки: основной демон управления в реальном времени, который управляет подключением-отключением пользователей, правилами iptables, подсчетом баланса и синхронизацией с базой данных, а также сборщик и агрегатор статистики.
В процессе установки системы жесткий диск будет разбит на четыре раздела. На одном из них стоит сервер, с него же загружается система. Этот раздел не изменяем. На втором разделе содержатся данные: здесь находятся файл конфигурации и база данных пользователей со статистикой. Однако, с этого раздела запрещено исполнять файлы.
Это сделано по соображениям безопасности. Вообще же безопасность в этой системе стоит на первом месте.
Посудите сами. В системе нет пользователя root, и даже администратор работает не от root и только в chroot-окружении. Многие открытые компоненты, в том числе ядро Linux, подверглись переработке. Ядро Linux было пересобрано, и на него наложены security-патчи (как стороннего, так и собственного производства), которые предоставляют дополнительные возможности. Эти возможности активируются через ветку /proc/kmask. Перечислим наиболее интересные из них. Опции включаются записью единицы в соответствующий файл. Отменить опцию невозможно – даже пользователю root.
«Главным принципом Ideco ICS является надежность. Не скорость, эффективность, малый размер и современность, а надежность и стабильность. Можно провести аналогию с «допотопными» космическими ракетоносителями, разработанными в 60-х годах – на сегодня это самый надежный способ выхода в космос, проверенный годами.
Аналогично дела обстоят и с программным обеспечением. По нашему мнению, главным фактором, определяющим надежность программного компонента, является долгая активная работа на множестве серверов по всему миру. Как только обнаруживается сбой, сообщение об этом передается автору, и он исправляет ошибку. Таким образом, выпускаются небольшие «патчи», исправляющие данную конкретную проблему. В таких случаях изменения исходного кода минимальны и не касаются всей программы в целом, а значит, не порождают новых ошибок. Кроме этого, мы выбираем только те разработки, исправлений по безопасности в которых уже не было более двух лет.
Самые современные версии программ обладают новой функциональностью и иногда даже базируются на новой архитектуре или вообще созданы с нуля. Так или иначе, в новых исходных текстах содержатся новые ошибки. К тому же для наших целей не нужна новая функциональность – вполне хватает и стандартной. Таким образом, нет ни одной причины использовать новейшие версии программ во встраиваемых и необслуживаемых системах.
Конечно, когда нам понадобится новый функционал, придется использовать новую версию, но и при этом наши разработчики сначала тщательно просмотрят изменения между версиями и только затем начнут ее тестирование и использование».
Марк Коренберг, ведущий разработчик Ideco Software
- Noexec – после установки этого параметра, все монтируемые разделы будут подключаться с флагом noexec.
- Nosuid – аналогично noexec, но запрещается создавать файлы c флагом suid.
- Nodev – запрет задания файлов устройств на разделе и запрет монтирования devfs.
- Nounchroot – запрет пользователю root делать chroot на корневой каталог, то есть запрет выхода из chroot.
- Noproc – запрет монтирования procfs.
- Noaddmount – запрет монтирования новых разделов.
- Capmask – дополнительная маска. После ее установки нельзя выйти за рамки возможностей, разрешенных этой глобальной capmask.
Используется монолитное ядро, собранное без поддержки модулей – во избежание внедрения руткитов.
Особое внимание также уделяется защите системы и локальной сети от атак злоумышленников. По умолчанию, все правила системного брандмауэра настроены на максимальную защиту и ни один порт сервера недоступен из Интернета. Используется уже стандартная на сегодня политика типа «deny, allow», то есть все, что не разрешено явно, запрещается. При этом через пользовательский межсетевой экран нельзя создать правила, уменьшающие безопасность сервера Ideco ICS – только правила-ограничения для пользователей.
Имеется функция фильтрации содержимого, позволяющая запретить загрузку из Сети определенных типов файлов (например, MP3, AVI и др.) и рекламы. В брандмауэре можно включить качественный шейпер с очередями, это позволяет ограничить ширину канала для конкретного пользователя или протокола. Такими возможностями сейчас никого не удивишь, во всех современных шлюзах они должны быть.
Права и возможности служб (capabilities) изменены и максимально ограничены, что уменьшает вероятность внедрения эксплойтов, т.к. с установленными значениями capabilities выполнить запрещенные действия становится весьма затруднительно.
Используя стандартные capabilities ядра Linux, можно гибко ограничивать возможности процессов, что особенно важно для приложений, работающих от имени root. Установка производится либо для всех создаваемых процессов командой lcap, либо для каждого процесса отдельно командой setpcaps. Администраторы Linux редко пользуются capabilities и, на взгляд разработчиков Ideco ICS – напрасно. Это стандартная возможность ядра, которая значительно повышает защищенность системы в целом.
Для улучшения безопасности системы используется технология chroot. Chroot – это всего-навсего каталог, содержащий миниатюрную копию файловой системы Linux. Поддерево chroot содержит только те файлы, которые необходимы для работы нашей службы. Служба, запущенная в chroot, не влияет на корневую файловую систему, и другие программы, которые выполняются не в chroot-окружении, не могут повлиять на работу службы. В Ideco ICS используется специальный усиленный chroot – root не может выйти за его пределы, поэтому, если будет найдена уязвимость в одной из служб, это не приведет к нарушению безопасности всей системы.
При старте службы ей устанавливается приоритет. Службы, отвечающие непосредственно за передачу пакетов, имеют наивысший приоритет, а, например, агрегатор статистики – наименьший.
Так как root в системе отсутствует, некоторые административные операции производятся через модуль обработки системных команд – execd. Все подобные задачи: отправка уведомлений, перезагрузка сервера, создание резервных копий и т.п., становятся в очередь сообщений POSIX. Execd читает данную очередь и выполняет задачи последовательно. Довольно необычный подход, в Linux традиционно используется sudo; однако здесь администратор находится в chroot, и sudo не поможет.
Статистика в Ideco ICS собирается демоном собственной разработки. Демон работает с приоритетом реального времени через интерфейс ulog и сохраняет статистику в файлы, которые затем в два этапа обрабатываются агрегатором.
В сервер встроена возможность периодического резервного копирования БД и конфигурационного файла на CD-диск. Стоит отметить, что вся конфигурация сервера находится в одном файле, что упрощает восстановление при аппаратных сбоях или переносе системы на другой компьютер.
Для повышения надежности и отказоустойчивости системы используется Watchdog.
Watchdog работает как виртуальный администратор: следит за работой системы, останавливает и перезапускает «подвисшие» процессы, при необходимости осуществляет «мягкий» перезапуск системы и посылает сообщения администратору.
Для отслеживания состояния служб Watchdog использует PID-файлы в каталоге /var/run. Если PID-файл службы есть, а процесс не найден, то служба перезапускается. Для всех процессов проверяется объем используемой памяти и потребление процессорного времени. Если процесс превысил установленные лимиты, то он уничтожается. Также Watchdog проверяет свободное место на диске и другие критические параметры, и в случае необходимости предупреждает администратора или, в крайнем случае, переводит систему в runlevel 2 – своего рода SAFEMODE.
«Чтобы исправить ошибки, зачастую принималось решение не изменять исходный код, а, зная об этих недоработках, исправлять поведение системы так, чтобы она не страдала от проблем открытых компонентов. Фатальных ошибок в программах мы пока не находили – только неоптимальные и неэффективные алгоритмы. Сделанные нами изменения касаются как ядра (iptables – модули psd, connlimit, string), так и приложений (pppd, postfix, thttpd). Пришлось писать новые модули для доступа к БД Interbase для postfix и teapop, так как официальные коды поддерживают подключение к этой БД. В vsftpd добавлена возможность контроля свободного места на диске, а в postfix, помимо прочего – возможность контроля за размером каталога с письмами.
На практике оказалось, что разработчики Open Source, как правило, реагируют на наши сообщения очень медленно и неохотно. Все дело в том, что мы имеем дело со очень специальными случаями, которые проявляются при больших нагрузках. В обычных условиях то, на что мы наткнулись, не проявляется, поэтому такие ситуации сложно выявить и провести повторные эксперименты.
Тем не менее, многие сообщения об ошибках были подтверждены и исправлены разработчиками.
Все изменения и патчи мы высылаем по запросу на e-mail в течение двух дней, в соответствии с лицензией GPL».
Марк Коренберг, ведущий разработчик Ideco Software
При загрузке система проводит самотестирование: проверяет параметры оборудования, состояние файловой системы и базы данных, а также сверяет контрольные суммы всех исполняемых файлов. Раздел с исполняемыми файлами монтируется в режим ro, а после загрузки всем исполняемым файлам выставляется атрибут Immutable и общий системный флаг Immutable. После этого даже root не может изменить системные файлы. Веьма разумный подход; удивительно, почему популярные дистрибутивы Linux его не используют.
В системе присутствует интеллектуальный модуль Quality of Service (QoS) для автоматического определения приоритета трафика.
Для того, чтобы использовать очереди на входящий трафик, на ядро были наложены дополнительные патчи. По словам разработчиков, из всех протестированных патчей наиболее результативным показал себя IMQ, который создает hook в iptables-таблице mangle. Однако, IMQ работает только при скоростях не более 10 Мбит, и, чтобы очереди на базе IMQ работали при больших скоростях, необходимо перевести ядро в режим 1000Гц, а netsheduler – в режим отсчета тиков от RTC-таймера вместо jiffies.
Интеллектуальная приоритезация осуществляется маркировкой пакетов в зависимости от скорости соединения и протокола. Когда пакет попадает в очередь HTB устройства IMQ, то на основе маркировки он помещается в свой класс, т.е. своего рода подочередь. Соответственно, пакеты высокоскоростных прожорливых соединений, например, скачивание файлов, не задавят более важные пакеты, например, ssh. Кроме этого, используется очередь sfq, и пакеты разных соединений, находящихся в очереди, выходят из нее по принципу рулетки, что позволяет равномерно распределить канал между пользователями и между приложениями.
В Ideco ICS имеются и дополнительные сервисы: почтовый сервер Postfix с антивирусом ClamAV, web-сервер с поддержкой PHP и MySQL. Также присутствует FTP-сервер Vsftpd и «служба точного времени» ntpd. Все службы запускаются в своих chroot каталогах.
Кто-то скажет, что все возможности Ideco ICS можно реализовать и на обычных дистрибутивах Linux. Это действительно так, и при должной квалификации персонала задача реализуема, но сколько она отнимет сил и времени? В результате будет получено, хотя и оптимизированное под нужды конкретного предприятия, но все же единичное решение – и в другой раз, возможно, придется все начинать с нуля. Ideco ICS, напротив, типовое решение, проверенное и работающее во многих организациях.
Какая польза сообществу Open Source от подобных коммерческих проектов? В результате внимательного тестирования Linux и использования его в типовых решениях выявляются уязвимости и ошибки. Исправления для них передаются разработчикам соответствующих открытых проектов. Кроме этого, проводится своего рода «селекционный отбор», и в коммерческие решения попадают только самые проверенные и зрелые разработки. Таким образом, это не просто эксплуатация Linux в коммерческих продуктах, это тесное сотрудничество, позволяющее совершенствовать Open Source и продвигать Linux на корпоративный рынок.