CONTENT
- CHANGES
Szukaj
#top Instalacja¶
- Instalacja
- Logging
- Poinstalacyjna konfiguracja
- Sytem configure
- Enable TLS encryption OpenLDAP
- Daemon configure slapd.conf
- Create LDAP Database
- Create LDAP ROOT Tree
- Enable TLS encryption connection to OpenLDAP
- Create LDAP Tree Service (ssh)
- Create LDAP Tree Service (ssh) configure
- Create LDAP Tree Service (ssh) LDAP tree
- Create LDAP Tree Service (sudo)
- Create LDAP Tree Service (sudo) configure
- Create LDAP Tree Service (sudo) LDAP tree
Instalację serwera OpenLDAP można wykonać na różne sposoby: od kompilacji ze źdródeł poprzez instalację pojedynczych paczek rpm za pomocą polecenia rpm skończywszy na instalacja z użyciem menedżera pakietów, który zainstaluje wszystkie niezbędne paczki wraz zależnościami.
Celem niniejszego dokumentu nie jest rozważanie różnych metod instalacji tylko nieco usprawnienie użyteczności konfiguracji serwera OpenLDAP po zainstalowaniu oraz wprowadzenie porządku / hierarchi położenia plików z których korzysta usługa w strukturze katalogowej.
Wszystko to zostało opisane poniżej.
#top Logging¶
W pierwszej kolejności należy utworzyć katalog na pliki logów:
mkdir -p /var/log/slapd
OpenLDAP bezpośrednio sam nie zapisuje informacji do plików. Wykorzystuje do tego celu demona syslog / rsyslog do którego wysyła informacje wywołując funkcję biblioteki systemowej syslog().
Bez względu na wersję demona syslog / rsyslog (zależnej od wersji systemu operacyjnego) włączenie odbieranie logów wysyłanych poprzez funkcję biblioteki systemowej konfiguruje się podobnie:
W pkiku konfiguracyjnym
/etc/syslog.conf
demona syslog dostępnego w systemie CentOS 5.* należy dodać zapis do pliku informacji pochodzących z facilities local4
:
# openldap
local4.* /var/log/slapd/slapd.log
W pkiku konfiguracyjnym
/etc/rsyslog.conf
demona rsyslog dostępnego w systemie CentOS 6.* (i wyższych) należy dodać zapis do pliku informacji pochodzących z facilities local4
:
# openldap
local4.* /var/log/slapd/slapd.log
Następnie należy jeszcze zadbać o rotację logów poprzez umieszczenie stosownej konfiguracji dla logrotate:
Zmiany jakie należy wprowadzić w
/etc/logrotate.d/openldap
:cat > /etc/logrotate.d/openldap << EOF # logrotate openldap /var/log/slapd/*.log { notifempty missingok postrotate /bin/kill -HUP \`cat /var/run/*syslogd.pid 2> /dev/null\` 2> /dev/null || true endscript } EOF
#top Poinstalacyjna konfiguracja¶
#top Sytem configure¶
W pierwszej kolejności należy skopiować plik konfiguracyjny we właściwie miejsce (zgodnie z ustawioną wcześniej ścieżką przekazywaną jako argument wiersza poleceń):
cp -av /etc/openldap/slapd.conf.bak /etc/openldap/slapd.conf
Dodanie pliku konfiguracyjnego slapd.conf do argumentów wiersza poleceń
sed 's,^#SLAPD_OPTIONS=,SLAPD_OPTIONS="-f /etc/openldap/slapd.conf",g' -i /etc/sysconfig/ldap cat /etc/sysconfig/ldap | grep SLAPD_OPTIONS
Otrzymany rezultat powinien być analogiczny do poniższego:
SLAPD_OPTIONS="-f /etc/openldap/slapd.conf"
#top Enable TLS encryption OpenLDAP¶
Poniższe zmiany są niezbędne do aktywowania obsługi szyfrowanych połączeń TLS nawiązywanych na porcie 636/tcp / ldaps (LDAP over SSL), natomiast aktywowanie obsługi szyfrowanych połączeń TLS na domyślnym porcie 389/tcp / ldap zgodnie z komentarzem w pliku konfiguracyjnym
slapd.conf
wymaga ustawienia opcji TLSCACertificateFile TLSCertificateFile TLSCertificateKeyFile poprzez podanie ścieżek do pliku i klucza z certyfikatem oraz CA certyfikatów.sed 's,^#SLAPD_LDAPS.*$,SLAPD_LDAPS=yes,g' -i /etc/sysconfig/ldap sed 's,^SLAPD_LDAPS.*$,SLAPD_LDAPS=yes,g' -i /etc/sysconfig/ldap cat /etc/sysconfig/ldap | grep SLAPD_LDAPS
Otrzymany rezultat powinien być analogiczny do poniższego:
# At least one of SLAPD_LDAP, SLAPD_LDAPI and SLAPD_LDAPS must be set to 'yes'! SLAPD_LDAPS=yes
Generate the required certificates:
openssl req -new -x509 -nodes -text -out /etc/pki/tls/certs/slapd.crt -keyout /etc/pki/tls/certs/slapd.key -days 365
Ustawienie prawidłowych atrybutów dla wygenerowanego pliku i klucza certyfikatu:
chown -Rf root:ldap /etc/pki/tls/certs/slapd.crt chown -Rf root:ldap /etc/pki/tls/certs/slapd.key chmod -Rf 640 /etc/pki/tls/certs/slapd.key
Sprawdzenie ustawionych atrybutów dla wygenerowanego wcześniej pliku i klucza certyfikatu:
ll /etc/pki/tls/certs/slapd.crt /etc/pki/tls/certs/slapd.key
Otrzymany rezultat powinien być analogiczny do poniższego:
-rw-r--r--. 1 root ldap 4472 2013-06-11 22:19 /etc/pki/tls/certs/slapd.crt -rw-r-----. 1 root ldap 1704 2013-06-11 22:19 /etc/pki/tls/certs/slapd.key
Następnie należy odkomentować ustawienia dotyczące certyfikatu oraz klucza używanego przy nawiązywaniu szyfrowanych połączeń TLS.
sed 's,^# TLSCACertificateFile,TLSCACertificateFile,g' -i /etc/openldap/slapd.conf sed 's,^# TLSCertificateFile.*$,TLSCertificateFile /etc/pki/tls/certs/slapd.crt,g' -i /etc/openldap/slapd.conf sed 's,^# TLSCertificateKeyFile.*$,TLSCertificateKeyFile /etc/pki/tls/certs/slapd.key,g' -i /etc/openldap/slapd.conf cat /etc/openldap/slapd.conf | grep -E 'TLSCACertificateFile|TLSCertificateFile|TLSCertificateKeyFile'
Otrzymany rezultat powinien być analogiczny do poniższego:
TLSCACertificateFile /etc/pki/tls/certs/ca-bundle.crt TLSCertificateFile /etc/pki/tls/certs/slapd.crt TLSCertificateKeyFile /etc/pki/tls/certs/slapd.key
#top Daemon configure slapd.conf¶
http://www.openldap.org/doc/admin24/quickstart.html
Wygenerowanie hasła dla Manager do zarządzania serwerem oraz wprowadzania zmian jako administrator (oczywiście ciąg znaków
PASSWORD
należy zastąpić własnym ściśle tajnym hasłem, którego nie udostępniać należy nikomu):
slappasswd -h {SHA} -s PASSWORD
Otrzymany rezultat powinien być analogiczny do poniższego:
New password: Re-enter new password: {SHA}ESu3kTBHkd3PaS4p/VzxSbNf6jc=
Wprowadzenie dodatkowych zmian w pliku konfiguracyjnym
slapd.conf
:sed 's/^checkpoint/#checkpoint/g' -i /etc/openldap/slapd.conf sed 's/^suffix.*$/suffix "dc=wbcd,dc=pl"/g' -i /etc/openldap/slapd.conf sed 's/^rootdn.*$/rootdn "cn=Manager,dc=wbcd,dc=pl"/g' -i /etc/openldap/slapd.conf sed '/^rootpw.*/d' -i /etc/openldap/slapd.conf sed 's|^\(.*rootpw.*crypt.*\)$|\1\nrootpw {SHA}ESu3kTBHkd3PaS4p/VzxSbNf6jc=|g' -i /etc/openldap/slapd.conf cat /etc/openldap/slapd.conf | grep -E '^#checkpoint|^suffix|^rootdn|^rootpw|^directory'
Otrzymany rezultat powinien być analogiczny do poniższego:
suffix "dc=wbcd,dc=pl" #checkpoint 1024 15 rootdn "cn=Manager,dc=wbcd,dc=pl" rootpw {SHA}ESu3kTBHkd3PaS4p/VzxSbNf6jc= directory /var/lib/ldap
Weryfikacja wprowadzonych w sposób automatyczny zmian:
vi /etc/openldap/slapd.conf
Istotne wprowadzone zmiany powininny być analogiczne do poniższych:
database bdb suffix "dc=wbcd,dc=pl" #checkpoint 1024 15 rootdn "cn=Manager,dc=wbcd,dc=pl" # Cleartext passwords, especially for the rootdn, should # be avoided. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. # rootpw secret # rootpw {crypt}ijFYNcSNctBYg rootpw {SHA}ESu3kTBHkd3PaS4p/VzxSbNf6jc= # The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd and slap tools. # Mode 700 recommended. directory /var/lib/ldap
Na koniec należy skopiować plik
DB_CONFIG
do katalogu z bazą danych OpenLDAP:cp -av /usr/share/doc/openldap-servers-*/DB_CONFIG.example /var/lib/ldap/DB_CONFIG chown -Rfv ldap:ldap /var/lib/ldap/
Po wykonaniu powyższych kroków należy uruchomić (lub uruchomić ponownie) serwer OpenLDAP:
# /etc/init.d/slapd start
/etc/init.d/slapd restart
Otrzymany rezultat powinien być analogiczny do poniższego:
Stopping slapd: [ OK ] Starting slapd: [ OK ]
#top Create LDAP Database¶
#top Create LDAP ROOT Tree¶
Przygotowanie struktury drzewa bazy LDAP:
Zawartość pliku
/etc/openldap/schema/base.ldif
:cat > /etc/openldap/schema/base.ldif << EOF dn: dc=wbcd,dc=pl objectClass: top objectClass: domain o: Webbot Inc. dc: wbcd dn: cn=Manager,dc=wbcd,dc=pl objectClass: top objectClass: organizationalRole cn: Manager dn: ou=users,dc=wbcd,dc=pl ou: users objectClass: top objectClass: organizationalUnit dn: ou=groups,dc=wbcd,dc=pl ou: groups objectClass: top objectClass: organizationalUnit EOF
Zawartość pliku
/etc/openldap/schema/group.ldif
:cat > /etc/openldap/schema/group.ldif << EOF dn: cn=admin,ou=groups,dc=wbcd,dc=pl objectClass: posixGroup objectClass: top cn: admin gidNumber: 999 EOF
Zawartość pliku
/etc/openldap/schema/users.ldif
:cat > /etc/openldap/schema/users.ldif << EOF dn: uid=admin,ou=users,dc=wbcd,dc=pl uid: admin cn: admin objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: password shadowLastChange: 15140 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 999 gidNumber: 999 homeDirectory: /home/ldap EOF
Dodanie do bazy struktury drzewa LDAP:
ldapadd -x -D "cn=Manager,dc=wbcd,dc=pl" -w PASSWORD -f /etc/openldap/schema/base.ldif ldapadd -x -D "cn=Manager,dc=wbcd,dc=pl" -w PASSWORD -f /etc/openldap/schema/group.ldif ldapadd -x -D "cn=Manager,dc=wbcd,dc=pl" -w PASSWORD -f /etc/openldap/schema/users.ldif
Otrzymany rezultat powinien być analogiczny do poniższego:
adding new entry "dc=wbcd,dc=pl" adding new entry "cn=Manager,dc=wbcd,dc=pl" adding new entry "ou=users,dc=wbcd,dc=pl" adding new entry "ou=groups,dc=wbcd,dc=pl" adding new entry "cn=admin,ou=groups,dc=wbcd,dc=pl" adding new entry "uid=admin,ou=users,dc=wbcd,dc=pl"
Przy pomocy poniższych poleceń można sprawdzić dodane wpisy do bazy LDAP:
ldapsearch -x -b 'dc=wbcd,dc=pl' '(objectClass=*)' ldapsearch -H ldap://cen06x64.xen.wbcd.pl -x -b 'dc=wbcd,dc=pl' '(objectClass=*)' ldapsearch -H ldap://cen06x64.xen.wbcd.pl -x -b 'dc=wbcd,dc=pl' -w "" '(objectClass=*)' ldapsearch -H ldap://cen06x64.xen.wbcd.pl -x -D 'cn=Manager,dc=wbcd,dc=pl' -b 'dc=wbcd,dc=pl' -w PASSWORD '(objectClass=*)'
#top Enable TLS encryption connection to OpenLDAP¶
W celu zapewnienia szyfrowanej i bezpiecznej komunikacji do serwera OpenLDAP należy upewnić się, że odpowiednie opcje są ustawione analogicznie:
Zmiany wprowadzone w dystrybucji CentOS w wersji 5.* powinny być analogiczne do poniższych:
Plik
/etc/ldap.conf
powinien zawierać ustawienia analogiczne do poniższych:# OpenLDAP SSL mechanism # start_tls mechanism uses the normal LDAP port, LDAPS typically 636 ssl start_tls #ssl on #tls_checkpeer yes tls_ciphers TLSv1 tls_cacertfile /etc/pki/tls/certs/slapd.crt tls_cacertdir /etc/openldap/cacerts
Plik
/etc/openldap/ldap.conf
powinien zawierać ustawienia analogiczne do poniższych:TLS_CACERTDIR /etc/openldap/cacerts TLS_CACERT /etc/pki/tls/certs/slapd.crt
Zmiany wprowadzone w dystrybucji CentOS w wersji 6.* powinny być analogiczne do poniższych:
Plik
/etc/pam_ldap.conf
powinien zawierać ustawienia analogiczne do poniższych:# OpenLDAP SSL mechanism # start_tls mechanism uses the normal LDAP port, LDAPS typically 636 ssl start_tls #ssl on #tls_checkpeer yes tls_ciphers TLSv1 tls_cacertfile /etc/pki/tls/certs/slapd.crt tls_cacertdir /etc/openldap/cacerts
Plik
/etc/nslcd.conf
powinien zawierać ustawienia analogiczne do poniższych:# Use StartTLS without verifying the server certificate. ssl start_tls #ssl on #tls_reqcert never tls_ciphers TLSv1 tls_cacertfile /etc/pki/tls/certs/slapd.crt tls_cacertdir /etc/openldap/cacerts
Plik
/etc/openldap/ldap.conf
powinien zawierać ustawienia analogiczne do poniższych:TLS_CACERTDIR /etc/openldap/cacerts TLS_CACERT /etc/pki/tls/certs/slapd.crt
Zmiany wprowadzone w dystrybucji CentOS w wersji 7.* powinny być analogiczne do poniższych:
Plik
/etc/nslcd.conf
powinien zawierać ustawienia analogiczne do poniższych:# Use StartTLS without verifying the server certificate. ssl start_tls #tls_reqcert never tls_ciphers TLSv1 tls_cacertfile /etc/pki/tls/certs/slapd.crt tls_cacertdir /etc/openldap/cacerts
Plik
/etc/openldap/ldap.conf
powinien zawierać ustawienia analogiczne do poniższych:TLS_CACERTDIR /etc/openldap/cacerts TLS_CACERT /etc/pki/tls/certs/slapd.crt
Dodatkowo z serwera OpenLDAP należy jeszcze skopiować certyfikat oraz klucz używany do szyfrowanych połączeń TLS:
# rsync -avh root@ipaddress:/etc/pki/tls/certs/slapd*.pem /etc/pki/tls/certs/ rsync -rav /etc/pki/tls/certs/slapd*.pem root@10.41.0.54:/etc/pki/tls/certs/ rsync -rav /etc/pki/tls/certs/slapd*.pem root@10.41.0.56:/etc/pki/tls/certs/ rsync -rav /etc/pki/tls/certs/slapd*.pem root@10.41.0.58:/etc/pki/tls/certs/ rsync -rav /etc/pki/tls/certs/slapd*.pem root@10.41.0.57:/etc/pki/tls/certs/
#top Create LDAP Tree Service (ssh)¶
#top Create LDAP Tree Service (ssh) configure¶
# useful only for testing server, not needed on clients # ----------------------------------------------------- # ldapadd, ldapmodify, ldapdelete, ldapsearch, rpm -ivh /mnt/iso/CentOS053/4of6/CentOS/openldap-clients-2.3.43-3.el5.i386.rpm rpm -ivh /mnt/iso/CentOS062/DVD1/Packages/openldap-clients-2.4.23-20.el6.i686.rpm rpm -ivh /mnt/iso/CentOS060x64/DVD1/Packages/openldap-clients-2.4.19-15.el6.x86_64.rpm rpm -ivh /mnt/iso/CentOS073x64/DVD/Packages/openldap-clients-2.4.40-13.el7.x86_64.rpm
rpm -ivh /mnt/iso/CentOS053/1of6/CentOS/nscd-2.5-34.i386.rpm /mnt/iso/CentOS053/1of6/CentOS/nss_ldap-253-17.el5.i386.rpm /mnt/iso/CentOS053/1of6/CentOS/fipscheck-1.0.3-1.el5.i386.rpm rpm -ivh /mnt/iso/CentOS062/DVD1/Packages/nscd-2.12-1.47.el6.i686.rpm /mnt/iso/CentOS062/DVD1/Packages/pam_ldap-185-11.el6.i686.rpm /mnt/iso/CentOS062/DVD1/Packages/nss-pam-ldapd-0.7.5-14.el6.i686.rpm rpm -ivh /mnt/iso/CentOS060x64/DVD1/Packages/nscd-2.12-1.7.el6.x86_64.rpm /mnt/iso/CentOS060x64/DVD1/Packages/pam_ldap-185-5.el6.x86_64.rpm /mnt/iso/CentOS060x64/DVD1/Packages/nss-pam-ldapd-0.7.5-3.el6.x86_64.rpm rpm -ivh /mnt/iso/CentOS073x64/DVD/Packages/nscd-2.17-157.el7.x86_64.rpm /mnt/iso/CentOS073x64/DVD/Packages/nss-pam-ldapd-0.8.13-8.el7.x86_64.rpm
Zmiany w plikach systemowych można zawierających konfigurację autoryzacji oczywiście wprowadzić poprzez edycję plików, jednakże nie jest to zalecane. W tym celu można użyć narzędzia
authconfig
, które samo wprowadzi stosowne zmiany w odpowiednich plikach. Poniższe polecenie należy uruchomić na hostach, na których autoryzacja odbywać się będzie przy użyciu serwera LDAP.
authconfig --enableldap --enableldapauth --enablemkhomedir --ldapserver="ldap://10.41.0.58" --ldapbasedn="dc=wbcd,dc=pl" --updateall
Po wykonaniu powyższego kroku można sprawdzić zmiany wprowadzone w pliku konfiguracyjnym
/etc/sysconfig/authconfig
:cat /etc/sysconfig/authconfig | grep -E 'USEMKHOMEDIR|USELDAPAUTH|USELDAP'
Otrzymany rezultat powinien być analogiczny do poniższego:
USEMKHOMEDIR=yes USELDAPAUTH=yes USELDAP=yes
Istotne wprowadzone zmiany w pliku konfiguracyjnym
/etc/nsswitch.conf
powinny być analogiczne do poniższych:passwd: files ldap shadow: files ldap group: files ldap
W dystrybucji CentOS 6.* (32bit/i386) pomimo obecności pliku konfiguracyjnego
/etc/pam_ldap.conf
to mimo wszystko konieczne jest utworzenie pliku symbolicznego /etc/ldap.conf
wskazującego na właściwy plik aby ustawienia działały prawidłowo.lrwxrwxrwx. 1 root root 13 Nov 27 14:47 /etc/ldap.conf -> pam_ldap.conf
Zmiany jakie zostały wprowadzone w dystrybucji CentOS w wersji 5.* można sprawdzić następująco:
grep dc=wbcd -nr /etc/
/etc/openldap/ldap.conf:15:BASE dc=wbcd,dc=pl /etc/ldap.conf:20:base dc=wbcd,dc=pl
Zmiany jakie zostały wprowadzone w dystrybucji CentOS w wersji 6.* można sprawdzić następująco:
grep dc=wbcd -nr /etc/
/etc/pam_ldap.conf:20:base dc=wbcd,dc=pl /etc/openldap/ldap.conf:15:BASE dc=wbcd,dc=pl /etc/nslcd.conf:132:base dc=wbcd,dc=pl
Zmiany jakie zostały wprowadzone w dystrybucji CentOS w wersji 7.* można sprawdzić następująco:
grep dc=wbcd -nr /etc/
/etc/nslcd.conf:25:base dc=wbcd,dc=pl /etc/openldap/ldap.conf:20:BASE dc=wbcd,dc=pl
W dystrybucji CentOS 5.* w pliku konfiguracyjnym
/etc/ldap.conf
należy wprowadzić zmiany analogiczne do poniższych (oczywiście zgodne posiadaną strukturą LDAP):[...] # The distinguished name of the search base. base ou=users,dc=wbcd,dc=pl nss_base_passwd ou=users,dc=wbcd,dc=pl?one?ou=cen05dev [...] # sudoers_debug - useful for troubleshotting #sudoers_debug 2 uri ldap://10.41.0.58 ssl no tls_cacertdir /etc/openldap/cacerts tls_cacertfile /etc/pki/tls/certs/slapd.crt pam_password md5 sudoers_base ou=sudoers,dc=cen05dev,dc=xen,dc=wbcd,dc=pl
W dystrybucji CentOS 6.* (32bit/i386) w pliku konfiguracyjnym
/etc/pam_ldap.conf
należy wprowadzić zmiany analogiczne do poniższych (oczywiście zgodne posiadaną strukturą LDAP):[...] # The distinguished name of the search base. base ou=users,dc=wbcd,dc=pl nss_base_passwd ou=users,dc=wbcd,dc=pl?one?ou=cen06dev [...] # sudoers_debug - useful for troubleshotting #sudoers_debug 2 uri ldap://10.41.0.58 ssl no tls_cacertdir /etc/openldap/cacerts tls_cacertfile /etc/pki/tls/certs/slapd.crt pam_password md5 sudoers_base ou=sudoers,dc=cen06dev,dc=xen,dc=wbcd,dc=pl
W dystrybucji CentOS 6.* (32bit/i386) w pliku konfiguracyjnym
/etc/nslcd.conf
należy wprowadzić zmiany analogiczne do poniższych (oczywiście zgodne posiadaną strukturą LDAP):# This comment prevents repeated auto-migration of settings. uri ldap://10.41.0.250 base dc=wbcd,dc=pl ssl no tls_cacertfile /etc/pki/tls/certs/slapd.crt tls_cacertdir /etc/openldap/cacerts
W dystrybucji CentOS 6.* (64bit/x86_64) w pliku konfiguracyjnym
/etc/pam_ldap.conf
należy wprowadzić zmiany analogiczne do poniższych (oczywiście zgodne posiadaną strukturą LDAP):[...] # The distinguished name of the search base. base ou=users,dc=wbcd,dc=pl nss_base_passwd ou=users,dc=wbcd,dc=pl?one?ou=cen06x64 [...] # sudoers_debug - useful for troubleshotting #sudoers_debug 2 uri ldap://10.41.0.58 ssl no tls_cacertfile /etc/pki/tls/certs/slapd.crt tls_cacertdir /etc/openldap/cacerts pam_password md5 sudoers_base ou=sudoers,dc=cen06x64,dc=xen,dc=wbcd,dc=pl
W dystrybucji CentOS 6.* (64bit/x86_64) w pliku konfiguracyjnym
/etc/nslcd.conf
należy wprowadzić zmiany analogiczne do poniższych (oczywiście zgodne posiadaną strukturą LDAP):# This comment prevents repeated auto-migration of settings. uri ldap://10.41.0.250 base dc=wbcd,dc=pl ssl no tls_cacertfile /etc/pki/tls/certs/slapd.crt tls_cacertdir /etc/openldap/cacerts
W dystrybucji CentOS 7.* (64bit/x86_64) nie ma pliku konfiguracyjnego
/etc/pam_ldap.conf
, wszystkie zmiany należy wprowadzać do pliku /etc/nslcd.conf
.W dystrybucji CentOS 7.* (64bit/x86_64) w pliku konfiguracyjnym
/etc/nslcd.conf
należy wprowadzić zmiany analogiczne do poniższych (oczywiście zgodne posiadaną strukturą LDAP):# This comment prevents repeated auto-migration of settings. uri ldap://10.41.0.58 base dc=wbcd,dc=pl filter passwd (&(objectClass=posixAccount)(ou=cen07x64)) filter shadow (&(objectClass=posixAccount)(ou=cen07x64)) filter group (&(objectClass=posixAccount)(ou=cen07x64)) [...] ssl no tls_cacertfile /etc/pki/tls/certs/slapd.crt tls_cacertdir /etc/openldap/cacerts
W pliku konfiguracyjnym
/etc/openldap/ldap.conf
należy wprowadzić zmiany analogiczne do poniższych:
URI ldap://10.41.0.58
BASE dc=wbcd,dc=pl
TLS_CACERTDIR /etc/openldap/cacerts
TLS_CACERT /etc/pki/tls/certs/slapd.crt
Aby system przy autoryzacji użytkowników korzystał również z bazy LDAP należy jeszcze wprowadzić stosowne zmiany w PAM (Pluggable Authentication Modules):
W dystrybucji CentOS 5.* w pliku konfiguracyjnym
/etc/pam.d/system-auth
wprowadzone zmiany powinny być analogiczne do poniższych:auth required pam_env.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so account required pam_unix.so account sufficient pam_succeed_if.so uid < 500 quiet account [default=bad success=ok user_unknown=ignore] pam_ldap.so account required pam_permit.so password requisite pam_cracklib.so try_first_pass retry=3 password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok password sufficient pam_ldap.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_ldap.so session required pam_mkhomedir.so skel=/etc/skel umask=0077
/etc/pam.d/password-auth
wprowadzanie zmian nie jest wymagane.
W dystrybucji CentOS 6.* (32bit/i386) w pliku konfiguracyjnym
/etc/pam.d/system-auth
niezbędne jest wprowadzenie zmian wynikających z obecności modułu PAM pam_sssd.so.Jan 01 00:00:00 cen06dev sshd[26848]: fatal: Access denied for user sp by PAM account configuration
W dystrybucji CentOS 6.* (32bit/i386) w pliku konfiguracyjnym
/etc/pam.d/system-auth
wprowadzone zmiany powinny być analogiczne do poniższych:auth required pam_env.so auth sufficient pam_fprintd.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth sufficient pam_ldap.so use_first_pass #auth sufficient pam_sss.so use_first_pass auth required pam_deny.so account required pam_unix.so broken_shadow account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account [default=bad success=ok user_unknown=ignore] pam_ldap.so #account [default=bad success=ok user_unknown=ignore] pam_sss.so account required pam_permit.so password requisite pam_cracklib.so try_first_pass retry=3 type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_ldap.so use_authtok #password sufficient pam_sss.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so #session optional pam_mkhomedir.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_ldap.so session required pam_mkhomedir.so skel=/etc/skel umask=0077 #session optional pam_sss.so
/etc/pam.d/password-auth
W pliku konfiguracyjnym
/etc/pam.d/password-auth
wprowadzanie zmian nie jest wymagane.W dystrybucji CentOS 6.* (64bit/x86_64) w pliku konfiguracyjnym
/etc/pam.d/system-auth
wprowadzone zmiany powinny być analogiczne do poniższych:auth required pam_env.so auth sufficient pam_fprintd.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so account required pam_unix.so broken_shadow account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account [default=bad success=ok user_unknown=ignore] pam_ldap.so account required pam_permit.so password requisite pam_cracklib.so try_first_pass retry=3 type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_ldap.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so #session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_ldap.so session optional pam_mkhomedir.so skel=/etc/skel umask=0077
/etc/pam.d/password-auth
W pliku konfiguracyjnym
/etc/pam.d/password-auth
wprowadzanie zmian nie jest wymagane.
W dystrybucji CentOS 7.* w pliku konfiguracyjnym
/etc/pam.d/system-auth
oraz /etc/pam.d/password-auth
niezbędne jest wprowadzenie zmian wynikających ze zmiany minimalnej wartości uid, która została przyjęta jako uid należący do konta zwykłego użytkownika (nie systemowego).W dystrybucji CentOS 7.* w pliku konfiguracyjnym
/etc/pam.d/system-auth
wprowadzone zmiany powinny być analogiczne do poniższych:auth required pam_env.so auth sufficient pam_unix.so nullok try_first_pass #auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth requisite pam_succeed_if.so uid >= 500 quiet auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so account required pam_unix.so broken_shadow account sufficient pam_localuser.so #account sufficient pam_succeed_if.so uid < 1000 quiet account sufficient pam_succeed_if.so uid < 500 quiet account [default=bad success=ok user_unknown=ignore] pam_ldap.so account required pam_permit.so password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_ldap.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so -session optional pam_systemd.so #session optional pam_mkhomedir.so umask=0077 session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_ldap.so session required pam_mkhomedir.so skel=/etc/skel umask=0077
W dystrybucji CentOS 7.* w pliku konfiguracyjnym
/etc/pam.d/password-auth
wprowadzone zmiany powinny być analogiczne do poniższych:auth required pam_env.so auth sufficient pam_unix.so nullok try_first_pass #auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth requisite pam_succeed_if.so uid >= 500 quiet_success auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so account required pam_unix.so broken_shadow account sufficient pam_localuser.so #account sufficient pam_succeed_if.so uid < 1000 quiet account sufficient pam_succeed_if.so uid < 500 quiet account [default=bad success=ok user_unknown=ignore] pam_ldap.so account required pam_permit.so password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_ldap.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so -session optional pam_systemd.so session optional pam_mkhomedir.so umask=0077 session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_ldap.so
Na koniec wprowadzone zmiany związane z Domain Component w dystrybucji CentOS w wersji 5.* można sprawdzić następująco:
grep dc=wbcd -nr /etc/
/etc/openldap/ldap.conf:15:BASE dc=wbcd,dc=pl /etc/ldap.conf:20:base dc=wbcd,dc=pl /etc/ldap.conf:21:nss_base_passwd ou=users,dc=wbcd,dc=pl?one?ou=cen05dev /etc/ldap.conf:304:#sudoers_base ou=sudoers,dc=cen05dev,dc=xen,dc=wbcd,dc=pl /etc/ldap.conf:305:sudoers_base ou=sudoers,dc=wbcd,dc=pl /etc/ldap.conf:306:sudoers_base ou=sudoers,dc=cen05dev,dc=xen,dc=wbcd,dc=pl
Na koniec wprowadzone zmiany związane z Domain Component w dystrybucji CentOS w wersji 6.* (32bit/i386) można sprawdzić następująco:
grep dc=wbcd -nr /etc/
/etc/pam_ldap.conf:20:base dc=wbcd,dc=pl /etc/pam_ldap.conf:21:nss_base_passwd ou=users,dc=wbcd,dc=pl?one?ou=cen06dev /etc/pam_ldap.conf:298:sudoers_base ou=sudoers,dc=wbcd,dc=pl /etc/pam_ldap.conf:299:sudoers_base ou=sudoers,dc=cen06dev,dc=xen,dc=wbcd,dc=pl /etc/openldap/ldap.conf:15:BASE dc=wbcd,dc=pl /etc/ldap.conf:20:base dc=wbcd,dc=pl /etc/ldap.conf:21:nss_base_passwd ou=users,dc=wbcd,dc=pl?one?ou=cen06dev /etc/ldap.conf:298:sudoers_base ou=sudoers,dc=wbcd,dc=pl /etc/ldap.conf:299:sudoers_base ou=sudoers,dc=cen06dev,dc=xen,dc=wbcd,dc=pl /etc/nslcd.conf:135:base dc=wbcd,dc=pl
Na koniec wprowadzone zmiany związane z Domain Component w dystrybucji CentOS w wersji 6.* (64bit/x86_64) można sprawdzić następująco:
grep dc=wbcd -nr /etc/
/etc/pam_ldap.conf:20:base dc=wbcd,dc=pl /etc/pam_ldap.conf:21:nss_base_passwd ou=users,dc=wbcd,dc=pl?one?ou=cen06x64 /etc/pam_ldap.conf:298:sudoers_base ou=sudoers,dc=wbcd,dc=pl /etc/pam_ldap.conf:299:sudoers_base ou=sudoers,dc=cen06x64,dc=xen,dc=wbcd,dc=pl /etc/openldap/ldap.conf:15:BASE dc=wbcd,dc=pl /etc/ldap.conf:20:base dc=wbcd,dc=pl /etc/ldap.conf:21:nss_base_passwd ou=users,dc=wbcd,dc=pl?one?ou=cen06x64 /etc/ldap.conf:298:sudoers_base ou=sudoers,dc=wbcd,dc=pl /etc/ldap.conf:299:sudoers_base ou=sudoers,dc=cen06x64,dc=xen,dc=wbcd,dc=pl /etc/nslcd.conf:135:base dc=wbcd,dc=pl
Na koniec wprowadzone zmiany związane z Domain Component w dystrybucji CentOS w wersji 7.* (64bit/x86_64) można sprawdzić następująco:
grep dc=wbcd -nr /etc/
/etc/nslcd.conf:25:base dc=wbcd,dc=pl /etc/sudo-ldap.conf:93:sudoers_base ou=sudoers,dc=wbcd,dc=pl /etc/sudo-ldap.conf:94:sudoers_base ou=sudoers,dc=cen07x64,dc=xen,dc=wbcd,dc=pl /etc/openldap/ldap.conf:20:BASE dc=wbcd,dc=pl
Na koniec wprowadzone zmiany związane z Organization Unit w dystrybucji CentOS w wersji 5.* można sprawdzić następująco:
grep ou=cen05dev -nr /etc/
/etc/ldap.conf:21:nss_base_passwd ou=users,dc=wbcd,dc=pl?one?ou=cen05dev
Na koniec wprowadzone zmiany związane z Organization Unit w dystrybucji CentOS w wersji 6.* (32bit/i386) można sprawdzić następująco:
grep ou=cen06dev -nr /etc/
/etc/pam_ldap.conf:21:nss_base_passwd ou=users,dc=wbcd,dc=pl?one?ou=cen06dev /etc/ldap.conf:21:nss_base_passwd ou=users,dc=wbcd,dc=pl?one?ou=cen06dev
Na koniec wprowadzone zmiany związane z Organization Unit w dystrybucji CentOS w wersji 6.* (64bit/x86_64) można sprawdzić następująco:
grep ou=cen06x64 -nr /etc/
/etc/pam_ldap.conf:21:nss_base_passwd ou=users,dc=wbcd,dc=pl?one?ou=cen06x64 /etc/ldap.conf:21:nss_base_passwd ou=users,dc=wbcd,dc=pl?one?ou=cen06x64
Na koniec wprowadzone zmiany związane z Organization Unit w dystrybucji CentOS w wersji 7.* (64bit/x86_64) można sprawdzić następująco:
grep ou=cen07x64 -nr /etc/
/etc/nslcd.conf:26:filter passwd (&(objectClass=posixAccount)(ou=cen07x64)) /etc/nslcd.conf:27:filter shadow (&(objectClass=posixAccount)(ou=cen07x64)) /etc/nslcd.conf:28:filter group (&(objectClass=posixAccount)(ou=cen07x64))
#top Create LDAP Tree Service (ssh) LDAP tree¶
/root/tmp/ldap/pl-wbcd-users-sp.ldif
cat > /root/tmp/ldap/pl-wbcd-users-sp.ldif << EOF dn: uid=sp,ou=users,dc=wbcd,dc=pl objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: sp cn: sp sn: Fine mail: sp@cen06x64.xen.wbcd.pl mail: root@cen06x64.xen.wbcd.pl uidNumber: 501 gidNumber: 100 loginShell: /bin/bash homeDirectory: /home/sp shadowLastChange: 14368 shadowMin: 0 shadowMax: 999999 shadowWarning: 7 userpassword: spSPsp title: Account Executive #destinationindicator: /bios/images/lfine.jpg EOF
ldapdelete -x -D 'cn=Manager,dc=wbcd,dc=pl' -w PASSWORD 'uid=sp,ou=users,dc=wbcd,dc=pl' ldapadd -x -D 'cn=Manager,dc=wbcd,dc=pl' -w PASSWORD -f /root/tmp/ldap/pl-wbcd-users-sp.ldif
/root/tmp/ldap/pl-wbcd-users-ola.ldif
cat > /root/tmp/ldap/pl-wbcd-users-ola.ldif << EOF dn: uid=ola,ou=users,dc=wbcd,dc=pl objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: ola cn: ola sn: Fine mail: ola@cen06x64.xen.wbcd.pl uidNumber: 503 gidNumber: 100 gecos: Larry Fine givenname: Ola loginShell: /bin/bash homeDirectory: /home/ola shadowLastChange: 14368 shadowMin: 0 shadowMax: 999999 shadowWarning: 7 userpassword: olaOLAola description: ola at cen06x64 Linux CentOS virt machine # Base64 encoded JPEG photo # jpegPhoto:: /9j/4AAQSkZJRgABAAAAAQABAAD/2wBDABALD # A4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQ # ERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVG # JPEG photo from file # jpegPhoto:< file:///path/to/file.jpeg EOF
ldapdelete -x -D 'cn=Manager,dc=wbcd,dc=pl' -w PASSWORD 'uid=ola,ou=users,dc=wbcd,dc=pl' ldapadd -x -D 'cn=Manager,dc=wbcd,dc=pl' -w PASSWORD -f /root/tmp/ldap/pl-wbcd-users-ola.ldif
ldapsearch -x -b "ou=users,dc=wbcd,dc=pl" 'cn=sp' ldapsearch -x -b "ou=users,dc=wbcd,dc=pl" 'cn=ola' ldapsearch -H ldap://cen06x64.xen.wbcd.pl -x -b "ou=users,dc=wbcd,dc=pl" 'cn=sp' ldapsearch -H ldap://cen06x64.xen.wbcd.pl -x -b "ou=users,dc=wbcd,dc=pl" 'cn=ola'
Po wprowadzeniu powyższych zmian należy jeszcze uruchomić (ustawić automatycznie uruchamianie usług oraz uruchomić ponownie niezbędne usługi):
W dystrybucji CentOS w wersji 5.* należy to zrobić w następujący sposób:
chkconfig nscd on
/etc/init.d/nscd restart
W dystrybucji CentOS w wersji 6.* należy to zrobić w następujący sposób:
chkconfig nscd on chkconfig nslcd on /etc/init.d/nscd restart /etc/init.d/nslcd restart
W dystrybucji CentOS w wersji 7.* należy to zrobić w następujący sposób:
systemctl enable nscd systemctl enable nslcd systemctl restart nscd systemctl restart nslcd
W celu umożliwienia użytkownikom logowania się na poszczególne serwery, należy każdemu użytkownikowi dodać odpowiedni wpis zezwalający na logowanie, po którym serwer dokonuje filtracji w drzewie LDAP.
after adding attribute ou we can login over ssh into machine
ou: cen05dev - uid have ou can login into machine cen05dev
ou: cen06dev - uid have ou can login into machine cen06dev
ou: cen06x64 - uid have ou can login into machine cen06x64
ou: cen07x64 - uid have ou can login into machine cen07x64
after adding attribute ou we can login over ssh into machine
ou: cen05dev - uid have ou can login into machine cen05dev
ou: cen06dev - uid have ou can login into machine cen06dev
ou: cen06x64 - uid have ou can login into machine cen06x64
ou: cen07x64 - uid have ou can login into machine cen07x64
W dystrybucji CentOS w wersji 5.* w pliku
/etc/ldap.conf
zdefiniowany jest następujący filtr:nss_base_passwd ou=users,dc=wbcd,dc=pl?one?ou=cen05dev
W dystrybucji CentOS w wersji 6.* w pliku
/etc/pam_ldap.conf
zdefiniowany jest następujący filtr:nss_base_passwd ou=users,dc=wbcd,dc=pl?one?ou=cen06dev
W dystrybucji CentOS w wersji 6.* w pliku
/etc/pam_ldap.conf
zdefiniowany jest następujący filtr:nss_base_passwd ou=users,dc=wbcd,dc=pl?one?ou=cen06x64
W dystrybucji CentOS w wersji 7.* w pliku
/etc/nslcd.conf
zdefiniowany jest następujący filtr:filter passwd (&(objectClass=posixAccount)(ou=cen07x64))
Na konieć należy dodać jeszcze stosowne wpisy do bazy LDAP:
Zawartość pliku
/root/tmp/ldap/pl-wbcd-users-sp-add-host.ldif
:cat > /root/tmp/ldap/pl-wbcd-users-sp-add-host.ldif << EOF dn: uid=sp,ou=users,dc=wbcd,dc=pl add: ou ou: cen05dev ou: cen06dev ou: cen06x64 ou: cen07x64 EOF
Zawartość pliku
/root/tmp/ldap/pl-wbcd-users-ola-add-host.ldif
:cat > /root/tmp/ldap/pl-wbcd-users-ola-add-host.ldif << EOF dn: uid=ola,ou=users,dc=wbcd,dc=pl add: ou ou: cen05dev ou: cen06dev ou: cen06x64 ou: cen07x64 EOF
ldapmodify -x -D 'cn=Manager,dc=wbcd,dc=pl' -w PASSWORD -f /root/tmp/ldap/pl-wbcd-users-sp-add-host.ldif ldapmodify -x -D 'cn=Manager,dc=wbcd,dc=pl' -w PASSWORD -f /root/tmp/ldap/pl-wbcd-users-ola-add-host.ldif
W celu przetestowania czy przygotowana konfiguracja działa należy zalogować się na poszczególne serwery używając przygotowanych kont:
ssh 10.41.0.54 -l sp "w" ssh 10.41.0.54 -l ola "w"
Otrzymany rezultat powinien być analogiczny do poniższego:
Creating directory '/home/sp'. Creating directory '/home/sp/Maildir'. Creating directory '/home/sp/Maildir/.Sent'. Creating directory '/home/sp/Maildir/.Trash'. Creating directory '/home/sp/Maildir/.Drafts'. Creating directory '/home/sp/Maildir/.Templates'. Creating directory '/home/sp/tmp'. Creating directory '/home/ola'. Creating directory '/home/ola/Maildir'. Creating directory '/home/ola/Maildir/.Sent'. Creating directory '/home/ola/Maildir/.Trash'. Creating directory '/home/ola/Maildir/.Drafts'. Creating directory '/home/ola/Maildir/.Templates'. Creating directory '/home/ola/tmp'.
ssh 10.41.0.56 -l sp ssh 10.41.0.56 -l ola
Otrzymany rezultat powinien być analogiczny do poniższego:
Creating directory '/home/sp'. Creating directory '/home/ola'.
ssh 10.41.0.58 -l sp ssh 10.41.0.58 -l ola
Otrzymany rezultat powinien być analogiczny do poniższego:
Creating directory '/home/sp'. Creating directory '/home/ola'.
ssh 10.41.0.57 -l sp ssh 10.41.0.57 -l ola
#top Create LDAP Tree Service (sudo)¶
#top Create LDAP Tree Service (sudo) configure¶
W pierwszej kolejności należy utworzyć katalog schema w katalogu konfiguracyjnym serwera OpenLDAP (jeśli takowy jeszcze nie istnieje), a następnie skopiować plik sudoers.schema we właściwie miejsce (zgodnie z ustawioną ścieżką w pliku konfiguracyjnym slapd.conf):
mkdir -p /etc/openldap/schema cp openldap-sudoers.schema /etc/openldap/schema/sudoers.schema
Następnie należy dodać do pliku konfiguracyjnego dyrektywę dołączającą plik sudoers.schema do konfiguracji serwera.
/etc/openldap/slapd.conf
include /etc/openldap/schema/corba.schema include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/duaconf.schema include /etc/openldap/schema/dyngroup.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/java.schema include /etc/openldap/schema/misc.schema include /etc/openldap/schema/nis.schema # add next line here include /etc/openldap/schema/sudoers.schema include /etc/openldap/schema/openldap.schema include /etc/openldap/schema/ppolicy.schema include /etc/openldap/schema/collective.schema
Po wprowadzeniu powyższych zmian należy ponownie uruchomić serwer OpenLDAP.
/etc/init.d/slapd restart
Istotne wprowadzone zmiany w pliku konfiguracyjnym
/etc/nsswitch.conf
powinny być analogiczne do poniższych:W dystrybucji CentOS 5.* (32bit/i386), CentOS 6.* (32bit/i386), CentOS 6.* (64bit/x86_64) w pliku
/etc/nsswitch.conf
istnieje linia sudoers:
, należy upewnić się, że jest analogiczna do poniższej:sudoers: files ldap
W dystrybucji CentOS 7.* (64bit/x86_64) w pliku konfiguracyjnym
/etc/nsswitch.conf
nie ma linii sudoers:
, należy ją do tego pliku dodać, aby była analogiczna do poniższej:sudoers: files ldap
# SUDOERS_BASE base # The base DN to use when performing sudo LDAP queries. Typically this is of the form ou=SUDOers,dc=example,dc=com # for the domain example.com. Multiple SUDOERS_BASE lines may be specified, # in which case they are queried in the order specified.
Aby przy wykonywaniu poleceń poprzedzonych komendą sudo uwzględniana były również konfiguracja z bazy LDAP należy jeszcze wprowadzić stosowne zmiany w PAM (Pluggable Authentication Modules):
W dystrybucji CentOS 5.* (32bit/i386) w pliku konfiguracyjnym
/etc/ldap.conf
wprowadzone zmiany powinny być analogiczne do poniższych:#sudoers_base ou=sudoers,dc=wbcd,dc=pl sudoers_base ou=sudoers,dc=cen05dev,dc=xen,dc=wbcd,dc=pl
W dystrybucji CentOS 6.* (32bit/i386) w pliku konfiguracyjnym
/etc/pam_ldap.conf
wprowadzone zmiany powinny być analogiczne do poniższych:#sudoers_base ou=sudoers,dc=wbcd,dc=pl sudoers_base ou=sudoers,dc=cen06dev,dc=xen,dc=wbcd,dc=pl
W dystrybucji CentOS 6.* (64bit/x86_64) w pliku konfiguracyjnym
/etc/pam_ldap.conf
wprowadzone zmiany powinny być analogiczne do poniższych:#sudoers_base ou=sudoers,dc=wbcd,dc=pl sudoers_base ou=sudoers,dc=cen06x64,dc=xen,dc=wbcd,dc=pl
W dystrybucji CentOS 7.* (64bit/x86_64) w pliku konfiguracyjnym
/etc/sudo-ldap.conf
wprowadzone zmiany powinny być analogiczne do poniższych:sudoers_base ou=sudoers,dc=wbcd,dc=pl sudoers_base ou=sudoers,dc=cen06x64,dc=xen,dc=wbcd,dc=pl
Na koniec wprowadzone zmiany związane z sudo w dystrybucji CentOS w wersji 5.* (32bit/i386) można sprawdzić następująco:
cat /etc/ldap.conf | grep sudoers_base
#sudoers_base ou=sudoers,dc=wbcd,dc=pl sudoers_base ou=sudoers,dc=cen05dev,dc=xen,dc=wbcd,dc=pl
Na koniec wprowadzone zmiany związane z sudo w dystrybucji CentOS w wersji 6.* (64bit/x86_64) można sprawdzić następująco:
cat /etc/pam_ldap.conf | grep sudoers_base
#sudoers_base ou=sudoers,dc=wbcd,dc=pl sudoers_base ou=sudoers,dc=cen06dev,dc=xen,dc=wbcd,dc=pl
Na koniec wprowadzone zmiany związane z sudo w dystrybucji CentOS w wersji 6.* (64bit/x86_64) można sprawdzić następująco:
cat /etc/pam_ldap.conf | grep sudoers_base
#sudoers_base ou=sudoers,dc=wbcd,dc=pl sudoers_base ou=sudoers,dc=cen06x64,dc=xen,dc=wbcd,dc=pl
Na koniec wprowadzone zmiany związane z sudo w dystrybucji CentOS w wersji 7.* (64bit/x86_64) można sprawdzić następująco:
cat /etc/sudo-ldap.conf | grep sudoers_base
sudoers_base ou=sudoers,dc=wbcd,dc=pl sudoers_base ou=sudoers,dc=cen06x64,dc=xen,dc=wbcd,dc=pl
#top Create LDAP Tree Service (sudo) LDAP tree¶
Na konieć należy dodać jeszcze stosowne wpisy do bazy LDAP:
/root/tmp/ldap/pl-wbcd-xen.ldif
cat > /root/tmp/ldap/pl-wbcd-xen.ldif << EOF dn: dc=xen,dc=wbcd,dc=pl dc: xen objectClass: top objectClass: domain EOF
ldapadd -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh -f /root/tmp/ldap/pl-wbcd-xen.ldif
adding new entry "dc=xen,dc=wbcd,dc=pl"
/root/tmp/ldap/pl-wbcd-xen-cen05dev.ldif
cat > /root/tmp/ldap/pl-wbcd-xen-cen05dev.ldif << EOF dn: dc=cen05dev,dc=xen,dc=wbcd,dc=pl dc: cen05dev objectClass: top objectClass: domain EOF
/root/tmp/ldap/pl-wbcd-xen-cen05dev-sudoers.ldif
cat > /root/tmp/ldap/pl-wbcd-xen-cen05dev-sudoers.ldif << EOF dn: ou=sudoers,dc=cen05dev,dc=xen,dc=wbcd,dc=pl ou: sudoers objectClass: organizationalUnit description: sudoers EOF
/root/tmp/ldap/pl-wbcd-xen-cen05dev-sudoers-defaults.ldif
cat > /root/tmp/ldap/pl-wbcd-xen-cen05dev-sudoers-defaults.ldif << EOF dn: cn=defaults,ou=sudoers,dc=cen05dev,dc=xen,dc=wbcd,dc=pl objectClass: top objectClass: sudoRole cn: defaults description: Default sudoOption's go here sudoOption: env_keep+=SSH_AUTH_SOCK EOF
/root/tmp/ldap/pl-wbcd-xen-cen05dev-sudoers-sp.ldif
cat > /root/tmp/ldap/pl-wbcd-xen-cen05dev-sudoers-sp.ldif << EOF dn: uid=sp,ou=sudoers,dc=cen05dev,dc=xen,dc=wbcd,dc=pl objectClass: top objectClass: sudoRole uid: sp cn: sp sudoUser: sp sudoHost: ALL sudoRunAsUser: ALL sudoCommand: ALL sudoOrder: 2 sudoOption: !authenticate EOF
ldapadd -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh -f /root/tmp/ldap/pl-wbcd-xen-cen05dev.ldif ldapadd -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh -f /root/tmp/ldap/pl-wbcd-xen-cen05dev-sudoers.ldif ldapadd -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh -f /root/tmp/ldap/pl-wbcd-xen-cen05dev-sudoers-defaults.ldif #ldapdelete -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh 'uid=sp,ou=sudoers,dc=cen05dev,dc=xen,dc=wbcd,dc=pl' ldapadd -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh -f /root/tmp/ldap/pl-wbcd-xen-cen05dev-sudoers-sp.ldif
adding new entry "dc=cen05dev,dc=xen,dc=wbcd,dc=pl" adding new entry "ou=sudoers,dc=cen05dev,dc=xen,dc=wbcd,dc=pl" adding new entry "cn=defaults,ou=sudoers,dc=cen05dev,dc=xen,dc=wbcd,dc=pl" adding new entry "uid=sp,ou=sudoers,dc=cen05dev,dc=xen,dc=wbcd,dc=pl"
ldapsearch -x -b "ou=sudoers,dc=cen05dev,dc=xen,dc=wbcd,dc=pl" 'uid=*'
/root/tmp/ldap/pl-wbcd-xen-cen06dev.ldif
cat > /root/tmp/ldap/pl-wbcd-xen-cen06dev.ldif << EOF dn: dc=cen06dev,dc=xen,dc=wbcd,dc=pl dc: cen06dev objectClass: top objectClass: domain EOF
/root/tmp/ldap/pl-wbcd-xen-cen06dev-sudoers.ldif
cat > /root/tmp/ldap/pl-wbcd-xen-cen06dev-sudoers.ldif << EOF dn: ou=sudoers,dc=cen06dev,dc=xen,dc=wbcd,dc=pl ou: sudoers objectClass: organizationalUnit description: sudoers EOF
/root/tmp/ldap/pl-wbcd-xen-cen06dev-sudoers-defaults.ldif
cat > /root/tmp/ldap/pl-wbcd-xen-cen06dev-sudoers-defaults.ldif << EOF dn: cn=defaults,ou=sudoers,dc=cen06dev,dc=xen,dc=wbcd,dc=pl objectClass: top objectClass: sudoRole cn: defaults description: Default sudoOption's go here sudoOption: env_keep+=SSH_AUTH_SOCK EOF
/root/tmp/ldap/pl-wbcd-xen-cen06dev-sudoers-sp.ldif
cat > /root/tmp/ldap/pl-wbcd-xen-cen06dev-sudoers-sp.ldif << EOF dn: uid=sp,ou=sudoers,dc=cen06dev,dc=xen,dc=wbcd,dc=pl objectClass: top objectClass: sudoRole uid: sp cn: sp sudoUser: sp sudoHost: ALL sudoRunAsUser: ALL sudoCommand: /usr/bin/id sudoOrder: 2 sudoOption: !authenticate EOF
ldapadd -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh -f /root/tmp/ldap/pl-wbcd-xen-cen06dev.ldif ldapadd -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh -f /root/tmp/ldap/pl-wbcd-xen-cen06dev-sudoers.ldif ldapadd -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh -f /root/tmp/ldap/pl-wbcd-xen-cen06dev-sudoers-defaults.ldif #ldapdelete -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh 'uid=sp,ou=sudoers,dc=cen06dev,dc=xen,dc=wbcd,dc=pl' ldapadd -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh -f /root/tmp/ldap/pl-wbcd-xen-cen06dev-sudoers-sp.ldif
adding new entry "dc=cen06dev,dc=xen,dc=wbcd,dc=pl" adding new entry "ou=sudoers,dc=cen06dev,dc=xen,dc=wbcd,dc=pl" adding new entry "cn=defaults,ou=sudoers,dc=cen06dev,dc=xen,dc=wbcd,dc=pl" adding new entry "uid=sp,ou=sudoers,dc=cen06dev,dc=xen,dc=wbcd,dc=pl"
ldapsearch -x -b "ou=sudoers,dc=cen06dev,dc=xen,dc=wbcd,dc=pl" 'cn=*'
/root/tmp/ldap/pl-wbcd-xen-cen06x64.ldif
cat > /root/tmp/ldap/pl-wbcd-xen-cen06x64.ldif << EOF dn: dc=cen06x64,dc=xen,dc=wbcd,dc=pl dc: cen06x64 objectClass: top objectClass: domain EOF
/root/tmp/ldap/pl-wbcd-xen-cen06x64-sudoers.ldif
cat > /root/tmp/ldap/pl-wbcd-xen-cen06x64-sudoers.ldif << EOF dn: ou=sudoers,dc=cen06x64,dc=xen,dc=wbcd,dc=pl ou: sudoers objectClass: organizationalUnit description: sudoers EOF
/root/tmp/ldap/pl-wbcd-xen-cen06x64-sudoers-defaults.ldif
cat > /root/tmp/ldap/pl-wbcd-xen-cen06x64-sudoers-defaults.ldif << EOF dn: cn=defaults,ou=sudoers,dc=cen06x64,dc=xen,dc=wbcd,dc=pl objectClass: top objectClass: sudoRole cn: defaults description: Default sudoOption's go here sudoOption: env_keep+=SSH_AUTH_SOCK EOF
/root/tmp/ldap/pl-wbcd-xen-cen06x64-sudoers-sp.ldif
cat > /root/tmp/ldap/pl-wbcd-xen-cen06x64-sudoers-sp.ldif << EOF dn: uid=sp,ou=sudoers,dc=cen06x64,dc=xen,dc=wbcd,dc=pl objectClass: top objectClass: sudoRole uid: sp cn: sp sudoUser: sp sudoHost: ALL sudoRunAsUser: ALL sudoCommand: ALL sudoOrder: 2 sudoOption: !authenticate EOF
ldapadd -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh -f /root/tmp/ldap/pl-wbcd-xen-cen06x64.ldif ldapadd -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh -f /root/tmp/ldap/pl-wbcd-xen-cen06x64-sudoers.ldif ldapadd -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh -f /root/tmp/ldap/pl-wbcd-xen-cen06x64-sudoers-defaults.ldif #ldapdelete -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh 'uid=sp,ou=sudoers,dc=cen06x64,dc=xen,dc=wbcd,dc=pl' ldapadd -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh -f /root/tmp/ldap/pl-wbcd-xen-cen06x64-sudoers-sp.ldif
adding new entry "dc=cen06x64,dc=xen,dc=wbcd,dc=pl" adding new entry "ou=sudoers,dc=cen06x64,dc=xen,dc=wbcd,dc=pl" adding new entry "cn=defaults,ou=sudoers,dc=cen06x64,dc=xen,dc=wbcd,dc=pl" adding new entry "uid=sp,ou=sudoers,dc=cen06x64,dc=xen,dc=wbcd,dc=pl"
ldapsearch -x -b "ou=sudoers,dc=cen06x64,dc=xen,dc=wbcd,dc=pl" 'uid=*'
/root/tmp/ldap/pl-wbcd-xen-cen07x64.ldif
cat > /root/tmp/ldap/pl-wbcd-xen-cen07x64.ldif << EOF dn: dc=cen07x64,dc=xen,dc=wbcd,dc=pl dc: cen07x64 objectClass: top objectClass: domain EOF
/root/tmp/ldap/pl-wbcd-xen-cen07x64-sudoers.ldif
cat > /root/tmp/ldap/pl-wbcd-xen-cen07x64-sudoers.ldif << EOF dn: ou=sudoers,dc=cen07x64,dc=xen,dc=wbcd,dc=pl ou: sudoers objectClass: organizationalUnit description: sudoers EOF
/root/tmp/ldap/pl-wbcd-xen-cen07x64-sudoers-defaults.ldif
cat > /root/tmp/ldap/pl-wbcd-xen-cen07x64-sudoers-defaults.ldif << EOF dn: cn=defaults,ou=sudoers,dc=cen07x64,dc=xen,dc=wbcd,dc=pl objectClass: top objectClass: sudoRole cn: defaults description: Default sudoOption's go here sudoOption: env_keep+=SSH_AUTH_SOCK EOF
/root/tmp/ldap/pl-wbcd-xen-cen07x64-sudoers-sp.ldif
cat > /root/tmp/ldap/pl-wbcd-xen-cen07x64-sudoers-sp.ldif << EOF dn: uid=sp,ou=sudoers,dc=cen07x64,dc=xen,dc=wbcd,dc=pl objectClass: top objectClass: sudoRole uid: sp cn: sp sudoUser: sp sudoHost: ALL sudoRunAsUser: ALL sudoCommand: ALL sudoOrder: 2 sudoOption: !authenticate EOF
ldapadd -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh -f /root/tmp/ldap/pl-wbcd-xen-cen07x64.ldif ldapadd -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh -f /root/tmp/ldap/pl-wbcd-xen-cen07x64-sudoers.ldif ldapadd -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh -f /root/tmp/ldap/pl-wbcd-xen-cen07x64-sudoers-defaults.ldif #ldapdelete -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh 'uid=sp,ou=sudoers,dc=cen07x64,dc=xen,dc=wbcd,dc=pl' ldapadd -x -D 'cn=Manager,dc=wbcd,dc=pl' -w asdfgh -f /root/tmp/ldap/pl-wbcd-xen-cen07x64-sudoers-sp.ldif
adding new entry "dc=cen07x64,dc=xen,dc=wbcd,dc=pl" adding new entry "ou=sudoers,dc=cen07x64,dc=xen,dc=wbcd,dc=pl" adding new entry "cn=defaults,ou=sudoers,dc=cen07x64,dc=xen,dc=wbcd,dc=pl" adding new entry "uid=sp,ou=sudoers,dc=cen07x64,dc=xen,dc=wbcd,dc=pl"
ldapsearch -x -b "ou=sudoers,dc=cen07x64,dc=xen,dc=wbcd,dc=pl" 'uid=*'
W celu przetestowania czy przygotowana konfiguracja działa należy zalogować się na poszczególne serwery używając przygotowanych kont, oraz wykonać przygotowane polecenia poprzedzając je komendą sudo:
W dystrybucji CentOS w wersji 5.* (32bit/i386) otrzymany rezultat powinien być analogiczny do poniższego:
sudo /usr/bin/id
LDAP Config Summary =================== uri ldap://10.41.0.58 ldap_version 3 sudoers_base ou=sudoers,dc=cen05dev,dc=xen,dc=wbcd,dc=pl binddn (anonymous) bindpw (anonymous) bind_timelimit 120000 timelimit 120 ssl no tls_cacertfile /etc/pki/tls/certs/slapd.crt tls_cacertdir /etc/openldap/cacerts =================== sudo: ldap_initialize(ld, ldap://10.41.0.58) sudo: ldap_set_option: debug -> 0 sudo: ldap_set_option: ldap_version -> 3 sudo: ldap_set_option: tls_cacertfile -> /etc/pki/tls/certs/slapd.crt sudo: ldap_set_option: tls_cacertdir -> /etc/openldap/cacerts sudo: ldap_set_option: timelimit -> 120 sudo: ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT, 120) sudo: ldap_simple_bind_s() ok sudo: found:cn=defaults,ou=sudoers,dc=cen05dev,dc=xen,dc=wbcd,dc=pl sudo: ldap sudoOption: 'env_keep+=SSH_AUTH_SOCK' sudo: ldap search '(|(sudoUser=sp)(sudoUser=%users)(sudoUser=ALL))' sudo: found:uid=sp,ou=sudoers,dc=cen05dev,dc=xen,dc=wbcd,dc=pl sudo: ldap sudoHost 'ALL' ... MATCH! sudo: ldap sudoCommand '/usr/bin/id' ... MATCH! sudo: Perfect Matched! sudo: ldap sudoOption: '!authenticate' sudo: user_matches=-1 sudo: host_matches=-1 sudo: sudo_ldap_check(0)=0x422
W dystrybucji CentOS w wersji 6.* (32bit/i386) otrzymany rezultat powinien być analogiczny do poniższego:
sudo /usr/bin/id
W dystrybucji CentOS w wersji 6.* (64bit/x86_64) otrzymany rezultat powinien być analogiczny do poniższego:
sudo /usr/bin/id
LDAP Config Summary =================== uri ldap://10.41.0.58 ldap_version 3 sudoers_base ou=sudoers,dc=cen06x64,dc=xen,dc=wbcd,dc=pl binddn (anonymous) bindpw (anonymous) ssl no tls_cacertfile /etc/pki/tls/certs/slapd.crt tls_cacertdir /etc/openldap/cacerts =================== sudo: ldap_initialize(ld, ldap://10.41.0.58) sudo: ldap_set_option: debug -> 0 sudo: ldap_set_option: ldap_version -> 3 sudo: ldap_set_option: tls_cacertfile -> /etc/pki/tls/certs/slapd.crt sudo: ldap_set_option: tls_cacertdir -> /etc/openldap/cacerts sudo: ldap_sasl_bind_s() ok sudo: found:cn=defaults,ou=sudoers,dc=cen06x64,dc=xen,dc=wbcd,dc=pl sudo: ldap sudoOption: 'env_keep+=SSH_AUTH_SOCK' sudo: ldap search '(|(sudoUser=sp)(sudoUser=%users)(sudoUser=ALL))' sudo: found:uid=sp,ou=sudoers,dc=cen06x64,dc=xen,dc=wbcd,dc=pl sudo: ldap sudoHost 'ALL' ... MATCH! sudo: ldap sudoRunAsUser 'ALL' ... MATCH! sudo: ldap sudoCommand '/usr/bin/id' ... MATCH! sudo: Command allowed sudo: ldap sudoOption: '!authenticate' sudo: user_matches=1 sudo: host_matches=1 sudo: sudo_ldap_lookup(0)=0x02
W dystrybucji CentOS w wersji 7.* (64bit/x86_64) otrzymany rezultat powinien być analogiczny do poniższego:
sudo /usr/bin/id
sudo: Unable to dlopen /usr/lib64/libsss_sudo.so: (null) sudo: Unable to initialize SSS source. Is SSSD installed on your machine? LDAP Config Summary =================== uri ldap://10.41.0.58 ldap_version 3 sudoers_base ou=sudoers,dc=wbcd,dc=pl sudoers_base ou=sudoers,dc=cen07x64,dc=xen,dc=wbcd,dc=pl binddn (anonymous) bindpw (anonymous) ssl no tls_cacertfile /etc/pki/tls/certs/slapd.crt tls_cacertdir /etc/openldap/cacerts =================== sudo: ldap_set_option: debug -> 0 sudo: ldap_set_option: tls_cacertfile -> /etc/pki/tls/certs/slapd.crt sudo: ldap_set_option: tls_cacert -> /etc/pki/tls/certs/slapd.crt sudo: ldap_set_option: tls_cacertdir -> /etc/openldap/cacerts sudo: ldap_initialize(ld, ldap://10.41.0.58) sudo: ldap_set_option: ldap_version -> 3 sudo: ldap_sasl_bind_s() ok sudo: Looking for cn=defaults: cn=defaults sudo: no default options found in ou=sudoers,dc=wbcd,dc=pl sudo: found:cn=defaults,ou=sudoers,dc=cen07x64,dc=xen,dc=wbcd,dc=pl sudo: ldap sudoOption: 'env_keep+=SSH_AUTH_SOCK' sudo: ldap search '(|(sudoUser=sp)(sudoUser=#501)(sudoUser=%users)(sudoUser=%#100)(sudoUser=ALL))' sudo: searching from base 'ou=sudoers,dc=wbcd,dc=pl' sudo: search result has 1 entries (do_netgr=false) sudo: adding search result sudo: ldap sudoHost 'ALL' ... MATCH! sudo: order attribute raw: 2 sudo: order attribute: 2.000000 sudo: result now has 1 entries sudo: searching from base 'ou=sudoers,dc=cen07x64,dc=xen,dc=wbcd,dc=pl' sudo: search result has 1 entries (do_netgr=false) sudo: adding search result sudo: ldap sudoHost 'ALL' ... MATCH! sudo: order attribute raw: 2 sudo: order attribute: 2.000000 sudo: result now has 2 entries sudo: ldap search '(sudoUser=+*)' sudo: searching from base 'ou=sudoers,dc=wbcd,dc=pl' sudo: search result has 0 entries (do_netgr=true) sudo: adding search result sudo: result now has 2 entries sudo: searching from base 'ou=sudoers,dc=cen07x64,dc=xen,dc=wbcd,dc=pl' sudo: search result has 0 entries (do_netgr=true) sudo: adding search result sudo: result now has 2 entries sudo: sorting remaining 2 entries sudo: searching LDAP for sudoers entries sudo: ldap sudoRunAsUser 'ALL' ... MATCH! sudo: ldap sudoCommand '/usr/bin/who' ... not sudo: ldap sudoRunAsUser 'ALL' ... MATCH! sudo: ldap sudoCommand '/usr/bin/id' ... MATCH! sudo: Command allowed sudo: LDAP entry: 0x7f077ec66150 sudo: ldap sudoOption: '!authenticate' sudo: done with LDAP searches sudo: user_matches=1 sudo: host_matches=1 sudo: sudo_ldap_lookup(0)=0x02 sudo: removing reusable search result
Zmodyfikowany ostatnio: 2018/02/13 22:46:03 (7 lat temu),
textsize: 58,2 kB,
htmlsize: 77,5 kB
Zapraszam do komentowania, zgłaszania sugestii, propozycji, własnych przykładów, ...
Dodaj komentarzKomentarze użytkowników