Несколько RDP сессий в Windows 7

Профессиональная и Максимальная версии Windows 7 поставляются с функцией удаленного рабочего стола (RDP) , которая позволяет получить доступ к вашей машине удаленно, находясь вдали от дома или офиса. К сожалению, по умолчанию, она ограничена одной сессией одного пользователя. Это означает, что если кто-то удаленно подключается к вашему компьютеру, а кто-то уже находится в своей сессии, то он будет автоматически отключен, даже если у этого пользователя права администратора.

Это не техническое ограничение, а лицензионное. Дело в том, что удаленный рабочий стол в серверных версиях Windows, по умолчанию поддерживает два одновременных подключения, для устранения неполадок и управлением компьютером. Другие пользователи могут подключаться одновременно, до тех пор, пока у вас есть необходимые лицензии клиентского доступа для данного сервера и машина может с этим справиться, т.е. имеет достаточно ресурсов.

Для того, что бы позволить нескольким пользователям работать с одним компьютером одновременно, необходимо снять лицензионное ограничение. Для этого командаDeepXW создала универсальный патч. Патч вносит изменения в файл termsrv.dll, который расположен в %SystemRoot%\System32\.

Icon of Zip Archives UniversalTermsrvPatch (66.3 KB)

Патч поддерживает: Windows XP SP2 SP3; Vista SP1 SP2; Windows 7 [32bit(x86)/64bit(x64)], Windows Server 2008 SP1/SP2

Скачайте и распакуйте архив, затем запустите соответствующий файл с правами администратора (кликните правой кнопкой мыши на исполняемом файле, выберите “Запуск от имени администратора”). Для 32-разрядных систем используется UniversalTermsrvPatch-x86.exe, для 64-разрядных используется UniversalTermsrvPatch-x64.exe.

Появится окно, как на картинке выше, где можно патчить termsrv.dll для снятия ограничения сеансов удаленного рабочего стола, или восстановить исходный файл в любое время (путь к резервному файлу: \Windows\System32\termsrv.dll.backup). После применения патча, перезагрузите компьютер и можно приступать к работе .

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

Служебные поlсети по RFC3330

. Summary Table

Address Block             Present Use                       Reference
———————————————————————
0.0.0.0/8            «This» Network                 [RFC1700, page 4]
10.0.0.0/8           Private-Use Networks                   [RFC1918]
14.0.0.0/8           Public-Data Networks         [RFC1700, page 181]
24.0.0.0/8           Cable Television Networks                    —
39.0.0.0/8           Reserved but subject
to allocation                       [RFC1797]
127.0.0.0/8          Loopback                       [RFC1700, page 5]
128.0.0.0/16         Reserved but subject
to allocation                             —
169.254.0.0/16       Link Local                                   —
172.16.0.0/12        Private-Use Networks                   [RFC1918]
191.255.0.0/16       Reserved but subject
to allocation                             —
192.0.0.0/24         Reserved but subject
to allocation                             —
192.0.2.0/24         Test-Net
192.88.99.0/24       6to4 Relay Anycast                     [RFC3068]
192.168.0.0/16       Private-Use Networks                   [RFC1918]
198.18.0.0/15        Network Interconnect
Device Benchmark Testing            [RFC2544]
223.255.255.0/24     Reserved but subject
to allocation                             —
224.0.0.0/4          Multicast                              [RFC3171]
240.0.0.0/4          Reserved for Future Use        [RFC1700, page 4]

Работа с AD

