355 500 произведений, 25 200 авторов.

Электронная библиотека книг » Хакер Журнал » Спецвыпуск журнала «Хакер» 47, октябрь 2004 г. » Текст книги (страница 2)
Спецвыпуск журнала «Хакер» 47, октябрь 2004 г.
  • Текст добавлен: 5 октября 2016, 01:35

Текст книги "Спецвыпуск журнала «Хакер» 47, октябрь 2004 г."


Автор книги: Хакер Журнал



сообщить о нарушении

Текущая страница: 2 (всего у книги 21 страниц)

Я хочу продолжить рассказ о схеме загрузки UNIX-систем, так как загрузка является еще одним архитектурным решением сообщества разработчиков ОС. Существует две основные схемы загрузки UNIX и его клонов: BSD и System V. BSD-тип применяется во многих BSD-системах и в некоторых дистрибутивах Linux (Gentoo, Slackware). Схема BSD проще System V, но и возможностей у нее меньше. Рассмотрим более прогрессивную System V. Сначала загружается ядро ОС, будь то UNIX, BSD-клон или Linux-клон, после этого ядро монтирует корневую файловую систему, ссылка на которую ему передана параметром загрузчика. При удачном завершении операции начинается поиск служебного каталога /sbin; если он не обнаруживается, то система выдает «Kernel panic». Затем происходит запуск главного процесса Init: отдается команда /sbin/init. После чего уже Init обращается к каталогу /etc и ищет там файл inittab, где указан необходимый уровень запуска. Осталось не так уж много: init читает и анализирует содержимое своего конфигурационного файла, а затем запускает необходимые сервисы, монтирует локальные файловые системы, поднимает сетевые интерфейсы, монтирует уваленные файловые системы и запускает оставшиеся сервисы. На завершение процесса загрузки укажет (если система загрузится не в multiuser mode) появившееся приглашение ввести логин и пароль пользователя.

Ядро – всему голова!

Главным, определяющим архитектуру системы звеном является ядро. Все ядра *nix-систем должны выполнять следующие функции:

– управление работой процессов: создание, завершение и организация взаимодействия между ними.

– планирование очередности работы процессов, переключение выполняемых задач. Сюда входит и расстановка приоритетов для задачи управления мультипроцессорными системами.

– выделение процессу необходимой оперативной памяти. При ее недостатке – включение механизма swap. Также ядро следит за обращением приложения к запрещенным участкам, к соседним сегментам и в случае генерации процессорного исключения снимает сбойный процесс, записывает сообщение в системный журнал.

– предоставление высокоуровневого доступа к винчестеру и другим носителям информации. Ядро подключает файловые системы и дает простой интерфейс по взаимодействию с ними. Все это делается с учетом прав на файлы и квот для пользователя.

– Управление периферией. Предоставление процессам доступа к внешним устройствам. Обеспечение работы всей периферии – задача ядра и его окружения. Драйвера устройств могут как включаться в ядро, так и быть подгружаемыми модулями. Использование модулей невозможно в некоторых старых представителях семейства UNIX.

init 6

*nix-система имеет достаточно простую и логически правильную архитектуру. ОС UNIX устойчива и дружелюбна, вот только друзей для себя она выбирает очень и очень тщательно.


Книги о UNIX

http://ois.mesi.ru/html_docs/BACH/ – подробная книга, которую можно скачать в 1 zip-архиве.

http://linuxdoc.chat.ru/obsh/rukadmina/index.html – книга 95-го года, но своей актуальности она не потеряла.


NO WARRANTLY ABSOLUTED – девиз модели Open Source наших дней.

При анализе первого варианта UNIX, написанного на языке C, Ритчи указал на заметно возросший объем (20-40%) и на ухудшение производительности ОС в целом по сравнению с ассемблерным вариантом кода.

В системе UNIX используется вытесняющая многозадачность, базирующаяся на понятиях приоритета и квантования.


ОС для Кремля / Ищем самую защищенную систему

Стабильная, безопасная, неуязвимая, отказоустойчивая – вот какие характеристики являются основополагающими при выборе операционной системы для ответственной работы. Эта статья поможет с выбором именно базовой операционной системы, максимально защищенной и удобной.

Самыми надежными считаются *nix. У них очень много плюсов – от простой логики работы с пользователем до высокой отказоустойчивости. Но не йогурты одинаково полезны, а *nix одинаково стабильны – некоторые из них просто не рассчитаны на создание безопасных хостов. Определимся с требованиями к системе, при выполнении которых ее смело можно будет ставить на сервера и другие критически важные системы. Итак, ОС должна иметь жесткую политику разграничения доступа, должны быть встроенные или подключаемые средства для создания комплексов firewall, необходимо ПО для отражения атак, наличие регулярных обновлений, возможность быстрого обнаружения взломов.

