Как уменьшить размер базы NTDS.DIT в четыре раза

Спойлер – никак.

Как-то мне довелось админить большой домен на несколько тысяч пользователей. После того как база NTDS.DIT выросла до 14ГБ, поднятие нового контроллера домена без использования функционала Install From Media (IFM) стало занимать несколько часов.

Я создал новый тестовый домен, создал в нем сходное количество пользователей, групп и компьютеров. Назначил каждому пользователю картинку на 100к и…

Получил размер базы меньше 1ГБ. Это «Ж-ж-ж» неспроста! – подумал я и обратился в MS Premier Support.

Continue reading “Как уменьшить размер базы NTDS.DIT в четыре раза”

Как я доменный контроллер переносил

Передо мной стояла достаточно легкая задача по переносу адреса и имени контроллера домена на новый сервер. Её можно разбить на следующие подзадачи:

  1. проверить текущих владельцев FSMO-ролей,  при необходимости – передать их на другой сервер, остающийся в работе;
  2. проверить настройки DNS, чтобы оба сервера использовали в первую очередь рабочий DNS;
  3. проверить статусы репликации NTDS (AD) и SYSVOL;
  4. убедившись, что все работает, понизить контроллер домена, сменить имя и адрес;
  5. назначить имя и адрес новому готовому серверу;
  6. поднять на нем роль контроллера домена.

Как видите, ничего сложного, поэтому я оценил общую трудоемкость задачи в 4 часа, как обычно заложив запас под 100% на работы.

Кстати, в статье заложена пасхалочка-бонус 🙂

Давайте вместе посмотрим, что же из этого вышло…

Continue reading “Как я доменный контроллер переносил”

Zerologon check (проверка)

Как вы слышали,  в августе 2020 года была обнаружена критическая уязвимость CVE-2020-1472 в протоколе проверки пользователя контроллером домена.

Критическая она потому, что для эксплуатации этой уязвимости достаточно оказаться в одной сети с контроллером домена.

Microsoft конечно же выпустил обновления, но кто ж их ставит, верно?

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

Поэтому я написал скрипт, который проверяет наличие требуемых обновлений на контроллерах домена Windows Server 2012 R2.

Список обновлений взят из статьи про уязвимость, а также Catalog MS, указывающего на более новые версии обновлений. В моем списке сентябрьское обновление, два августовских и перекрывающий их апдейт безопасности для Windows 2012 R2.

Обратите внимание, что для Windows 2016/2019 номера апдейтов другие!

Для запуска скрипта требуются права администратора домена, так как скрипт проходит по контроллерам и через WMI получает список установленных обновлений.

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

WARNING означает, что нужно срочно бежать и ставить обновления.

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

Поиск источника блокировки учетной записи

Понедельник, как известно, день тяжелый. Поэтому в конце рабочего дня мне позвонили из соседнего филиала и попросили помочь: “сегодня начались массовые блокировки топ-менеджера, ранее работавшего в вашем филиале. Был найден компьютер, с которого происходит блокировка, заявку перекинули на вашу техподдержку. Можно ли как-то попросить их быстрее посмотреть?”.

Источник блокировки был быстро найден благодаря SCOM Audit Collector – им оказался ноутбук NB022. Проблема была лишь в том, что коллеги из тех.поддержки уже сходили и проверили ноутбук, не найдя никаких следов блокируемого пользователя.

Ок, я подключился к ноутбуку и сам начал искать следы пользователя – по нулям. Пока искали – произошла еще пара блокировок.

Continue reading “Поиск источника блокировки учетной записи”

Скрипт Powershell для включения Change Notification между сайтами Active Directory

Возникла задача включить оповещения между сайтами AD.

Данные оповещения снижают время “сходимости” между сайтами за счет того, что репликация  не по расписанию, а при наличии изменений (как внутри сайта).

Скрипт MS располагается здесь, я его немного допилил:

Get-adobject -filter * -searchbase 'cn=configuration,dc=holding,dc=com' -properties options | where {$_.objectclass -eq "sitelink"} | set-adobject -replace @{options=$($_.options -bor 1)} -Verbose

Оригинальный скрипт не работал.

Инвентаризация контроллеров домена с помощью Powershell

Как вы уже поняли, моим хобби является написание скриптов на Powershell для Active Directory 🙂

В этот раз я поделюсь скриптом, который составляет табличку по всем доменным контроллерам, в которой содержится сайт AD, в которой содержится сайт, операционная система с сервис-паком, производитель и модель сервера, количество процессоров и памяти.

Из полезного – еще можно выдернуть наличие на контроллере домена роли глобального каталога, FSMO-ролей, RODC или нет. Плюс убрать саму привязку скрипта к модулю AD for Powershell. Но атрибута “глобальный каталог” или RODC в выводе Get-ADDomainController я не увидел, а FSMO-роли возвращаются в виде массива значений, поэтому в экспорт CSV не попадают.

