- •Сборник методических указаний к лабораторным работам
- •Безопасность операционных систем
- •Содержание
- •Лабораторная работа № 1. Получение информации о конфигурации компьютера
- •1. Цели работы
- •2. Теоретические сведения
- •1. Реестр Windows
- •2. Использование функций Windows api
- •3. Использование wmi-интерфейса
- •7. Библиографический список
- •Лабораторная работа № 2. Командные интерпретаторы posix-совместимых операционных систем
- •1. Цели работы
- •2. Теоретические сведения
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 3. Работа с файлами и каталогами в ос Unix
- •1. Цель работы
- •2. Теоретические сведения
- •Ino_t d_ino; /* номер индексного дескриптора */
- •Int closedir (dir *dirptr); /* dirptr - дескриптор каталога */
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 4. Структура системы управления вводом-выводом в ос Unix
- •1. Цели работы
- •2. Теоретические сведения
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 5. Работа с процессами в ос Unix. Сигналы и каналы в Unix
- •1. Цель работы
- •2. Теоретические сведения
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 6. Базовые технологии безопасности операционных систем
- •1. Цель работы
- •2. Теоретические сведения
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 7. Парольная политика безопасности операционных систем
- •1. Цель работы
- •2. Теоретические сведения
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 8. Оценка защищенности nt-системы: безопасность файловой системы, права доступа, квоты, связи и их настройка
- •1. Цель работы
- •2. Теоретические сведения Особенности файловой системы ntfs
- •3. Контроль доступа к файлам и каталогам
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 9. Оценка защищенности nt-системы: защита реестра
- •1. Цель работы
- •2. Теоретические сведения
- •I. Организация реестра
- •II. Дублирование подразделов в разных ветвях
- •III. Файлы system.Dat и user.Dat
- •IV. Роль реестра при загрузке ос
- •V. Функции api для работы с реестром
- •VI. Основные вредительские действия, связанные с изменением реестра
- •VII. Проблемы защиты реестра Windows
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 10. Методы и средства несанкционированного доступа к ресурсам ос
- •1. Цель работы
- •2. Теоретические сведения
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 11. Оценка защищенности nt-системы: политика безопасности в области паролей и аудита
- •1. Цель работы
- •2. Теоретические сведения
- •I. Пароли
- •II. Получение хэшей паролей
- •III. Системный аудит
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 12. Администрирование ос Windows с помощью средства автоматизации Microsoft PowerShell
- •1. Цель работы
- •2. Теоретические сведения
- •Первый запуск
- •Справка
- •Практика
- •Установка уровня политики ExecutionPolicy
- •Редактирование скриптов
- •Создание запланированных заданий
- •7. Библиографический список
- •Лабораторная работа № 13. Windows PowerShell: управление компьютером
- •1. Цель работы
- •2. Теоретические сведения Управление сеансами пользователей
- •Управление питанием
- •Сбор информации о системе
- •Получение данных об установленных приложениях и заплатках
- •Установка по
- •Обновление по
- •Удаление по
- •Просмотр списка служб
- •Практика
- •Настройка сервисов
- •Создание локальных процессов
- •Создание удаленных процессов
- •Завершение неотвечающих процессов
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 14. Windows PowerShell: работа с файлами, папками и реестром
- •1. Цель работы
- •2. Теоретические сведения Работа с файлами и папками
- •Практика
- •Создание дополнительных дисков
- •Поиск в реестре
- •Примеры
- •Удаленный реестр
- •Правка реестра
- •7. Библиографический список
- •Лабораторная работа № 15. Windows PowerShell: работа с системными журналами
- •1. Цель работы
- •2. Теоретические сведения
- •Поиск событий
- •Просмотр событий на локальном компьютере
- •Просмотр событий на удаленном компьютере
- •Фильтрация событий
- •Получение данных из файла
- •Экспорт данных
- •Работа с удаленными компьютерами
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
5. Оформление отчета
Отчет должен содержать:
название и цель работы;
вариант задания;
краткие теоретические положения и алгоритм работы программы
результаты работы созданного программного обеспечения;
листинг программы, реализующей задание.
6 Контрольные вопросы
6.1. Каким образом может быть порожден новый процесс? Какова структура нового процесса?
6.2. Если процесс-предок открывает файл, а затем порождает процесс-потомок, а тот, в свою очередь, изменяет положение указателя чтения-записи файла, то изменится ли положение указателя чтения-записи файла процесса-отца?
6.3. Что произойдет, если процесс-потомок завершится раньше, чем процесс-предок осуществит системный вызов wait()?
6.4. Могут ли родственные процессы разделять общую память?
6.5. Каков алгоритм системного вызова fork()?
6.6. Какова структура таблиц открытых файлов, файлов и описателей файлов после создания процесса?
6.7. Каков алгоритм системного вызова exit()?
6.8. Каков алгоритм системного вызова wait()?
6.9. В чем разница между различными формами системных вызовов типа exec()?
6.10. Для чего используются сигналы в ОС UNIX?
6.11. Какие виды сигналов существуют в ОС UNIX?
6.12. Для чего используются каналы?
6.13. Какие требования предъявляются к процессам, чтобы они могли осуществлять обмен данными посредством каналов?
6.14. Каков максимальный размер программного канала и почему?
7. Библиографический список
1. Забродин Л.Д. UNIX. Введение в командный интерфейс. – М.: ДИАЛОГ-МИФИ, 1994. – 144 с.
2. Дансмур М., Дейвис Г. Операционная система UNIX и программирование на языке Си: Пер. с англ. – М.: Радио и связь, 1989. – 192 с.
3. Керниган Б.В., Пайк Р. UNIX – универсальная среда программирования: Пер. с англ. – М.: Финансы и статистика, 1992. – 304 с.
4. Робачевский А.М. Операционная система UNIX. – СПб.: BHV – Санкт-Петербург, 1997. – 528 с.
5. Т.Чан Системное программирование на C++ для UNIX. /Пер. с англ. -К.: Издательская группа BHV, 1997. - 592 с.
Лабораторная работа № 6. Базовые технологии безопасности операционных систем
1. Цель работы
Изучение принципов построения подсистем безопасности и защиты в операционных системах. Рассмотрение их составных частей и принципов взаимодействия. Изучение методов контроля целостности, идентификации и аутентификации на основе процедур хэширования. Изучение назначения и принципа работы электронной цифровой подписи (ЭЦП) и электронной сертификации.
2. Теоретические сведения
I. Хэш-функции
В различных программных и аппаратных продуктах, предназначенных для защиты информации, используются одинаковые подходы, приемы и технические решения называемые базовыми. В безопасности операционных систем базовыми технологиями безопасности являются аутентификация, авторизация, контроль целостности и шифрование данных. Аутентификация позволяет по вводимым имени пользователя и паролю идентифицировать легального пользователя системы. Авторизация устанавливает уровни доступа к различным ресурсам для каждого конкретного или некоторой группы пользователей системы. Контроль целостности данных обеспечивает обнаружение нелегального доступа к тем или иным ресурсам по дополнительной информации, которую трудно подделать. Шифрование гарантирует сохранение секретности данных даже в том случае, если злоумышленник получил к ним доступ.
Рис. 1. Контроль целостности через хэширование
Во многих базовых технологиях безопасности используется — шифрование с помощью односторонней функции (one-way function), называемой также хэш-функцией (hash function), или дайджест-функцией (digest function). Хэш-функция — это преобразование, получающее из данных произвольной длины некое значение (свертку) фиксированной длины. Простейшими примерами являются контрольные суммы (например, crc32).
Хэш-функция, примененная к шифруемым данным, дает в результате значение (дайджест), состоящее из фиксированного небольшого числа байт (рис. 1). Хэш передается вместе с исходным сообщением. Получатель сообщения, зная, какая односторонняя функция шифрования (ОФШ) была применена для получения хэша, заново вычисляет его, используя незашифрованную часть сообщения. Если значения полученного и вычисленного хэшей совпадают, то значит, содержимое сообщения не было подвергнуто никаким изменениям. Знание хэша не дает возможности восстановить исходное сообщение, но зато позволяет проверить целостность данных.
Существуют криптографические и программистские хэши. Криптографический хэш отличается от программистского следующими двумя свойствами: необратимостью и свободностью от коллизий.
Обозначим m — исходные данные, h(m) — хэш от них. Необратимость означает, что если известно число h0, то трудно подобрать m такое, что h(m)=h0. Свободность от коллизий означает, что трудно подобрать такие m1 и m2, что m1 != m2, но h(m1) = h(m2).
Криптографические хэш-функции разделяются на два класса:
хэш-функции без ключа (MDC (Modification (Manipulation) Detect Code) -коды),
хэш-функции c ключом (MАC (Message Authentication Code) - коды).
Хэш-функции без ключа разделяются на два подкласса:
слабые хэш-функции,
сильные хэш-функции.
Слабой хэш-функцией называется односторонняя функция H(x), удовлетворяющая следующим условиям:
аргумент х может быть строкой бит произвольной длины;
значение H(x) должно быть строкой бит фиксированной длины;
значение H(x) легко вычислить;
для любого фиксированного x вычислительно невозможно найти другой x' != x, такой что H(x')=H(x).
Пара x' != x, когда H(x')=H(x) называется коллизией хэш-функции.
Сильной хэш-функцией называется односторонняя функция H(x), удовлетворяющая условиям 1-3 для слабой хэш-функции и свойству 4':
4': вычислительно невозможно найти любую пару x' != x, такой что H(x')=H(x).
Поскольку из свойств 1-2 следует, что множество определения хэш-функции значительно шире множества значений, то коллизии должны существовать.
Свойство 4 требует, чтобы найти их для заданного значения х было практически невозможно. Требование 4' говорит о том, что у сильной хэш-функции вычислительно невозможно вообще найти какую-либо коллизию.
Для повышения стойкости дайджеста применяются секретные ключи. Хэш-функцией с ключом (MAC) называется функция H(k,x) удовлетворяющая следующим свойствам:
аргумент х функции H(k,x) может быть строкой бит произвольной длины;
значение H(k,x) должно быть строкой бит фиксированной длины;
при любых k и x легко вычислить H(k,x);
для любого х должно быть трудно вычислить H(k,x) не зная k;
должно быть трудно определить k даже при большом числе неизвестных пар {x, H(k,x)} при выбранном наборе х или вычислить по этой информации H(k,x') для x' != x.
В случае если для получения дайджеста использовалась односторонняя функция с параметром, который известен только отправителю и получателю, любая модификация исходного сообщения будет немедленно обнаружена (рис. 1, а).
Примером реализации такого алгоритма служит стандарт HMAC (hash message authentication codes). Он описан в RFC 2104. HMAC используется с любыми хэш функциями, такими как MD5, SHA-1 и т.д., совместно с секретным ключом. Длина подписи, вычисленной по этому алгоритму, определяется длиной дайджеста используемой хэш-функции.
Для реализации алгоритма необходима хэш-функция (H) и секретный ключ (K). В стандарте введены некоторые обозначения:
B – длина входного блока данных (В=64 для всех описанных выше хэш функций)
L – длина выходного блока хэш функции (L=16 для MD5 и L=20 для SHA-1)
Ключ K может быть любой длины меньшей, чем B. В противном случае, к нему следует применить хэш функцию и использовать получившуюся строку длиной L в качестве ключа.
Также определены две константы ipad и opad:
ipad = байт 0x36 повторяющийся В раз
opad = байт 0x5C повторяющийся В раз.
Для вычисления хэша HMAC над данными “text” производятся следующие действия:
H(K XOR opad, H(K XOR ipad, text)).
На рис. 1, б показан другой вариант использования односторонней функции шифрования для обеспечения целостности данных. В данном случае односторонняя функция не имеет параметра-ключа, но зато применяется не просто к сообщению, а к сообщению, дополненному секретным ключом. Получатель, извлекая исходное сообщение, также дополняет его тем же известным ему секретным ключом, после чего применяет к полученным данным одностороннюю функцию. Результат вычислений сравнивается с полученным по сети дайджестом. Помимо обеспечения целостности сообщений дайджест может быть использован в качестве электронной подписи для аутентификации передаваемого документа.
Стоит отметить, что применительно к безопасности операционных систем хэширование данных чаще применяется для контроля целостности или нелегального изменения файлов на различных носителях. В этом случае “сообщением” является сам файл, а дайджест сообщения сохраняется либо в отдельном фале, либо в отдельном архиве дайджестов, либо включая дайджест неотъемлемой частью файла.
Наиболее популярной в системах безопасности в настоящее время является серия хэш-функций MD2, MD4, MD5. Все они генерируют дайджесты фиксированной длины 16 байт. Адаптированным вариантом MD4 является американским стандарт SHA, длина дайджеста в котором составляет 20 байт. Компания IBM поддерживает односторонние функции MDC2 и MDC4, основанные на алгоритме шифрования DES.
II. Электронная цифровая подпись
Одним из применений односторонних функций шифрования является электронная цифровая подпись (ЭЦП), которая позволяет определить, были ли данные в пересылаемом сообщении, файле или каком-либо другом ресурсе случайно или преднамеренно изменены. Электронная цифровая подпись (ЭЦП) — это способ для автора документа убедить читателей в том, что автор — именно он.
Алгоритм работы ЭЦП можно представить следующим образом: вначале автор документа (файла и т.п.) должен сгенерировать пару ключей, один секретный, один открытый. Секретный ключ он оставляет при себе, открытый — передает всем потенциальным читателям (под роспись, или по другому доверенному каналу). Теперь при необходимости послать документ автор вычисляет некоторое число (ЭЦП), которое зависит от самого файла и от секретного ключа. Без знания секретного ключа это число подобрать крайне сложно. Получатель вычисляет другое число на основе полученного файла, полученной ЭЦП и открытого ключа. Если получилась 1 — значит, документ не был искажен, и автор соответствует предполагаемому. Если получился 0 — значит, это подделка.
Несложно понять, что эту систему правильнее было бы назвать "Электронная цифровая печать", так как подпись — это нечто индивидуальное, а печать (как и секретный ключ) можно украсть, со всеми вытекающими.
На практике процесс электронной подписи документа осуществляется следующим образом:
Создается цифровая подпись.
Вычисляется дайджест сообщения.
Дайджест сообщения зашифровывается с помощью закрытого ключа из пары "открытый/закрытый ключ", в результате чего получается цифровая подпись.
Производится верификация цифровой подписи.
Подпись расшифровывается с помощью открытого ключа из вышеупомянутой пары "открытый/закрытый ключ", в результате чего восстанавливается значение дайджеста сообщения.
Значение дайджеста сообщения сравнивается со значением дайджеста сообщения вычисленного из исходного сообщения.
Если оба значения дайджеста сообщения совпадают, то подпись подлинна. В противном случае или подпись, или сообщение были изменены.
Примером алгоритма цифровой подписи является DSA (Digital Signature Algorithm), разработанный Национальным институтом стандартов и технологий (NIST). Защищенность алгоритма DSA, как и алгоритма с открытым ключом Еl-Gamal, определяется сложностью вычисления дискретных логарифмов
Алгоритмы цифровой подписи получили широкое распространение не только в задачах проверки целостности данных, но и в области цифровой сертификации.
III. Цифровые сертификаты
Для защиты открытого ключа, т.е. для того, чтобы однозначно удостоверить его принадлежность, используются не просто открытые ключи, а их сертификаты, формируемые Центром Сертификации Ключей (Центром Распределения Ключей, Certificate Authority). В качестве центра сертификации выбирается организация, которой доверяют все участники обмена и которой они лично предъявляют свои открытые ключи. Центр формирует из собранных ключей сертификаты путем подписания их своей электронной подписью. После этого каждый участник получает сертификат (собственный открытый ключ, подписанный центром) и открытый ключ центра. При установлении связи корреспонденты обмениваются не просто открытыми ключами, а сертификатами, что дает возможность однозначно идентифицировать второго участника обмена путем проведения процедуры проверки электронной подписи центра под его сертификатом.
Чтобы получить сертификат полномочного органа сертификации, обычно нужно представить в него документы, подтверждающие личность заявителя (частного лица или организации). Технология сертификации помогает, например, предотвратить возможность ведения неправомочными лицами деловых операций в Web под видом компании Microsoft или банка Bank of America. Рис. 2 иллюстрирует процедуру получения сертификатов.
Рис. 2. Процедура получения сертификатов