Взглянем на рынок ОС сегодняшнего дня. Мой выбор пал на следующие дистрибутивы: Mandrake 10 Official, Gentoo Linux 2004.2, FreeBSD 5.1, OpenBSD 3.5, QNX 6.2.1.


InTrO

Нам нужен максимально безопасный и стабильный дистрибутив. Самые популярные дистрибутивы Linux базируются на RPM-пакетах. Представителем мира RPM-base стал последний релиз Mandrake. Я выбрал его по нескольким причинам: все компоненты дистрибутива проходят тщательное тестирование на совместимость, используется собственная модель взаимодействия с пользователями, высокая стабильность, проверенная годами. Можно было использовать канонический Red Hat, но политика, направленная на зарабатывание денег, отходит от классической UNIX-модели, что явно не в пользу всей Федоры. В обзоре есть еще один вариант Linux-систем – Gentoo 2004.2. Это классический source-base дистрибутив. При установке такой системы ты полностью сам закладываешь всю безопасность хоста. Кроме этого, в Gentoo очень хорошо продумана схема обновления ПО через интернет, что позволяет всегда использовать самые безопасные и защищенные версии софта.

Самым ярким и известным представителем линейки BSD является FreeBSD. Очень многие сервера крупных организаций используют именно этот клон UNIX. Из основных плюсов можно выделить проверяемую годами архитектуру, отлаженную схему взаимодействия компонентов, минимальное наличие известных уязвимостей. Еще очень сильно привлекает развитая система портов, которая позволяет обновлять всю систему, используя всего одну команду. Второй перспективной реализацией BSD-модели стала OpenBSD. Мой выбор пал именно на эту систему, потому что ее создатели изначально готовят свое детище к работе в сложнейших сетевых условиях: «Вот уже несколько лет, как не было зарегистрировано ни одного удаленного взлома машин, работающих под управлением OpenBSD в конфигурации по умолчанию». И последняя система, о которой пойдет речь в нашем обзоре, – QNX. Это даже не UNIX в том понимании, которое близко нам. QNX – коммерческая ОС жесткого реального времени, совместимая со стандартом POSIX. То есть она может работать с очень многим ПО, написанным для UNIX. Основное отличие QNX от всех остальных операционок в том, что это система реального времени, взломов которой зарегистрировано не было вообще. После небольшого знакомства с нашими кандидатами предлагаю перейти к исследованию безопасности данных систем.


LINUX Mandrake

http://www.mandrakelinux.com

Популярный дистрибутив Linux на рабочем столе. О дружественности продуктов этой компании говорит весь интернет. А что же с безопасностью? Уже в начале установки можно сделать выбор: тип expert или обычный. Следует отдать предпочтение первому варианту: чуть больше возможностей для тонкой настройки ОС при инсталляции. Пожалуй, самым главным этапом во всей установке для нас станет выбор уровня безопасности. Именно так MandrakeSoft подготовила свой дистрибутив к серверному рынку. Первый и самый простой уровень – стандартный. Этот вариант практически не предусматривает никакого контроля над безопасностью системы. Так, любой пользователь сможет читать произвольные каталоги, кроме домашних директорий других юзеров. Кроме этого, некоторые пользователи смогут просмотреть содержимое конфигурационных файлов /etc. Полностью отсутствуют проверки на новые/изменившиеся файлы в системе: разработчики считают, что за день столько софта наставишь/наудаляешь, что читать мегабайтные логи своих действий не возникнет никакого желания. Также возможен непосредственный вход пользователя root прямо по SSH или с терминала, что кому-то удобно, но на самом деле очень опасно. Как видишь, первый уровень ориентирован на домашнее использование и на звание секьюрного варианта даже не претендует. Следующий уровень – высокий – также рассчитан на домашнее использование и поэтому нас тоже не интересует. Пожалуй, единственным приемлемым вариантом станет параноидальный уровень. Для серверов следует использовать только его. Вот что он дает: невозможен непосредственный вход пользователем root, никто не может читать корневую файловую систему – у всех файлов и каталогов выставлены права на чтение только для root. Кроме этого, производители значительно проработали механизм демонов – на этом уровне полностью реализована модель безопасности каждому демону «по потребностям», то есть любой сервис будет запускаться от своей учетной записи. Еще каждую ночь будут проводиться автоматические проверки на бэкдоры и руткиты – при любых изменениях файловой системы составляется протокол, который отправляется администратору. Защита от внешних атак реализуется с помощью обязательной установки пакета iptables – системы Firewall. Mandrake постарается автоматически выбрать необходимые правила и применить их для данного хоста. Причем у фаервола будет активирована опция, отвечающая за отражения попыток сканирования портов – практически ни один порт-сканер не сможет определить наличие работающих сервисов. Таким образом, параноидальный уровень старается создать действительно защищенную крепость как для атак извне, так и для локальных взломов ;).


