Главная страница
Навигация по странице:

  • 7. Библиографический список

  • 2. Теоретические сведения

  • Windows 7

  • Windows Management Framework

  • Метод №1 Нажимаем «Start» – «All Programs» – «Accessories» – «Windows PowerShell».Метод №2 Жмем Win+R

  • Клавиша Действие

  • Создание простого скрипта для

  • C:\TEMP

  • Bypass Ничто не блокируется и никаких предупреждений не выводится.Undefined

  • RemoteSigned.

  • Windows PowerShell ISE

  • C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

  • -noprofile -command C:\Scripts\TestScript.ps1

  • МУ_ЛР_БОС. А. С. Новиковым и обсуждены на заседании кафедры


    Скачать 1.1 Mb.
    НазваниеА. С. Новиковым и обсуждены на заседании кафедры
    Дата15.03.2022
    Размер1.1 Mb.
    Формат файлаdoc
    Имя файлаМУ_ЛР_БОС.doc
    ТипЛабораторная работа
    #396953
    страница14 из 17
    1   ...   9   10   11   12   13   14   15   16   17


    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.
    Администрирование ОС Windows с помощью средства автоматизации Microsoft PowerShell



    1. Цель работы

    Познакомиться с расширяемым средством автоматизации процесса администрирования ОС Windows от Microsoft – PowerShell. Получить практические навыки работы с PowerShell и создания командных скриптов.
    2. Теоретические сведения

    Среда Windows PowerShell это ориентированная на задачи оболочка командной строки и язык сценариев разработанный для системного администрирования.

    Примечание: Все что написано ниже по умолчанию относится к Powershell 2.0 (хотя в природе еще встречается Powershell 1.0) и Windows 7 и полностью применимо к Windows Server 2008 R2.

    Установка Powershell

    Первым делом нужно загрузить PowerShell, если быть точнее, то установить среду управления Windows Management Framework. Для «старых» систем, таких как Windows XP, Windows Server 2003, Windows Vista и Windows Server 2008, пакет установки можно взять по ссылке.

    Для Windows 7 и Windows Server 2008 R2 ничего устанавливать не требуется, так как Powershell и WinRM является неотемлемым компонентом системы.

    Загрузить и установить среду Windows Management Framework можно при условии, что компьютер работает под управлением одной из следующих операционных систем:

    • Windows Vista с пакетом обновления 1 (SP1) или 2 (SP2);

    • Windows Server 2008 с пакетом обновления 1 (SP1) или 2 (SP2);

    • Windows Server 2003 с пакетом обновления 2 (SP2);

    • Windows XP с пакетом обновления 3 (SP3).

    Первый запуск




    Несмотря на внешнее сходство с традиционным cmd.exe, PowerShell является превосходной средой для выполнения сценариев предназначенных для автоматизации различных задач, будь то копирование файлов или создание объектов в Active Directory.

    Метод №1

    Нажимаем «Start» – «All Programs» – «Accessories» – «Windows PowerShell».

    Метод №2

    Жмем Win+R, вводим powershell и нажимаем Enter. Открывается черное окошко с приглашением.

    Не обращайте внимания на то что в заголовке окна указано WindowsPowerShell\v1.0\ это осталось в наследство от первой версии…

    Теперь можно попробовать силы. Для начала введем какую нибудь ерунду, пусть это будет команда с ошибкой «diT», консоль ответит ошибкой которая подсвечена красным цветом

    The term ‘diT’ is not recognized as the name of a cmdlet, function, script file,

    or operable program. Check the spelling of the name, or if a path was included,

    verify that the path is correct and try again.

    At line:1 char:4

    + dit <<<<

    + CategoryInfo : ObjectNotFound: (dit:String) [], CommandNotFound

    Exception

    + FullyQualifiedErrorId : CommandNotFoundException

    Теперь несколько слов относительно командной консоли.

    Строка в powershell вычисляемая. Для теста введите 2+100*12 и нажмите Enter. Или введите.

    (12+5) * 3 / 4.5 (Enter)

    Так же powershell понимает единицы измерения. Например:

    10GB / 4600MB (Enter)

    2,22608695652174

    или

    4.8Gb(Enter)

    5153960755,2

    Кроме этого в командной строке можно даже считать «столбиком»

    2 + (Enter)

    >> 6 - (Enter)

    >> 1 (Enter)

    >> (Enter)

    7

    В powershell поддерживаются все методы редактирования унаследованные от командной строки Windows. Так же как и в традиционной командной строке тут есть история выполнения команд:

    • Клавиши F5(команда назад) и клавиша F8(команда вперед) аналогичны стрелкам вверх и вниз.

    • Введите символ «d» и нажмите F8, powershell подставит ранее введенную вами команду «dir».

    • Клавиша F7 выдаст список введенных команд.

    • Очистить историю можно нажав Alt+F7

    Присутствует так же автоматическое дополнение по нажатию клавиши Tab.

    cd c:\t(Tab)

    В этом примере powershell вам дополнит имя папки до C:\TEMP.

    Get-Pr(Tab)

    Дополнит до команды get-Process.

    Общий список доступных клавиш и сочетаний в PowerShell.

    Клавиша

    Действие

    (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с.

    1   ...   9   10   11   12   13   14   15   16   17


    написать администратору сайта