ILM 2007 синхронизация пользователей AD и eDirectory

26 февраля 2009 г.
Comments

Опишу в нескольких строках о настройте Microsoft Identity Lifecycle Manage (ILM) 2007 для синхронизации пользователей между Active Directory и eDirectory.

После нескольких недель жизни на TechNet, MSDN и чтиву информации посвященной Identity Lifecycle Manager дало свои результаты.

Настраиваем MA (Management Agent) для Active Directory:

  • Properties - Тут все понятно….
AD ILM Properties
  • Connect to AD Forest - комментарии лишние
  • Configure Dir Partitions – В Containers выберем контейнеры с пользователями которые мы собираемся синхронизировать. В Password Synch отмечаем Enable this partition as a password synch. если мы собираемся синхронизировать пароли и в Targets выберем МА NetWare когда его создадим. (о настройке синхронизации паролей можно прочитать на TechNet)
AD ILM Conf Dir Part
  • Select Object Types – Выберем нужные типы объектов

AD ILM Obj Types

  • Select Attributes – Отмечаем нужные атрибуты
  • Confugure Connector Filter – нам пока не нужен
  • Configure Join and Projection Rules

AD ILM Conf Join gr

AD ILM Conf Join user
  • Confugure Attribute Flow – Настройка соответствия атрибутов которые мы хотим импортировать и экспортировать из AD в Metaverse

AD ILM Conf Attribute flow

Тут стоит обратить внимание на AD атрибут UserAccountControl, дело в то что он принимает значения, а в eDirectory атрибут loginDisabled, который отвечает за то включена или отключена учетная запись, принимает значения “True” или “False”. Что бы все корректно работало и состояние учетной записи пользователя (откл. или вкл.) синхронизировало между AD и eDir, делаем следующие:

  • Создаем атрибут Boolean в Metaverse Desinger например msDS-UserAccountDisabled
  • Указываем UserAccountControl импортировать в msDS-UserAccountDisabled, но при этом Mapping Type укажем Advanced и укажем Flow rule name

AD ILM Advanced Attribute flow

Эго мы будем использовать в ADExtension.dll которую мы укажем в Configure Extension

AD ILM Conf Ext

В АDExtension.dl используется только одна процедура MapAttributesForImport

Public Sub MapAttributesForImport(ByVal FlowRuleName As String, ByVal csentry As CSEntry, ByVal mventry As MVEntry) Implements IMASynchronization.MapAttributesForImport

' TODO: write your import attribute flow code

Const ADS_UF_ACCOUNTDISABLE As Integer = &H2 'Disable user account

Const ADS_UF_NORMAL_ACCOUNT As Integer = &H200 'Typical user account

Select Case FlowRuleName

Case "msDS-UserAccountDisabled"

mventry("msDS-UserAccountDisabled").BooleanValue = (csentry("userAccountControl").IntegerValue And ADS_UF_ACCOUNTDISABLE) = ADS_UF_ACCOUNTDISABLE

End Select

End Sub

Настройка МА для eDir аналогична AD вот только не нужно в Configure Extension указывать DLL а указать что нужно синхронизировать пароли

и вот мой Confugure Attribute Flow

eDir Conf Att

Только не забываем использовать SSL протокол для подключения к LDAP, о настройке подключения по протоколу SSL в NetWare можно посмотреть тут

И теперь чтобы все это заработало нужно в скомпелить MVExtension.dll и прописать в Options
ILM Options

И сам код MVExtension.dl:

Imports Microsoft.MetadirectoryServices

Imports System

Imports System.Text

Imports System.IO

Imports ActiveDs.ADS_USER_FLAG

Public Class MVExtensionObject

Implements IMVSynchronization

Public Sub Initialize() Implements IMVSynchronization.Initialize

' TODO: Add initialization code here

End Sub

Public Sub Terminate() Implements IMVSynchronization.Terminate

' TODO: Add termination code here

End Sub

Private Sub SetNovellPW(ByRef csentry As CSEntry, ByVal pw As String)

' TODO: Setting an Initial Password in eDirectory

Dim password() As Byte

password = New System.Text.UTF8Encoding(False, False).GetBytes(pw)

ReDim Preserve password(UBound(password) + 2)

csentry("userPassword").Values.Add(password)

End Sub

Public Sub Provision(ByVal mventry As MVEntry) Implements IMVSynchronization.Provision

Dim adMA As ConnectedMA

Dim csentry As CSEntry

Dim dn As ReferenceValue

Dim ExceptionMessage As String

Const eDir_OU = "ou=Account, o=TREE_eDir"

