URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 83068
[ Назад ]

Исходное сообщение
"комплексное решение по управлению почтовыми аккаунтами LDAP"

Отправлено MarvinFS , 26-Ноя-08 18:33 
Коллеги,

Наверное уже мега боян и было много раз, и всё же - пожалуйста помогите определиться с дальнейшими действиями. :bn:

задача:
1.сервер на freebsd
samba PDC LDAP
MTA LDAP (exim?!)
imap-server LDAP (dovecot?!)
pf
web interface for email with NTLM or LDAP auth
squid proxy server with LDAP auth
openLDAP единая директория пользовательских аккаунтов построенная по принципу SSO,
ну может конечно не прозрачная аутентификация, но хотя бы, чтоб был единый юзверь и пароль на все вышеперечисленные сервисы
и эти все сервисы чтобы проверяли пользователей через LDAP.
2. опять же централизованное средство управления аккаунтами т.е идея как в винде - создаешь в каком то гуи аккаунт пользователя указываешь хомяка пароль членство в группах И ЕМЫЛ и всё... пользователь имеет доступ ко ВСЕМ сервисам одновременно. (т.е не хочется чтобы админчики заходили по ssh запускали 54 разных скрипта в разных местах ,прописывали разные маппинги и делали бы теже самые действия при удалении аккаунта, а потом бы еще забывали что-то гдето удалить, или удаляли бы не то что нужно.... ну в общем идея в общих чертах ясна.)

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

пробуем обойтись без винды:

с самбой проблем нету, добавляем схему samba в ldap поднимаем PDC и понеслось... используем виндовский server admin tools или ldapadmin и всё добавляется удаляется все рады...

с почтой же я вижу проблемы проблемы:
например я выбрал путь exim+dovecot+mysql как наиболее проработанный и оптимизировыннй. но это получается 2 базы пользователей без синхронизации (почта и домен) что совершенно некошерно скажем при объеме 300 пользователей и при значительной текучке кадров. - отвергаем как слишком трудоемкую в поддержке и управлении.

смотрим далее -
exim+dovecot LDAP - насколько мне удалось понять все эти солюшены основаны на самодельных (либо модифицированных от других MTA) схемах где создается отдельный класс - там набор атрибутов для хранения учетных записей для почты их пароли и набор служебных атрибутов.

Что на мой взгляд не хватает и собственно в чем вопрос?
1.Почему бы не использовать класс account которым по умолчанию создаются пользователи в openldap (и там же хранятся наборы атрибутов для самбы) для хранения атрибутов почты?! (там всего ничего этих самых атрибутов) и если это возможно, то я просто не смог найти готовой схемы, что странно...

2. Средство для управления этим всем хозяйством, смотрел GOSA но там используются свои сильно переработанные схемы заточенные под их веб морду.
ldapadmin на первый взгляд подходит - там даже при создании пользователя есть галочка для включение mail атрибутов но почему то с помошью неё не создается запись ученная - говорит ошибка синтаксиса... я подозреваю, что схема не поддерживает такой тип.... :st:

на чем остановиться подскажите плз? хочется законченного решения... еще раз повторюсь использовать связку windows AD domain + freebsd samba + freebsd services можно... но как то неправильно это.... гетерогенные системы и всё такое... :)

есть варианты типа ZIMBRA но и там присутствует очень много вопросов... в частности по той же LDAP адресной книге, которой по сути дела просто не существует... пока...


Содержание

Сообщения в этом обсуждении
"комплексное решение по управлению почтовыми аккаунтами LDAP"
Отправлено ALex_hha , 26-Ноя-08 20:27 
>на чем остановиться подскажите плз? хочется законченного решения... еще раз повторюсь использовать
>связку windows AD domain + freebsd samba + freebsd services можно...
>но как то неправильно это.... гетерогенные системы и всё такое... :)

Законченого решения нет. Так что openldap + схемы для каждого сервиса.


"комплексное решение по управлению почтовыми аккаунтами LDAP"
Отправлено Dorlas , 26-Ноя-08 20:42 
Плохо смотрели - у меня получилось сделать связку:
OpenLDAP - в нем хранятся учетки для:
1) Samba PDC (NT4)
2) Postfix + Courier-Imap
3) eJabberd (общий ростер, vCard, logdb)
4) OpenVPN
5) Squid

Заводим через LdapAdmin пользователя, нужных template-ах прописываем openvpn и почту, назначаем ему пароль и все.

Его логин и пароль - по всем 5 сервисам...

Так что добиться этого можно - работайте :)