11 незаменимых средств управления Active Directory Те, кому приходилось иметь дело с такими вещами, как таблица Excel, перечисляющая 200 новых сотрудников, начинающих работать со следующей недели, или учетные записи пользователей, настроенные неверно, потому что кто-то в службе поддержки щелкнул то, чего щелкать не следовало, а также те, кому интересен более простой способ управления Active Directory®, помимо открытия папок «Пользователи» и «Компьютеры» каждый раз, могут воспользоваться одним из бесплатных средств администрирования.Некоторые из них встроены прямо в операционную систему Windows®, некоторые поставляются в пакете Resource Kit или в наборе средств поддержки Windows, а некоторые являются бесплатной продукцией сторонних производителей. Что это за удобные средства и где их можно достать? Давайте выясним. Начнем со встроенных средств командной строки в Windows Server® 2003, позволяющих создавать, удалять, модифицировать и искать объекты в Active Directory. CSVDE Средство CSVDE позволяет импортировать новые объекты в Active Directory, используя исходный CSV-файл; оно также дает возможность экспортировать существующие объекты в файл CSV. CSVDE нельзя использовать для изменения существующих объектов; при использовании этого средства в режиме импорта можно лишь создавать новые объекты. Экспорт списка существующих объектов с помощью CSVDE довольно прост. Ниже показано, как экспортировать объекты Active Directory в файл под названием ad.csv: csvde –f ad.csv Параметр –f указывает, что за ним следует имя выходного файла. Но следует понимать, что, в зависимости от среды, этот базовый синтаксис может привести к выводу огромного и неудобного файла. Чтобы ограничить средство экспортом лишь объектов внутри определенного структурного подразделения (OU), команду можно изменить следующим образом: csvde –f UsersOU.csv –d ou=Users,dc=contoso,dc=com Предположим далее, что мне необходимо экспортировать лишь объекты пользователя в мой файл CSV. В таком случае можно добавить параметр –r, позволяющий указать фильтр протокола LDAP для данного поиска, который ограничит число экспортируемых атрибутов (заметьте, что все нижеследующее является одной строкой): csvde –f UsersOnly.csv –d ou=Users,dc=contoso,dc=com –r “(&(objectcategory=person)(objectclass=user))” –l DN,objectClass,description Параметр –i позволяет импортировать объекты в Active Directory из исходного файла CSV. Однако создание объектов пользователя с помощью CSVDE имеет один важный недостаток: с помощью этого средства нельзя устанавливать пароли пользователей, поэтому я бы не стала использовать CSVDE для создания объектов пользователей. LDIFDE Active Directory предоставляет второе встроенное средство для пакетных операций пользователей, именуемое LDIFDE и обладающее более широкими и гибкими возможностями, чем CSVDE. Помимо создания новых объектов, LDIFDE позволяет модифицировать и удалять существующие объекты и даже расширять схему Active Directory. Платой за гибкость LDIFDE является то, что необходимый входной файл (файл LDIF) с расширением .ldf использует более сложный формат, чем простой файл CSV. (Немного поработав, можно также настраивать пароли пользователей, но об этом чуть позже.) Начнем с простого примера — экспорта пользователей в структурном подразделении в файл LDF (отметьте, что все нижеследующее является одной строкой ): ldifde -f users.ldf -s DC1.contoso.com -d “ou=UsersOU,dc=contoso,dc=com” –r “(&(objectcategory=person)(objectclass=user))” Как и в случае большинства средств командной строки, полное описание параметров LDIFDE можно получить, запустив команду LDIFDE /? . На Рис. 1 показаны те, что я использовала здесь. (Заметьте, что параметры для команд CSVDE и LDIFDE одинаковы.) По-настоящему возможности LDIFDE раскрываются при создании объектов и управлении ими. Однако перед этим необходимо создать входной файл. Нижеследующий код создает две новых учетных записи пользователя — afuller и rking; для создания входного файла введите текст в блокноте (или другом редакторе открытого текста) и сохраните его как NewUsers.ldf: dn: CN=afuller, OU=UsersOU, DC=contoso, DC=com changetype: add cn: afuller objectClass: user samAccountName: afuller dn: CN=rking, OU=UsersOU, DC=contoso, DC=com changetype: add cn: rking objectClass: user samAccountName: rking После того как создание файла завершено, запустите следующую команду: ldifde –i –f NewUsers.ldf –s DC1.contoso.com Единственный новый параметр здесь — это -i, который, как несложно догадаться, указывает, что выполняется операция импорта, а не экспорта. При модификации или удалении существующих объектов синтаксис команды LDIFDE не меняется; вместо этого изменяется содержимое файла LDF. Для изменения поля описания учетных записей пользователей создайте текстовый файл, именуемый ModifyUsers.ldf, такой как показано на Рис. 2. Рис. 2 Файл LDF ModifyUsers Изменения импортируются путем запуска того же синтаксиса команды LDIFDE, что и раньше, с указанием нового файла LDF после параметры -f. Формат LDF для удаления объектов еще проще; для удаления пользователей, с которыми вы работали, создайте файл, именуемый DeleteUsers.ldf, и введите следующее: dn: CN=afuller OU=UsersOU, DC=contoso, DC=com changetype: delete dn: CN=rking, OU=UsersOU, DC=contoso, DC=com changetype: delete Отметьте, что, в отличие от CSVDE, LDIFDE может настраивать пароли пользователей. Однако перед настройкой атрибута unicodePWD для учетной записи пользователя необходимо настроить шифрование SSL/TLS на контроллерах домена. Вдобавок, LDIFDE может создавать и модифицировать любые объекты Active Directory, а не только учетные записи пользователей. Например, нижеследующий файл LDF создаст новое расширение схемы, именуемое EmployeeID-example, в схеме леса contoso.com: dn: cn=EmployeeID-example,cn=Schema, cn=Configuration,dc=contoso,dc=com changetype: add adminDisplayName: EmployeeID-Example attributeID: 1.2.3.4.5.6.6.6.7 attributeSyntax: 2.5.5.6 cn: Employee-ID instanceType: 4 isSingleValued: True lDAPDisplayName: employeeID-example Поскольку в файлах LDIFDE используется стандартный отраслевой формат файла LDAP, приложения от сторонних производителей, которым необходимо модифицировать схему Active Directory, часто поставляют файлы LDF, с помощью которых можно изучить и одобрить изменения, прежде чем применять их к производственной среде. Помимо средств для операций пакетного импорта и экспорта, в состав Windows Server 2003 входит встроенный набор средств, позволяющий создавать, удалять и изменять различные объекты Active Directory, а также выполнять запросы к объектам, отвечающим определенным критериям. (Следует отметить, что данные средства, dsadd, dsrm, dsget, and dsquery, не поддерживаются Active Directory в Windows 2000.) Dsadd Dsadd используется для создания экземпляра класса объектов Active Directory в определенном разделе каталога. В число данных классов входят «пользователи», «компьютеры», «контакты», «группы», «структурные подразделения» и «квоты». У dsadd имеется общий синтаксис следующего вида: dsadd attributes Замечу, что каждый создаваемый тип объектов требует особого набора параметров, соотносящихся с атрибутами, доступными для этого типа. Эта команда создает один объект пользователя с различными заполненными атрибутами (отметьте, что все нижеследующее является одной строкой): dsadd user cn=afuller,ou=IT,dc=contoso,dc=com –samID afuller –fn Andrew –ln Fuller –pwd * -memberOf cn=IT,ou=Groups,dc=contoso,dc=com “cn=Help Desk,ou=Groups, dc=contoso,dc=com” –desc “Marketing Director” Параметр -memberOf требует полного различающегося имени (DN) каждой группы, к которой следует добавить пользователя, если его нужно добавить в несколько групп, можно добавить несколько DN, разделенных пробелами. Если элемент, скажем DN группы «Служба поддержки», содержит пробел, этот элемент надо поместить в двойные кавычки. Если элемент, скажем структурное подразделение IT\EMEA, содержит обратную косую черту, эту черту нужно ввести дважды: IT\\EMEA. (Эти требования относятся ко всем средствам ds*.) При использовании параметра -pwd * последует запрос на ввод пароля для пользователя в командной строке. Пароль можно указать внутри самой команды (-pwd P@ssword1), но тогда он будет отображен открытым текстом на экране или в любом текстовом файле либо файле сценария, в который вставлена команда. Аналогично, можно создать объект группы и структурное подразделение при помощи следующих двух команд: dsadd computer cn=WKS1,ou=Workstations,dc=contoso,dc=com dsadd ou “ou=Training OU,dc=contoso,dc=com” Dsmod Dsmod используется для изменения существующих объектов, а работают с ним почти так же, как с dsadd, используя различные подменю и синтаксис, зависящие от типа изменяемого объекта. Нижеследующая команда dsmod изменяет пароль пользователя и модифицирует его учетную запись так, чтобы при следующем входе в систему ему был выдан запрос на смену пароля: dsmod user “cn=afuller,ou=IT,dc=contoso,dc=com” –pwd P@ssw0rd1 –mustchpwd yes Чтобы увидеть, насколько похожи эти параметры, взгляните на синтаксис dsadd, используемый для создания пользователя с теми же настроенными атрибутами: dsadd user “cn=afuller,ou=IT,dc=contoso,dc=com” –pwd P@ssw0rd1 –mustchpwd yes Очевидно, что, зная параметры для создания объектов при помощи dsadd, можно использовать их же для изменения пользователей при помощи dsmod. Dsrm Противоположностью dsadd является dsrm; как несложно вообразить, это средство используется для удаления объектов из командной строки. Базовый синтаксис dsrm достаточно прямолинеен: просто введите dsrm, а за ним — различающееся имя объекта, который следует удалить, примерно так: dsrm cn=WKS1,ou=Workstations,dc=contoso,dc=com По умолчанию dsrm выдаст запрос «Вы действительно хотите удалить этот объект?». Введите Y и нажмите кнопку Enter. Этот запрос можно отключить с помощью параметра –noprompt, но, очевидно, что в таком случае исчезнет шанс подтвердить перед удалением, что объект выбран верно,. Два дополнительных параметра могут быть полезны при удалении объекта-контейнера, то есть структурного подразделения, которое потенциально может содержать другие объекты. Следующая команда удаляет структурное подразделение TrainingOU и все содержащиеся в нем объекты: dsrm ou=TrainingOU,dc=contoso,dc=com –subtree А эта удаляет все дочерние объекты в TrainingOU, но не трогает само структурное подразделение: dsrm ou=TrainingOU,dc=contoso,dc=com –subtree –exclude Dsmove Для перемещения или переименования объекта в Active Directory используется средство dsmove, но следует отметить, что его можно использовать лишь для перемещения объектов внутри домена. Для переноса объектов между доменами или лесами используйте средство переноса Active Directory Migration Tool (ADMT), бесплатно загружаемое с веб-узла Майкрософт. Dsmove полагается на два параметра, которые можно использовать отдельно или вместе. Даная команда изменяет фамилию в учетной записи пользователя Steve Conn: dsmove “cn=Conn, Steve,ou=IT,dc=contoso,dc=com” –newname “Steve Conn” Данная команда перемещает учетную запись Steve из структурного подразделения IT в подразделение Training: dsmove “cn=Conn, Steve,ou=IT,dc=contoso,dc=com” –newparent ou=Training,dc=contoso,dc=com Переименование и перенос можно произвести в рамках одной операции, указав оба параметра разом: dsmove “cn=Conn, Steve,ou=IT,dc=contoso,dc=com” –newname “Steve Conn” –newparent ou=Training,dc=contoso,dc=com Dsget и Dsquery В состав набора средств командной строки ds* также входят два средства, используемые для запросов информации Active Directory, а не для создания или изменения объектов. Dsget получает на входе различающееся имя (DN) объекта и выдает значение указанного атрибута или атрибутов. Dsget использует те же подменю, что dsadd и dsmod — «пользователь», «компьютер», «контакт», «группа», «структурное подразделение» и «квота». Чтобы получить имя учетной записи SAM и код безопасности (SID) учетной записи пользователя, введите следующую команду (отметьте, что все нижеследующее является одной строкой): dsget user cn=afuller,ou=IT,dc=contoso,dc=com –samAccountName –sid Результаты будут подобны показанным на Рис. 3. Рис. 3 Работа dsget Dsquery возвращает список объектов Active Directory, отвечающих указанным критериям. Следующие параметры можно указать вне зависимости от используемого подменю: dsquery -s -o Dsquery может использовать следующие подменю, каждое со своим синтаксисом, для ObjectType: «компьютер», «контакт», «подсеть», «группа», «структурное подразделение», «веб-узел», «сервер» (следует отметить, что подменю сервера извлекает данные о контроллерах домена, а не о серверах в вашей среде), «пользователь», «квота» и «раздел». А если один из данных типов запросов не является тем, чем нужно, можно использовать подменю *, позволяющее ввести запрос LDAP свободной формы. StartNode указывает местонахождение дерева Active Directory, в котором начнется поиск. Можно использовать конкретное DN, такое как ou=IT,dc=contoso,dc=com, или один из следующих описателей краткого пути: domainroot, начинающийся с корня определенного домена, или forestroot, начинающийся с корня корневого домена леса, используя сервер глобального каталога для выполнения поиска. Наконец, параметр области поиска указывает, как средство dsquery должно производить поиск в дереве Active Directory. Опросы поддерева (вариант по умолчанию) обращаются к указанному StartNode и всем его дочерним объектам, одноуровневые опросы обращаются только к непосредственным дочерним объектам StartNode, и базовые опросы обращаются только к объекту StartNode. Для лучшего понимания областей поиска представьте структурное подразделение (OU), содержащее как объекты пользователя, так и дочернее OU, которое также содержит дополнительные объекты. При использовании поддерева в качестве ообласти будет запрошено OU, все пользовательские объекты внутри него, дочернее OU и его содержимое. При одноуровневой области будет запрошены только пользователи, содержащие в OU, но не дочернее OU и его содержимое. При базовом запросе будет запрошено только само OU без запроса содержащихся в ней объектов. Наконец, можно использовать выходной формат, чтобы контролировать форматирование результатов dsquery. По умолчанию dsquery возвращает различающиеся имена всех объектов, совпадающих с запросом, примерно так: “cn=afuller,ou=Training,dc=contoso,dc=com” “cn=rking,ou=ITTraining,ou=Training,dc=contoso,dc=com” Чтобы запросить все объекты пользователей, содержащиеся в структурном подразделении IT и его дочерних OU, используйте следующее: dsquery user ou=IT,dc=contoso,dc=com Запрос можно сделать еще более точным, добавляя дополнительные параметры, такие как -disabled, возвращающий только отключенные учетные записи пользователей; -inactive x, возвращающий только пользователей, не подключавшихся в течении x или более недель; или -stalepwd x, возвращающий только пользователей, которые не меняли свои пароли в течении x или более дней. В зависимости от числа объектов в каталоге может возникнуть необходимость указать параметр -limit x при запуске запроса. По умолчанию dsquery возвращает до 100 объектов, совпадающих с параметрами запроса; но можно указать и большее число, такое как -limit 500, или использовать -limit 0, чтобы dsquery возвратило все совпадающие объекты. Можно также использовать другие подменю для выполнения полезных запросов других типов объектов. Рассмотрим следующий запрос, возвращающий каждую подсеть, определенную в «Active Directory — узлы и службы», и входящую в пространство адресов 10.1.x.x: dsquery subnet –name 10.1.* А следующую команду можно использовать для возвращения каждой подсети, находящейся на веб-узле Corp: dsquery subnet –site Corp С помощью очередного подменю можно быстро определить, сколько контроллеров домена в лесу настроено для работы серверами глобального каталога: dsquery server –forest –isgc Можно также использовать данный синтаксис, чтобы упростить определение контроллера домена в определенном домене, содержащего роль FSMO эмулятора основного контроллера домена (PDC): dsquery server –hasfsmo pdc Как и в случае с другими командами ds*, включающими подменю, все параметры, доступные в конкретном подменю dsquery, можно просмотреть, войдя в командную строку и введя dsquery user /?, dsquery computer /?, dsquery subnet /?, и так далее. Дополнительным хитрым приемом является передача исходящих данных dsquery по конвейеру в другое средство, такое как dsmod, при помощи знака | (SHIFT+обратная косая черта при английской раскладке клавиатуры). К примеру, компания переименовала отдел из «Подготовка» во «Внутреннее развитие», и теперь нужно обновить поле описания каждого относящегося к этому отделу пользователя. Одной командной строкой можно запросить все объекты пользователей, имеющие поле описания «Подготовка», и затем заменить это поле описания для всего пакета следующим образом: dsquery user –description “Training” | dsmod -description “Internal Development” Некоторые находки от сторонних производителей Поскольку Active Directory основана на стандартах LDAP, в ней можно создавать запросы и вносить изменения при помощи любого инструмента, понимающего LDAP. Многие сторонние поставщики выпустили платные средства для помощи в администрировании Active Directory, но порой можно найти и настоящие сокровища, которые распространяются бесплатно. Это, в частности, можно сказать про коллекцию, созданную обладателем звания MVP по службам каталогов Джо Ричардсом (Joe Richards) и доступной для загрузки на joeware.net/freetools. В ней можно найти многочисленные средства, служащие для решения различных задач. К трем из них я возвращаюсь постоянно — это adfind, admod и oldcmp. Adfind и Admod Adfind и admod подобны dsquery и dsmod; adfind является средством запроса с помощью командной строки для Active Directory, а admod может создавать, удалять или изменять объекты Active Directory. В отличие от средств ds*, имеющих несколько подменю и различные параметры в зависимости от типа объекта, adfind и admod пользуются единым синтаксисом вне зависимости от типа выполняемого запроса или изменения. Базовый синтаксис для adfind: adfind –b -s -f attributesDesired Запрос различающегося имени и описания всех объектов компьютеров в домене будет выглядеть как: adfind –b dc=contoso,dc=com –s subtree –f (objectclass=computer) dn description Запрос всех объектов пользователей будет выглядеть как: adfind –b dc=contoso,dc=com –s subtree –f “(&(objectcategory=person) (objectclass=user))” dn description Отметьте, что за исключением запроса содержимого LDAP, синтаксис не менялся. Работая с adfind, можно найти несколько сокращенных вариантов записи параметров, которые избавляют от лишней работы по вводу. Например, параметр -default может заменить -b dc=contoso,dc=com в предыдущем примере и провести поиск по всему домену; -gc ищет, основываясь на сборке мусора (GC), и возвращает всех пользователей в вашем лесу Active Directory. Параметр -rb также можно использовать для установки относительной базы для поиска; если, скажем, необходимо найти структурное подразделение «Подготовка» в домене phl.east.us.contoso.com, то можно заметно сэкономить время, просто указав –default –rb ou=Training, вместо –b ou=Training, dc=phl,dc=east,dc=us,dc=contoso,dc=com. Adfind может выполнять ряд функций расширенного поиска, которыми сложно управлять из командной строки без него, включая показанные на Рис. 4. Пример, использующий параметр -asq, будет запрашивать «Покажи мне членство в группах членов HelpDesk» следующим образом: adfind –default –rb cn=HelpDesk,ou=IT –asq member memberOf Admod, как следует из названия программы, используется для изменения объектов в Active Directory. Как и в случае adfind, в нем нет специализированных подменю со своими синтаксисами, которые надо запоминать; admod использует один и тот же синтаксис вне зависимости от типа обрабатываемого объекта. Admod также можно использовать для добавления, перемещения, переименования удаления и даже восстановления объектов путем простого добавления соответствующего параметра, скажем -add, -rm, -move, -undel. И точно так же, как в dsquery и dsmod, знак | можно использовать для передачи данных запроса adfind по конвейеру в admod. Обратите внимание, что выполнение восстановления с помощью admod заключается в простой операции восстановления объекта-захоронения, в котором большинство атрибутов объекта уже удалено. Для полного восстановления объекта со всеми атрибутами потребуется провести принудительное восстановление объекта. Oldcmp Есть еще одно средство из коллекции программ Джо, которое я считаю незаменимой частью своего набора средств автоматизации: oldcmp, ищущее в базе данных Active Directory учетные данные компьютеров, которые не использовались в течение указанного числа недель, и способное проводить следующие действия: • создавать отчеты об учетных записях без каких-либо действий в их отношении; • отключать неиспользуемые учетные записи компьютеров; • перемещать учетные записи компьютеров в иное, заранее указанное, структурное подразделение; • полностью удалять учетные записи компьютеров. Отмечу, что поскольку oldcmp может устроить серьезный разгром в каталоге, он снабжен несколькими встроенными функциями безопасности. Он не удаляет учетные записи, которые не были отключены ранее (если в командной строке вы не сказали: «Нет, я действительно хочу это сделать!»). Он не изменяет более 10 объектов за раз (если, опять же, обратное не указано особо), и он никогда не будет ничего делать с учетной записью компьютера контроллера домена. К настоящему моменту Джо обновил oldcmp, так что он может выполнять подобные функции также и на учетных записях пользователей, которые не использовались в течение указанного отрезка времени. Для небольшой среды Active Directory или среды, где работа идет лишь с одним-двумя дополнениями или изменениями за раз, средств с графическим интерфейсом, таких как «Active Directory — пользователи и компьютеры», может быть достаточно для повседневного администрирования, но при необходимости каждодневно добавлять или изменять большое количество объектов или простом желании найти более рациональное решение для задач администрирования переход на командную строку может намного ускорить процесс создания, изменения и удаления объектов в Active Directory. Как было показано выше, существует набор гибких и мощных бесплатных средств — как встроенных в Windows, так и распространяемых членами сообщества Active Directory. Любое из них способно намного повысить производительность работы администратора Active Directory, вместе же они становятся еще более важными для его повседневной работы

Настойка DNS сервера BIND 9

Bog BOS: DNS сервер BIND

Требуется предварительное знакомство с материалом по архитектуре DNS.

BIND является самой распространенной реализацией сервера DNS. Разработка ведется Internet Software Consortium (ISC). Текущие версии (на 28 марта 2007) — BIND 9.4.0, BIND 9.3.4 (FC6 — 9.3.2/9.3.4), BIND 9.2.8 (поддержка до 1 августа 2007, RHEL4 — 9.2.4), BIND 8.4.7, BIND 4.9.11. Лицензия собственная, позволяет использовать продукт бесплатно или за плату (контракт на поддержку).

В комплекте с сервером BIND 9 поставляются утилиты DNS, клиентская библиотека DNS resolver, облегченная клиентская библиотека lightweight resolver и соответствующий ей демон lwresd, UDP/921 (по-моему, это очень вредная идея консорциума ISC, нарушающая принцип совместимости ПО).

В статье описываются:
Формат файла настройки

Файл настройки BIND 9 обычно называется /etc/named.conf (можно изменить при установке). Формат файла зоны стандартен и приведен в описании архитектуры DNS. Утилита named-checkzone проверяет синтаксис файла зоны. В качестве параметра указываются имя зоны и имя файла. Утилита named-checkconf проверяет синтаксис файла настройки. В качестве параметра можно указать имя файла.