Const eDir_MA = "MA_Novell"

Const AD_MA = "MA_Active_Directory"

Const ACTIVE_OU_AD = "OU=Account,OU=Branch,DC=XXXXX,DC=XXXXXXX"

Const INACTIVE_OU_AD = "OU=Disabled,OU=Account,OU=Branch, DC=XXXXX,DC=XXXXXXX "

Const INACTIVE_OU_ED = "ou=Disabled,ou=Account,o=TREE_eDir"

Dim Connectors As Integer

Dim Container As String

If Not mventry("cn").IsPresent Then

ExceptionMessage = "The attribute cn was unexpectedly not present on the metaverse object."

Throw New UnexpectedDataException(ExceptionMessage)

Exit Sub

End If

' +++++++++++ eDirectory ++++++++++++++++

adMA = mventry.ConnectedMAs(eDir_MA)

Container = eDir_OU

Connectors = adMA.Connectors.Count

dn = adMA.EscapeDNComponent("cn=" + mventry("cn").Value).Concat(Container)

If 0 = Connectors Then

Select Case mventry.ObjectType.ToLower()

Case "group"

csentry = adMA.Connectors.StartNewConnector("groupOfNames")

csentry.DN = dn

csentry.CommitNewConnector()

Case "person"

csentry = adMA.Connectors.StartNewConnector("inetOrgPerson")

csentry.DN = dn

csentry("groupMembership").Values.Add("cn=Everyone,ou=Account,o=TREE_eDir")

csentry("securityEquals").Values.Add("cn=Everyone,ou=Account,o=TREE_Edir")

SetNovellPW(csentry, "1Q2w3e4r5")

csentry.CommitNewConnector()

End Select

ElseIf 1 = Connectors Then

csentry = adMA.Connectors.ByIndex(0)

If csentry.DN.ToString.ToLower <> dn.ToString.ToLower Then

csentry.DN = dn

End If

Else

Throw New UnexpectedDataException("multiple connectors:" + Connectors.ToString)

End If

' +++++++++++ Active Directory ++++++++++++++++

adMA = mventry.ConnectedMAs(AD_MA)

If (mventry.ObjectType = "person") Then

If mventry("msDS-UserAccountDisabled").BooleanValue Then

Container = INACTIVE_OU_AD

dn = adMA.EscapeDNComponent("cn=" + mventry("displayName").Value).Concat(Container)

If adMA.Connectors.Count = 1 Then