"комплексное решение по управлению почтовыми аккаунтами LDAP"
Отправлено MarvinFS , 27-Ноя-08 09:56 
>Заводим через LdapAdmin пользователя, нужных template-ах прописываем openvpn и почту, назначаем ему
>пароль и все.

Уважаемый, а можно эти соответствующие темплэйты огласить, и огласить используемые схемы ибо если юзать стандартные схемы и стандартные темплэйты для лдападмина то при включении галки почта и прописании там всего необходимого при создании пользователя выдается ошибка:
LDAP error! Invalid Syntax: objectclass: value #3 invalid per syntax.


"комплексное решение по управлению почтовыми аккаунтами LDAP"
Отправлено MarvinFS , 27-Ноя-08 09:42 
>Законченого решения нет. Так что openldap + схемы для каждого сервиса.

но ведь при наличии отдельной схемы это получается тоже самое что и иметь все эти сервисы в отдельных базах что делает систему совершенно неуправляемой на более менее крупных объемах... поэтому это отпадает сразу же и выбор падает на использование MS AD. других вариантов я не вижу. Иначе ничего кроме как жестокого каждодневного геммора мы добиться не сможем.



"комплексное решение по управлению почтовыми аккаунтами LDAP"
Отправлено Dorlas , 27-Ноя-08 14:01 
>но ведь при наличии отдельной схемы это получается тоже самое что и
>иметь все эти сервисы в отдельных базах что делает систему совершенно
>неуправляемой на более менее крупных объемах.

Бредс....схемы просто добавляют необходимые атрибуты и objectClass-ы - все равно пользователь будет один и его unixPassword тоже будет один....



"комплексное решение по управлению почтовыми аккаунтами LDAP"
Отправлено tungus , 27-Ноя-08 03:37 
> exim+dovecot LDAP - насколько мне удалось понять все эти солюшены основаны на
> самодельных (либо модифицированных от других MTA) схемах где создается отдельный класс
> - там набор атрибутов для хранения учетных записей для почты их
> пароли и набор служебных атрибутов.

Да все нормально заворачивается с dovecot. У меня exim использует dovecot auth. В свою очередь dovecot auth был завернут на ldap через ldap bind - соответствено работали PLAIN и LOGIN авторизации.

Сейчас используется чтение через sambaNTPassword:
pass_attrs = sambaNTPassword=password,uid=user,dovecotAllowNets=allow_nets,homeDirectory=userdb_home,uidNumber=userdb_uid,gidNumber=userdb_gid
default_pass_scheme = NTLM

Соответственно поддерживаются PLAIN LOGIN NTLM

Использование ntlm позволило сделать sso при использовании всяких аутлуков. К сожалению thunderbird не поддерживает использование sspi при ntlm https://bugzilla.mozilla.org/show_bug.cgi?id=284538


"комплексное решение по управлению почтовыми аккаунтами LDAP"
Отправлено MarvinFS , 27-Ноя-08 09:50 
>Да все нормально заворачивается с dovecot. У меня exim использует dovecot auth.
>В свою очередь dovecot auth был завернут на ldap через ldap
>bind - соответствено работали PLAIN и LOGIN авторизации.

Про заворачивание авторизации на ллдап всё понятно-решений куча и но работает... речь именно про схемы и про управление дальнейшее этими аккаунтами группами и паролями.


>Сейчас используется чтение через sambaNTPassword:
>pass_attrs = sambaNTPassword=password,uid=user,dovecotAllowNets=allow_nets,homeDirectory=userdb_home,uidNumber=userdb_uid,gidNumber=userdb_gid
>default_pass_scheme = NTLM

А можно более подробно? может быть выложить конфиги участвующие в работе?
Насколько я вижу из вышеупомянутой строчки всётки для dovecot в лдапе прописана какая то дополнительная схема с атрибутами dovecotAllowNets и прочими...
В таком случае каким образом заводятся и удаляются пользователи (пароль и имя пользователя насколько я виду используется самбовское) из LDAPа?
И можно огласить дополнительную схему?

>
>Соответственно поддерживаются PLAIN LOGIN NTLM
>Использование ntlm позволило сделать sso при использовании всяких аутлуков. К сожалению thunderbird
>не поддерживает использование sspi при ntlm https://bugzilla.mozilla.org/show_bug.cgi?id=284538

Вот это реально круто! хочу того-же добиться ибо клиенты все лицензионные винды с офисом и все сессно привыкли к аутлуку... ну частично the bat а он насколько я знаю тоже вроде держит NTLM auth.