Комментарии в файле настройки могут записываться в стиле C, C++ или sh. Строки и идентификаторы, не являющиеся доменными именами, например, имена файлов, обязательно заключать в кавычки.

Во многих местах файла настройки используется такая синтаксическая конструкция, как список-шаблонов-адресов: список через точку с запятой шаблонов адресов, завершающийся точкой с запятой. Шаблон адреса — это либо IP-адрес, либо IP-адрес с указанием числа бит в маске адреса (например, 192.168.0.0/28), либо имя ACL (т.е. ссылка на ранее определенный утверждением acl список-шаблонов-адресов, либо список-шаблонов-адресов в фигурных скобках, либо ключевое слово key с последующим именем ключа (определяется утверждением key). Имена рекомендуется заключать в кавычки. Перед шаблоном адреса может стоять символ отрицания (восклицательный знак). Ключи попали в эту конструкцию, потому что они тоже определяют права доступа, хотя и не имеют отношения к адресам хостов. Исходный адрес сравнивается последовательно с элементами списка до первого успешного соответствия. Если перед этим элементом списка стоит символ отрицания, то процесс завершается и сравнение со всем списком-шаблонов-адресов считается неудачным. Предопределены следующие имена ACL:

any (соответствует любой хост)
none (не соответствует никакой хост)
localhost (соответствует IPv4 адрес любого интерфейса хоста)
localnets (соответствует любой IPv4 адрес сети, к которой принадлежит любой интерфейс хоста)
Список-ключей — это список ключей через точку с запятой, завершающийся точкой с запятой.

Файл настройки состоит из утверждений, завершающихся точкой с запятой. Утверждение начинается с ключевого слова и может содержать блок предложений, заключенный в фигурные скобки. Предложение в блоке также завершается точкой с запятой, начинается с ключевого слова и может содержать блок. Утверждения обрабатываются последовательно. Предусматриваются следующие типы утверждений:

acl имя-acl { список-шаблонов-адресов }; (определяет именованный список-шаблонов-адресов)
controls { inet ip-адрес [port порт-TCP ] allow { список-шаблонов-адресов } keys { список-ключей }; … }; (каждое предложение inet определяет права доступа (адреса и ключи) к управляющему каналу rndc, открываемому по указанному адресу и номеру порта; номер порта по умолчанию — 953; вместо адреса можно указать символ «*» — IPv4 адрес любого интерфейса хоста)
include имя-файла; (содержимое указанного файла включается в текст файла настройки; очень удобно для включения текста ключей из файла, защищенного от чтения посторонними; может использоваться внутри view)
key идентификатор-ключа { algorithm hmac-md5; secret «секретная-строка-в-base-64»; }; (определяет ключ для аутентификации и авторизации: rndc и TSIG; определение ключа для TSIG можно описывать внутри утверждения view; использовать ключ можно в утверждениях server, controls и в списке-шаблонов-адресов)
logging (настройка журнализации; возможно только одно утверждение данного типа)
lwres (настройка сервера для выполнения функций демона lwresd)
options (глобальные опции и опции по умолчанию; возможно только одно утверждение данного типа)
server ip-адрес-удаленного-сервера { опция; … }; (позволяет конкретизировать значения некоторых опций для конкретного сервера)
trusted-keys — определение ключей DNSSEC
view — описание вида (точки зрения) на доменное пространство, различным клиентам может быть представлено различное видение на пространство доменных имен
zone — описание зоны
Утверждение options может содержать следующие предложения (не пугайтесь их количеству — большинство либо уже устарело, либо еще не реализовано :):

version «строка»; (по умолчанию — реальный номер версии; для отключения обработки надо использовать строку none, а лучше закрыть класс CHAOS из вида совсем, т.к. неизвестно о чем он ябедничает еще; сервер позволяет узнать номер версии с помощью запроса к встроенной псевдозоне bind класса CHAOS:
host -t txt -c CHAOS version.bind адрес-сервера
hostname hostname_string; (по умолчанию — gethostname(); для отключения обработки надо использовать строку none, а лучше закрыть класс CHAOS из вида совсем, т.к. неизвестно о чем он ябедничает еще; сервер позволяет узнать имя конкретного хоста из группы anycast с помощью запроса к встроенной псевдозоне bind класса CHAOS (на моем сервере не заработало, попытка указать hostname приводит к сообщению о неизвестной опции):
host -t txt -c CHAOS hostname.bind адрес-сервера
directory имя-каталога; (абсолютное имя рабочего каталога, все упоминаемые относительные имена файлов лежат в нем)
key-directory имя-каталога; (абсолютное имя каталога, в котором лежат публичные и частные ключи для безопасного изменения зон; отдельный каталог может потребоваться для увеличения безопасности)
named-xfer имя-файла; (устарело)
tkey-domain доменное-имя;
tkey-dhkey имя-ключа этикетка-ключа;
dump-file имя-файла; (named_dump.db; имя файла, в который сбрасывается текущее состояние кеша доменных имен по команде rndc dumpdb)
memstatistics-file path_name; (не реализовано)
pid-file имя-файла; (/var/run/named.pid; в этот файл записывается номер процесса; можно указать none)
statistics-file имя-файла; (named.stats; к этому файлу добавляется статистика по команде rndc stats)
zone-statistics yes_or_no; (no; собирать статистику отдельно для каждой «своей» зоны)
auth-nxdomain yes_or_no; (no; всегда устанавливать бит AA в ответах NXDOMAIN, даже если сервер не является уполномоченным для данного домена; может потребоваться для совместимости)
deallocate-on-exit yes_or_no; (устарело)
dialup dialup_option; (позволяет уменьшить число дозвонов, если сервер находится на клиентском конце dialup-on-demand линии)
fake-iquery yes_or_no; (устарело)
fetch-glue yes_or_no; (устарело)
has-old-clients yes_or_no; (устарело; используйте auth-nxdomain yes и rfc2308-type1 no)
host-statistics yes_or_no; (не реализовано)
minimal-responses yes_or_no; (no; заполнять дополнительные секции в ответах только при крайней необходимости — отрицательный результат, делегирование; уменьшает нагрузку на сервер)
multiple-cnames yes_or_no; (устарело; позволял использовать множественные CNAME в нарушение стандарта)
notify yes_or_no_or_explicit; (yes; посылать DNS NOTIFY при изменении зоны, для которой сервер уполномочен, серверам из NS и also-notify; explicit — посылать только серверам из списка also-notify)
recursion yes_or_no; (yes; обслуживать рекурсивные запросы)
rfc2308-type1 yes_or_no; (не реализовано)
use-id-pool yes_or_no; (устарело)
maintain-ixfr-base yes_or_no; (устарело)
forward ( only | first ) ; (first; действует только при непустом списке forwarders; перенаправлять запросы, не имеющие ответов в кеше или своих зонах, серверам, указанным в списке forwarders; позволяет организовать общий кеш для нескольких серверов или доступ в Интернет через прокси; first — сначала делается запрос к серверам из списка, при неудаче производится собственный поиск; only — собственный поиск не производится; можно настраивать отдельно для каждой зоны — см. утверждение zone)
forwarders { ip_addr [port ip_port] ; … }; (пусто; список IP-адресов и, возможно, номера портов серверов, которые будут обслуживать перенаправленные запросы; смотри forward)
check-names ( master | slave | response )( warn | fail | ignore ); (не реализовано, т.е. ignore?)
allow-notify { список-шаблонов-адресов }; (первичный сервер зоны; от кого наш сервер как вторичный уполномоченный сервер будет принимать извещения об изменениях зоны; можно настраивать отдельно для каждой зоны — см. утверждение zone)
allow-query { список-шаблонов-адресов }; (any; от кого принимать обычные запросы; можно настраивать отдельно для каждой зоны — см. утверждение zone)
allow-transfer { список-шаблонов-адресов };(any; от кого принимать запросы на передачу зоны; можно настраивать отдельно для каждой зоны — см. утверждение zone)
allow-recursion { список-шаблонов-адресов }; (any; от кого принимать рекурсивные запросы; данные из кеша под запрет не попадают)
allow-update-forwarding { список-шаблонов-адресов }; (none; от каких хостов вторичный сервер будет принимать динамические изменения зоны для передачи их первичному уполномоченному серверу; авторы не советуют)
allow-v6-synthesis { список-шаблонов-адресов }; (none; заморочки со «старыми» реализациями IPv6)
blackhole { список-шаблонов-адресов }; (none; с этих адресов запросы не принимаются и к ним запросы не посылаются)
listen-on [ port ip_port ] { список-шаблонов-адресов }; (по умолчанию — все интерфейсы, порт 53; адрес и порт для приема запросов; может быть несколько таких предложений)
listen-on-v6 [ port ip_port ] { список-шаблонов-адресов }; (none; для IPv6)
query-source [ address ( ip_addr | * ) ] [ port ( ip_port | * ) ]; (обратный адрес и номер порта для запросов к другим серверам; по умолчанию или * в качестве адреса — INADDR_ANY; по умолчанию или * в качестве номера порта — случайный непривилегированный порт; в TCP запросах всегда используется случайный непривилегированный порт)
query-source-v6 … (для IPv6)
also-notify { ip_addr [port ip_port] ; … ] }; (по умолчанию — пустая строка; список адресов серверов, которым посылается DNS NOTIFY при изменении зоны, для которой сервер уполномочен, в дополнение к серверам из списка NS; см. предложение notify и утверждение zone)
max-transfer-time-in число-минут; (120; максимальное время приема зоны)
max-transfer-time-out число-минут; (120; максимальное время передачи зоны)
max-transfer-idle-in число-минут; (60; максимальное время отсутствия прогресса при приеме зоны)
max-transfer-idle-out число-минут; (60; максимальное время отсутствия прогресса при передаче зоны)
serial-query-rate раз-в-секунду; (20; максимальное число запросов SOA в секунду со стороны нашего сервера как вторичного уполномоченного сервера к соответствующим первичным серверам для определения необходимости приема зоны)
serial-queries number; (устарело)
transfer-format ( one-answer | many-answers ); (many-answers; при выборе формата one-answer при передаче зоны используется отдельный пакет для каждой RR, many-answers — в каждый пакет упаковывается столько RR, сколько в него может поместиться; many-answers эффективнее, но не поддерживается BIND 4; см. утверждение server)
transfers-in число; (10; максимальное число одновременно принимаемых зон)
transfers-out число; (10; максимальное число одновременно передаваемых зон)
transfers-per-ns число; (2; максимальное число одновременно принимаемых зон с одного сервера; см. утверждение server)
transfer-source ( ip4_addr | * ) [port ip_port] ; (по умолчанию — адрес интерфейса, «ближайшего» по мнению ОС к удаленному серверу; определяет локальный адрес при запросе передачи зоны от удаленного сервера; также определяет адрес и UDP порт для перенаправляемых динамических изменений и проверок изменения зоны на первичном сервере (запрос SOA); именно этот адрес должен быть разрешен для передачи на удаленном сервере, так что рекомендуется задавать его явно; см. утверждения server и view)
transfer-source-v6 … (передача зоны осуществляется с помощью IPv6)
notify-source ( ip4_addr | * ) [port ip_port] ; (?; определяет локальный адрес и UDP порт при посылке DNS NOTIFY вторичным серверам; именно этот адрес должен быть указан при настройке вторичного сервера в предложении master или allow-notify; см. утверждения zone и view)
notify-source-v6 … (посылка DNS NOTIFY осуществляется с помощью IPv6)
max-ixfr-log-size number; (устарело)
max-journal-size размер; (unlimited; максимальный размер журнального файла — хранит динамические изменения (RFC 2136, RFC 3007) описания зоны на первичном сервере или результат обновлений зоны в формате IXFR (RFC 1995) на вторичном сервере; имя файла образуется из имени зоны добавлением суффикса .jnl; файл имеет двоичный формат; изменения отображаются на файл зоны с некоторым интервалом с целью уменьшения нагрузки на компьютер, поэтому файл зоны нельзя редактировать вручную; используется для восстановлении файла зоны при перезапуске)
coresize размер; (default, т.е. значение заданное при запуске процесса, см. setrlimit(2) и ulimit -c; размер coredump; можно использовать масштабирующие коэффициенты K, M и G)
datasize размер; (default, т.е. значение заданное при запуске процесса, см. setrlimit(2) и ulimit -d; максимальный размер сегмента данных, который ОС выделит процессу; рекомендуется использовать только для увеличения недостаточного значения по умолчанию; можно использовать масштабирующие коэффициенты K, M и G)
files число; (unlimited; максимальное число одновременно открытых файлов)
stacksize размер; (default, т.е. значение заданное при запуске процесса, см. setrlimit(2) и ulimit -s; максимальный размер сегмента стека, который ОС выделит процессу; можно использовать масштабирующие коэффициенты K, M и G
cleaning-interval число-минут; (60; период очистки кеша от RR с истекшим TTL)
heartbeat-interval number; (для dialup-ных зон)
interface-interval число-минут; (60; интервал сканирования списка активных интерфейсов; 0 — сканировать только при запуске; сервер перестает прослушивать опущенные интерфейсы и начинает прослушивать вновь появившиеся при условии, что они подходят под шаблон listen-on)
statistics-interval number; (не реализовано)
topology { список-шаблонов-адресов }; (не реализовано)
sortlist { список-шаблонов-адресов }; (предложение позволяет организовать сортировку RR по адресу в ответе клиенту в зависимости от адреса клиента; правильно настроенный клиент должен делать это сам, настраивать это на сервере — утомительно)
rrset-order { [ class класс-записи ] [ type тип-записи ] [ name «доменное-имя» ] order ( fixed | random | cyclic ) ; … }; (по умолчанию: class — ANY, type — ANY, name — *; предложение позволяет отсортировать RR в ответе клиенту в зависимости от класса, типа и значения доменного имени; fixed — не менять порядок записей; random — перемешивать записи в случайном порядке; cyclic — при каждом запросе первой ставится очередная запись; действует только последнее предложение rrset-order в списке; не реализовано; сервер возвращает RR в случайном порядке?)
lame-ttl число-секунд; (600; кешировать информацию о неверном делегировании зон (lame-server), чтобы уменьшить нагрузку на журнал; не более 1800; похоже, что кеширование не реализовано?)
max-ncache-ttl число-секунд; (10800; максимальное время хранения в кеше отрицательных ответов; не более 7 дней — 604800 секунд)
max-cache-ttl число-секунд; (604800; максимальное время хранения в кеше положительных ответов)
sig-validity-interval число-дней; (30; время окончания действия цифровых подписей, автоматически генерируемых при динамическом обновлении DNSSEC зоны; время начала действия подписи — за час до текущего времени; не более 3660 дней)
min-roots number; (не реализовано)
use-ixfr yes_or_no; (устарело)
provide-ixfr yes_or_no; (yes; отвечает как первичный сервер на запросы на передачу обновленной зоны в формате изменений — IXFR; данная опция нужна только для борьбы с ошибочной реализацией IXFR на удаленном сервере; см. утверждение server)
request-ixfr yes_or_no; (yes; запрашивает как вторичный сервер передачу обновлений зоны в формате изменений — IXFR; если удаленный сервер не поддерживает IXFR, то автоматически происходит откат к протоколу AXFR, данная опция нужна только для борьбы с ошибочной реализацией IXFR на удаленном сервере; см. утверждение server)
ixfr-from-differences yes_or_no; (no; вычисление и запись в журнал разницы между старым и новым содержимым зоны для последующей передачи ее в формате IXFR)
treat-cr-as-space yes_or_no; (устарело; NL и CRLF обрабатываются всегда)
min-refresh-time число-секунд; (ограничивает интервал обновления зоны, указанный в SOA; см. утверждения view и zone)
max-refresh-time число-секунд; (ограничивает интервал обновления зоны, указанный в SOA; см. утверждения view и zone)
min-retry-time число-секунд; (ограничивает интервал повтора попыток обновления зоны, указанный в SOA; см. утверждения view и zone)
max-retry-time число-секунд; (ограничивает интервал повтора попыток обновления зоны, указанный в SOA; см. утверждения view и zone)
port ip_port; (53; номер TCP и UDP портов, который сервер будет использовать для приема и передачи пакетов; применимо только для отладки)
additional-from-auth yes_or_no; (yes; можно отключать только при отключении обслуживания рекурсивных запросов; заполнять дополнительную секцию ответа, если эта информация есть в «своих» зонах)
additional-from-cache yes_or_no; (yes; можно отключать только при отключении обслуживания рекурсивных запросов; заполнять дополнительную секцию ответа, если эта информация есть кеше)
random-device path_name; (/dev/random; устройство или файл в качестве источника случайных чисел)
max-cache-size размер; (unlimited; максимальный размер памяти, выделяемой под кеш; можно использовать масштабирующие коэффициенты K, M и G)
tcp-clients число; (100; максимальное число одновременно обслуживаемых TCP соединений)
recursive-clients число; (1000; максимальное число одновременно обслуживаемых запросов; каждый запрос требует 20 КБ памяти)
match-mapped-addresses yes_or_no; (для IPv6)
root-delegation-only [exclude { «имя»; … } ]; (корневые зоны и зоны первого уровня, кроме списка исключений («DE», «LV», «US», «MUSEUM»), должны только делегировать подзоны)
Утверждение server может использоваться на верхнем уровне файла настройки или быть вложено в утверждение view. Если утверждение view содержит хотя бы одно утвержение server, то для данного вида используются только они (глобальные утверждения server игнорируются), иначе глобальные утверждения server действуют и на данный вид. Утвержение server может содержать следующие предложения:

bogus yes_or_no; (no; не отправлять запросы данному серверу)
provide-ixfr yes_or_no; (позволяет изменить значение опции, заданной глобально или для данного вида)
request-ixfr yes_or_no; (позволяет изменить значение опции, заданной глобально или для данного вида)
edns yes_or_no; (yes; пытаться ли использовать EDNS; ?)
transfers число; (позволяет изменить значение опции transfers-per-ns, заданной глобально)
transfer-format ( one-answer | many-answers ) ; (позволяет изменить значение опции, заданной глобально)
keys { string; … } ; (задает идентификатор ключа для подписи сообщения TSIG для данного сервера; ответ не обязан быть подписан этим ключом; реализован только один ключ на сервер)
Утверждение zone устанавливает опции, специфические для указанной зоны. Формат утверждения следующий:

zone имя-зоны [ класс ] {
type тип-зоны;
[ опция; … ]
};
Имя зоны — это доменное имя корневого узла зоны. Тип зоны определяет роль, которую сервер будет исполнять для этой зоны:

master — сервер является первичным уполномоченным сервером для данной зоны, т.е. загружает содержимое зоны из файла зоны, указанного опцией file
slave — сервер является вторичным уполномоченным сервером для данной зоны; содержимое зоны считывается от одного из серверов, указанных в опции masters; указание имени файла в опции file позволяет сохранять резервную копию зоны в файле
hint — позволяет задать с помощью опции file имя файла, содержащего описание корневой зоны; этот файл можно взять в Internic; сервер при загрузке обращается к одному из корневых серверов, перечисленных в этом файле, для получения текущего списка корневых серверов; полученный список используется в течении указанного TTL; для класса IN имеется встроенный список предполагаемых корневых серверов
stub — использовался в предыдущих версиях BIND для упрощения настройки; использовать не рекомендуется
forward — позволяет задавать список серверов, к которым будут перенаправляться запросы, не имеющие ответа в кеше, отдельно для данной зоны (см. предложения forward и forwarders в утверждении options)
delegation-only — эта зона может содержать только записи о делегировании подзон
Опции зоны (большинство опций позволяют заменить глобальные значения, заданные в утверждении options или взятые по умолчанию; они имеют тот же самый синтаксис и семантику):

masters [port ip_port] { ip_addr [port ip_port] [key ключ]; […] }; (адреса и номера портов серверов, с которых брать содержимое зоны; порт 53 по умолчанию; номер порта перед списком задает общий номер порта для всех серверов; если указано несколько серверов, то они опрашиваются все, а зона запрашивается с того из них, у кого она имеет наибольший серийный номер; указание ключа позволяет проверять правильность передачи с помощью цифровой подписи TSIG)
file «имя-файла»; (имя файла, в котором хранится содержимое зоны)
allow-update { список-шаблонов-адресов }; (none; каким хостам разрешено посылать динамические изменения зоны первичному серверу; права доступа на основе IP адресов опасны! используйте только списки шаблонов на основе ключей)
update-policy { update_policy_rule […] } ; (позволяет задать правила доступа на изменение отдельных записей при динамическом изменении зоны на основе авторства (identity) сообщений; имя автора извлекается из подписи TSIG или SIG(0); применим только для первичного сервера; несовместим с allow-update; правила рассматриваются по очереди до первого совпадения автора, имени и типа; каждое правило состоит из ключевого слова grant или deny, имени автора, способа сравнения имен, полного доменного имени и списка типов (м.б. опущен); в качестве автора можно указывать имя ключа, используемого для создания TSIG или SIG(0) или разделяемого секрета TKEY, а также шаблон (?); опущенный список типов соответствует любому типу, кроме SIG, NS, SOA и NXT; тип ANY соответствует любому типу, кроме NXT); допустимы следующие способы сравнения:
name (посимвольное сравнение)
subdomain (изменяемое имя должно быть поддоменом или совпадать с указанным в правиле)
wildcard (?)
self (изменяемое имя должно соответствовать имени автора, имеет смысл если для каждого изменяемого доменного имени создается ключ с таким же именем, а в качестве имени автора указывается шаблон *)
database «string»; (тип БД для хранения содержимого зоны во время работы; по умолчанию — «rbt»; другие типы БД необходимо явно указывать при сборке)
delegation-only yes_or_no (эта зона может содержать только записи о делегировании подзон; только для зон типа stub или hint)
allow-notify — описание см. в утверждении options
allow-query — описание см. в утверждении options
allow-transfer — описание см. в утверждении options
allow-update-forwarding — описание см. в утверждении options
also-notify — описание см. в утверждении options
check-names (warn|fail|ignore); (не реализовано)
dialup — описание см. в утверждении options
forward — описание см. в утверждении options
forwarders — описание см. в утверждении options, только для зоны типа forward
ixfr-base — устарело
ixfr-tmp-file — устарело
max-ixfr-log-size — устарело
max-transfer-idle-in — описание см. в утверждении options
max-transfer-idle-out — описание см. в утверждении options
max-transfer-time-in — описание см. в утверждении options
max-transfer-time-out — описание см. в утверждении options
notify — описание см. в утверждении options
pubkey number number number string ; (не реализовано)
transfer-source — описание см. в утверждении options
transfer-source-v6 — описание см. в утверждении options
notify-source — описание см. в утверждении options
notify-source-v6 — описание см. в утверждении options
zone-statistics — описание см. в утверждении options
sig-validity-interval — описание см. в утверждении options
min-refresh-time — описание см. в утверждении options
max-refresh-time — описание см. в утверждении options
min-retry-time — описание см. в утверждении options
max-retry-time — описание см. в утверждении options
ixfr-from-differences — описание см. в утверждении options
key-directory — описание см. в утверждении options

Критические even id для мониторинга.

10 критически важных event ID для мониторинга recovery mode

Системное администрирование*, Блог компании Netwrix
Рэнди Франклин Смит (CISA, SSCP, Security MVP) имеет в своем арсенале очень полезный документ, рассказывающий о том, какие события (event IDs) обязательно должны отслеживаться в рамках обеспечения информационной безопасности Windows. В этом документе изложена крайне полезная информация, которая позволит Вам “выжать” максимум из штатной системы аудита. Мы подготовили перевод этого материала. Заинтересованных приглашаем под кат.

О том, как настроить аудит, мы уже обстоятельно писали в одном из наших постов. Но из всех event id, которые встречаются в журналах событий, необходимо остановить свое внимание на нескольких критических важных. На каких именно – решать каждому. Однако Рэнди Франклин Смит предлагает сосредоточить внимание на 10 важных событиях безопасности в Windows.
Контроллеры доменов
Event ID — (Категория) — Описание

1) 675 или 4771 
(Аудит событий входа в систему)
Событие 675/4771 на контроллере домена указывает на неудачную попытку войти через Kerberos на рабочей станции с доменной учетной записью. Обычно причиной этого является несоответствующий пароль, но код ошибки указывает, почему именно аутентификация была неудачной. Таблица кодов ошибок Kerberos приведена ниже.

2) 676, или Failed 672 или 4768
(Аудит событий входа в систему) 
Событие 676/4768 логгируется для других типов неудачной аутентификации. Таблица кодов Kerberos приведена ниже.
ВНИМАНИЕ: В Windows 2003 Server событие отказа записывается как 672 вместо 676.

3) 681 или Failed 680 или 4776
(Аудит событий входа в систему) 
Событие 681/4776 на контроллере домена указывает на неудачную попытку входа в систему через
NTLM с доменной учетной записью. Код ошибки указывает, почему именно аутентификация была неудачной.
Коды ошибок NTLM приведены ниже.
ВНИМАНИЕ: В Windows 2003 Server событие отказа записывается как 680 вместо 681.

