Jeden LDAP dla wszystkich us

Konfiguracja serwerów, usług, itp.
natomiast
Posty: 25
Rejestracja: 17 kwietnia 2009, 12:05

Jeden LDAP dla wszystkich usług

Post autor: natomiast »

Witam,

Mam takie pytanie. Mam dwie maszyny wirtualne. Na jednej ma być samba na drugiej serwer pocztowy. Serwer pocztowy do identyfikacji użytkowników wykorzystuję ldap. W jaki sposób podpiąć już skonfigurowaną domenę w ldap do serwera z sambą tak aby można było ustawić dostęp do udostępnionych katalogów na podstawie informacji o użytkownikach z domeny ldap na pierwszym serwerze?
Linki do manuali mile widziane :)
Pzdr
Awatar użytkownika
pawkrol
Moderator
Posty: 939
Rejestracja: 03 kwietnia 2011, 10:25

Post autor: pawkrol »

Jaka domena ldap? Nigdy o czymś takim nie słyszałem.
Jaka masz domenę ?
- Windows i AD
- Sambę z uwierzytelnianiem z ldap.
- Samba z uwierzytelnianiem z kont systemowych ( /etc/passwd)
- Samba4 z AD

Sprecyzuj.

Mogę Ci podpowiedzieć, że najlepiej zacząć od domeny (samba+ldap), a później postawić serwer pocztowy z uwierzytelnianiem z tego samego katalogu co wspomniana domena.
natomiast
Posty: 25
Rejestracja: 17 kwietnia 2009, 12:05

Post autor: natomiast »

