МУ_ЛР_БОС. А. С. Новиковым и обсуждены на заседании кафедры
Скачать 1.1 Mb.
|
5. Оформление отчета Отчет должен содержать: название и цель работы; вариант задания; алгоритм функционирования разработанного ПО; результаты работы созданного программного обеспечения; листинг программы, реализующей задание. 6 Контрольные вопросы 6.1. Каковы особенности хранения паролей в ОС семейства NT? 6.2. Какими способами можно получить доступ к хэшам паролей? 6.3. Назовите основные проблемы обеспечения безопасности при использовании в локальной сети ОС Windows 3.11/9x наряду с NT. 6.4. Назовите причину, по которой необходимо запретить запуск хранителя экрана при бездействии системы? 6.5. Для чего используется аудитирование объектов Windows и где хранится эта информация? 6.6. Что такое привилегии и для чего они используются? 7. Библиографический список 1. Олифер В.Г. Сетевые операционные системы: Учеб. пособие для вузов / В.Г. Олифер, Н.А. Олифер .— М.: Питер, 2003. — 544с. 2. Таненбаум Э. Современные операционные системы / Э. Таненбаум.— 2-е изд. — М.: Питер, 2006 .— 1038с. 3. Монадьеми П. Защита от хакеров в Windows XP/ П. Монадьеми, Б. Мюллер; пер. с нем. под ред. С.Н. Банникова.— М.: БИНОМ, 2005 .— 320с. 4. Немет Э. UNIX: Руководство системного администратора/ Э. Немет, Г. Снайдер, С. Сибасс, Т.Р. Хейн. 3-е изд. — М.: Питер, 2003 .— 925с. Лабораторная работа № 12. |
Клавиша | Действие |
(Alt)+(F7) | Удаляет историю команд |
(PgUp), (PgDn) | Показать первые (PgUp) или последней (PgDn) команду, которую выиспользовали в текущей сессии |
(Enter) | Выполнить введенную команду |
(End) | Перемещение курсора к редактированию конце командной строки |
(Del) | Удаляет символ справа от курсора |
(Esc) | Удаляет текущую строку целиком |
(F2) | Перемещение в текущей командной строки для следующего символа, соответствующих указанным символам |
(F4) | Удаляет все символы справа от курсора до указанного знака |
(F7) | Отображение последних введенных команд в диалоговом окне |
(F8) | Отображение команд из истории команд, начиная с символа, который вы уже вступили в командной строке |
(F9) | Открывает диалоговое окно, в котором вы можете ввести номер команду изистории команд вернуть команду. (F7) отображает числа команд в истории команд |
(Left arrow),(Right arrow) | Перемещение на один символ влево или вправо соответственно |
(Arrow up),(Arrow down), (F5),(F8) | Повторяет последние введенные команды |
(Home) | Перемещение курсора в начало строки |
(Backspace) | Удаляет символ слева от курсора |
(Ctrl)+(C) | Прерывание выполнения команды |
(Ctrl)+(End) | Удаляет все символы от текущей позиции в конец командной строки |
(Ctrl)+(Arrow left),(Ctrl)+(Arrow right) | Перемещение курсора на одно слово влево или вправо соответственно |
(Ctrl)+(Home) | Удаляет все символы текущей позиции до начала командной строки |
(Tab) | По возможности завершает текущую запись |
Начинать изучение powershell стоит с запроса списка доступных команд.
Get-Command(Enter)
Стоит сказать что powershell представляет команды как комбинации «глагол-существительное». Объясняется это тем что что специалисты Microsoft хотели использовать единообразную схему именования. Глагол указывает на действие, которое предстоит совершить, а существительное — на тип объекта, на который будет направлено действие.
Для запроса списка команд по маске можно воспользоваться звездочкой «*«.
Get-Command Out*
Get-Command Add*
Get-Command Get*
Powershell широко использует Alias-ы, т.е. псевдонимы являющиеся ссылками на команды. Их можно (и в ряде случаев это удобно) использовать для сокращения ввода.
Например, команды dir в powershell нет, она является алиасом. Это видно при вводе команды:
$alias:Dir(Enter)
Get-ChildItem
Для получения списка всех доступных алиасов введите:
Get-Command -CommandType alias
Справка
После того как мы разобрались с методом поиска команд следует посмотреть каким образом по ним можно получить справку.
Получить справку по определенной команде можно введя команду:
Get-Help command_name
(Enter)
Можно воспользоваться звездочкой «*» и получить список команд с описание того что они выполняют.
Get-Help Get-*
Или запросить только список командлетов по маске *help*
Get-Command *help* -CommandType cmdlet
Так же в комплект поставки powershell входит подборка справочных файлов, содержащих обзоры различных концепций. Каждый файл концепции начинается с символов «about_» и заканчивается именем раздела. Для просмотра алфавитного списка разделов about запустите команду.
Get-Help about*
Чтобы просмотреть информацию по конкретной теме, необходимо просто включить в значение параметра полное имя темы. К примеру, для считывания файла об управлении потоками данных необходимо выполнить команду
Get-Help about_flow_control
Во встроенной системе помощи приведено очень много примеров того как можно использовать те или иные команды. Например приведенные ниже команды позволяют:
Получить справку по запрашиваемой функции или командлету с примерами его использования (я предпочитаю этот вариант).
Get-Help Get-Process –Examples
Запрашиваем полную справку по команде (если вариант -Examples не помог то читаю этот).
Get-Help Get-Process -Full
Выводим описание команды и примеры использования.
Get-Help Get-Process -Detailed
При обилии выводимой на экран информации следует предпринять что то для просмотра полученного. Могу предложить два способа:
Первый будет выводить на экран информацию по мере необходимости.
Get-Help Dir -full | more
Второй выведет все в файл и вы сможете прочитать результат позже.
Get-Help Dir -full > dir-help.txt
notepad dir-help.txt
Создание простого скрипта для PowerShell
Скрипт на powershell является обычным текстовым файлом с расширением «.ps1» поэтому правой кнопкой мыши нажимаем «Создать» – «Текстовый документ», вводим имя файла, присваиваем ему расширение PS1, нажимаем Enter.
Примечание: По умолчанию, из соображений безопасности, при двойном клике он не запускается а открывается в текстовом редакторе. Проверьте снята ли у вас галка «Скрывать расширения у зарегистрированных файлов».
Если указанная выше опция не установлена то создание скриптов доступно прямо из окна проводника (вы можете менять расширение на нужное).
Если указанная опция включена то вам придется менять расширение файла любым доступным методом, например из командной строки или из файлового менеджера.
Практика
Создайте в папке C:\TEMP скрипт 1.ps1 со следующим содержимым
Write-Host"Hello!"
Запустите powershell (Win+R, вводим powershell.exe и нажимаем enter), перейдите с папку командой cd C:\TEMP и попробуйте запустить скрипт командой .\1.ps1
В результате powershell ответит ошибкой.
PS C:\temp> .\1.ps1 File C:\temp\1.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see «get-help about_signing» for more details. At line:1 char:8 + .\1.ps1 <<<< + CategoryInfo : NotSpecified: (:) [], PSSecurityException + FullyQualifiedErrorId : RuntimeException
Подобное поведение связано с тем что в настройках по умолчанию, считается что только команды могут выполняться интерактивно, а выполнение скриптов запрещено.
Естественно, в случае необходимости уровень выполнения политики (по умолчанию установлен Restricted) можно изменить.
Установка уровня политики 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 – объект сертификата.
Редактирование скриптов
Для Windows 7 и Windows Server 2008 R2 есть встроенный инструмент под названием Интегрированная Среда Сценариев Windows PowerShell (ISE), которую можно назвать официальным GUI для написания скриптов на powershell. Функционал ISE весьма широк - цветовая разметка синтаксиса, заполнение вкладок, визуальная отладка, совместимость с Юникодом и хорошая контекстная справка.
Установка ISE требует инсталляции .Net 3.5 Service Pack 1 о чем вам сообщают при выборе компонентов.
Для серверной системы проблем с редактированием скриптов так же нет, только требуется доустановить нужный компонент.
Для запуска Windows PowerShell ISE традиционным способом необходимо выбрать «Start»->»Accessories»->»Windows PowerShell», и нажать Windows PowerShell ISE. Я предпочитаю более простой метод – в командной строке набираем powershell_ise.exe и все.
Для Windows XP powershell_ise вызывается несколько иначе – «Start» -> «Programs» – > «Accessories»->»Windows PowerShell», и нажать Windows PowerShell ISE.
Если рассматривать сторонние редакторы я могу смело рекомендовать вам PowerGUI от Quest Software.
Создание запланированных заданий
Большинство скриптов используются для автоматизации задач администратора и естественно запускать их руками неправильно…
Поэтому необходимо такие задания запланировать. Для этого необходимо соответствующим образом настроить запуск вашего скрипта.
Приведу пример для Windows Server 2003:
Cоздаем новую задачу, условно назовем ее «Example Task».
Выбираем исполняемый файл: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Задаем имя и интервал повторения.
Задаем учетную запись, от имени которой будет выполняться задача.
Ставим галочку «Оpen advanced properties…» и нажимаем Finish.
В поле «Run» дописываем параметры запуска: -noprofile -command C:\Scripts\TestScript.ps1
Естественно есть и второй вариант, его можно использовать но в ряде случаев это нежелательно из соображений безопасности, например содержимое такого файла можно подменить для того что бы выполнить нужные действия контексте другого пользователя.
Создаем cmd-файл для запуска PS-скрипта:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noprofile -command C:\Scripts\TestScript.ps1
Задаем имя и интервал повторения.
Задаем учетную запись, от имени которой будет выполняться задача.
3. Оборудование
Персональный компьютер с установленной операционной системой MSWindows 2000 SP4, XPSP2, Vista или 7.
4. Задание на работу
1. Установить на компьютер средство автоматизированного администрирования Windows PowerShell.
2. Познакомиться с интерфейсом и основными возможностями Windows PowerShell.
3. Познакомиться со справочной системой Windows PowerShell.
4. Создать простой скрипт, подписать его и запустить на выполнение.
5. Оформление отчета
Отчет должен содержать:
название и цель работы;
краткие теоретические сведения о лабораторной работе;
описание последовательности действий, совершенных в ходе выполнения лабораторной работы;
скриншоты, иллюстрирующие проделанную работу.
6 Контрольные вопросы
6.1. Что такое Windows PowerShell? Для решения каких задач он предназначен?
6.2. Привидите последовательность действий для установки и настройки Windows PowerShell.
6.3. Каким образом производится работа со справочной подсистемой Windows PowerShell? Приведите примеры.
6.4. Как создаются скрипты в Windows PowerShell? Какие возможности по автоматизации они предоставляют?
6.5. Для чего нужно подписывать скрипты в Windows PowerShell? Как выполняется процедура подписывания скриптов?
6.6. Каким образом производится автоматизация запуска скриптов Windows PowerShell на исполнение?
6.7. Какие существуют уровни политики безопасности ExecutionPolicy?.
7. Библиографический список
1. Олифер В.Г. Сетевые операционные системы: Учеб. пособие для вузов / В.Г. Олифер, Н.А. Олифер .— М.: Питер, 2003. — 544с.
2. Таненбаум Э. Современные операционные системы / Э. Таненбаум.— 2-е изд. — М.: Питер, 2006 .— 1038с.
3. Монадьеми П. Защита от хакеров в Windows XP/ П. Монадьеми, Б. Мюллер; пер. с нем. под ред. С.Н. Банникова.— М.: БИНОМ, 2005 .— 320с.
4. Немет Э. UNIX: Руководство системного администратора/ Э. Немет, Г. Снайдер, С. Сибасс, Т.Р. Хейн. 3-е изд. — М.: Питер, 2003 .— 925с.