пятница, 30 марта 2012 г.

Создание SPF записи для собственного почтового домена

SPF(Sender Policy Framework) - это расширение протокола SMTP, помогающее проверить достоверность домена отправителя почты. SPF позволяет владельцу домена указать в TXT записи, соответствующей имени домена, специальным образом сформированную строку, указывающую список серверов, имеющих право отправлять сообщения с обратными адресами в этом домене. Агенты передачи почты получающие почтовые сообщения могут запрашивать SPF-информацию с помощью простого запроса, верифицируя таким образом сервер отправителя.
Строка записи формируется по следующим критериям:
- в начале идет версия протокола: v=spf1;
- далее через пробел, и предваряя знаками операций, следуют элементы по которым производится проверка достоверности: a, mx, ip4 и т.д.;
- в конце обычно строка завершается элементом all, означающим все остальные узлы, не перечисленные ранее.

Операции могут быть следующего типа:
+ - запись говорит, что от данных хостов почту следует принять;
- - "строгое отрицание", запрещает принимать почту от данных хостов;
~ - "мягкое отрицание", почта может быть принята на ваше усмотрение;
? - запись ничего не может сказать о валидности данного отправителя, обычно используется в тестовых целях.
Отсутствие оператора перед элементом означает "+" !!!

Разновидности элементов:
all - все узлы;
ip4:x - хост с адрессом "x" по протоколу ipv4;
ip4:x/y - подсеть "x" с маской "y";
ip6:x - хост с адрессом
"x" по протоколу ipv6;
ip6:x/y - подсеть "x" с маской "y";
a - поиск совпадения записи в DNS типа A с доменом отправителя;