4) 642 или 4738 
(Аудит управления учетными записями)
Событие 642/4738 указывает на изменения в указанной учетной записи, такие как сброс пароля или активация деактивированной до этого учетной записи. Описание события уточняется в соответствие с типом изменения.

5) 632 или 4728; 636 или 4732; 660 или 4756
(Аудит управления учетными записями)
Все три события указывают на то, что указанный пользователь был добавлен в определенную группу. Обозначены Глобальная (Global), Локальная (Local) и Общая (Universal) соответственно для каждого ID.

6) 624 или 4720 
(Аудит управления учетными записями)
Была создана новая учетная запись пользователя

7) 644 или 4740
(Аудит управления учетными записями)
Учетная запись указанного пользователя была заблокирована после нескольких попыток входа

8) 517 или 1102
(Аудит системных событий)
Указанный пользователь очистил журнал безопасности
Вход и выход из системы (Logon/Logoff)
Event Id — Описание

528 или 4624 — Успешный вход в систему
529 или 4625 — Отказ входа в систему – Неизвестное имя пользователя или неверный пароль
530 или 4625 Отказ входа в систему – Вход в систему не был осуществлен в течение обозначенного периода времени
531 или 4625 — Отказ входа в систему – Учетная запись временно деактивирована
532 или 4625 — Отказ входа в систему – Срок использования указанной учетной записи истек
533 или 4625 — Отказ входа в систему – Пользователю не разрешается осуществлять вход в систему на данном компьютере
534 или 4625 или 5461 — Отказ входа в систему – Пользователь не был разрешен запрашиваемый тип входа на данном компьютере
535 или 4625 — Отказ входа в систему – Срок действия пароля указанной учетной записи истек
539 или 4625 — Отказ входа в систему – Учетная запись заблокирована
540 или 4624 — Успешный сетевой вход в систему (Только Windows 2000, XP, 2003)
Типы входов в систему (Logon Types)
Тип входа в систему — Описание