LINUX Gentoo

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'а)!


FreeBSD

http://www.freebsd.org

Вот добрались и до прямых потомков UNIX. Пожалуй, FreeBSD – это самый известный клон UNIX на сегодня. Разработчики этой системы стараются выпускать только стабильные и хорошо отлаженные продукты. Именно поэтому, хотя вся система доступна в исходных кодах, добавлять патчи и новые возможности в ядро могут только разработчики, входящие в официальную группу поддержки проекта. Это отличает FreeBSD от всех остальных систем Open Source. Создатели нацеливают свой продукт на серверный рынок: во время установки у тебя будут спрошены не только сетевые параметры, но и то, какие сервисы тебе необходимы, и даже будет предложено организовать FTP-доступ сразу после инсталла. При первом запуске необходимо начать обустраивать защиту сервера. Система позволит провести кое-какие настройки и с помощью утилиты /stand/sysinstall. Но там представлен очень и очень скудный набор инструментов. Всю настройку ОС нужно проводить ручной правкой конфигов. И хотя разработчики постарались снабдить FreeBSD подробной документацией на английском языке, они не учли того, что для создания защищенного хоста необходимо затратить огромное количество времени на перелопачивание конфигурационных файлов. А если ты не профессионал, то и на чтение огромной кучи документации. Использование ее на сервере оправданно только в том случае, если твои знания именно этой системы тебе это позволяют. Стабильность хоста под FreeBSD будет определяться не безглючностью софта, а грамотностью админа. Практически все взломы этой ОС имели в своей основе не ошибки в демонах, а неправильное администрирование. Я бы не рекомендовал ставить Фряху админам средней руки – может не хватить времени на реализацию мечты о защищенном сервере. Злые негодники поломают систему, прежде чем админ успеет разобраться со всеми тонкостями настройки.


OpenBSD

http://www.openbsd.org

OpenBSD – общепризнанный лидер по безопасности. Текущая версия – 3.5. Установка этой системы протекает аналогично установке всех остальных BSD с тем лишь отличием, что все пронизано духом безопасности. После инсталла остается не так уж много: скачать и установить необходимые демоны. Просто в OpenBSD ставится только самое необходимое для запуска. Все дополнительные демоны и сервисы администратор добавляет и настраивает сам, и это, по-моему, лучший подход к безопасности. Кроме того, в основе OpenBSD лежат хорошо проверенные и отлаженные исходные коды, ежедневный аудит программного обеспечения приносит свои плоды: за несколько последних лет не было зарегистрировано ни одного взлома (в дефолтовой конфигурации – важное прим. ред.). Сущность аудита OpenBSD достаточно проста: существует небольшая группа высококвалифицированных IT-специалистов, которые постоянно анализируют исходные коды всей системы. И если учитывать, что они предлагают только базовую конфигурацию, то можно верить, что проверка будет проведена очень качественно. Предельно сильная внутренняя защита подкрепляется переработанным и усложненным комплексом Firewall. И дополняет общую картину укрепленности собственный сайт, на котором ежедневно выставляются все обновления для текущей версии системы. Неприхотливая к квалификации админа как IT-специалиста, OpenBSD завоевывает рынок за счет своей подготовленной грамотной настройки. Таким образом, лучшим секьюрным дистрибутивом линейки BSD является OpenBSD: для мастеров она покажет мощь и стабильность UNIX с возможностью гибкой настройки, а для новичков – защищенность и отказоустойчивость прямо из «коробки».


QNX

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).

Однако если отойти от классической модели безопасности UNIX в мандатные модели и требовать реализацию MAC, DTE, RBAC, то консервативная BSD здесь безропотно отдает инициативу Linux, в мире которого помимо тех же патчей (SeLinux, RSBAC) существуют целые проекты (Gentoo SeLinux), направленные на построение законченной системы, удовлетворяющей совершенно новому по качеству классу безопасности.

На текущий момент последняя версия QNX – 6.3.

http://www.freebsd.org/ru/index.html – русская версия официального сайта FreeBSD.

OpenBSD представляет собой минимально необходимые компоненты системы, но они предельно стабильны.

Главный плюс Mandrake – простота и доступность.

25 мая 2004 года стал доступен для скачивания десятый релиз Mandrake Linux.

Gentoo Linux взял все лучшее и от BSD – скрипты инициализации и систему портов, и от Linux – простоту и удобство.

Первым стабильным релизом FreeBSD пятой ветки станет FreeBSD 5.3. Дата выхода – 3 октября 2004 года.

Linux потенциально нарушает 283 патента. Линейка BSD пока гораздо спокойней.

Решающую роль в создании безопасного хоста всегда играют знания администратора, а не ОС, используемая на сервере.


    Ваша оценка произведения:

Популярные книги за неделю