"комплексное решение по управлению почтовыми аккаунтами LDAP"
Отправлено tungus , 30-Ноя-08 00:27 
> ну частично the bat а он насколько я знаю тоже вроде держит NTLM auth.

thunderbird тоже держит ntlm - только под windows он неумеет доставать ntlm hash из sspi

Забыл добавить - freeradius заворачиватся напрямую в ldap (т.е. без использования ntlm_auth/samba как дополнительго слоя) и понимает атрибуты sambaNTPassword/sambaLMPassword - соответственно реализуется sso на windows для eap-peap или mschap.

Ниже конфиги:

Ползователи/группы добавляются через samba  - net rpc user add vpupkin - далее, если нужно, редактируются через какой-нибудь ldap браузер  - в моем случае jxplorer или phpldapadmin

dovecot-ldap-ntlm.conf:

uris = ldapi:/// ldaps://master-ldap
dn = cn=Dovecot,ou=Ldap,dc=mydomain
dnpass = somepass
auth_bind = no
ldap_version = 3
base = ou=People,ou=Posix,dc=mydomain
user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid
user_filter = (&(objectClass=posixAccount)(uid=%u))
pass_attrs = sambaNTPassword=password,uid=user,dovecotAllowNets=allow_nets,homeDirectory=userdb_home,uidNumber=userdb_uid,gidNumber=userdb_gid
pass_filter = (&(objectClass=sambaSamAccount)(objectClass=posixAccount)(uid=%u))
default_pass_scheme = NTLM

в dovecot.conf:

mechanisms = plain login ntlm gssapi
passdb ldap {
   args = /usr/local/etc/dovecot-ldap-ntlm.conf
}
userdb prefetch {
}
userdb ldap {
args = /usr/local/etc/dovecot-ldap-ntlm.conf
}

в конфиге exim:
dovecot_login:
  driver = dovecot
  public_name = LOGIN
  server_socket = /var/run/dovecot/auth-client
  server_set_id = $auth1
  server_advertise_condition = ${if eq{$tls_cipher}{}{0}{1}}

dovecot_plain:
  driver = dovecot
  public_name = PLAIN
  server_socket = /var/run/dovecot/auth-client
  server_set_id = $auth1
  server_advertise_condition = ${if eq{$tls_cipher}{}{0}{1}}

dovecot_ntlm:
  driver = dovecot
  public_name = NTLM
  server_socket = /var/run/dovecot/auth-client
  server_set_id = $auth1
  server_advertise_condition = ${if eq{$tls_cipher}{}{0}{1}}

dovecot_gssapi:
  driver = dovecot
  public_name = GSSAPI
  server_socket = /var/run/dovecot/auth-client
  server_set_id = $auth1
  server_advertise_condition = ${if eq{$tls_cipher}{}{0}{1}

gssapi - для kerberos. Если нету - можно убрать. cn=Dovecot,ou=Ldap,dc=mydomain должен иместь права на чтение sambaNTPassword.

dovecotAllowNets используется для указания с каких подсетей пользователям можно логиниться. Если пустой - то можно с любых. Соответсвенно добавлена дополнительная schema:

# Different schemes for myorg
objectIdentifier        MyOrgConfSchemaOID 1.3.6.1.4.1.23586.1.3

# Custom myorg schema

attributetype ( MyOrgConfSchemaOID:1.11 NAME 'dovecotAllowNets'
        DESC 'Allow user to log in from only specified IPs'
        EQUALITY caseIgnoreIA5Match
        SUBSTR caseIgnoreIA5SubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{32768} SINGLE-VALUE )

objectClass ( MyOrgConfSchemaOID:2.1 NAME 'myorgAccount'
        DESC 'Additional Objectclass for my organization'
        SUP top AUXILIARY
        MUST ( cn )
        MAY ( dovecotAllowNets $ uid ) )


Если есть solaris и планируется заворачивание solaris на ldap имеет смысл использовать следующую начальную структуру ldap:

dn: ou=Computers,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Computers

dn: ou=Idmap,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Idmap

dn: ou=Rpc,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Rpc

dn: ou=Protocols,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Protocols

dn: ou=Profile,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Profile

dn: ou=Networks,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Networks

dn: ou=Netgroup,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Netgroup

dn: ou=Mounts,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Mounts

dn: ou=Ethers,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Ethers

dn: ou=Hosts,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Hosts

dn: ou=Services,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Services

dn: ou=Group,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Group

dn: ou=People,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: People

dn: ou=Aliases,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Aliases

dn: ou=Printers,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Printers