2 — Интерактивный (вход с клавиатуры или экрана системы)
3 — Сетевой (например, подключение к общей папке на этом компьютере из любого места в сети или IIS вход — Никогда не заходил 528 на Windows Server 2000 и выше. См. событие 540)
4 — Пакет (batch) (например, запланированная задача)
5 — Служба (Запуск службы)
7 — Разблокировка (например, необслуживаемая рабочая станция с защищенным паролем скринсейвером)
8 — NetworkCleartext (Вход с полномочиями (credentials), отправленными в виде простого текст. Часто обозначает вход в IIS с “базовой аутентификацией”)
9 — NewCredentials
10 — RemoteInteractive (Терминальные службы, Удаленный рабочий стол или удаленный помощник)
11 — CachedInteractive (вход с кешированными доменными полномочиями, например, вход на рабочую станцию, которая находится не в сети)
Коды отказов Kerberos
Код ошибки — Причина

6 — Имя пользователя не существует
12 — Ограничение рабочей машины; ограничение времени входа в систему
18 — Учетная запись деактивирована, заблокирована или истек срок ее действия
23 — Истек срок действия пароля пользователя
24 — Предварительная аутентификация не удалась; обычно причиной является неверный пароль
32 — Истек срок действия заявки. Это нормальное событие, которое логгируется учетными записями компьютеров
37 — Время на рабочей машины давно не синхронизировалось со временем на контроллере домена
Коды ошибок NTLM
Код ошибки (десятичная система) — Код ошибки (16-ричная система) — Описание

