Коллеги,Наверное уже мега боян и было много раз, и всё же - пожалуйста помогите определиться с дальнейшими действиями. :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 адресной книге, которой по сути дела просто не существует... пока...
>на чем остановиться подскажите плз? хочется законченного решения... еще раз повторюсь использовать
>связку windows AD domain + freebsd samba + freebsd services можно...
>но как то неправильно это.... гетерогенные системы и всё такое... :)Законченого решения нет. Так что openldap + схемы для каждого сервиса.
Плохо смотрели - у меня получилось сделать связку:
OpenLDAP - в нем хранятся учетки для:
1) Samba PDC (NT4)
2) Postfix + Courier-Imap
3) eJabberd (общий ростер, vCard, logdb)
4) OpenVPN
5) SquidЗаводим через LdapAdmin пользователя, нужных template-ах прописываем openvpn и почту, назначаем ему пароль и все.
Его логин и пароль - по всем 5 сервисам...
Так что добиться этого можно - работайте :)
>Заводим через LdapAdmin пользователя, нужных template-ах прописываем openvpn и почту, назначаем ему
>пароль и все.Уважаемый, а можно эти соответствующие темплэйты огласить, и огласить используемые схемы ибо если юзать стандартные схемы и стандартные темплэйты для лдападмина то при включении галки почта и прописании там всего необходимого при создании пользователя выдается ошибка:
LDAP error! Invalid Syntax: objectclass: value #3 invalid per syntax.
>Законченого решения нет. Так что openldap + схемы для каждого сервиса.но ведь при наличии отдельной схемы это получается тоже самое что и иметь все эти сервисы в отдельных базах что делает систему совершенно неуправляемой на более менее крупных объемах... поэтому это отпадает сразу же и выбор падает на использование MS AD. других вариантов я не вижу. Иначе ничего кроме как жестокого каждодневного геммора мы добиться не сможем.
>но ведь при наличии отдельной схемы это получается тоже самое что и
>иметь все эти сервисы в отдельных базах что делает систему совершенно
>неуправляемой на более менее крупных объемах.Бредс....схемы просто добавляют необходимые атрибуты и objectClass-ы - все равно пользователь будет один и его unixPassword тоже будет один....
> 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
>Да все нормально заворачивается с 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.
> ну частично 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: Computersdn: ou=Idmap,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Idmapdn: ou=Rpc,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Rpcdn: ou=Protocols,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Protocolsdn: ou=Profile,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Profiledn: ou=Networks,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Networksdn: ou=Netgroup,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Netgroupdn: ou=Mounts,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Mountsdn: ou=Ethers,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Ethersdn: ou=Hosts,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Hostsdn: ou=Services,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Servicesdn: ou=Group,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Groupdn: ou=People,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Peopledn: ou=Aliases,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Aliasesdn: ou=Printers,ou=Posix,dc=myorg
objectClass: organizationalUnit
objectClass: top
ou: Printers