Witam,
Mam:
- Sambę z uwierzytelnianiem z ldap.
Na jednym serwerze mam samba+ldap. Na drugim mam serwer pocztowy Postfix.
Zainstalowałem Postfix-a według tego tutoriala:
http://acidx.net/wordpress/2014/06/inst ... roundcube/
i mam teraz taki problem. Jak wydaje komendę:
postmap -q [email protected] ldap:/etc/postfix/ldap_virtual_recipients.cf
(gdzie user1 jest w ou=Users,dc=domena,dc=local)
otrzymuję
postmap: warning: dict_ldap_connect: Unable to bind to server ldap://IP_LDAP_SERWER:389 with dn uid=postfix,ou=services,dc=domena,dc=local: 49 (Invalid credentials)
postmap: fatal: table ldap:/etc/postfix/ldap_virtual_recipients.cf: query error: Success
Ustawienia pliku ldap_virtual_recipients.cf:
bind = yes
bind_dn = uid=postfix,ou=services,dc=domena,dc=local
bind_pw = tajnehaslo
server_host = ldap:///IP_LDAP_SERWER:389
search_base = ou=Users,dc=domena,dc=local
domain = domena.local
query_filter = (&(mail=%s)(mailEnabled=TRUE))
result_attribute = mail
Utworzyłem ou=service na serwerze LDAP i dodałem tam użytkownika postfix.
I nie działa :(
Awatar użytkownika
pawkrol
Moderator
Posty: 939
Rejestracja: 03 kwietnia 2011, 10:25

Post autor: pawkrol »

Unable to bind to server ldap://IP_LDAP_SERWER:389 with dn uid=postfix,ou=services,dc=domena,dc=local: 49 (Invalid credentials)
Jasno mówi, iż masz złe poświadczenia. Albo nie ma takiego użytkownika uid=postfix,ou=services,dc=domena,dc=local, albo złe hasło podałeś w pliku konfiguracyjnym postfixa
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

Post autor: sethiel »

Jeden LDAP by te wszystkie usługi złączyć i w ciemności zespolić więzami.

Wybaczcie, nie mogłem się powstrzymać.
natomiast
Posty: 25
Rejestracja: 17 kwietnia 2009, 12:05

Post autor: natomiast »

Mam nadzieje, że ironiczne ego kolegi sethiel zostało zaspokojone przez napisanie tego, jakże wiele wnoszącego do tematu postu.
A tak z innej beczki. Na serwerze LDAP wykonując polecenie:
ldapsearch -x -W -D uid=dovecot,ou=service,dc=sawtrans,dc=biz -b ou=Users,dc=domena,dc=biz -LLL 'uniqueIdentifier=marekk'
Nie otrzymuję wartości pola userPassword pomimo modyfikacji pliku slapd.conf
access to attrs=userPassword,shadowLastChange
by dn="@ADMIN@" write
by dn="uid=dovecot,ou=service,dc=domena,dc=biz" read
by anonymous auth
by self write
by * non
Może sethiel ma jakąś (niekoniecznie ironiczną) poradę w tym temacie?
Pozdrawiam,
Awatar użytkownika
pawkrol
Moderator
Posty: 939
Rejestracja: 03 kwietnia 2011, 10:25

Post autor: pawkrol »

Rozumiem, że po wydaniu powyższej komendy nie masz zwróconych żadnych atrybutów.
Oczywiście atrybut uniqueIdentifier ma wartość marekk.
Spróbuj wykonać szukanie z konta admina ldapa i pokaż wynik.
natomiast
Posty: 25
Rejestracja: 17 kwietnia 2009, 12:05

Post autor: natomiast »

Wartości zwracane po wykonaniu komendy:
ldapsearch -x -W -D uid=dovecot,ou=service,dc=domena,dc=biz -b ou=Users,dc=domena,dc=biz -LLL 'uniqueIdentifier=marekk'
Wynik:
Enter LDAP Password:
dn: uniqueIdentifier=marekk,ou=Users,dc=domena,dc=biz
uid: marekk
sambaPwdMustChange: 1737970363
sambaPrimaryGroupSID: S-1-5-21-1362602590-4197101196-800564515-513
sambaAcctFlags:
givenName: marekk
sambaKickoffTime: 2147483647
uidNumber: 1001
sambaNTPassword: 97C0032A6EFB3871948A0FAF3544B1AD
sambaLogonTime: 0
sambaPwdLastSet: 1422610363
sambaPwdCanChange: 0
loginShell: /bin/bash
homeDirectory: /home/katalogi/marekk
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
objectClass: sambaSamAccount
objectClass: extensibleObject
objectClass: PostfixBookMailAccount
sambaLogoffTime: 2147483647
mail: [email protected]
sn: marekk
sambaSID: S-1-5-21-1362602590-4197101196-800564515-3002
gidNumber: 513
sambaLMPassword: DC0AD5798943AD8BAAD3B435B51404EE
cn: Marek Kowalski
shadowMax: 3650
gecos: Marek Kowalski
uniqueIdentifier: marekk
displayName: Marek Kowalski
mailEnabled: TRUE
mailGidNumber: 5000
mailHomeDirectory: /srv/vmail/[email protected]
mailStorageDirectory: maildir:/srv/vmail/[email protected]
mailUidNumber: 5000
mailAlias: [email protected]


Po wydnaniu komendy:
ldapsearch -x -W -D cn=admin,dc=domena,dc=biz -b ou=Users,dc=domena,dc=biz -LLL 'uniqueIdentifier=marekk'

Wynik:

Enter LDAP Password:
dn: uniqueIdentifier=marekk,ou=Users,dc=domena,dc=biz
uid: marekk
sambaPwdMustChange: 1737970363
sambaPrimaryGroupSID: S-1-5-21-1362602590-4197101196-800564515-513
sambaAcctFlags:
givenName: marekk
sambaKickoffTime: 2147483647
uidNumber: 1001
sambaNTPassword: 97C0032A6EFB3871948A0FAF3544B1AD
sambaLogonTime: 0
sambaPwdLastSet: 1422610363
sambaPwdCanChange: 0
loginShell: /bin/bash
homeDirectory: /home/katalogi/marekk
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
objectClass: sambaSamAccount
objectClass: extensibleObject
objectClass: PostfixBookMailAccount
sambaLogoffTime: 2147483647
mail: [email protected]
sn: marekk
sambaSID: S-1-5-21-1362602590-4197101196-800564515-3002
shadowLastChange: 16465
gidNumber: 513
sambaLMPassword: DC0AD5798943AD8BAAD3B435B51404EE
cn: Marek Kowalski
shadowMax: 3650
gecos: Marek Kowalski
uniqueIdentifier: marekk
displayName: Marek Kowalski
mailEnabled: TRUE
mailGidNumber: 5000
mailHomeDirectory: /srv/vmail/[email protected]
mailStorageDirectory: maildir:/srv/vmail/[email protected]
mailUidNumber: 5000
mailAlias: [email protected]
userPassword:: e3NzaGF9MENpazdLWXNUbWRrQ1c1T3ltcFJmQkdHRmpwMXZva0hYTFZScEE9PQ=
=
Awatar użytkownika
pawkrol
Moderator
Posty: 939
Rejestracja: 03 kwietnia 2011, 10:25

Post autor: pawkrol »

Ok. Faktycznie wygląda na to jakby uid=dovecot nie miał uprawnień do odczytania atrybutu userpassword. Pokaż wszystkie acl z pliku slapd.conf, bo pewnie chodzi o kolejność czytania reguł. Zasada jest taka: od najbardziej konkretnych do najogólniejszych.

Tak na marginesie się spytam czy działa Ci samba ? Zastanawia mnie atrybut uniqueIdentifier, a co za tym idzie całe

Kod: Zaznacz cały

dn:[B] uniqueIdentifier[/B]=marekk,ou=Users,dc=domena,dc=biz.  
Jak tworzyłeś schemat samby ?
Skrypty smbldap-tools, którymi ja się posługuje tworzą takie

Kod: Zaznacz cały

dn: [B]uid[/B]=marekk,ou=Users,dc=domena,dc=biz
natomiast
Posty: 25
Rejestracja: 17 kwietnia 2009, 12:05

Post autor: natomiast »

Tak jak pisałem na początku próbuję połączyć trzy usługi LDAP, samba i serwer pocztowy. Korzystam z tych tutoriali (najpierw instalacja samba+ldap potem poczta). Na razie zatrzymałem się na instalacji Dovecot.
Samba+ldap:
http://siddou.mynetgear.com/2013/06/ins ... -7-wheezy/
Poczta:
http://acidx.net/wordpress/2014/06/inst ... roundcube/

Tak więc użytkowników tworze za pomocą smbldap-tool i '"dostosowuję" ręcznie do potrzeb serwera pocztowego. Samba mi działa bo użytkownicy mają parametr uid.
Poniżej wklejam slapd.conf:
root@samba3:/usr/share/slapd# cat slapd.conf
# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.

#######################################################################
# Global Directives:

# Features to permit
#allow bind_v2

# Schema and objectClass definitions
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema

# Where the pid file is put. The init.d script
# will not stop the server if you change this.
pidfile /var/run/slapd/slapd.pid

# List of arguments that were passed to the server
argsfile /var/run/slapd/slapd.args

# Read slapd.conf(5) for possible values
loglevel none

# Where the dynamically loaded modules are stored
modulepath /usr/lib/ldap
moduleload back_@BACKEND@

# The maximum number of entries that is returned for a search operation
sizelimit 500

# The tool-threads parameter sets the actual amount of cpu's that is used
# for indexing.
tool-threads 1

#######################################################################
# Specific Backend Directives for @BACKEND@:
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
backend @BACKEND@

#######################################################################
# Specific Backend Directives for 'other':
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
#backend <other>

#######################################################################
# Specific Directives for database #1, of type @BACKEND@:
# Database specific directives apply to this databasse until another
# 'database' directive occurs
database @BACKEND@

# The base of your directory in database #1
suffix "@SUFFIX@"

# rootdn directive for specifying a superuser on the database. This is needed
# for syncrepl.
# rootdn "cn=admin,@SUFFIX@"

# Where the database file are physically stored for database #1
directory "/var/lib/ldap"

# The dbconfig settings are used to generate a DB_CONFIG file the first
# time slapd starts. They do NOT override existing an existing DB_CONFIG
# file. You should therefore change these settings in DB_CONFIG directly
# or remove DB_CONFIG and restart slapd for changes to take effect.

# For the Debian package we use 2MB as default but be sure to update this
# value if you have plenty of RAM
dbconfig set_cachesize 0 2097152 0

# Sven Hartge reported that he had to set this value incredibly high
# to get slapd running at all. See http://bugs.debian.org/303057 for more
# information.

# Number of objects that can be locked at the same time.
dbconfig set_lk_max_objects 1500
# Number of locks (both requested and granted)
dbconfig set_lk_max_locks 1500
# Number of lockers
dbconfig set_lk_max_lockers 1500

# Indexing options for database #1
index objectClass eq

# Save the time that the entry gets modified, for database #1
lastmod on

# Checkpoint the BerkeleyDB database periodically in case of system
# failure and to speed slapd shutdown.
checkpoint 512 30

# The userPassword by default can be changed
# by the entry owning it if they are authenticated.
# Others should not be able to see it, except the
# admin entry below
# These access lines apply to database #1 only
access to attrs=userPassword,shadowLastChange
by dn="@ADMIN@" write
by dn="uid=dovecot,ou=service,dc=domena,dc=biz" read
by anonymous auth
by self write
by * none

# Ensure read access to the base for things like
# supportedSASLMechanisms. Without this you may
# have problems with SASL not knowing what
# mechanisms are available and the like.
# Note that this is covered by the 'access to *'
# ACL below too but if you change that as people
# are wont to do you'll still need this if you
# want SASL (and possible other things) to work
# happily.
access to dn.base="" by * read

# The admin dn has full write access, everyone else
# can read everything.
access to *
by dn="@ADMIN@" write
by * read

# For Netscape Roaming support, each user gets a roaming
# profile for which they have write access to
#access to dn=".*,ou=Roaming,o=morsnet"
# by dn="@ADMIN@" write
# by dnattr=owner write

#######################################################################
# Specific Directives for database #2, of type 'other' (can be @BACKEND@ too):
# Database specific directives apply to this databasse until another
# 'database' directive occurs
#database <other>

# The base of your directory for database #2
#suffix "dc=debian,dc=org"
ODPOWIEDZ