'''Check if rename needed

csentry = adMA.Connectors.ByIndex(0)

If csentry.DN.ToString.ToLower <> dn.ToString.ToLower Then

csentry.DN = dn

End If

End If

End If

End If

End Sub

Public Function ShouldDeleteFromMV(ByVal csentry As CSEntry, ByVal mventry As MVEntry) As Boolean Implements IMVSynchronization.ShouldDeleteFromMV

Throw New EntryPointNotImplementedException()

End Function

End Class



Ярлыки: ,

Windows Server 2008 Service Pack 2 and Windows Vista Service Pack 2 Beta

Comments

Сегодня на сайте Microsoft для подписчиков MSDN и TechNet появились Release Candidate (RC) of SP2 для Windows Server 2008 и Windows Vista (TechNet, MSDN) пока только на пяти языках: English, French, German, Japanese, и Spanish. Так что берем и тестируем.

О том что же нам несет SP2 можно почитать тут

Group Policy Preferences and Printers

25 февраля 2009 г.
Comments

Сколько раз я сталкивался с проблемой когда spoolsv.exe загружал процессор на 100% и работа на компьютере при такой картине естественно невозможна.
Всему виной были принтера Microsoft XPS Document Writer и Microsoft Office Document Image Writer. Пользователь бросал на печать на эти принтеры spoolsv и "сходил сума". Из такой ситуации есть два выхода:

  1. Написать скрипт для удаления этих принтеров и прописать его в групповой политике в Автозагрузке
  2. Воспользоваться Group Policy Preferences:
В политике открываем "Конфигурация компьютера"-"Настройка"-"Параметры панели управления"-"Принтеры"


И добавляем наши проблемные принтеры, а в поле "Действие" выбираем "Удалить". Вот и все...

Ярлыки:

RDP client 6.1

23 февраля 2009 г.
Comments

RDP (Remote Desktop Connection) client версии 6.1 для Windows XP SP2 можно брать тут
MUI тут
О всех изменениях можно почитать здесь

Что касается RDP клиента для Windows SP3, то версия 6.1 уже присутствуем в нем. Единственное что можно добавить, так это MUI к RDP 6.1 для Windows XP SP3 берем здесь

Именно из-за MUI в Windows XP SP2 для RDP 6.0 не ставится SP3

Ярлыки:

Group Policy Preferences (очистка временных каталогов)

Comments

С помощью Group Policy Preferences можно легко удалять временные файлы пользователя:

1.
В политике открываем "Конфигурация пользователя"-"Настройка"-"Конфигурация Windows"-"Папки"

2. И прописываем переменные среды для временных каталогов пользователя в поле "Путь":

Ярлыки:

List Policy Settings

20 февраля 2009 г.
Comments

Список групповых политик в (.adm) файлах для Windows 2000; Windows Server 2003; Windows XP можно взять тут

А тут описание административных шаблонов для
Windows 2000; Windows Server 2003; Windows Vista; Windows XP только в формате (admx/adml)

Ярлыки:

Remote Server Administration Tools for Windows 7 Beta released!

13 февраля 2009 г.
Comments

Remote Server Administration Tools for Windows 7 Beta стал доступен на Microsoft Download Center

Доступны инструменты администрирования такие как:

  • Active Directory Certificate Services (AD CS) Tools
  • Active Directory Domain Services (AD DS) Tools
  • Active Directory Lightweight Directory Services (AD LDS) Tools
  • DHCP Server Tools
  • DNS Server Tools
  • File Services Tools
  • Hyper-V Tools
  • Remote Desktop Services Tools
И появились новые инструменты

  • BitLocker AD Password Recovery Viewer
  • Failover Clustering Tools
  • Group Policy Management Tools
  • Network Load Balancing Tools
  • SMTP Server Tools
  • Storage Explorer Tools
  • Storage Manager for SANs Tools
  • Windows System Resource Manager Tools

Ярлыки:

ADM for Novell Client

12 февраля 2009 г.
Comments

ADM шаблон Novell Client for Windows

http://www.novell.com/coolsolutions/tools/14348.html

Ярлыки:

Abend NLDAP.NLM

11 февраля 2009 г.
Comments

Настроив синхронизацию пользователей и групп между Active Directory и eDirectory посредством ILM 2007 значительно облегчило администрирование учетных записей и прав доступа. Но при смене sAMAccountName (логин юзера в AD) и синхронизации в eDirectory , LDAP сервер версии 8.7.3 на NetWare 6.0 вываливался в ABEND:

EIP in NLDAP.NLM at code start +00048D80h
Access Location: 0x00000000

Ошибка ушла только после обновления LDAP сервера до версии 8.7.3.10

Ярлыки:

Connect ILM to eDirectory

Comments

Для подключения по защищенному протоколу SSL (Secure Sockets Layer ) eDirectory агента в ILM делаем следующие:

  1. Запускаем ConsoleOne
  2. Открываем контейнер где находится сервер к которому мы собираемся присоединиться
  3. Заходим в свойства сертификата SSL CertificateIP для этого сервера
  4. На закладке "Сертификаты" экспортируем сертификат (если этой закладки нет, то необходимо установить модуль сервера сертификатов в Novell для ConsoleOne )
  5. Добавляем сертификат в "Доверенные корневые центры сертификации" (лично я выбрал метод добавления сертификата через групповую политику а не через IE )
  6. Обновляем групповую политику
  7. Рестартим сервис Microsoft Identity Integration Server
  8. В ILM ставим галку присоединяться к серверу eDirectory используя SSL и порт 636

Ярлыки: ,

Управление серверами NetWare

Comments

Программы от AdremSoft с которыми администрирование серверов NetWare стало легче:

- Консоль удаленного администрирования для серверов Novell AdRem Free



- И конечно как без Server Manager 6


Ярлыки:

Авторизация доменных пользователей в SQUID

10 февраля 2009 г.
Comments

После прочтения бесчисленной информации о Squid + AD я приступил к реализации задуманного.
Решили остановиться на варианте auth-helprs LDAP, вариант связки Kerberos и Winbind в связи с нестабильностью последнего не вдохновил, да Samba мне ни к чему.
А с помощью LDAP мы будем проверять принадлежит ли пользователь определенной группе без проверки паролей и т.д.
И так:
1. берем Squid ... собираем с ключами:

[root@Proxy squid-2.7.STABLE5]#./configure --prefix=/usr \
--exec-prefix=/usr \
--sysconfdir=/etc/squid \
--enable-delay-pools \
--enable-kill-parent-hack \
--enable-snmp \
--disable-ident-lookups \
--enable-truncate \
--enable-removal-policies=lru,heap \
--enable-gnuregex \
--enable-underscores \
--enable-stacktraces \
--enable-useragent-log \
--enable-referer-log \
--enable-forward-log \
--enable-arp-acl \
--enable-storeio=aufs,diskd,null,ufs \
--enable-htcp \
--enable-ssl \
--disable-carp \
--disable-wccp \
--disable-wccpv2 \
--enable-default-err-language=Russian-1251 \
--enable-follow-x-forwarded-for \
--enable-epoll \
--with-maxfd=16384 \
--enable-auth=basic,ntlm,digest \
--enable-basic-auth-helpers=getpwnam,LDAP,NCSA,PAM,SMB,SASL \
--enable-ntlm-auth-helpers=no_check,SMB,fakeauth \
--enable-digest-auth-helpers=password,ldap \
--enable-external-acl-helpers=ldap_group,unix_group,wbinfo_group \
--enable-linux-netfilter \
--enable-dlmalloc

описывать параметры думаю лишние




2.

 [root@Proxy squid-2.7.STABLE5]# make all && make install 


3. проверяем как работает наш "хелпер"


squid_ldap_auth


[root@Proxy squid]# /usr/libexec/squid_ldap_group -S -R -b "dc=dn,dc=local" -f "(&(sAMAccountName=%v)(memberOf=cn=%a,ou=Group,ou=Servers,dc=dn,dc=local))" -D ldap@dn.local -w "password" AD_SERVER
UserAD IntetGroup
OK


4. и последнее пример конфига:

external_acl_type wbinfo_group ttl=0 %LOGIN /usr/libexec/squid_ldap_group -S -R -b "dc=dn,dc=local" -f "(&(sAMAccountName=%v)(memberOf=cn=%a,ou=Group,ou=Servers,dc=dn,dc=local))" -D ldap@dn.local -w "password" srerver-ad
auth_param basic program /usr/libexec/squid_ldap_auth -R -D ldap@dn.local -w "password" -b "dc=dn,dc=local" -f "sAMAccountName=%s" server-ad auth_param basic children 3 
auth_param ntlm program /usr/libexec/fakeauth_auth DN/srerver-ad
auth_param ntlm children 7
auth_param ntlm keep_alive off
auth_param basic realm Squid proxy-caching Donetsk
auth_param basic credentialsttl 1 hours 
authenticate_ttl 60
seconds acl DN_local proxy_auth REQUIRED 
acl acl_Inet external wbinfo_group IntUsers 
http_access allow DN_local acl_Inet
http_access deny all


Вот и все..., теперь доступ в Интернет только у пользователей кто принадлежит группе IntUsers

Ярлыки:

NetWare и DFS

Comments

В сети есть сервера Win 2008, Win 2003 R2 и Novell. Появилась необходимость в использовании DFS (распределенная файловая система), но на клиентском компьютере с Novell Client, смена каталога в DFS происходила с задержками 5-10 секунд, на компьютерах без клиента Novell такого не наблюдалось. Просмотрев доки по Novell клиенту http://www.novell.com/coolsolutions/appnote/620.html мне стал интересен параметр BadServer . В групповой политике нет возможности задать строкой параметр реестра REG_MULTI_SZ, значит есть 2-ва варианта:
  1. Создать файл реестра и распространить по всем клиентам при помощи групповой политики, но при таком варианте изменения если они будут, вступать в силу только при перезагрузке компьютера
  2. Воспользоваться Group Policy Preferences настроив параметр "Реестр" в "Конфигурации Windows", указав сервера w2k3 в поле значение.


Добавим шаблон политики для Novell клиента client491.adm и
включаем Bad Name Cache Enabled и Bad Name Cache Timeout
ВСЕ! наша проблема решена.

Ярлыки: , ,

UserEnv error 1054

Comments

Нужно было подключить компьютер в удаленном офисе через IPSec, но при обновлении групповой политики вываливалась ошибка


настройка DNS сделана правильно, работают ftp, RDP и т.д.
Проблема решилась изменением ключа реестра
HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\\GroupPolicyMinTransferRate

(Определяет медленное подключение для применения или обновления групповой политики. Cкopocть пoдключeния Kбит/cек.Тип: REGDWORD; Значение: (по умолчанию параметра нет; любое допустимое; 0 = oтключить oпpeдeлeниe мeдлeнныx пoдключeний)

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System]
"GroupPolicyMinTransferRate"=dword:00000000

Можно настроит обнаружение медленной групповой политики через параметр Group Policy slow link detection

Ярлыки: