- •Сборник методических указаний к лабораторным работам
- •Безопасность операционных систем
- •Содержание
- •Лабораторная работа № 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. Библиографический список
Установка уровня политики ExecutionPolicy
Данное действие можно смело назвать процедурой настройки powershell с целью изменения текущего уровня безопасности? который задается параметром «ExecutionPolicy», который можно изменить в реестре.
Он расположен по следующему пути:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell]
Однако, гораздо проще воспользоваться встроенной в powershell командой:
Get-ExecutionPolicy
Существует шесть уровней политики ExecutionPolicy:
Restricted
Это конфигурация PowerShell по умолчанию. Этот вариант означает, что никакие скрипты не могут быть запущены. Единственное, что можно делать в PowerShell при такой настройке — это выполнять одиночные команды.
AllSigned
Эта настройка позволяет выполнять скрипты. Скрипт должен быть подписан сертификатом от доверенного источника. Перед выполнением подписанного скрипта будет выводится предупреждение.
RemoteSigned
Эта настройка позволяет выполнять скрипты, но требует, чтобы все скрипты и файлы конфигурации, загруженные из Интернета, были подписаны сертификатом от доверенного источника. Скриптам, выполняющимся на локальном компьютере, подпись не требуется. Предупреждений перед запуском скриптов не выводится.
Unrestricted
Такая настройка используется чеще всего но она потенциально опасна и крайне не рекомендована. Такая настройка позволяет запускать неподписанные скрипты, включая загруженые из Интернета.
Bypass
Ничто не блокируется и никаких предупреждений не выводится.
Undefined
Удаляет присвоенную в настоящий момент политику.
В случае необходимости уровень разрешений запуска изменяется командой:
PS C:\temp> Set-ExecutionPolicy RemoteSigned
Execution Policy Change The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose you to the security risks described in the about_Execution_Policies help topic. Do you want to change the execution policy? [Y] Yes [N] No [S] Suspend [?] Help (default is «Y»): y
В зависимости от специфики выполняемых задач, в случаях, когда выполняются преимущественно сценарии собственного написания я бы рекомендовал использовать RemoteSigned. В случае когда выполняются сценарии, полученные из внешних источников стоит использовать AllSigned.
Подписывание скриптов
Для подписывания скрипта нам понадобится программа makecert.exe она входит в состав Microsoft .NET Framework SDK или Microsoft Windows Platform SDK.
Скачиваем пакет, устанавливаем.
Открываем командную строку (Win+r – cmd.exe) и вводим:
cd "C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin\"
Создаем нужные сертификаты.
makecert -n "CN=PowerShell Local Certificate Root" -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer -ss Root -sr localMachine
makecert -pe -n "CN=PowerShell User" -ss MY -a sha1 -eku 1.3.6.1.5.5.7.3.3 -iv root.pvk -ic root.cer
В результате должны получится два файла root.cer и root.pvk.
После этого проверим, удачно ли всё прошло.
PS C:> Get-ChildItem cert:\CurrentUser\My -codesign
Необходимые сертификаты созданы, остается подписать наш скрипт.
Для этого возьмём из справочного (get-help about_signing) руководства готовый пример кода.
## sign-file.ps1
## Sign a file
param([string] $file=$(throw "Please specify a filename."))
$cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
Set-AuthenticodeSignature $file $cert
В качестве переменной $file указываем имя нашего скрипта. Если при подписывании скрипта возвращается ошибка UnknownError то сохраните скрипт в кодировке UTF-8.
Результатом нашей работы получился файл следующего вида:
Write-Host «Hello!»
# SIG # Begin signature block
# MIIOPAYJKoZIhvcNAQcCoIIOLTCCDikCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUukjlMS+jNOxKqyd+oixh1rVp
…..
# Jj+zcmnLYpEMAPjaP8MFurZIgWroOUNFPKLQMKWHau1kmxPnKNrroAD/zG/0dIjg
# W04RHGBT3csXoEcwCA6oOSmyptp6rLtRn9AjR9epWj4SGgBrdiGZIp2vWZkOzGGa
# SIG # End signature block
Попробуем его запустить…
Нас спросят о том, что нужно ли этому издателю доверять. Да!
PS C:\TEMP\> .\1.ps1
Do you want to run software from this untrusted publisher?
The file C:\TEMP\1.ps1 is published by CN=PowerShell User. This publisher is not
trusted on your system. Only run scripts from trusted publishers.
[V] Never run [D] Do not run [R] Run once [A] Always run [?] Help
(default is "D"):A
Hello!
В дальнейшем мы можем запускать скрипты, подписанные созданным издателем. Однако, если мы выложим свой подписанный файл в открытый доступ или отправим его товарищам, то при включённой политике AllSigned он получит такое предупреждение:
PS C:\TEMP\> .\1.ps1
The file C:\TEMP\> .\1.ps1 cannot be loaded. The signature of the certificate can not be verified.
Так как для удаленного хоста он подписан неизвестно кем и доверия к нему нет никакого. Поэтому коллегам придется его посмотреть и при необходимости подписать самим.
В случае если в вашей организации уже есть развернутый доменный Центр Сертификации то ваша задача значительно облегчается до следующих пунктов:
Получаем доменный сертификат для подписывания (Code Sign)
Выполняем следующий скрипт:
$cert = @(dir cert:\CurrentUser\My -codesigning)[0]
Set-AuthenticodeSignature $file $cert
Где $file – путь к скрипту и $cert – объект сертификата.