Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
pl:przewodniki:openldap-autoryzacja-uzytkownikow [2007/12/10 10:52]
duddits
pl:przewodniki:openldap-autoryzacja-uzytkownikow [2007/12/10 12:16]
duddits
Line 11: Line 11:
   * nss_ldap   * nss_ldap
  
-====== Konfiguracja ======+====== Konfiguracja ​serwera ​======
 Na pierwszy ogień bierzemy pod lupę plik konfiguracyjny **slapd**, /​etc/​openldap/​slapd.conf. Jest on już wstępnie przygotowany,​ zmienimy w nim tylko parę rzeczy dostosowując go do naszych potrzeb. Zakładam, że chcemy aby nasz OpenLDAP obsługiwał połączenia TLS/SSL: Na pierwszy ogień bierzemy pod lupę plik konfiguracyjny **slapd**, /​etc/​openldap/​slapd.conf. Jest on już wstępnie przygotowany,​ zmienimy w nim tylko parę rzeczy dostosowując go do naszych potrzeb. Zakładam, że chcemy aby nasz OpenLDAP obsługiwał połączenia TLS/SSL:
   TLSCACertificateFile /​usr/​share/​ssl/​ca-bundle.crt   TLSCACertificateFile /​usr/​share/​ssl/​ca-bundle.crt
