Microsoft Active Directory и Group Policy содержат богатый набор инструментальных средств и процедур, призванных сохранить время и силы администратора в поддержании защиты домена. Блокировка сервера требует выполнения многих шагов, и, в зависимости от степени блокировки, это может занять несколько часов. Данная статья прежде всего написана для системных администраторов, которые хотят упростить управление IIS web сервером, используя сценарии с Active Directory и Group Policy.
Microsoft Active Directory и Group Policy содержат богатый набор инструментальных средств и процедур, призванных сохранить время и силы администратора в поддержании защиты домена. Блокировка сервера требует выполнения многих шагов, и, в зависимости от степени блокировки, это может занять несколько часов. Данная статья прежде всего написана для системных администраторов, которые хотят упростить управление IIS web сервером, используя сценарии с Active Directory и Group Policy.
Предположим, что ваша компания просит вас установить IIS сервер, возможно в DMZ. Проводя защиту, вы хотите выполнить все рекомендуемые процедуры, сформулированные Микрософтом. Также вам нужен недавно созданный сервер. А как же быть иначе, ведь бизнес развивается на больших скоростях. Из-за нехватки времени мы не достаточно часто задумываемся о защите. Это как раз тот случай, когда может пригодиться Active Directory.
Например...
В Group Policy есть хорошая особенность, с которой вы хорошо ознакомитесь, прочитав эту статью. Эта особенность - скрипты Startup и Shutdown. Они не слишком отличаются от сценариев используемых в NT, за исключением того, что Вы можете заставить эти политики обращаться к тем группам компьютеров, которые вы выбрали.
Сценарии Startup настраивается в Group Policy так, как вы хотите представить себе директивы выполняющиеся во время запуска. Эти сценарии выполняются прежде, чем пользователь получает ctrl-alt-del окно регистрации в системе, поэтому они выполняются с привилегиями локальной системной учетной записи.
При всем том, что можно сделать в Group Policy существует много того, что нельзя сделать. Для всего того, что нельзя делать существует VBScript! VBScript хорош тем, что разрабатывался для помощи администратору в автоматизации многих стандартных задач администрирования систем, включая (как в нашем случае) блокировку сервера. Например, следующий код:
Dim Site Dim ServerName Dim SiteIndex ServerName = "LocalHost" SiteIndex = "1" Set Site = GetObject("IIS://" & ServerName & "/W3SVC/" & SiteIndex) Site.LogExtFileDate = True Site.LogExtFileTime = True Site.LogExtFileClientIp = True Site.LogExtFileUserName = True Site.LogExtFileSiteName = False Site.LogExtFileComputerName = False Site.LogExtFileServerIp = True Site.LogExtFileServerPort = True Site.LogExtFileMethod = True Site.LogExtFileUriStem = True Site.LogExtFileUriQuery = False Site.LogExtFileHttpStatus = False Site.LogExtFileWin32Status = False Site.LogExtFileBytesSent = False Site.LogExtFileBytesRecv = False Site.LogExtFileTimeTaken = False Site.LogExtFileProtocolVersion = False Site.LogExtFileUserAgent = True Site.LogExtFileCookie = False Site.LogExtFileReferer = False Site.SetInfo
Этот сценарий приказывает IIS установить регистрацию. Изменение этого также же просто как изменение значений True и False. Скопируйте и вставьте этот код в блокнот, а затем сохраните его как "logging.vbs". Убедитесь, что при сохранении вы изменили тип файла на "Все файлы (*.*)", чтобы блокнот не добавил в конец расширение .txt.
Теперь, зайдите в рассматриваемый web-сервер, и просмотрите в IISAdmin ваши параметры настройки регистрации. Затем, найдите способ получить сценарий с web-сервера, (я рекомендую рабочий стол), кликните на нем и удивляйтесь. Вы можете сказать: "Ничего же не произошло". Но это не так. Закройте IISAdmin, а затем снова его откройте и проверьте параметры настройки регистрации. Класс! Теперь установлены новые параметры настройки, и все это Вы сделали, всего лишь с помощью щелчка мышки на одном маленьком сценарии.
Применение этого примера
Теперь с помощью простого щелчка мышки, вы способны полностью автоматизировать процесс открытия IISAdmin, вместо щелканья мышкой по дереву, вкладкам, кнопкам и. т.п. Можете верить или не верить, но для того, чтобы изменить один или два параметра настройки, требуется немало щелканей мышкой, когда у вас куча работы, которую необходимо сделать. Зачем продолжать делать то же самое много раз, если можно без этого обойтись. Автоматизируйте систему, чтобы делать вашу работу для вас.
Если бы вы имели целую армию таких сценариев, ыы могли бы автоматизировать практически все что нужно сделать на компьютере после установки операционной системы. Это ограничено только вашим воображением и вашей хитростью при работе с VBScript. При работе с VBScript не требуется особой гениальности. Сперва, много интересного можно просто найти на Google, запросив "vbs". Второе -это телеконференции со знающими людьми. Третье это то, что я собираюсь обеспечить Вас массой сценариев, которые помогут вам выполнить наиболее важные процедуры блокировки, сформулированные Microsoft для IIS 5.0 и Windows 2000 и которые не были охвачены в групповой политике группы или в любых шаблонах защиты.
Для начала, измените параметры настройки регистрации вручную в IISAdmin так, чтобы они были полностью различны с установленными нами (не имеет значения каковы те параметры настройки, необходимо только удостовериться, что они различны, и что Вы их записали). Для чего все это, мы увидим позже. Вы еще помните те сценарии запуска в Group Policy, который мы упомянули ранее? Мы собираемся использовать эти установки для того, чтобы приказать Windows выполнить, описанные выше сценарии, используя сценарии запуска в Group Policy. Далее скопируйте этот сценарий на какой-нибудь ресурс в сети.
Теперь необходимо сделать доступным каталог с вашим сценарием. Убедитесь, что вы записали его сетевой путь. Давайте войдем в Group Policy. Start -> Programs -> Administrative Tools -> Active Directory Users and Computers и Вы увидите на экране что-то вроде этого:
Имейте в виду, что я скрыл имя домена и добавил доменные компьютеры как Organizational Unit (OU). Вы не увидите это на вашем мониторе. Создайте новый OU и назовите его "Bob". Хорошо, возможно "Lockdown" был бы более подходящим. Теперь щелкните правой кнопкой мыши на "Lockdown" OU, выберите пункт свойства, а в появившемся окне выберите вкладку Group Policy.
Нажмите кнопку NEW, которая создает новую групповую политику, затем измените имя этой политики на "Lockdown". Отредактируйте новую политику, что вызовет следующее окно:
Выберите "Computer Configuration", чтобы развернуть "Windows Settings", после нажмите на Scripts (Startup/Shutdown), а затем подождите и сделайте двойной щелчок на Startup. Эти действия вызовут следующее окно:
Добавьте новый сценарий. В данном случае вы не должны волноваться о передаче чего-либо в параметры сценария, т.к параметров просто нет. Так нажав на кнопке Browse, и выполнив обзор сетевого ресурса, вы сохранили ваш сценарий, а выбрав его, нажали на кнопку ОК. Теперь это должно появиться в поле "Script Name". Далее закройте все окна, включая окно Group Policy, а затем добавьте имя web-сервера в "Lockdown" organizational unit. Однажды выполните принудительный ответ от ваших контроллеров домена (предполагается, что их больше одного), затем перезагрузите web-сервер. Когда он перезагрузится, Вы сможете увидеть, как выполняется сценарий Startup. Войдите в систему, и проверьте ваши параметры настройки регистрации. Супер! Они были автоматически установлены для вас! Каждый раз при загрузке, эти сценарии меняют параметры настройки, и таким образом будут осуществлять политику. Даже если другой администратор позже изменит их, то это не будет иметь значения т.к., после перезагрузки, политика вернет все настройки в прежнее состояние. Запомните все это, чтобы не задаваться вопросом, почему после перезагрузки не сохранились те параметры, которое вы меняли.
Это только одна процедура, рекомендуемая компанией Микрософт, для блокировки вашего сервера, но если у вас выполнена установка Windows по умолчания, то можно сделать гораздо больше. Я включил некоторые сценарии, раздельно выполняющие большинство процедур, описанных в документации компании Microsoft, а также несколько дополнительных. Ниже описан один из наиболее интересных сценариев:
Const HKEY_CLASSES_ROOT = &H80000000 Const HKEY_CURRENT_USER = &H80000001 Const HKEY_LOCAL_MACHINE = &H80000002 Const HKEY_USERS = &H80000003 Const HKEY_CURRENT_CONFIG= &H80000005 Const HKEY_DYN_DATA = &H80000006 Const REG_SZ = 1 Const REG_EXPAND_SZ = 2 Const REG_BINARY = 3 Const REG_DWORD = 4 Const REG_MULTI_SZ = 7 Set objRegNT = GetObject( "winmgmts://localhost/root/default:StdRegProv" ) Set WshShell = WScript.CreateObject("WScript.Shell") Set objRegistry = GetObject("winmgmts:" & Computer & "root\default:StdRegProv") sNetworkCards = "Software\Microsoft\Windows NT\CurrentVersion\NetworkCards" RC = objRegistry.EnumKey(HKEY_LOCAL_MACHINE, sNetworkCards, sCardNumbers) If (RC = 0) And (Err.Number = 0) Then for q = lbound(sCardNumbers) to ubound(sCardNumbers) sNetCard = "Software\Microsoft\Windows NT\CurrentVersion\NetworkCards\" & sCardNumbers(q) RCB = objRegistry.GetStringValue(HKEY_LOCAL_MACHINE, sNetCard, "ServiceName", sService) If (RCB > 0) then msgbox "Error Number: " & err.number & vbCrLf & "Description: " & err.description,,"Error " Else myCardObj = sService SubKey = "SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\" & myCardObj ' This sets the ports that are allowed to be open. You can totally modify these values. 3389 is for Terminal Server. TCPports = Array( "3389", "80" ) RawIPAllowed = Array( "53", "" ) ChangeTCPValues = objRegNT.SetMultiStringValue(HKEY_LOCAL_MACHINE, Subkey, "TCPAllowedPorts", TCPports) ChangeProtoValues = objRegNT.SetMultiStringValue(HKEY_LOCAL_MACHINE, Subkey, "RawIPAllowedProtocols", RawIPAllowed) End If next End if WshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interface s\Tcpip_" & myCardObj & "\NetbiosOptions", "2", "REG_DWORD" WshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\EnableSec urityFilters", "1", "REG_DWORD"
Этот сценарий в основном использует массив портов (3389, 80, 53), и приказывает Windows NT, или 2000, разрешить трафик только этим портам, блокируя все остальные. В Windows 2000 есть редактор IPSecurity, который выполняет более детальный контроль над этими портами, однако этот механизм не доступен в NT, а вышеупомянутые механизмы работают на обеих системах. Это можно считать самой стандартной централизованной межсетевой защитой. Микрософт рекомендует, чтобы серверы были размещены в защищенном DMZ, однако, эти предложения являются другим уровнем защиты. Но все же будьте осторожны. Как только вы это примените, домен соединится с сервером, и заблокируется, потому что заблокированы все необходимые порты. Очевидно, что для того чтобы исправить это, вы можете по мере необходимости добавлять или удалять порты.
Ниже описан еще один не менее интересный сценарий:
On Error Resume Next Set objNetwork = WScript.CreateObject("WScript.Network") strComputerName = objNetwork.ComputerName 'This part changes the OS user name strNewUser = "IUSR_ACCT" strOldUser = ("IUSR_" & strComputerName) 'This part tells IIS what that new username is so it doesn't get confused Set oComputer = GetObject("WinNT://" & strComputerName) Set oUser = GetObject("WinNT://" & strComputerName & "/" & strOldUser & ",user") Set NewUser = oComputer.MoveHere(oUser.ADsPath, strNewUser) Dim WebServerObj Set WebServerObj = GetObject("IIS://localhost/W3SVC") WebServerObj.Put "AnonymousUserName", "IUSR_ACCT" WebServerObj.Put "AnonymousPasswordSync", TRUE WebServerObj.SetInfo
Этот сценарий выполняет пару различных действий, но сначала
необходима небольшая входная информация. IIS использует учетную запись
IUSR_
Вы можете добавлять большее количество сценариев и других параметров настройки Group Policy, чтобы далее блокировать сервер. Вы заметили, что все описанное здесь разбито на отдельные сценарии? Это более модульный путь. Вы можете выбирать процедуры, которые были добавлены в сценарий/политику. Я отдаю должное Руссу Куперу и Куллену Джонсону за их работу с VBScript и IIS. Они создали сценарий, который полностью блокирует IIS. В моих сценариях, я только разбил его на части, и добавил некоторые процедуры, специфические для операционной системы. Вы можете увидеть эти сценарии здесь.
Выводы
Вы могли бы спросить, почему кто-то оставляет незащищенным Internet facing machine и передает эти связи домена? Есть два ответа на этот вопрос. Сначала, вы можете временно присоединиться к этому домену, что бы сохранились изменения, а затем отсоединиться. Но если вы имеете отдельный домен для DMZ, то вы можете только остававаться присоединенными там. В первом сценарии, вы должны были бы убедиться только в том, что никакие другие домены не оставлены на сервере, и осознать, что не существует механизм, который предписывал бы политику. Второй сценарий более приемлем по этой причине, потому что при каждой перезагрузке сервера, применяется политика. Если вы сильно обеспокоены связями домена, вы можете просто последовательно выполнять каждый из сценариев на вашем локальном компьютере. Конечно, это не полностью автоматизирует процесс, но достаточно эффективно и потребляет гораздо меньше времени, чем выполнение операций вручную. Также, вы можете создавать локальную политику, которая будет приводить в действие эти изменения, используя MMC, и выбирая встроенный Group Policy. Также как, указано ранее, эти сценарии не будут охватывать все рекомендуемые процедуры. Например, Микрософт рекомендует, чтобы данные для вашего сайта были помещены в отдельный сектор системного раздела. Наши сценарии не будут проверять/корректировать эту проблему. Также, этими сценариями не устанавливается аудит и другие функции. Они лучше выполняются, используя шаблоны защиты и/или групповую политику для Windows 2000. Наконец, вы можете найти, что эти параметры настройки нарушают работу некоторых приложений, или причиняют еще какие-нибудь проблемы. Никогда не бойтесь. Вы можете восстановить заданную по умолчанию конфигурацию, используя те же самые методы. Обратите внимание, я не говорю, что вы можете восстанавливать предыдущие параметры настройки. Данные сценарии не будут делать этого. Сценарии для отмены изменений, внесенных сценариями блокировки, также включены в сценарии, описанные в этой статье. Также как, и с чем-либо другим, сперва проверьте их в тестовой среде! Вы сможете увидеть, что блокировка сервера, так же проста как установка операционной системы, добавление этого к соответствующему OU, а затем перезагрузка.