3221225572 — C0000064 — Такого имени пользователя не существует
3221225578 — C000006A — Верное имя пользователя, но неверный пароль
3221226036 — C0000234 — Учетная запись пользователя заблокирована
3221225586 — C0000072 — Учетная запись деактивирована
3221225583 — C000006F — Пользователь пытается войти в систему вне обозначенного периода времени (рабочего времени)
3221225584 — C0000070 — Ограничение рабочей станции
3221225875 — C0000193 — Истек срок действия учетной записи
3221225585 — C0000071 — Истек срок действия пароля
3221226020 — C0000224 — Пользователь должен поменять пароль при следующем входе в систему

Шпаргалка по firewall-cmd

Шпаргалка по параметрам fierwalld-cmd или опять настройка firewalld

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

Получение справки:

  • -h, —help — Возвращает описание опций firewall-cmd.
  • -V, —version — Возвращает версию firewalld.

Проверка статуса:

  • —state Проверяет активен ли демон firewalld. Возвращает код 0 если демон активен или NOT_RUNNING если демон не запущен. Так же выводит информацию в стандартный поток STDOUT

Перезагрузка:

  • —reload — Перезагружает правила межсетевого экрана с сохранением информации о состоянии.
  • —complete-reload — Полностью перезагружает межсетевой экран, в том числе перезагружает модули ядра (netfilter)/ Очевидно что все соединения будут сброшены и временные правила потеряны. Эта перезагрузка для особо неприятных случаев.

Паника (внештатный режим):

  • —panic-on — Включае режим паники. Все входящие и исходящие пакеты без исключения отбрасываются, все соединения со временем разрываются. Идеально подходит на случай обнаружения взлома или иных серьёзных проблем.
  • —panic-off — Отключить режим паники. Брэндмауер начинает работать в штатном режиме, некоторые соединения могут быть восстановлены, если режим паники длился меньше время смерти для этих соединений.
  • —query-panic — Возвращает 0 если режим паники включен и 1 если выключен.

Опции обработки зон:

  • —get-default-zone — Возвращает зону по умолчанию для соединений и интерфейсов (Изначально по умолчанию public).
  • —set-default-zone=<zone> — Устанавливает зону по умолчанию для соединений и интерфейсов (Для которых зона не была установлена). Это постоянные изменения.
  • —get-zones — Возвращает предопределенных зон служб используя пробелы в качестве разделителя.
  • —get-services — Возвращает список стандартных служб используя пробелы в качестве разделителя.
  • —get-icmptypes — Возвращает список предопределенных типов ICMP используя пробелы в качестве разделителя
  • —get-active-zones — Возвращает список активных в настоящее время зон вместе с интерфейсами в этих зонах в формате:
    <zone1>: <interface1> <interface2> ..
    <zone2>: <interface3> ..
  • —get-zone-of-interface=<interface> — Возвращает зону которой пренадлежит интерфейс <interface> или ничего, если интерфейсу не назначена зона.
  • —list-all-zones — Возвращает список всех действий во всех зонах в формате:
    <zone>
    interfaces: <interface1> ..
    services: <service1> ..
    ports: <port1> ..
    forward-ports: <forward port1> ..
    icmp-blocks: <icmp type1> ..

