Спецвыпуск журнала «Хакер» 47, октябрь 2004 г.
Шрифт:
Самыми надежными считаются *nix. У них очень много плюсов – от простой логики работы с пользователем до высокой отказоустойчивости. Но не йогурты одинаково полезны, а *nix одинаково стабильны – некоторые из них просто не рассчитаны на создание безопасных хостов. Определимся с требованиями к системе, при выполнении которых ее смело можно будет ставить на сервера и другие критически важные системы. Итак, ОС должна иметь жесткую политику разграничения доступа, должны быть встроенные или подключаемые средства для создания комплексов firewall, необходимо ПО для отражения атак, наличие регулярных обновлений, возможность быстрого обнаружения взломов.
Взглянем на рынок ОС сегодняшнего дня. Мой выбор пал на следующие дистрибутивы: Mandrake 10 Official, Gentoo Linux 2004.2, FreeBSD 5.1, OpenBSD 3.5, QNX 6.2.1.
Нам нужен максимально безопасный и стабильный дистрибутив. Самые популярные дистрибутивы Linux базируются на RPM-пакетах. Представителем мира RPM-base стал последний релиз Mandrake. Я выбрал его по нескольким причинам: все компоненты дистрибутива проходят тщательное тестирование на совместимость, используется собственная модель взаимодействия с пользователями, высокая стабильность, проверенная годами. Можно было использовать канонический Red Hat, но политика, направленная на зарабатывание денег, отходит от классической UNIX-модели, что явно не в пользу всей Федоры. В обзоре есть еще один вариант Linux-систем – Gentoo 2004.2. Это классический source-base дистрибутив. При
Самым ярким и известным представителем линейки BSD является FreeBSD. Очень многие сервера крупных организаций используют именно этот клон UNIX. Из основных плюсов можно выделить проверяемую годами архитектуру, отлаженную схему взаимодействия компонентов, минимальное наличие известных уязвимостей. Еще очень сильно привлекает развитая система портов, которая позволяет обновлять всю систему, используя всего одну команду. Второй перспективной реализацией BSD-модели стала OpenBSD. Мой выбор пал именно на эту систему, потому что ее создатели изначально готовят свое детище к работе в сложнейших сетевых условиях: «Вот уже несколько лет, как не было зарегистрировано ни одного удаленного взлома машин, работающих под управлением OpenBSD в конфигурации по умолчанию». И последняя система, о которой пойдет речь в нашем обзоре, – QNX. Это даже не UNIX в том понимании, которое близко нам. QNX – коммерческая ОС жесткого реального времени, совместимая со стандартом POSIX. То есть она может работать с очень многим ПО, написанным для UNIX. Основное отличие QNX от всех остальных операционок в том, что это система реального времени, взломов которой зарегистрировано не было вообще. После небольшого знакомства с нашими кандидатами предлагаю перейти к исследованию безопасности данных систем.
http://www.mandrakelinux.com
Популярный дистрибутив Linux на рабочем столе. О дружественности продуктов этой компании говорит весь интернет. А что же с безопасностью? Уже в начале установки можно сделать выбор: тип expert или обычный. Следует отдать предпочтение первому варианту: чуть больше возможностей для тонкой настройки ОС при инсталляции. Пожалуй, самым главным этапом во всей установке для нас станет выбор уровня безопасности. Именно так MandrakeSoft подготовила свой дистрибутив к серверному рынку. Первый и самый простой уровень – стандартный. Этот вариант практически не предусматривает никакого контроля над безопасностью системы. Так, любой пользователь сможет читать произвольные каталоги, кроме домашних директорий других юзеров. Кроме этого, некоторые пользователи смогут просмотреть содержимое конфигурационных файлов /etc. Полностью отсутствуют проверки на новые/изменившиеся файлы в системе: разработчики считают, что за день столько софта наставишь/наудаляешь, что читать мегабайтные логи своих действий не возникнет никакого желания. Также возможен непосредственный вход пользователя root прямо по SSH или с терминала, что кому-то удобно, но на самом деле очень опасно. Как видишь, первый уровень ориентирован на домашнее использование и на звание секьюрного варианта даже не претендует. Следующий уровень – высокий – также рассчитан на домашнее использование и поэтому нас тоже не интересует. Пожалуй, единственным приемлемым вариантом станет параноидальный уровень. Для серверов следует использовать только его. Вот что он дает: невозможен непосредственный вход пользователем root, никто не может читать корневую файловую систему – у всех файлов и каталогов выставлены права на чтение только для root. Кроме этого, производители значительно проработали механизм демонов – на этом уровне полностью реализована модель безопасности каждому демону «по потребностям», то есть любой сервис будет запускаться от своей учетной записи. Еще каждую ночь будут проводиться автоматические проверки на бэкдоры и руткиты – при любых изменениях файловой системы составляется протокол, который отправляется администратору. Защита от внешних атак реализуется с помощью обязательной установки пакета iptables – системы Firewall. Mandrake постарается автоматически выбрать необходимые правила и применить их для данного хоста. Причем у фаервола будет активирована опция, отвечающая за отражения попыток сканирования портов – практически ни один порт-сканер не сможет определить наличие работающих сервисов. Таким образом, параноидальный уровень старается создать действительно защищенную крепость как для атак извне, так и для локальных взломов ;).
http://www.gentoo.org
Это, ИМХО, один из лучших дистрибутивов Linux по всем параметрам. Достать систему очень просто: ее можно скачать из интернета (www.gentoo.org) либо заказать 2 CD в Linux-центре (www.linuxcenter.ru). Установка Дженту радикально отличается от аналогичной процедуры в Mandrake-like-дистрибутивах. В этой сборке тебе придется все делать руками и консолью. Именно поэтому не имеет смысла говорить о заранее предустановленных уровнях безопасности – их просто нет. Весь процесс инсталляции ты проводишь сам, и если твои знания Linux ограничиваются уровнем KDE, то ни о какой безопасной системе даже не мечтай. Это я не к тому, что установить Gentoo трудно, а к тому, что создать защищенный хост на его базе новичку сложнее. Но, если ты владеешь секретами Linux в достаточной степени, то Дженту – для тебя. Вот почему я выбираю его: после установки на моем сервере есть только то, что я сам выбрал из исходников. То есть никаких левых и бажных сервисов не будет. Например, если это почтовый сервер, то на нем и будет установлен самый свежий postfix, собранный из сорцов, с оптимизацией и повышенной защитой. Всяких апачей и джабберов не будет даже в проекте. Такой подход к безопасности ОС позволяет держать на сервере минимальный набор самых необходимых демонов. Но создать Linux исключительно под свои нужды – это только часть возможностей Gentoo. Однажды установив и настроив систему, можно надолго забыть о поддержании сервера в боеспособном состоянии. У нашего пингвина есть встроенные средства обновления и установки ПО прямо из интернета, без участия администратора! Именно поэтому я считаю Gentoo самым секьюрным дистрибутивом Linux на сегодняшний день. Докажу тебе это, раскрыв сущность процесса обновления ОС. Установка нового ПО на машину с Gentoo происходит с помощью утилиты emerge. Принцип работы этой программы очень прост: когда root (или сrond) отдает команду «emerge Имя_Программы», система идет в интернет, скачивает сорцы этой программы с сайта поддержки Gentoo, компилирует и устанавливает бинарники. Все происходит в полностью автоматическом режиме. А если учесть, что софт для Дженту обновляется практически каждый день, то ты поймешь, что грамотный админ и Gentoo Linux создадут суперсекьюрный сервер. Достаточно один раз разобраться во всем и настроить, к примеру, тот же Apache, а потом записать в Crontab команду «emerge Apache» на ежедневное выполнение, и все! Взломать систему через уязвимость в Apache станет практически невозможно (на каждый неуязкимый Апач найдется свой приватный эксплоит :) – прим. AvaLANche'а)!
http://www.freebsd.org
Вот добрались и до прямых потомков UNIX. Пожалуй, FreeBSD – это самый известный клон UNIX на сегодня. Разработчики этой системы стараются выпускать только стабильные и хорошо отлаженные продукты. Именно поэтому, хотя вся система доступна в исходных кодах, добавлять патчи и новые возможности в ядро могут только разработчики, входящие в официальную группу поддержки проекта. Это отличает FreeBSD от всех остальных систем Open Source. Создатели нацеливают свой продукт на серверный рынок:
http://www.openbsd.org
OpenBSD – общепризнанный лидер по безопасности. Текущая версия – 3.5. Установка этой системы протекает аналогично установке всех остальных BSD с тем лишь отличием, что все пронизано духом безопасности. После инсталла остается не так уж много: скачать и установить необходимые демоны. Просто в OpenBSD ставится только самое необходимое для запуска. Все дополнительные демоны и сервисы администратор добавляет и настраивает сам, и это, по-моему, лучший подход к безопасности. Кроме того, в основе OpenBSD лежат хорошо проверенные и отлаженные исходные коды, ежедневный аудит программного обеспечения приносит свои плоды: за несколько последних лет не было зарегистрировано ни одного взлома (в дефолтовой конфигурации – важное прим. ред.). Сущность аудита OpenBSD достаточно проста: существует небольшая группа высококвалифицированных IT-специалистов, которые постоянно анализируют исходные коды всей системы. И если учитывать, что они предлагают только базовую конфигурацию, то можно верить, что проверка будет проведена очень качественно. Предельно сильная внутренняя защита подкрепляется переработанным и усложненным комплексом Firewall. И дополняет общую картину укрепленности собственный сайт, на котором ежедневно выставляются все обновления для текущей версии системы. Неприхотливая к квалификации админа как IT-специалиста, OpenBSD завоевывает рынок за счет своей подготовленной грамотной настройки. Таким образом, лучшим секьюрным дистрибутивом линейки BSD является OpenBSD: для мастеров она покажет мощь и стабильность UNIX с возможностью гибкой настройки, а для новичков – защищенность и отказоустойчивость прямо из «коробки».
http://www.qnx.com
Я не случайно поставил эту ОС последней в обзоре – она не клон UNIX. Это самостоятельная ОС, но очень занятная. Разработки этой системы ведутся уже более двадцати лет. Проект полностью закрытый, коммерческий. Лицензия на QNX для разработчика стоит 6000$. Я не ошибся – именно долларов, цена же полной версии переваливает за 15 килобаксов. Но существует некоммерческая версия, доступная бесплатно. В свободной версии есть практически все необходимое для работы данной ОС на сервере, включая средства для сборки GNU-программ. Самое главное в этой системе – то, что она полностью отвечает требованиям ОС реального времени, то есть ядро в принципе не может зависнуть ни при каких обстоятельствах ;). И, кроме этого, данная ОС гарантирует ответ сервера через очень малый промежуток времени. За всю историю QNX не было найдено ни одной уязвимости в коде системы. Сразу виден серьезный подход программистов QSSL. Как видишь, пока все просто идеально. Но это все относится к самой системе. Своего же ПО, необходимого для создания полноценного сервера, у нее нет. QNX используется в основном во встраиваемом оборудовании, для узкоспециализированных задач на производстве. Но отсутствие софта именно для QNX никого не остановило: я все чаще встречаю на просторах рунета админов-энтузиастов, запускающих сервера на ее базе. Да и сам, чего скрывать, перевел свой web-сервер на эту систему и пока нисколько не жалею. Итак, что нужно для создания суперзащищенного сервера реального времени на базе QNX? Самое главное – это дистрибутив системы. Для нашей задачи вполне достаточно NE (Non-Commercial) версии, которая поставляется на 1 CD. Существует несколько способов получения этого диска. Первый – скачать с официального сайта www.qnx.com образ диска и записать его самому. В этом варианте есть неприятные моменты: сливать надо около 300 мегов, причем выкачать надо за один раз все – докачка не поддерживается. Кроме того, скорость скачки должна быть не меньше 10 Кб в секунду, иначе их сервер будет закрывать сессию и придется начинать все с начала. Другой вариант – попробовать получить по почте бесплатно полную версию QNX для вузов (напряги декана – и будет тебе счастье!) (вся информация на сайте www.swd.ru). И, наконец, самый простой и доступный путь – заказать книгу «Операционная система реального времени QNX: от теории к практике»., которая продается во многих интернет-магазинах, причем обойдется тебе она вместе с диском не дороже 250 руб. После простой инсталляции ты попадешь в самую быструю и стабильную ОС. Все современные версии поддерживают TCP/IP-протокол в полной мере, поэтому тебе останется только установить и отконфигурировать серверное ПО. Кстати, получить весь необходимый софт можно либо на страничке одного из участников проекта www.qnx.org.ru , либо собрав его самостоятельно из исходников, ведь система POSIX-совместима. Эта ось, пожалуй, лучший выбор, но только для профессионалов и тех людей, которые готовы бороться с трудностями.
Вот и все, что я хотел рассказать о дистрибутивах сегодняшних дней. Подведем итоги. Среди Linux-сборок самый лучший выбор для защищенного хоста – это Gentoo Linux. Если нужно поставить быстро и более-менее качественно сервер и нет знаний или желания самому создавать защиту – Mandrake 10 Official с максимальным уровнем безопасности очень даже неплох. Если ты поклонник демона, твой выбор исключительно OpenBSD – разработчики очень хорошо позаботились о создании секьюрной системы. Для любителей сложных путей – QNX. Ее использование характеризуется отсутствием зависаний сервера, и микроядерная система реального времени гарантирует тебе это.
Антон Карпов, специалист по сетевой безопасности, системный администратор:
Разница между BSD и Linux должна быть понятна каждому: первое есть полноценная ОС, второе – лишь ядро операционной системы. Из-за этого фундаментального различия вариации дистрибуций BSD можно сосчитать по пальцам, тогда как дистрибутивов Linux как собак нерезаных. Что же лучше с точки зрения безопасности? Наверное, имея полное окружение (ядро, userland, демоны, системные утилиты), построить защищенную систему легче, так как проще работать с гармоничным набором исходников, располагающимся в едином дереве (/usr/src) и подгоняемым друг к другу годами. Все же, что можно добавить к ядру Linux, – это патчи, усиливающие его иммунитет. Но помимо этого нужно как минимум озаботиться аудитом многочисленных утилит, необходимых для работы сервера и написанных разными людьми, с разным стилем программирования, подчас с разной идеологией. Поэтому, наверное, security-патчей для ядра Linux огромное количество, однако заслуживающих внимание security-oriented дистрибутивов – много меньше. Максимум, что делают их вендоры, – проводят анализ кода да собирают пакеты компилятором с защитой от переполнения стека. Такие проекты, как privilege separation, system calls enforcement, jail, рождаются либо доводятся до ума именно в BSD-системах (OpenBSD, FreeBSD).