> ну частично 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