Опции обработки интерфейсов:

Эти опции относятся только к одной конкретной зоне. Если используется —zone=<zone>, то они влияют на зону <zone>. Если —zone=<zone> опущен, то опции влияют на зону «по умолчанию» (смотрите —get-default-zone). Получить список предопределенных зон можно используя —get-zones. Имя интерфейса это строка длинной не более 16 символов, оно не может содержать », ‘/’, ‘!’ и ‘*’. [—zone=<zone>]

  • -list-interfaces — Возвращает список интерфейсов которые пренадлежат к зоне <zone>. Если параметр —zone опущен, то используется зона «по умолчанию». [—zone=<zone>]
  • —add-interface=<interface> — Добавляет интерфейс <interface> в зону <zone>. Если параметр —zone опущен, то используется зона «по умолчанию».
  • [—zone=<zone>] { —change-interface=<interface> | —change —zone=<interface> } — Изменить зону интерфейса<interface> принадлежащего зоне <zone>. Если параметр —zone опущен, то используется зона «по умолчанию». Если старая и новая зона совпадают то команда ничего не делает и не возвращает ошибки. Если интерфейс не принадлежал ранее к этой зоне то он будет в неё добавлен, как при использовании параметра —add-interface.
  • [—zone=<zone>]—query-interface=<interface> — Возвращает 0 если интерфейс <interface> принадлежит к зоне <zone> и 1 если не пренадлежит.
  • [—zone=<zone>]—remove-interface=<interface> — Удаляет интерфейс<interface> из зоны <zone>.Если параметр —zone опущен, то используется зона «по умолчанию»

.Опции настройки и запроса зон:

Чтобы использовать эти параметры следует знать какие действия и когда можно использовать. Об этом написано ниже.

  • [—zone=<zone>] —add-ACTION [—timeout=<seconds>] — Добавить действиеACTION для зоны <zone>. Эта опция может быть указана несколько раз. Если параметр —zone опущен, то используется зона «по умолчанию».Чтобы получить зону по умолчанию используется —get-default-zone. Если указан тайм-аут то действие ACTION будет активно указанное количество секунд и затем удалено.
  • [—zone=<zone>] —remove-ACTION — Удалить действие ACTION из зоны<zone>. Эта опция может быть указан несколько раз. Если параметр —zone опущен, то используется зона «по умолчанию». Если действие было добавлено с указанием тайм-аута, оно всё равно будет удалено.
  • [—zone=<zone>] —query-ACTION — Возвращает 0 если действие ACTION было добавлено для зоны <zone> и 1 в противном случае. Если параметр —zone опущен, то используется зона «по умолчанию».
  • [—zone=<zone>] —add-masquerade [—timeout=<seconds>] — Включить маскарад для зоны<zone>. Если параметр —zone опущен, то используется зона «по умолчанию». Если указан тайм-аут, маскарадинг будет активным в течение указанного количества секунд.
  • [—zone=<zone>] —remove-masquerade — Отключить маскарад для зоны <zone>. Если параметр —zone опущен, то используется зона «по умолчанию». Если маскарадинг был включен с тайм-аут, он всё равно будет отключен.
  • [—zone=<zone>] —query-masquerade — Возвращает 0 если маскарадинг включен для зоны <zone> и 1 в противном случае.Если параметр —zone опущен, то используется зона «по умолчанию».
  • [—zone=<zone>] —list-services — Возвращает список сервисов добавлены в зону <zone> разделенный пробелами. Если параметр —zone опущен, то используется зона «по умолчанию». Чтобы получить список всех предустановленных сервисов используйте —get-services.
  • [—zone=<zone>] —list-ports— Возвращает список портов добавленных в зону <zone> разделённый пробелами.Списрок имеет формат: <port>[-<port>]/<protocol>, где в качестве порта может быть указан диапазон портов.Если параметр —zone опущен, то используется зона «по умолчанию».
  • [—zone=<zone>]—list-icmp-blocks — Список типов ICMP пакетов добавлнных в зону <zone> разделенный пробелами. Если параметр —zone опущен, то используется зона «по умолчанию». Для получения списка всех предопределенных типов ICMP используйте —get-icmptypes.
  • [—zone=<zone>] —list-forward-ports — Возвращает список всех «проброшенных» портов добавленных в зону<zone>.Если параметр —zone опущен, то используется зона «по умолчанию».
  • [—zone=<zone>] —list-all — Возвращает список всех действий добавленных или включенных в зону <zone>. Если параметр —zone опущен, то используется зона «по умолчанию».

Варианты действий для использования с опциями настройки и запроса зон:

Эти действия (ACTION) используются в —add-ACTION, —remove-ACTION и —query-ACTION предыдущего раздела.

  • service=<service> — Использовать одну из стандартных служб. Для получения списка всех стандартных служб используйте —get-services.
  • port=<port>[-<port>]/<protocol> — Использовать порт <port> или диапазон портов <port>-<port> для работы протоколы. Порт — это номер порта от 1 до 65535. Протокол может быть TCP или UDP.
  • icmp-block=<icmptype> — .Использовать предопределенные типы ICMP пакетов. Для получения списка всех предопределенных типов ICMP используйте —get-icmptypes.
  • forward-port=port=<port>[-<port>]:proto=<protocol>:toport=<port>[-<port>] — Использовать порт при переадресации пакетов. Указываются исходный и целевой порты или диапазоны портов для протокола. Протоколом может быть UDP или TCP. Проброс осуществляется с локального порта port на локальный toport.
  • forward-port=port=<port>[-<port>]:proto=<protocol>:toaddr=<address> — Проброс локального порта port в тот же порт на хосте toaddr.
  • forward-port=port=<port>[-<port>]:proto=<protocol>:toport=<port>[-<port>]:toaddr=<address> — Проброс локального порта port в порт toport на хосте

Постоянные параметры:

Постоянные параметры будут хранится в настройках и не исчезнут после перезагрузки. Так же их изменение вступят в силу только после перезагрузки или перезапуска системы.(Ключевое слово тут —permanent) Можно использовать:

  • —permanent { —get-zones | —get-services | —get-icmptypes }
  • —permanent [—zone=<zone>] { —list-services | —list-ports | —list-icmp-blocks | —list-forward-ports }
  • —permanent [—zone=<zone>] { —add-ACTION | —remove-ACTION | —query-ACTION }
  • —permanent [—zone=<zone>] { —add-masquerade | —remove-masquerade |—query-masquerade }

Результат такой же как и при использовании временных параметров, только постоянный. 🙂

Ещё опции:

Эти опции служат для управления правилами на более низком уровне.

  • —direct—passthrough { ipv4 | ipv6 | eb } <args> — Передача команд через фаервол. Аргументом <args> могут быть любые агрументы командной строки допрустимые в iptables, ip6tables и ebtables.
  • —direct—add-chain { ipv4 | ipv6 | eb } <table> <chain> — Добавить новую цепочку <chain> в таблицу <table>.
  • —direct—remove-chain { ipv4 | ipv6 | eb } <table> <chain> — Удалить цепочку <chain> из таблицы <table>.
  • —direct—query-chain { ipv4 | ipv6 | eb } <table> <chain> — Возвращает 0 если цепочка с именем <chain> присутствует в таблице <table> и 1 в противном случае.
  • —direct—get-chains { ipv4 | ipv6 | eb } <table> — Возвращает все цепочки содержащиеся в таблице <table> в виде списка разделенного пробелами.
  • —direct—add-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args> — Добавить правило <args> в цепочку <chain> таблицы <table>.Приоритет используется для задания позиции правила в цепи. Правило с приоритетом 0 добавляется на самый верх цепи. Чем больше приоритет, тем ниже правило расположено в цепочке. Порядок расположения правил с одинаковым приоритетом может менятся и поэтому не предсказуем. Не стоит назначать одинаковый приоритет правилам.
  • —direct—remove-rule { ipv4 | ipv6 | eb } <table> <chain> <args> -Удалить правило <args> из цепочки <chain> в таблице <table>.
  • —direct—query-rule { ipv4 | ipv6 | eb } <table> <chain> <args> — Возвращает 0 если правило <args> существует в цепочке <chain> таблицы <table> и 1 в противном случае.
  • —direct—get-rules { ipv4 | ipv6 | eb } <table> <chain> — Возвращает все правила цепочки <chain> в таблице <table> в виде строк.