Line 46: Line 46:
   SLAPDURLLIST="​ldap:///​ ldaps://​localhost:​636/​ ldapi://​%2fvar%2frun%2fslapd%2fslapd.sock"​   SLAPDURLLIST="​ldap:///​ ldaps://​localhost:​636/​ ldapi://​%2fvar%2frun%2fslapd%2fslapd.sock"​
 Resztę pozostawiamy bez zmian. Resztę pozostawiamy bez zmian.
 +
 +Pozostaje jeszcze kwestia ustawień dostępu do slapd. Edytujemy plik /​etc/​openldap/​slapd.access.conf i zmieniamy go jak poniżej:
 +  access to attrs="​userPassword"​
 +      by dn="​uid=root,​ou=people,​dc=th-domena,​dc=pl"​ write
 +      by anonymous auth
 +      by self write
 +      by * none
 +  ​
 +  access to *
 +      by dn="​uid=root,​ou=people,​dc=th-domena,​dc=pl"​ write
 +      by anonymous read
 +      by * search
  
 Uruchamiamy usługę: Uruchamiamy usługę:
   sudo /​sbin/​service ldap start   sudo /​sbin/​service ldap start
 +
 +I sprawdzamy czy działa:
 +  ldapsearch -D "​cn=Manager,​dc=th-domena,​dc=pl"​ -W -x
 +Podajemy hasło, które wcześniej wygenerowaliśmy i zapisaliśmy w slapd.conf. Dodatkowo sprawdźmy czy usługa działa na portach 389 (ldap) i 636 (ldapssl) oraz czy utworzyło się gniazdko w /​var/​run/​slapd.
 +Jeśli wszystko jest jak należy to lecimy dalej.
 +====== Migracja kont ======
 +Wykorzystamy skrypty perla dostępne w paczce openldap-migration.
 +Ponieważ będzie konieczny dostęp do pliku /etc/shadow musimy skorzystać z  uprawnień roota. Najpierw jednak modyfikujemy plik /​etc/​openldap/​migrate_common.ph:​
 +  $DEFAULT_BASE = "​dc=th-domena,​dc=pl";​
 +  $EXTENDED_SCHEMA = 1;
 +No to jesteśmy gotowi do eksportu danych:
 +  export ETC_SHADOW=/​etc/​shadow
 +  cd /​usr/​share/​openldap/​migration
 +  ./​migrate_base.pl > /​tmp/​base.ldif
 +  ./​migrate_group.pl /etc/group /​tmp/​group.ldif
 +  ./​migrate_hosts.pl /etc/hosts /​tmp/​hosts.ldif
 +  ./​migrate_passwd.pl /etc/passwd /​tmp/​passwd.ldif
 +Jak wspomniałem,​ będziemy potrzebowali uprawnień roota (przeniesienie haseł z /​etc/​shadow).
 +Teraz importujemy dane do bazy OpenLDAP:
 +  ldapadd -D "​cn=Manager,​dc=th-domena,​dc=pl"​ -W -x -f /​tmp/​base.ldif
 +  ldapadd -D "​cn=Manager,​dc=th-domena,​dc=pl"​ -W -x -f /​tmp/​group.ldif
 +  ldapadd -D "​cn=Manager,​dc=th-domena,​dc=pl"​ -W -x -f /​tmp/​passwd.ldif
 +  ldapadd -D "​cn=Manager,​dc=th-domena,​dc=pl"​ -W -x -f /​tmp/​hosts.ldif
 +====== Konfiguracja klientów ======
 +Pora na "​powiedzenie"​ PAM gdzie ma szukać informacji o kontach. Edytujemy plik /​etc/​pam.d/​system-auth i modyfikujemy go jak poniżej:
 +  #%PAM-1.0
 +  auth            required ​       pam_listfile.so item=user sense=deny file=/​etc/​security/​blacklist onerr=succeed
 +  auth            required ​       pam_env.so
 +  auth            required ​       pam_tally.so deny=0 file=/​var/​log/​faillog onerr=succeed
 +  auth            sufficient ​     pam_unix.so likeauth nullok shadow
 +  auth            sufficient ​     pam_ldap.so use_first_pass
 +  ​
 +  account ​        ​required ​       pam_tally.so file=/​var/​log/​faillog onerr=succeed
 +  account ​        ​required ​       pam_time.so
 +  account ​        ​sufficient ​     pam_unix.so
 +  account ​        ​sufficient ​     pam_ldap.so
 +  ​
 +  # password ​     [success=1 ignore=reset abort=die default=bad] pam_pwgen.so upper=1 digit=1
 +  password ​       required ​       pam_cracklib.so try_first_pass difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
 +  password ​       sufficient ​     pam_unix.so nullok blowfish shadow use_authtok
 +  password ​       sufficient ​     pam_ldap.so use_authok use_first_pass
 +  password ​       required ​       pam_exec.so failok seteuid /​usr/​bin/​make -C /var/db
 +  # password ​     required ​       pam_exec.so failok seteuid /​usr/​bin/​make -C /var/yp
 +  ​
 +  session ​        ​optional ​       pam_keyinit.so revoke
 +  session ​        ​required ​       pam_limits.so change_uid
 +  session ​        ​[success=1 default=ignore] ​     pam_succeed_if.so service in crond quiet use_uid
 +  session ​        ​required ​       pam_unix.so
 +  session ​        ​required ​       pam_mkhomedir.so skel=/​etc/​skel/​ umask=0066
 +  session ​        ​optional ​       pam_ldap.so
 +Słówko komentarza do modułu pam_mkhomedir.so:​ dzięki niemu katalog domowy zostanie utworzony automatycznie (o ile nie istnieje).
 +
 +Przechodzimy do konfiguracji **/​etc/​ldap.conf** (nie mylić z /​etc/​openldap/​ldap.conf):​
 +  uri ldaps://​127.0.0.1:​636/​
 +  ldap_version 3
 +  rootbinddn cn=manager,​dc=th-domena,​dc=pl
 +  scope sub
 +  bind_policy soft
 +  pam_login_attribute uid
 +  pam_member_attribute memberuid
 +  pam_password crypt
 +  pam_password exop
 +  nss_base_passwd ​        ​ou=People,​dc=th-domena,​dc=pl
 +  nss_base_shadow ​        ​ou=People,​dc=th-domena,​dc=pl
 +  nss_base_group ​         ou=Group,​dc=th-domena,​dc=pl
 +  nss_base_hosts ​         ou=Hosts,​dc=th-domena,​dc=pl
 +  ssl start_tls
 +  ssl on
 +Pozostaje nam jeszcze zmiana /​etc/​nsswitch.conf (zmieniamy 3 linijki):
 +  passwd: ​        files ldap
 +  group: ​         files ldap
 +  shadow: ​        files ldap
 +Na koniec musimy wykonać jeszcze **jedną ważną rzecz**. Zapisujemy hasło ​ z pliku /​etc/​openldap/​slapd.conf (rootpw) w /​etc/​ldap.secret w postaci niezaszyfrowanej i zmieniamy uprawnienia jak poniżej:
 +  -rw------- 1 root root 9 2007-12-10 09:43 /​etc/​ldap.secret
 +Bez tego nie będziemy mogli odpytywać bazy LDAP.
 +
 +Szybkie sprawdzenie jak to działa:
 +  getent passwd root
 +Wynik tego polecenia powinien zwrócić dwa wpisy:
 +  root:​x:​0:​0:​root:/​root:/​bin/​sh ​
 +  root:​x:​0:​0:​root:/​root:/​bin/​sh
 +Co by się zgadzało, bo informacje o kontach są teraz zapisane w /etc/passwd i w OpenLDAP.
  
 ====== Przykładowe pliki konfiguracyjne ====== ====== Przykładowe pliki konfiguracyjne ======
 +  * {{pl:​przewodniki:​slapd.conf.txt|/​etc/​openldap/​slapd.conf}}
 +  * {{pl:​przewodniki:​slapd.access.conf.txt|/​etc/​openldap/​slapd.access.conf}}
 +  * {{pl:​przewodniki:​ldap.conf.txt|/​etc/​openldap/​ldap.conf}}
 +  * {{pl:​przewodniki:​system-auth.txt|/​etc/​pam.d/​system-auth}}
 +  * {{pl:​przewodniki:​ldap.txt|/​etc/​sysconfig/​ldap}}
 +  * {{pl:​przewodniki:​ldap2.conf.txt|/​etc/​ldap.conf}}
 +  * {{pl:​przewodniki:​nsswitch.conf.txt|/​etc/​nsswitch.conf}}
  
pl/przewodniki/openldap-autoryzacja-uzytkownikow.txt · Last modified: 2007/12/10 12:16 by duddits
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0 Powered by Lighttpd - fly light