Главная Security, Без рубрики, Новое Active Directory, Security
  • Аутентификация на основе одноразовых паролей: Теоретические основы.

    16_1

    Безопасность сети – важнейшая задача, стоящая перед ИТ. Решение формируется из многих составляющих, одна из них – безопасная аутентификация. OTP-технологии позволят уменьшить риски, с которыми сталкиваются компании при использовании долговременных запоминаемых паролей

    Как уже неоднократно упоминалось в статьях наших авторов, вопросы безопасной аутентификации по-прежнему остаются актуальными. Очевидно, что любые попытки ограничения полномочий и предоставления доступа к ресурсам и функциям системы только тогда имеют смысл, когда мы можем быть уверены, что имеем дело с легальным пользователем. Следовательно, защита информационных систем начинается с проверки легитимности пользователя, который пытается получить доступ.

  • Главная Windows, Без рубрики, Новое Active Directory, PowerShell, Windows 2008 R2
    • Типовые задачи администрирования AD с использованием PowerShell

      monolisa-ascii_thumbВсем администраторам Active Directory периодически приходится сталкиваться с рутинными задачами, которые хотелось бы так или иначе автоматизировать. Как правило, это делается с использованием скриптов на наиболее известных языках программирования: VBScript, Jscript, PowerShell. Последний я считаю наиболее удобным. Благодаря некоторым из его особенностей те же процедуры, которые занимают в VBScript десяток строк и требуют понимания работы WMI, LDAP и еще многих китайских слов – в PowerShell занимает всего пять строк и требуют всего лишь знания программирования на уровне школьных уроков информатики. В настоящей статье мы рассмотрим типовые задачи администрирования Active Directory, и их автоматизацию с помощью PowerShell.

      P.S. Статья рассчитана на полных, или почти полных «чайников», пару раз видевших или где-то слышавших о PowerShell. На звание Терминатора не претендую, по сему просьба ногами не пинать.

       

      Общие положения

      Предполагается, что читатели уже хотя бы немного знакомы с оболочкой PowerShell и написанием скриптов. Тех, кто не знаком – хотелось бы отослать к списку ресурсов в конце статьи.

      В первую очередь, необходимо заметить, что для того, чтобы все нормально работало – необходимо иметь хотя бы один контроллер домена Windows Server 2008 R2 с установленной компонентой ActiveDirectory Web Services. Увы и ах, Windows Server 2003 уходит на свалку истории. Для работы с модулем ad_powershell необходимо установить Remote Server Administration Tools, его так же можно установить на рабочем компьютере и запускать скрипты оттуда. Разумеется, ОС на компьютере должна быть не ниже Windows 7. На контроллерах домена Windows Server 2008 R2 необходимые компоненты уже установлены.
      Перед тем, как выполнять скрипты – необходимо установить политику выполнения скриптов. По умолчанию, в целях безопасности включена политика Restricted, что означает, что на данном компьютере вообще запрещен запуск любых PowerShell-скриптов. О том, какие еще бывают политики выполнения – можно почитать в мануале:

      Get-Help Set-ExecutionPolicy –Detailed

      В нашем случае я рекомендую установить политику RemoteSigned, что позволит запускать любые собственноручно написанные скрипты, при этом запуск скриптов, скачанных из Интернета будет возможен только при наличии цифровой подписи с доверенным сертификатом. Запустите оболочку PowerShell с правами администратора (Run as Administrator) и выполните команду

      Set-ExecutionPolicy RemoteSigned

      Можно так же выбрать политику Unrestricted, что вообще позволит запускать любой скрипт, независимо от того, откуда он взялся – но я делать этого не рекомендую из соображений безопасности.

      Теперь можно проверить работу скриптов – написать простейший скрипт «Hello World!». Я предпочитаю пользоваться PowerShell ISE, хотя можно писать и в простейшем Notepad’е. PowerShell ISE – удобная среда програмирования для PowerShell с возможностью отладки. Входит в состав ОС Wondows 7 и 2008 R2. Вобщем, рекомендую.

      image

      Теперь переходим непосредственно к автоматизации. Для того, чтобы создать объекты в Active Directory, или изменить какие-либо свойства, нам необходим список объектов со всеми необходимыми параметрами. Например, список пользователей может содержать следующие парамеры: Имя, Фамилия, Логин, Пароль. Проще всего для этого использовать CSV-файл. CSV – это текстовый файл, содержащий список объектов (например – пользователей), с разделением параметров каким-либо символом (как правило, это запятая «,», хотя может быть и точка с запятой, знак табуляции и т.д.). Каждый объект обозначается одной строчкой. Так же, первая строчка может содержать список параметров.

       

      Пример:

       

      Name;Surname;Login;Password

      Ivan,Ivanov;i.ivanov;p@ssw0rd1

      Petr,Petrov;p.petrov;p@ssw0rd2

      Sidor;Sidorov;s.sidorov;p@ssw0rd3

       

      Чтобы получить список объектов из CSV-файла, используется командлет Import-CSV:

      $Users = Import-CSV “c:\temp\users.csv”

      Такой файл можно создать и в блокноте, но проще всего будет использовать Microsoft Excel. В Excel необходимо при сохранении файла выбрать формат CSV. Интересно, что Excel при сохранении в формат CSV в качестве разделителя использует знак “;”, хотя вроде бы написано «CSV (разделители – запятые)». PowerShell же по умолчанию считает, что в качестве разделителя используется запятая («,»). Чтобы наш скрипт работал корректно – необходимо либо заменить в CSV-файле все точки с запятой на запятые (используя автозамену в блокноте) либо же, что на мой взгляд правильнее – указать в скрипте использовать точку с запятой в качестве разделителя:

      $Users = Import-CSV “c:\temp\users.csv” –Delimiter “;”

      Чтобы проверить, как прошел импорт – можно посмотреть, что хранится в переменной $Users.

      image

      Как видим, в переменной $Users теперь хранится массив объектов с параметрами Name, Surname, Login, Password. Эти параметры можно использовать для создания учетных записей пользователей в AD.

      Прежде чем приступить к работе с Active Directory, необходимо произвести импорт соответствующего модуля в PowerShell. Только после этого появятся команды для работы с AD:

      Import-Module ActiveDirectory

      Эту строку можно (и даже нужно) вставлять в начало всех скриптов – чтобы не вводить эту команду вручную.

       

      Создание учетных записей пользователей

      Каждому, кто работал с ActiveDirectory, приходилось создавать учетные записи пользователей. И хотя это делается легко и просто – в несколько щелчков мышкой – иногда, особенно в крупных организациях, приходится создавать много учетных записей в течение дня. Иногда – в районе сотни.

      Для нашего примера, в качестве списка пользователей будем брать CSV-файл со следующими полями:

       

      • Name – имя пользователя
      • Surname – фамилия пользователя
      • Password – пароль
      • OU – организационное подразделение, где будет находиться пользователь (вида Contoso_Users/Fin/Accounting)

       

      Вначале нам нужно импортировать пользователей из списка:

      $Users = Import-CSV $1 –Delimiter “;”

      Параметр $1 означает, что в качестве пути к CSV-файлу будет использоваться первый по счету параметр командной строки. Запускаться скрипт будет следующим образом:

      PS C:\Users\admin > Add_Users.ps1 c:\temp\users.csv

      Далее нам нужно пройтись по всему массиву пользователей из списка:

      Foreach($CurrentUser in $Users) {

      Знак открытой фигурной скобки означает начало цикла. Этот цикл проходит по всем объектам списка, и прискаивает текущий объект переменной $CurrentUser.

      Затем, для упрощения – присвоим значения соответствующих полей отдельным переменным:

       

      $Name = $CurrentUser.Name

      $Surname = $CurrentUser.Surname

      $Password = $CurrentUser.Password

      $OU = $CurrentUser.OU

       

      Для того, чтобы задать пароль пользователю – необходимо перевести его в шифрованный формат SecureString:

      $SecurePwd = ConvertTo-SecureString -AsPlainText -Force -String $Password

      Так же, OU нам нужно перевести в формат, соответствующий стандарту LDAP (для примера выше: “OU=Accounting,OU= Fin,OU= Contoso_Users,DC=contoso,DC=com”).

       

      Для этого вначале разделим строку $OU на отдельные составляющие:

      $OUTmp = $OU –Split “/”

       

      В результате переменная $OUTmp будет содержать массив из всех элементов пути:

      PS C:\Users\admin> $OUTmp

      Contoso_Users

      Fin

      Accounting

       

      Далее, используя командлет Foreach-Object, получим из нашего массива первую часть LDAP-пути:

       

      $Path = “” #незабудьте проинициализировать переменную!

      $OUTmp | ForEach-Object {$Path = "OU=$_," + $Path}

       

      В переменной $Path появляется первая часть LDAP-пути:

       

      PS C:\Users\admin> $Path

      OU=Accounting,OU=Fin,OU=Contoso_Users,

       

      Теперь нам нужно получить полный путь, добавив к пути домен:

       

      $Path += “DC=contoso,DC=com”

      Получили полный LDAP-путь:

      PS C:\Users\admin> $Path

      OU=Accounting,OU=Fin,OU=Contoso_Users,DC=contoso,DC=com

       

      Теперь сформируем дисплейное имя пользователя, его логин, User Principal Name.

       

      $Login = $Name[0] + “.” + $Surname #логин формируется из первой буквы имени и фамилии, например: i.ivanov

      $Displayname = $Name + “ “ + $Surname #Дисплейное имя: Ivan Ivanov

      $UserPrincipalName = $Login + “@contoso.com

       

      Наконец, можно перейти к самой главной процедуре: созданию учетной записи пользователя.

       

      New-ADUser $Displayname –SamAccountName $Login –UserPrincipalName $UserPrincipalName -DisplayName $DisplayName -AccountPassword $SecurePwd -ChangePasswordAtLogon 1 -Path $Path

      Здесь, в принципе, все параметры понятны. Параметр -ChangePasswordAtLogon 1 означает, что пользователю будет предложено сменить пароль сразу после логина.

      По умолчанию в PowerShell, в отличие от стандартного визарда в оснастке ActiveDirectory Users And Computers учетные записи только что созданных пользователей будут отключены (Disabled). Поэтому сразу после создания учетные записи нужно включить:

      Enable-ADAccount $Login

      Теперь нужно закрыть цикл знаком «}». Можно сохранять скрипт и пробовать.

      Готовый скрипт будет выглядеть следующим образом:

       

      Import-Module ActiveDirectory

      $Users = Import-CSV $1 –Delimiter “;”

      Foreach($CurrentUser in $Users) {

      $Name = $CurrentUser.Name

      $Surname = $CurrentUser.Surname

      $Password = $CurrentUser.Password

      $OU = $CurrentUser.OU

      $SecurePwd = ConvertTo-SecureString -AsPlainText -Force -String $Password

      $OUTmp = $OU –Split “/”

      $Path = “” #незабудьте проинициализировать переменную!

      $OUTmp | ForEach-Object {$Path = "OU=$_," + $Path}

      $Path += “DC=contoso,DC=com”

      $Login = $Name[0] + “.” + $Surname

      $Displayname = $Name + “ “ + $Surname #в кавычках – пробел!

      $UserPrincipalName = $Login + “@contoso.com”

      New-ADUser $Displayname –SamAccountName $Login –UserPrincipalName $UserPrincipalName -DisplayName $DisplayName -AccountPassword $SecurePwd -ChangePasswordAtLogon 1 -Path $Path

      Enable-ADAccount $Login

      }

       

      Создание учетных записей компьютеров

      Как известно, для работы с Active Directory перво-наперво необходимо вводить компьютеры в домен. Сделать это можно двумя способами:

      · Мышкой – самый известный способ, через «Свойства» «Моего компьютера». Легко и просто.

      · Командой netdom join. Тоже несложно, и можно использовать в скриптах.

      У первого способа есть существенный недостаток: учетные записи компьютеров создаются в дефолтном OU Computers. В организациях же, как правило имеются разные OU для разных типов компьютеров (сервер, десктоп, ноутбук), а так же отдельные OU для разных отделов/департаментов/и т.д., с различными групповыми политиками, действующими для разных OU. Поэтому после ввода компьютеров в домен необходимо переносить учетные записи компьютеров вручную в соответствующий OU, а затем перезагружать компьютер еще раз, чтобы на нем применились все необходимые политики. При использовании команды netdom можно указать нужное OU, но набирать все это с клавиатуры – та еще задачка, особенно – когда компьютеров много, и особенно, что часто бывают – задачку эту поручают простым эникейщикам. Где-то в какой-то букве обязательно ошибется.

      Самый лучший выход из этой ситуации – создать учетные записи компьютеров заранее, в соответствующих OU. Тогда компьютер сразу после ввода в домен и перезагрузки применит все соответствующие политики.

      Разумеется, учетные записи компьютеров, как и пользователей, можно создавать и вручную. Но, поскольку мы – админы, а не эникейщики – будем использовать PowerShell.

      Для учетных записей, как и для компьютеров, используем CSV-файл

      ComputerName;OU

      Server1;Cnotoso_Computers/Servers

      Server2;Cnotoso_Computers/Servers

      Desktop1;Cnotoso_Computers/Desktops

      Desktop2;Cnotoso_Computers/Desktops

      Desktop3;Cnotoso_Computers/Desktops

      Laptop1;Cnotoso_Computers/Laptops

       

      Далее, пишем скрипт по анологии со скриптом для учетных записей пользователей, только он будет немного проще:

       

      Import-Module ActiveDirectory

      $Computers = Import-CSV $1 –Delimiter “;”

      Foreach($CurrentComputer in $Computers) {

      $ComputerName = $CurrentComputer.ComputerName

      $OU = $CurrentComputer.OU

      $OUTmp = $OU –Split “/”

      $Path = “” #незабудьте проинициализировать переменную!

      $OUTmp | ForEach-Object {$Path = "OU=$_," + $Path}

      $Path += “DC=contoso,DC=com”

      New-ADComputer –Name $ComputerName –Path $Path

      }

       

      Массовый сброс паролей

      Иногда бывает необходимо массово сбросить пароли у множества пользователей.

      Структура CSV-файла:

      • Login – логин пользователя
      • NewPassword – новый пароль

      Import-Module ActiveDirectory

      $Users = Import-CSV $1 –Delimiter “;”

      Foreach($CurrentUser in $Users) {

      $Login = $CurrentUser.Login

      $NewPassword = $CurrentUser.NewPassword

      $SecurePwd = ConvertTo-SecureString -AsPlainText -Force -String $Password

      Set-ADAccountPassword –Identity $Login –Reset –NewPassword $SecurePwd

      }

       

      Массовое изменение параметров

      Допустим, в вашей организации были приняты новые корпоративные стандарты, которые требуют, чтобы у каждого пользователя в AD были указаны, помимо всего остального: адрес электронной почты, номер мобильного телефона, название организации, должность. Из отдела кадров вам прислали табличку со следующими полями:

       

      • Имя
      • Фамилия
      • E-Mail
      • Телефон
      • Организация (у компании несколько юр.лиц)
      • Должность

       

      Из нее мы создаем CSV-файл с полями:

       

      • Name
      • Surname
      • E-Mail
      • Phone
      • Organization
      • JobTitle

       

      Скрипт будет следующего вида:

       

      Import-Module ActiveDirectory

      $Users = Import-CSV $1 –Delimiter “;”

      Foreach($CurrentUser in $Users) {

      $Name = $CurrentUser.Name

      $Surname = $CurrentUser.Surname

      $Email = $CurrentUser.E-Mail

      $Phone = $CurrentUser.Phone

      $Organization = $CurrentUser.Organization

      $JobTitle = $CurrentUser.JobTitle

      $Login = (Get-ADuser –Filter {GivenName –eq $Name –and Surname –eq $Surname}).SamAccountName #ищем юзера с заданным именем и фамилией и возвращаем его логин

      Set-ADUser $Login –EmailAddress $Email –MobilePhone $Phone –Company $Organization –Title $JobTitle

      }

       

      Заключение

      В этой статье я попытался рассмотреть простейшие скрипты для автоматизации наиболее часто встречающихся задач администрирования Active Directory. На самом деле, я намеренно не стал чересчур усложнять скрипты, чтобы можно было понять логику работы.

      Попробуйте сами вооружиться гуглом и ресурсами, указанными в конце статьи и улучшить скрипты самостоятельно.

      Например:

       

      • Добавить обработку ошибок (например, если пользователь с таким именем уже существует, или наоборот – не существует) – конструкции типа try… catch…
      • Автоматическую генерацию паролей заданной длины и сложности
      • Вывод логинов с автоматически сгенерированными праолями для только что созданных учетных записей в CSV-файл – командлет Export-CSV

       

      Ресурсы

      Эти ресурсы очень сильно помогут в изучении PowerShell. Во всяком случае мне они помогли.

      Надеюсь, эта статья была вам полезна, и кто-то, кто раньше боялся консоли – перестанет ее бояться. Улыбка

      Александр Косивченко

      • Как не нужно называть домены Active Directory

        45074Выбор имени домена задача несложная, но как показывает жизнь достаточно часто после запуска dcpromo имя домена генерируется случайным образом. Вроде и ничего страшного, домен работает, принтеры печатают, 1С открывается. Но увы есть ряд ситуаций, когда генерация случайным образом имени, если не выйдет вам боком, то хлопот однозначно добавит. В этой небольшой заметке я попытаюсь рассказать о том, как не стоит именовать ваши домены и почему. Информация хоть и известная, но реальная жизнь показывает, что ошибки в именовании просто повальные.  А поскольку процедура переименования домена это ит-шное садо-мазо, лучше все делать изначально правильно.

      • Главная Security, Windows, Без рубрики, Новое Active Directory, Security
        • Аудит Active Directory с «человеческим лицом».

          seo-auditБольшинство начинающих системных администраторов считают, что аудит – это слово, имеющее отношение к бухгалтерии, финансам, но уж никак не к информационным технологиям. Их мнение в корне меняется, когда они начинают работать в средних и крупных организациях, где количество администраторов может измеряться десятками. В таких случаях аудит становится страховкой для системного администратора, позволяющей при возникновении форс-мажоров спасти как собственную зарплату, так и в ряде ситуаций – карьеру.

        • Главная Security, Без рубрики, Новое Active Directory, Security
          • Принципы аутентификации по протоколу Kerberos. Kerberos и PKINIT. Часть 2.

            logo В операционных системах Windows 2000/2003/2008 используются расширения протокола Kerberos, повышающие уровень безопасности процедуры аутентификацию клиентов. Расширение PKINIT предоставляет возможность использовать асимметричные криптографические алгоритмы, появилась возможность интерактивной регистрации пользователя с помощью микропроцессорных карточек (смарт карты, USB-ключи и т. п.).

          • Главная Security, Без рубрики, Новое Active Directory, Security
            • Принципы аутентификации по протоколу Kerberos

              Kerberos и PKINIT Часть 1.

              Обеспечивая безопасность нельзя забывать о вопросах безопасной аутентификации. В нескольких предыдущих статьях я уже останавливался на некоторых аспектах этой проблемы, и разбирались с двухфакторной аутентификацией. В этой статье мы рассмотрим механизмы работы протокола Kerberos при аутентификации с помощью имени пользователя и пароля и при использовании технологий асимметричной криптографии.

            • Главная Windows, Без рубрики, Новое Active Directory, Пятничная тема
              • О появлении Active Directory

                logo

                Я убежден, что историю знать нужно, как минимум историю тех вещей с которыми ежедневно имеешь дело, это своеобразный показатель уровня специалиста и его кругозора. В интернете среди определенных групп специалистов бытует мнение, что Active Directory украдена/заимствована у различных компаний и собственно ничего нового сама Microsoft в ней не придумала. Все эти высказывания довольно легко распыляются предложением показать оригинал и наконец открыть миру насколько он зеркально похож. Но на самом деле сейчас уже не важно в чьей светлой голове первой появилась идея создания службы каталогов, важна реализация. Колесо было создано ацтеками тысячи лет назад, но сейчас рядового гражданина волнует только то, что представители немецкого автопрома используют его несколько лучше российского.

              • Главная Security, Windows, Без рубрики, Новое Active Directory, Security, Windows 2008 R2
                • Проектирования Инфраструктуры Открытых Ключей. Часть 1

                  keyБезопасность сети формируется из комплекса элементов, один из важнейших – инфраструктура открытых ключей. Теоретические основы проектирования PKI [1] рассматривается в этой статье. Полагаю, что всем хорошо известно: внедрение инфраструктуры открытых ключей все чаще   становится насущной необходимостью огромного числа компаний.

                • Главная Exchange/UC, Windows, Без рубрики, Новое Active Directory, Exchange 2007, Exchange 2010, Windows 2008 R2
                  • Exchange Server 2010: Быстрый старт

                    logo1111

                    Продолжаю делать “гамбуреры”,  на этот раз  новое видео рассказывает о том как с 0 установить почтовый сервер Exchange 2010. Мануалов по нажатиям клавиш “Enter” в интернете достаточно, но я пошел другим путем. Постарался дать готовое решение. Я прекрасно понимаю, что 50 минут очень мало даже для экскурсного знакомства с данным продуктом. Но все же я постарался вложить в это время тот прожиточный минимум, который должен убрать панику от слова Exchange  у людей не знакомых с данным продуктом. На мой взгляд основные концепции для успешного старта я дал.

                  • Главная Security, Windows, Без рубрики, Новое Active Directory, Security
                    • Двухфакторная аутентификация в Службе Каталога Active Directory Domain Services. [2]

                      authentication Методы защиты при использовании аутентификации по паролю. Для защиты паролей от взлома следует настроить соответствующую политику. Для этого необходимо с помощью меню Start->Administrative Tools-> Group Policy Management запустить консоль управления групповыми политиками GPMC, выбрать требуемый объект групповой политики раздел Computer Configuration->Policies->Security Settings->Account Policies->Password Policy См. Рис. 1 (Управление параметрами паролей).