РАСЧЕТНО-ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовому проекту на тему:
Security-Enhanced Linux — линукс с улучшенной безопасностью
Содержание
Введение
1. Постановка задачи.
2. Конструкторская часть
2.1. Обзор SELinux.
2.1.1. Введениев SELinux.
2.1.2. Используемая терминология.
2.1.3. Виды политик.
2.1.4. Задачи целевых политик.
2.1.5. Компилирование и загрузка целевой политики.
2.1.6. Редактирование целевой политики.
2.1.7. Написание новой политики для демона.
2.2. Процессы в системе UNIX.
2.2.1. Понятие и структура процесса.
2.2.3. Создание новых процессов.
2.2.3. Выполнение процесса.
2.2.4. Демоны.
3. Технологическая часть.
3.1. Выбор дистрибутива.
3.2. Создание демона.
3.3. Политика для созданного демона.
3.4. Демонстрация работы демона.
Заключение.
Список литературы.
Приложение 1.
Приложение 2.
Приложение 3.
Введение
Мир операционных систем предоставляет пользователям достаточно большое их количество. ОС выступает в качестве программы, которая управляет ресурсами вычислительной системы и процессами, использующих эти ресурсы при вычислениях.
Условно ОС можно разделить на серверные и пользовательские, обслуживаемые и нет, встраиваемые (Embedded) и загружаемые, ОС реально времени с гарантированным временем отклика на события и нет. Также раздел можно провести по платформе, для которой предназначена ОС, по назначению, по занимаемому объему и т.д.
Приведем список наиболее часто используемых ОС:
DOS (MS-DOS, DR-DOS и их клоны);
OS/2;
Windows 3.1x;
Windows 9x;
Windows NT (Windows 2000, Windows XP, Windows 2003 Server);
Embedded Windows;
Windows CE;
Mac OS;
MacOSX;
Семейство UNIX;
FreeBSD, OpenBSD, NetBSD;
Linux;
Embedded Linux;
BeOS;
QNX;
PalmOS;
Symbain;
Данная работа посвящена ОС Linux. Это POSIX-совместимая (благодаря этому стандарту любое приложение можно перенести из одного представителя семейства UNIX в другой) UNIX-подобная система. На сегодняшний день это самая распространенная бесплатная ОС с открытым исходным кодом. При ее разработке из мира семейства UNIXстарались взять все лучшее. Благодаря участию десятков тысяч разработчиков программного обеспечения и координации их действий через Интернет Linux и ПО для нее развивается очень динамично, ошибки и различные проблемы в ПО, как правило, исправляются в считанные часы после их обнаружения. Все, что справедливо для семейства UNIX, справедливо и для Linux. Широчайшая поддержка аппаратных платформ, малая требовательность к аппаратным ресурсам, масштабируемость, поддержка мультипроцессорных систем, кластеризация, поддержка распределенных вычислений, десятки графических оболочек – и это далеко не все. И при всей мощи это достаточно дружественная ОС, способная работать как на мощнейшем сервере, так и на домашнем ПК.
Поскольку в данной работе нас интересует Linux, а ОС Windows 9x или WindowsNT/2000/XP установлены приблизительно на 90% PC-совместимых персональных компьютеров, то все сравнения в дальнейшем будем производить относительно этих трех ОС.
В идеале ОС должна удовлетворять, по меньшей мере, семи достаточно противоречивым требованиям:
Быть легкой в освоении и дружественной к пользователю (UserFriendly).
Быть мощной и универсальной (способной работать на любом оборудовании).
В ней все должно настраиваться и довольно просто.
Она должна быть очень надежна (в идеале – сверхнадежна).
Занимать как можно меньше места.
Разработчики моментально должны реагировать на проблемы, обнаруженные в процессе эксплуатации.
Под нее должен быть широкий выбор ПО.
Теперь оценим ОС на соответствие вышеперечисленным требованиям:
Windows 3.1x – удовлетворяет п.1 с оговорками, частично п.3 и п.5, удовлетворяет п.7.
Windows 9x – удовлетворяет п.1, частично п.3, безусловно удовлетворяет п.7;
WindowsNT – удовлетворяет п.1, п.2 (с учетом одноплатформенности и непомерных требований к аппаратному обеспечению), п.3 и п.4 с оговорками, безусловно удовлетворяет п.7;
Linux – безусловно удовлетворяет всем пунктам, особенно п.2, п.3, п.6 и п.7;
Linux по всем параметрам на порядок превосходит Windows. Единственное, в чем Windows пока впереди – это в количестве и разнообразии прикладного ПО. Надо, признать, что чаще всего все же с Linux и UNIX-подобными системами работают либо администраторы сетей, либо программисты.
Факт остается фактом: системное администрирование и программирование – сложная задача. UNIX-системы исключительно мощны, а подобное достоинство всегда сопровождается повышением степени сложности.
Разработчики ОС Linux не придавали особого внимания вопросам защиты, и по этой причине ни одну из UNIX-систем нельзя сделать по-настоящему безопасной. На протяжении всей истории UNIX-систем их регулярно взламывают, портят, увечат, а также незаконно присваивают и модифицируют данные. С появлением сети Интернет начался новый этап «холодной войны».
Кое-что для повышения надежности UNIX-системы, разумеется сделать можно. Но полная нирвана безопасности все же недостижима, ибо в модели UNIX есть несколько фундаментальных изъянов, которые невозможно устранить.
ОС UNIX ориентирована прежде всего на удобство в применении, что отнюдь не предполагает естественность и простоту ее защиты. Эту систему разрабатывали исследователи для исследователей, и концепции UNIX заключаются в обеспечении удобного манипулирования данными в сетевой многопользовательской среде.
Стратегия защиты в UNIX, по сути, предполагает всего два статуса пользователя: пользователь, не обладающий привилегиями, и суперпользователь. Такая возможность UNIX, как выполнение программ с установленным битом смены идентификатора пользователя, обеспечивает привилегированный доступ ко все вычислительным ресурсам системы. При этом из-за незначительных огрехов в защите может быть поставлено под угрозу нормальное функционирование системы как таковой.
Большинство административных функций реализовано вне ядра, поэтому к ним можно без особого труда получить доступ с целью просмотра и внесения изменений. Это открывает широкое поле деятельности для хакеров.
В системе защиты UNIX существует множество всем известных изъянов, которые никогда не будут устранены, и просчетов, которые одни производители устранили, а другие – нет. Помимо этого, многие организации на одну - две версии программного обеспечения отстают: либо по причине сложности локализации, либо потому, что они не заключили с поставщиком договор о сопровождении системы. Если производитель заткнул маленькую дырочку в системе защиты, это не означает, что окно для взлома исчезнет на следующий же день.
Раньше считалось, что по мере выявления и устранения брешей безопасность операционной системы UNIX будет непрерывно повышаться. Суровая реальность оказалась иной. Сложность системного программного обеспечения стремительно растет, хакерская деятельность все больше приобретает черты организованной преступности, компьютеры оказываются все более тесно связанными посредством сети Internet. Война переходит в новые измерения, и, похоже, победителей не будет.
Существует формулу:
Чем безопаснее системы, тем труднее в ней работать пользователям.
Linux традиционно считается хорошо продуманной с точки зрения безопасности операционной системой, и попытки поставить под сомнение этот тезис обычно вызывает недоумение. Однако, следует помнить, что Linux унаследовала систему безопасности Unix, реализованную еще в 70-х годах и не во всем соответствующую требованиям сегодняшнего дня.
Чтобы сделать систему безопаснее специалисты выявили ряд аспектов, которые нужно учитывать при настройки и администрировании ОС Linux. Взглянем на основные источники неприятностей:
Человеческий фактор. Пользователи (и администраторы) системы являются ее слабейшим звеном.
Ошибки в программах. За много лет в ПО UNIX было выявлено несметное число ошибок, связанных с безопасностью. Используя незаметные программистские прочеты или архитектурные зависимости, хакерам удавалось манипулировать системой по своему усмотрению.
Открытые двери. Многие компоненты программного обеспечения можно сконфигурировать в режиме полной или не очень полной безопасности. К сожалению, по умолчанию чаще всего принимается второй вариант.
Проще всего устранить проблемы последней категории, хотя их может быть очень много и не всегда очевидно, что именно следует проверять.
В данной работе рассматривается одно из возможных решений проблемы безопасности Linux. Остановимся на использовании SELinux - набора технологий расширения системы безопасности Linux.
В данной работе будет продемонстрировано, как с помощью технологии SELinux поставить ограничения для демона, запущенного суперпользователем.
2.1 Обзор SELinux
2.1.1 Введение в SELinux
SELinux (Security-EnhancedLinux) - набор технологий расширения системы безопасности Linux. Сегодня основу набора составляют три технологии: мандатный контроль доступа, ролевой доступ RBAC и система типов (доменов). SELinux включает модули ядра, разделяемые библиотеки для создания приложений, использующих особенности SELinux, утилиты и другие файлы. SELinux можно установить с любым дистрибутивом Linux, начиная с ядра версии 2.2.x.
Архитектурно SELinux подчиняется трем принципам, способствующим максимально безболезненной интеграции SELinux в Linux-системы:
параллельное сосуществование с классической системой безопасности Linux;
независимость от классической системы безопасности Linux;
приоритет запретов классической системы безопасности Linux над SELinux (то, что запрещено классической системой безопасности, не может быть разрешено SELinux).
SELinux зародился в недрах Агентства национальной безопасности США (непосредственно разработкой занимались компании Network Associates и MITRE) и был выпущен в виде общедоступного открытого программного продукта в декабре 2000 года. Для систем с ядрами 2.2 и 2.4 он выпускался в виде заплаты, а с введением модуля Linux Security Module (LSM) в ядре 2.4 была выпущена версия SELinux для LSM. В ядре 2.6 он также поддерживается посредством LSM. Кроме того, многие элементы SELinux были включены в само ядро. Однако, если операционная система использует ядро 2.6, это еще не означает, что там обязательно есть SELinux или что эту систему легко активировать. Это означает только, что установить SELinux будет проще.