Ограничьте создание объектов в разделе
В Active Directory (AD) используется гибкая структурированная модель управления, основанная на списках контроля доступа ACL (Access Control List). Однако есть одно ограничение: нельзя использовать списки Windows 2000 AD ACL для ограничения числа объектов, созданных в разделе. Можно, конечно, ограничить число тех, кто может создавать объекты в контейнере, но после того, как вы разрешаете пользователю создавать объекты (т. е. применяется право создавать все дочерние объекты Create All Child Objects), этот пользователь может создать столько объектов, сколько захочет. Пользователи-злоумышленники с правом создания объектов в одном домене могут заполнить жесткий диск контролера домена (DC - domain controller), используя генерацию большого количества объектов.
Квоты AD
Windows Server 2003 имеет новые атрибуты AD, позволяющие следить за квотами и ограничивать число объектов, которое участник системы безопасности (пользователь, группа или компьютер) может создавать в разделе. Этот атрибут аналогичен встроенной квоте, которую Windows 2000 и более поздние версии приписывают проверенным пользователям для создания компьютерных объектов, и только новые квоты применимы ко всем типам объектов. Например, новые квоты компьютерных ресурсов не позволяют пользователям создавать больше десяти объектов «компьютер» (т. е. ресурсов) в одном домене.
Объекты квот хранятся в контейнере квот NTDS Quotas во всех разделах на основе Windows 2003 (в том числе в разделах приложений), кроме раздела Schema. Квоты нельзя связывать с разделом Schema, поскольку изменение схемы представляет собой весьма редкую операцию, которую могут выполнять только члены группы администраторов схемы Schema Admins. По умолчанию инструменты типа встроенных оснасток Microsoft Management Console (MMC) Active Directory Users и Computers не позволяют увидеть контейнер квот NTDS Quotas, однако этот контейнер можно увидеть, выбрав пункты View, Advanced Features из меню. Контейнер квот NTDS Quotas имеет объектный класс msDS-QuotaContainer, который обладает рядом свойств, определяющих по умолчанию поведение квот. В Taблице 1 перечислена часть важных атрибутов для объектов msDS-QuotaContainer. Объекты квот имеют объектный класс msDS-QuotaControl. Таблица 2 включает самые интересные атрибуты объектов классов.
Добавление квот
К сожалению, для создания квот нельзя применять встроенные инструменты AD MMC - Active Directory Users и Computers или другие. Единственными инструментами, которые Microsoft предоставляет для создания квот и управления ими, являются утилиты службы каталога Directory Service (DS), в том числе Dsadd, Dsmod и Dsquery. Для применения утилиты Dsadd для создания квоты для специального раздела надо определить значения свойств, перечисленных в Таблице 2.
Вот общая команда для создания квоты. Заметим, что последняя строка (в скобках) необязательна.
Фактор метки на удаление
Метки на удаление дают интересное замечание к квотам. Когда субъект службы безопасности (т. е. пользователь, группа или компьютер) удаляет объект, Windows помечает его меткой на удаление с определенным периодом времени (60 дней по умолчанию), прежде чем реально удалить из системы. Эти метки на удаление учитываются в квоте участника системы безопасности.
По умолчанию каждая метка на удаление учитывается как один объект. Таким образом, когда пользователь создает один объект и удаляет другой, эти объекты не считаются как два объекта внутри любой квоты, которая относится к пользователю. Если пользователь создает объект и потом уничтожает тот же объект, то в целом считается только один объект по квоте пользователя. Когда AD удаляет метку на удаление в конце заданного периода времени, AD вычитает один объект из квоты пользователя.
Можно присвоить атрибуту msDS-TombstoneQuotaFactor объекта msDS-QuotaContainer другое значение, отличное от 100 %, и установить, сколько каждая метка на удаление должна вычитать из квоты участника системы безопасности. Если атрибуту присвоено значение 50, то пользователь с пределом 10 может уничтожить 20 объектов (т. е. создать 20 меток). Если безразлично, сколько объектов уничтожают пользователи, то фактору квоты метки на удаление можно присвоить значение 0.
Значения квот по умолчанию
Поскольку можно назначить квоты различным типам владельцев системы безопасности, отдельному владельцу можно назначить много квот. В таком случае квота самого высокого предела остается в силе для участника.
Можно по умолчанию создать квоту для раздела, которая относится ко всем субъектам системы безопасности, кроме членов групп Enterprise Admins и Domain Admins и владельцев, для которых квота настроена по умолчанию. Даже если квота настроена по умолчанию для всех пользователей, администраторы не будут иметь ограничений, а владельцы, для которых квота была настроена, будут пользоваться своей квотой, а не квотой по умолчанию.
Легче всего применить квоту по умолчанию, изменяя атрибут msDS-DefaultQuota в контейнере NTDS Quotas для целевого раздела. Нужно быть осторожным при настройке квоты по умолчанию, поскольку она будет относиться ко всем неадминистративным участникам системы безопасности, для которых не была установлена индивидуальная квота. Если, например, квота была установлена по умолчанию в 0, компьютеры не смогут динамически обновлять свои DNS-записи в зоне интегрированной службы каталогов AD, потому что этот процесс создает объект. Такая ситуация, возможно, не применяется в вашей среде, но дело в том, что надо учитывать влияние квоты по умолчанию и тщательно проверять ее перед внедрением.
Назначение квоты пользователя
Если квоты были созданы, то пользователи, конечно, захотят узнать, сколько квот они истратили. Можно задать применение квоты пользователя несколькими способами. Один метод заключается в том, чтобы использовать команду Dsget User:
dsget user "<UserDN>"<br /> -part <PartitionDN><br /> -qlimit -qused
Эта команда отражает действительные границы квоты и количество квот, которое было истрачено конкретным пользователем. Например, следующая команда возвращает значение применения квоты для пользователя cn=rallen в разделе dc=rallencorp,dc=com:
Можно использовать аналогичные параметры с помощью команд Dsget Computer и Dsget Group для определения применения квоты для указанных типов объектов.
Пользователи также могут определить свое применение квоты, делая запрос об атрибутах msDS-QuotaUsed и msDS-QuotaEffective на контейнер NTDS Quotas для раздела. Эти два атрибута конструируются, т. е. это означает, что атрибуты динамически вычисляются на основе пользователя, который обращался к ним. Атрибут msDS-QuotaUsed возвращает значение, определяющее, сколько квот потратил пользователь, а атрибут msDS-QuotaEffective содержит эффективный остаток квоты на основе примененных квот.
Если надо узнать, какие пользователи в разделе создали больше всего объектов, можно просмотреть атрибут в контейнере NTDS Quotas раздела; этот атрибут дает информацию о пользователе с максимальным применением квоты. Каждое значение этого многозначного атрибута Each value содержит блоки данных в формате языка, похожего на XML. Каждый блок включает идентификатор участника системы безопасности SID (
), полное число объектов, которые создал участник (
), число меток на удаление (
) и число активных объектов (
). На Рисунке 1 показан пример информации, которую этот атрибут может содержать.
Как видно, в XML не определяется имя ресурса для участника системы безопасности. Программа возвращает только SID ресурса. Если надо преобразовать SID в имя пользователя или группы, то можно задействовать утилиту SidToName, которую можно загрузить из http://www.joeware.net/win32/index.html.
Реализация квот
Квоты являются новой функциональностью Windows 2003 AD, они позволяют ограничить число объектов, которые пользователи могут создавать в разделе. Можно установить по умолчанию пределы квоты для всех владельцев системы безопасности в домене, чтобы злоумышленники не смогли заполнить жесткие диски ваших DC. Убедитесь, что были продуманы и тщательно проверены все квоты, которые будут внедряться в производство. Теперь вы должны использовать утилиты интерпретатора команд DS для управления квотами. Возможно, в недалеком будущем Microsoft упростит управление квотами, интегрировав квоты во встроенные программы AD MMC.
Рисунок 1. Пример содержания атрибута msDS-TopQuotaUsage
RDN - Relative distinguished name - () объекта контейнера квоты. По умолчанию этот атрибут имеет значение NTDS Quotas
msDS-DefaultQuota
Квота по умолчанию применяется ко всем участникам системы безопасности, которые не имеют другой определенной спецификации квоты
msDS-QuotaEffective
Конструируемый атрибут, который содержит эффективную квоту участника системы безопасности, просматривающего этот атрибут.
msDS-QuotaUsed
Конструируемый атрибут, который содержит применение квоты участника системы безопасности, просматривающего этот атрибут.
msDS-TombstoneQuotaFactor
Процентное отношение, которое подсчитывают метки на удаление по квоте. По умолчанию равно 100, т. е. объект-памятник имеет тот же вес, что и обычный объект
msDS-TopQuotaUsage
Многозначный атрибут, содержит информацию об участниках системы безопасности с максимальным использованием квот