Андрей Попов - Windows Script Host для Windows 2000/XP
** SIG ** V9HjQ00ggKeDDtsSC+twoz7TMWqLsvEgHz7ARzL9V6lQ
** SIG ** juR0pw/g4E4cfiBQ7fvtnLh+s9o=
</signature>
</job>В
Проверка цифровой подписи сценария
Применяя соответствующие политики безопасности, можно установить режим, при котором все запускаемые сценарии автоматически будут проверяться на предмет корректности их цифровой подписи (процесс настройки подобных политик безопасности описан ниже).
Кроме этого, можно самостоятельно из сценария WSH проверить достоверность цифровой подписи, которой снабжен тот или иной файл, и выяснить, входит ли сертификат создателя подписи в число сертификатов, к которым установлено доверие. Для такой проверки служит метод VerifyFile объекта Scripting.Signer. Данный метод имеет два параметра (File и ShowUI), первый из которых задает имя проверяемого файла, а второй является логическим флагом, позволяющим выводить или не выводить на экран диалоговое окно с информацией о состоянии сертификата, при помощи которого была создана цифровая подпись для этого файла. Если цифровая подпись проверяемого сценария является корректной, содержимое файла после создания подписи не изменялось, а к сертификату создателя сценария установлено доверие, то метод VerifyFile возвращает значение true, в противном случае — false.
В качестве примера в листинге 4.11 приведен сценарий Check.js, который проверяет цифровую подпись файла Signed.js.
Листинг 4.11. Проверка подлинности цифровой подписи сценария/*******************************************************************/
/* РРјСЏ: Check.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В */
/* Язык: JScript                                                  */
/* Описание: Проверка цифровой подписи файла Signed.js            */
/*******************************************************************/
var Signer, File, ShowUI, FileOK; //Объявляем переменные
//Создаем объект Scripting.Signer
Signer = WScript.CreateObject("Scripting.Signer");
File = "Signed.js";В //РРјСЏ проверяемого файла
ShowUI = false;
//Проверяем подпись в файле
FileOK = Signer.VerifyFile(File, ShowUI);
if (FileOK) WScript.Echo("Сценарий "+File+" является надежным.");
else WScript.Echo("Сценарий "+File+" НЕ является надежным.");
/************* Конец *********************************************/
Политики безопасности для сценариев WSH
Процесс организации политики безопасности для сценариев WSH заключается в задании тех или иных ограничений на запуск и выполнение этих сценариев. При этом могут применяться два подхода.
Первый подход может использоваться в операционной системе Windows любой версии, начиная с Windows 95. Смысл здесь состоит в применении специальных параметров системного реестра, которые позволяют:
□ запретить выполнение на компьютере сценариев, запускаемых локально или с другой машины;
□ задать режим работы WSH, при котором перед запуском всех сценариев проверяется их цифровая подпись и в соответствии с этим принимается решение о возможности выполнения этих сценариев;
□ вести в журнале событий аудит успехов и отказов для сценариев WSH.
Второй подход может использоваться только в Windows ХР. Здесь для сценариев WSH, как и для всех других исполняемых программ, может применяться специальная политика ограниченного использования программ (SRP, Software Restriction Policies), с помощью которой можно, например, запретить запуск сценария, имеющего определенное имя или цифровую подпись.
Параметры реестра, влияющие на политику безопасности для WSH
Режим выполнения сценариев WSH зависит от нескольких параметров системного реестра, которые могут быть записаны в двух разделах:
HKLMSoftwareMicrosoftWindows Script HostSettingsВ (Рђ)
или
HKCUSoftwareMicrosoftWindows Script HostSettingsВ (Р‘)
В разделе (А) хранятся установки WSH для всех пользователей, запускающих сценарии на данной машине, а в разделе (Б) — для текущего пользователя, зарегистрированного в системе. При этом строковый параметр IgnoreUserSettings из раздела (А) определяет, откуда именно будут браться параметры: если IgnoreUserSettings равен 0 или вообще не задан, то на политику безопасности для сценариев WSH будут влиять параметры из раздела (А). Если же IgnoreUserSettings равен 1, то параметры берутся из раздела (Б).
Параметры реестра, определяющие политику безопасности при использовании сценариев WSH, описаны в табл. 4.2.
Таблица 4.2. Параметры реестра для WSH
Параметр Тип Описание Enabled Строковый (REG_SZ) Если значение равно 0, то выполнение любых сценариев WSH запрещено. Если значение равно 1, то на машине могут выполняться локальные сценарии WSH. Значением по умолчанию является 1 Remote Строковый (REG_SZ) Если значение равно 0, то выполнение удаленных сценариев WSH запрещено. Если значение равно 1, то на машине могут выполняться удаленные (т. е. запускаемые с других компьютеров) сценарии WSH. Значением по умолчанию является 0 TrustPolicy Целый (REG_DWORD) Если значение равно 0, то все сценарии запускаются без проверки их цифровой подписи. Если значение равно 1, то перед запуском неподписанных сценариев или сценариев с подписью, которой соответствует цифровой сертификат, не входящий в число доверяемых, будет выводиться диалоговое окно с предупреждением о возможной опасности такого сценария (при этом есть возможность отказаться от выполнения сценария). Если значение равно 2, то будут запускаться только сценарии, которые подписаны цифровой подписью, и к сертификату, с помощью которого создана эта подпись, установлено доверие. Значением по умолчанию является 0 UseWINSAFER Строковый (REG_SZ) В операционных системах Windows 9х/МЕ/ NT/2000 этот параметр не используется. В Windows ХРпараметр определяет, следует ли к сценариям WSH применять политики ограниченного использования программ (SRP). Если значение равно 0, то к сценариям WSH политики ограниченного использования программ не применяются, а режим выполнения сценариев определяется параметром TrustPolicy. Если значение равно 1, то режим выполнения сценариев задается политикой ограниченного использования программ, а параметр TrustPolicy игнорируется. Значением по умолчанию является 0 LogSecurityFailures Строковый (REG_SZ) Если значение равно 1, то информация о всех ошибках, которые возникают при выполнении сценариев и связаны с вопросами безопасности, заносится в журнал событий системы (System Event Log). Другими словами, ведется аудит отказов для сценариев WSH. Если значение равно 0, то информация об ошибках в сценариях, которые связаны с нарушениями установленных политик безопасности, не заносится в журнал событий. Значением по умолчанию является 0 LogSecuritySuccesses Строковый (REG_SZ) Если значение равно 1, то ведется аудит успехов для сценариев WSH, т.е. в в журнал событий системы (System Event Log) записывается информация о каждом успешно запущенном сценарии. Если значение равно 0, то аудит успехов не ведется. Значением по умолчанию является 0Устанавливая определенным образом значения параметров системного реестра из табл. 4.2, можно настроить политику безопасности при использовании сценариев WSH для конкретного пользователя или рабочей станции (например, можно разрешить выполнение сценариев только администраторам домена). В сетях Windows NT или на автономной машине для этого используется редактор системной политики (Poledit.exe), а в сетях с установленной службой каталогов Active Directory применяется групповая политика (Group Policy), доступная с помощью оснастки Active Directory — пользователи и компьютеры (Active Directory — users and computers) консоли управления ММС. На автономном компьютере с операционной системой Windows ХР/2000 для настройки политики безопасности WSH можно также изменять локальную групповую политику, которая позволяет задать одинаковые параметры безопасности для всех пользователей данного компьютера.