a/y - тоже самое, но сюда входит и вся подсеть хоста с заданной маской "y";
a:x - тоже самое, но можно указать иной домен "x";
a:x/y - явное указание домена "x" и длины маски "y";
mx - аналогично, только производится поиск по типу записи MX в домене отправителя(сюда же можно отнести: mx/y; mx:x; mx:x/y;
ptr - проверка записи в реверсивной зоне, совпадает ли ip отправителя с доменом, которым он представляется;
ptr:x - тоже самое, но можно явно указать домен "x" для проверки на реверсивную запись;
exists:x - запрос A записи домена "x", проверка на существование, сама запись не обязательна должна совпадать с адресом сервера отправителя;
include:x - поиск другой SPF записи в указанном домене "x", её отсутствие не критично.

Небольшой пример: "v=spf1 a/24 a:offsite.example.com/24 -all"
Пояснение: Если отправитель представился пользователем домена example.com(например admin@example.com), то его письмо будет принято лишь в том случае, если сервер, отправляющий сообщение, находится в одной подсети(маска 255.255.255.0) с хостом, имеющим запись "same as parent folder"типа A в зоне example.com ИЛИ в одной подсети с хостом, имеющим запись "same as parent folder"типа A в зоне offsite.example.com.

среда, 28 марта 2012 г.

Проблема расширения раздела NTFS с помощью оснастки управления дисками

Заключается в том, что после процедуры расширения(expand) тома с помощью оснастки управления дисками(diskmgmt.msc), файловая система NTFS по прежнему работает с диском старой емкости, т.е. в свойствах тома или через chkdsk мы видим прежний объем, хотя в оснастке система отображает расширенный том. Так же команда list partition утилиты diskpart отображает новый размер. При этом фактически для системы ничего не изменилось, она не может пользоваться расширенным пространством. Данная проблема возникает, когда драйвер файловой системы NTFS исчерпывает свои ресурсы при попытки расширить том.
Чтобы избавиться от данной ошибки, нужно воспользоваться все той же diskpart. С помощью команд list и select идентифицировать и установить фокус на нужный раздел. Далее выполнить команду утилиты: extend filesystem. Выполнить exit и проверить свойства тома. Если размеры тома корректны - проблема решена.

вторник, 27 марта 2012 г.

Подготовка образа Windows XP/2003 перед клонированием

Для быстрого тиражирования рабочих станций, удобно пользоваться клонированием готовых инсталлированных машин, имеющих в своем составе весь необходимый набор ПО. Для этих целей будут незаменимы WDS, Acronis, Norton Ghost и т.д. Но, чтобы не столкнуться с дублированием метаданных (например SID - могут возникать проблемы в доменной структуре), необходимо произвести подготовку(запечатывание) образа с помощью утилиты sysprep.
В отличии от линеек Vista/7/2008/2008R2, данная программа не встроена в систему, а лежит отдельно на дистрибутиве, в Support\Tools. Последовательность действий такова:
1. Распаковываем файлы из архива DEPLOY.CAB в папку C:\Sysprep.
2. Запускаем setupmgr.exe - мастер генерации файла ответов, необходим для создания inf-файла.
3. Выбираем Create new - создание нового файла.
4. Далее Sysprep setup - файл ответов для нашего случая.
5. Выбираем версию ОС.
6. С помощью мастера заполняем необходимые поля и сохраняем полученный файл в каталоге C:\Sysprep под именем Sysprep.inf.
7. Удаляем из каталога C:\Sysprep все файлы кроме: Sysprep.inf, Sysprep.exe, Setupcl.exe.
8. Теперь необходимо проверить(ВАЖНО!!!) наличие файла $winnt$.inf в каталоге %windir%\system32, и удалить его в случае присутствия. Если этого не сделать, то данные файла ответов могут не попасть в систему, а точнее в этот самый файл!!!
9. Далее запускаем Sysprep.exe и выбираем Reseal(Запечатать). В этом окне также можно отметить Use Mini-Setup и выбрать действие после выполнения процедуры: Shutdown Mode.
10. Компьютер подготовлен для изготовления образа. Создавать слепок нужно аккуратно, не загружаясь в запечатанную ОС, иначе придется повторять процедуру.

четверг, 22 марта 2012 г.

Удаление файлов определенного срока давности консольной командой FORFILES

Иногда можно столкнуться с задачей очистки диска от устаревших бэкапов, архивов или логов. В этом нам сможет помочь консольная утилита forfiles. Пример использования:

forfiles /p "c:\mylogs" /s /m *.* /d -30 /c "cmd /c del /q /f @file"

Вместо c:\mylogs нужно подставить свой путь к файлам. Возраст файлов в примере 30 дней (параметр /d), можно задать любое значение. Используя, например, маску /m *.log, можно удалять файлы только с расширением log, и тп. За рекурсивное удаление (во вложенных папках) отвечает параметр /s. Данную команду удобно использовать в пакетных файлах.

вторник, 20 марта 2012 г.

Восстановление активного каталога: принудительное и непринудительное

Чтобы выполнить любое восстановление службы каталогов, необходимо перезагрузить контроллер домена в режиме Directory Services Restore Mode, т.е. режим восстановления службы каталога. При такой работе не стартуют службы домена, что дает возможность перезаписывать файлы данных AD. Зайти в режим можно удерживая F8 при загрузке контроллера и выбрав соответствующий пункт. Затем необходимо локально авторизоваться на сервере, используя единственную встроенную запись администратора, пароль на которую задается во время инсталляции службы каталога, и который можно сменить через ntdsutil.
Для восстановления нужно иметь SystemState бэкап или полный бэкап системного диска, все зависит от степени повреждений.
Различают принудительное и непринудительное восстановление служб каталога.
Для непринудительного, достаточно после окончания восстановления перегрузиться в нормальном режиме работы, и подождать пока новая информация отреплицируется с работающих контроллеров домена. Обычно применяется при использовании одного контроллера либо контроллера домена, несущего на себе доменные роли, так же являющимся единственным глобальным каталогом в лесу.
Принудительное восстановление используется обычно в случае, когда некоторые объекты были удалены из AD и восстановление их другими способами неприемлемы. В отличии от непринудительного восстановления, мы сразу не загружаемся в нормальном рабочем режиме, а запускаем ntdsutil. Нас будет интересовать раздел authotitative restore. Используя команды restore object и restore subtree, мы сможем помечать соответственно объекты, контейнеры и подразделения для принудительного восстановления, что предотвратит затирание данных при репликации с рабочих контроллеров. Кроме того восстановленные объекты будут реплицированы по всему домену и лесу с нашего сервера.

Используем переменные текущей даты и времени в пакетных файлах

Иногда в пакетных файлах бывает неудобно использовать встроенные системные переменные DATE и TIME, например когда нужно именовать созданный файл или директорию в формате YYYYMMDD_hhmmss. Можно воспользоваться следующей конструкцией:

set now=%TIME:~0,-3%
set now=%now::=%
set now=%DATE:~-4%%DATE:~3,2%%DATE:~0,2%_%now%


1. %TIME:~0,-3%
 Сначала убираем лишних три символа в конце переменной: 12:23:45,34 -> 12:23:45
2. set now=%now::=%
 Затем двоеточия между цифрами:  12:23:45 -> 122345
3. set now=%DATE:~-4%%DATE:~3,2%%DATE:~0,2%_%now%
 Окончательно выстраиваем нужную переменную: 20120323_122345
где
 %DATE:~-4% - 2012,
 %DATE:~3,2% - 03,
 %DATE:~0,2% - 23,
 %now% - 122345.

пятница, 16 марта 2012 г.

Использование корзины Active Directory в Windows 2008 R2

В Windows Server 2008 R2 появилась новая особенность - корзина Active Directory(Active Directory Recycle Bin). Корзина представляет собой возможность полного восстановления недавно удаленного объекта из каталога. Ранее при восстановлении, объект терял практически все свои атрибуты, оставляя только самые критические, например SID. Теперь же список атрибутов восстанавливается полностью. Функция Корзины Active Directory доступна только в режиме работы леса и домена Windows Server 2008 R2 и по умолчанию  она выключена. Включив эту функцию вы так же не сможете её отключить и следовательно при необходимости понизить уровень домена с Windows Server 2008 R2 до Windows Server 2008.
Для включения корзины нужно проделать следующее:
Запускаем Ldp.exe. Затем нажимаем Connection->Connect, выбираем имя контроллера домена и порт. Затем нажимаем View->Tree, в BaseDN выбираем CN=Configuration,DC=mycompany,DC=com. Раскрываем CN=Configuration, переходим к CN=Partitions..., нажимаем правой кнопкой по CN=Partitions… и выбираем Modify. Очищаем поле DN, в строке Attribute пишем: enableOptionalFeature, в строке Values пишем CN=Partitions,CN=Configuration,DC=mycompany,DC=com:766ddcd8-acd0-445e-f3b9-a7f9b6744f2a, выбираем Add и нажимаем Enter и потом Run. Число 766ddcd8-acd0-445e-f3b9-a7f9b6744f2a является GUID-ом корзины и оно одинаково для любого домена.
После добавления, для восстановления пользователей можно использовать как тот же Ldp.exe,так и язык PowerShell, что гораздо удобнее.
Для того, чтобы найти объекты, используется командлет Get-ADObject. Чтобы он искал и удалённые объекты, нужно использовать ключ -IncludeDeletedObjects. А для восстановления объектов используется командлет Restore-ADObject. Когда необходимо восстановить объект, или тем более несколько объектов, удобнее всего использовать перенаправление (pipeline) вывода командлета Get-ADObject на вход командлета Restore-ADObject:

Get-ADObject -Filter {sAMAccountName -eq "myuser"} -IncludeDeletedObjects | Restore-ADObject

Здесь задан фильтр, для указания что нужно восстановить только объект, который имеет атрибут sAMAccountName: myuser. Данной строчки достаточно чтобы восстановить удаленный объект.

Восcтановление случайно удаленных объектов Active Directory

При удалении пользователей или компьютеров из активного каталога на самом деле они просто помечаются как "объекты-памятники" (tombstone) и перемещаются в скрытый раздел. При этом у объектов удаляется большая часть атрибутов. Поэтому после восстановления необходимо заново задать аккаунту пароль, включить его и восстановить руками членство в необходимых группах, а так же заполнить ряд дополнительной описательной информации(адреса,телефоны и тп). Окончательно из AD объекты удаляются по истечении атрибута Tombstone Lifetime, который по умолчанию составляет 60 дней(Microsoft рекомендует 120).
Значение этого атрибута может быть изменено с использованием ADSIEdit. Перейдите к CN=Directory Service,CN=WindowsNT,CN=Services,CN=Configuration,DC=mycompany,DC=com (заменив DC=mycompany,DC=com на данные вашего домена). Кликните правой кнопкой мыши на контейнере CN=Directory Service и выберите Properties. Найдите Tombstone Lifetime в списке атрибутов, нажмите кнопку Edit и введите количество дней, необходимое для хранения удаленных объектов.
 Для восстановление нам понадобятся права администратора домена и утилита ldp.exe, которая, при отсутствии, устанавливается вместе с Support Tools. Запустив ldp.exe, выбираем из меню Connections команду Connect. В появившемся окне указываем имя контроллера домена и порт LDAP, по умолчанию – 389. Далее выбрав из того же меню Connections команду Bind, авторизуемся на контроллере.Тут возможны варианты: под текущим пользователем или можно задать другого пользователя и пароль. Далее, необходимо разрешить отображение скрытого каталога Deleted Objects, для этого в меню Options выбираем команду Controls. В открывшемся окне в поле Load Predefined из выпадающего списка выбираем Return deleted objects. Далее выбираем в меню View пункт Tree, для отображения дерева контейнеров в левой панели. В окне Tree view  в поле BaseDN выбираем корень леса, например DC=mycompany,DC=com.
Дважды щелкнув на корне дерева получаем список контейнеров, в котором ищем контейнер CN=Deleted Objects,DC=mycompany,DC=com. Раскрываем контейнер и находим в нем удаленный объект, который необходимо восстановить. К примеру удаленного пользователя звали myuser:

CN=myuserADEL:41057e80-84fd-4c96-8e54-26886519b6e8,CN=Deleted Objects,DC=mycompany,DC=com

Далее выделяем объект в левой панели. Правым кликом вызываем контекстное меню, выбираем в нем пункт Modify. В разделе Edit Entry, в поле Attribute вводим isDeleted, в панели Operation  выбираем Delete, затем жмем Enter. В результате в поле Entry List появляется строка [Delete]isDeleted. Далее, не предпринимая действий по применению внесенных изменений меняем distiguishedName. Для этого:
- В разделе Edit Entry, в поле Attribute вводим имя атрибута, т.е. distiguishedName,
- В разделе Edit Entry, в поле Values вводим значение атрибута lastKnownParent, которое берем в правой панели, в списке атрибутов объекта. В нашем случае OU=MyOU,DC=mycompany,DC=com, где MyOU - подразделение в котором находился удаленный пользователь,
- В самом начале значения добавляем имя объекта: CN=myuser,
- В итоге получаем значение атрибута CN=myuser,OU=MyOU,DC=mycompany,DC=com,
- В разделе Operation, выбираем  Replace, жмем кнопку Enter.
В поле Entry List появляется вторая строка, со значением: [Replace]distinguishedName:CN=myuser,OU=MyOU,DC=mycompany,DC=com.
Далее, убедившись, что выбраны флаги Synchronous и Extended, нажимаем кнопку Run.
Анализируем правую панель окна на наличие ошибок. Если все прошло успешно, в подразделении MyOU появится наш ранее удаленный пользователь myuser в отключенном состоянии.

вторник, 6 марта 2012 г.

Дефрагментация базы Active Directory

База данных AD представляет из себя набор файлов, находящихся в каталоге NTDS (по умолчанию находится в папке WINDOWS). Существует два вида дефрагментации данной базы: онлайн - выполняется во время работы службы собственными механизмами, оффлайн - производится в ручном режиме утилитой ntdsutil. Данная процедура позволяет уменьшить размер файла базы данных и ускорить ее работу. Последовательность выполнения следующая:
1. Останавливаем службу Active Directory Domain Services (Win2008 и более поздние) или перегружаемся в Directory Services Restore Mode (Win2003 и более ранние).
2. Запускаем ntdsutil в окошке командного процессора cmd.
3. Для Win2008 выполняем: activate instance ntds.
4. Вводим file, переходим в режим file maintenance.
5. Вводим info, идем по указанному пути к файлу ntds.dit и делаем его резервную копию. Понадобится в случае неудачного исхода дефрагментации.
6. Выполняем compact to c:\ad , где c:\ad - путь где будет создан дефрагментированый файл ntds.dit.
7. Заменяем полученным файлом исходный.
8. Удаляем в каталоге NTDS два файла с расширением log (это будет подсказывать утилита).
9. Запускаем сервис в случае Windows 2008, или загружаемся в полноценном режиме.
10. Проверяем работоспособность и удаляем резервные копии файлов ntds.dit.
Перед началом работ желательно сделать бэкап system state сервера.