Get-ADDomainController -Filter * | select hostname, site, operatingsystem, OperatingSystemServicePack, @{name="vendor";expression={(gwmi Win32_ComputerSystem -ComputerName $_.hostname).Manufacturer}}, @{name="model";expression={(gwmi Win32_ComputerSystem -ComputerName $_.hostname).model}}, @{name="CPU, count";expression={(gwmi Win32_ComputerSystem -ComputerName $_.hostname).NumberOfLogicalProcessors}}, @{name="RAM/GB";expression={[math]::round((gwmi Win32_ComputerSystem -ComputerName $_.hostname).Totalphysicalmemory/1GB)}} | sort hostname | Export-
Csv -NoTypeInformation C:\scripts\dclist.csv

Полученный CSV-файл открывается в Excel и обрабатывается с помощью операции “Текст по столбцам”.

[table id=1 /]

Подсчет количества ОЗУ в контроллерах домена

Возникла у меня задача получения списка контроллеров и количества памяти на них. Так как я привык работать через Active Directory Module for Powershell, приведу пример работы с ним.

Get-ADComputer -SearchBase 'ou=domain controllers,dc=domain' -filter * | select Name, @{Name="Memory, Gb";Expression={[decimal]::round((Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 -ComputerName $_.dnshostname).TotalVisibleMemorySize/1mb)}} | sort name

Результатом станет красивая табличка, содержащая количество гигабайт для каждого контроллера.

Upd: В комментариях справедливо замечают, что скрипт можно использовать для инвентаризации обычных серверов в произвольной OU.

UPD2: Появилась более продвинутая версия скрипта.

Антивирус для Windows Server – настраиваем список исключений

Алексей Максимов собирает в кучу исключения для антивирусного ПО под приложения Microsoft.

В ходе настройки политик управления клиентами любого антивирусного ПО необходимо определять список каталогов, имён процессов или даже расширений фалов, которые должны исключаться из Real-Time сканирования. Постараюсь собрать в одном месте информацию о рекомендуемых параметрах исключений и по мере необходимости буду его корректировать. Стоит отметить, что список составлен исходя из приложений, которые эксплуатируются в моём рабочем окружении. Список разделен по основным категориям сервисов и там где возможно есть ссылки на официальные рекомендации производителей ПО. Во всех случаях подразумевается что программное обеспечение установлено в каталоги «по умолчанию». Continue reading “Антивирус для Windows Server – настраиваем список исключений”

Проблемы с репликацией Active Directory

Хочу рассказать вам о паре проблем, возникших в моей инфраструктуре Active Directory.

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

Continue reading “Проблемы с репликацией Active Directory”

Active Directory vs vSphere 5.1

В процессе использования vSphere 5.1 столкнулся с несколькими нюансами работы платформы с Active Directory.

vSphere 5.1 SSO и домены с доверительными отношениями.

Эпически глючная вещь в vSphere 5.1 – это сильно распиаренный Single Sign-On. На нашем предприятии развернут лес с двумя поддоменами, где “живут” учётные записи пользователей, которым требуется доступ к виртуальной инфраструктуре.  Очень интересно ведёт себя SSO при недоступности доменных контроллеров доверенных доменов – он просто не даёт авторизовать в других. У меня проблемы две – временная недоступность из-за сетевой недоступности и некорректная настройка DNS.

При восстановлении сетевой доступности SSO не слишком торопится достучаться до контроллеров домена, обычно, приходится авторизоваться под учётной записью admin@system-domain и делать шаманские пляски с перепроверкой identity source.

Вторая проблема возникает при попытке заменить адреса доменных контроллеров на имя домена, то есть вместо dc-01.perm.contoso.com писать perm.contoso.com, так как фактически DNS на запрос perm.contoso.com возвращает NS-серверы, а не доменные контроллеры.  В моём случае, запрос по имени доверенного домена возвращает по одному из 4 адресов не контроллер домена. Ну, это местечковые грабли. Для решения проблемы прописал “наиболее доступные” контроллеры домена.

vCenter и объекты безопасности Active Directory.

Второе “волшебное” поведение платформы – это группы и пользователи AD с назначенными разрешениями к объектам vCenter. Вы назначаете группе или учётной записи доступ к виртуальной машине, а спустя некоторое время решает привести названия групп к новому стандарту наименования. Результат впечатляет – все переименованные группы и учётные записи бесследно исчезают из разрешений. Но, как говорится, это by design.

Примечание. При создании локальной доменной группы (domain local) безопасности, добавлении  в неё учётной записи из доверенного домена и назначении прав в vCenter получил негативный результат – доступ не был предоставлен. Возможно, где-то я скосячил, а может и не я.