با سلام . در این آموزش به بررسی راه اندازی سرویس لینوکسی openldap می پردازیم .ابتدا نام هاست را تغییر می دهیم . در فایل /etc/hosts داریم :

127.0.1.1 ldap ldap.nextdevops.local

سپس :

sudo hostnamectl set-hostname ldap.nextdevops.local

سپس جهت نصب داریم :

apt -y install slapd ldap-utils

سپس جهت تایید تنظیمات داریم :

 slapcat

اگر تنظیمات مورد تایید شما نیست از دستور می توان جهت کانفیگ موارد موجود در آن استفاده کرد :

sudo dpkg-reconfigure slapd

پارامتر های خواسته را همانند زیر اعمال میکنیم :

Omit OpenLDAP server configuration: No
DNS domain name: domain.com
Organization name: Org name
Administrator Password: New password (Can reuse same password from previous step)
Do you want the database to be removed when slapd is purged: No
Move old database: Yes

بعد ار آن به سراغ فایل کانفیگ می رویم :

sudo vi /etc/ldap/ldap.conf

مقادیر را همانند زیر پر میکنیم :

#BASE   dc=nextdevops,dc=ir
#URI    ldap://ldap.nextdevops.local ldap://ldap.nextdevops.local:666
BASE    dc=nextdevops,dc=ir
URI     ldap://ldap.nextdevops.local

در صورتی که تنظیمات با موفقیت اعمال شده باشد با دستور زیر پیام success دریافت می کنیم:

ldapsearch -x

تنظیم ssl/tls برای ldap :

پکیج های مربوطه را نصب میکنیم :

sudo apt install gnutls-bin ssl-cert

کلید برای ca را میسازیم :

sudo certtool --generate-privkey --bits 4096 --outfile /etc/ssl/private/ldap_ca_key.pem

یک تمپلیت برای ca مربوط به openldap می سازیم :

sudo vi /etc/ssl/ldap_ca.info

محتوای فایل همانند زیر باشد :

cn = nextdevops
ca
cert_signing_key
expiration_days = 3650

سپس سرتیفیکیت self sign را می سازیم :

sudo certtool --generate-self-signed \
--load-privkey /etc/ssl/private/ldap_ca_key.pem \
--template /etc/ssl/ldap_ca.info \
--outfile /usr/local/share/ca-certificates/ldap_ca_cert.crt

سرتیفیکیت را به ca های معتبر اضافه میکنیم :

sudo update-ca-certificates

یک کلید خصوصی می سازیم :

sudo certtool --generate-privkey --bits 2048 \
--outfile /etc/ldap/sasl2/ldap_slapd_key.pem

یک تمپلیت برای سرتیفیکیت می سازیم :

sudo vi /etc/ssl/ldap.info

محتوای فایل همانند زیر :

organization = nextdevops
cn = ldap.nextdevops.local
tls_www_server
encryption_key
signing_key
expiration_days = 3650

سپس یک سرتیفیکیت می سازیم : (این سرتیفیکیت مربوط به اتصال بقیه سرور ها به سرور openldap می باشد)

sudo certtool --generate-certificate \
--load-privkey /etc/ldap/sasl2/ldap_slapd_key.pem \
--load-ca-certificate /etc/ssl/certs/ldap_ca_cert.pem \
--load-ca-privkey /etc/ssl/private/ldap_ca_key.pem \
--template /etc/ssl/ldap.info \
--outfile /etc/ldap/sasl2/ldap_slapd_cert.pem

دسترسی های آن را تنظیم میکنیم :

sudo chown openldap. -R /etc/ldap/sasl2
sudo chmod 0640 /etc/ldap/sasl2/ldap_slapd_key.pem

سرتیفیکیت ایجاد شده را verfy می کنیم :

openssl verify -CAfile /etc/ssl/certs/ldap_ca_cert.pem /etc/ldap/sasl2/ldap_slapd_cert.pem

اضافه کردن سرتیفیکیت به تنظیمات openldap :

یک فایل می سازیم :

sudo vi /etc/ldap/schema/cert.ldif

محتوای زیر را وارد میکنیم :

dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/ldap_ca_cert.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ldap/sasl2/ldap_slapd_cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ldap/sasl2/ldap_slapd_key.pem

سپس سرتیفیکیت را به openldap اضافه میکنیم :

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cert.ldif

حال باید پارامترهای openldap را تغییر دهیم :

sudo vi /etc/default/slapd

خط زیر را همانند الگو تغییر می دهیم :

SLAPD_SERVICES="ldap://127.0.1.1/ ldapi:/// ldaps:///"

سرویس را ریست میکنیم :

sudo systemctl restart slapd

برای چک کردن سرویس داریم : ( در صورتی که درست کار کند همانند قبل پیام success میگیریم)

ldapsearch -x -H ldaps://ldap.nextdevops.local

ساخت ساختار openldap :

فایل زیر را می سازیم :

sudo vi /etc/ldap/schema/rootOU.ldif

محتوای فایل همانند زیر است :

dn: ou=Users,dc=nextdevops,dc=ir
objectClass: organizationalUnit
ou: Users

dn: ou=Groups,dc=nextdevops,dc=ir
objectClass: organizationalUnit
ou: Groups

dn: cn=administrators,ou=Groups,dc=nextdevops,dc=ir
objectClass: posixGroup
cn: administrators
gidNumber: 5000

حال این ساختار را به openldap معرفی میکنیم :

ldapadd -x -D cn=admin,dc=nextdevops,dc=ir -W -f /etc/ldap/schema/rootOU.ldif

ایجاد دسترسی های sudo برای openldap

export SUDO_FORCE_REMOVE=yes
sudo -E bash -c 'apt install sudo-ldap'

اسکیما sudo را به دایرکتوری openldap وارد میکنیم :

sudo cp /usr/share/doc/sudo-ldap/schema.olcSudo /etc/ldap/schema/

آن را به اسکیما وارد میکنیم :

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/schema.olcSudo

حالا ou ساختار sudo را تعریف میکنیم :

sudo vi /etc/ldap/schema/sudoers.ldif

محتوای فایل :

dn: ou=Sudoers,dc=nextdevops,dc=ir
objectClass: organizationalUnit
objectClass: top
ou: Sudoers

dn: cn=defaults,ou=Sudoers,dc=nextdevops,dc=ir
objectClass: sudoRole
objectClass: top
cn: defaults
sudoOption: env_reset
sudoOption: mail_badpass
sudoOption: secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

dn: cn=%administrators,ou=Sudoers,dc=domain,dc=com
objectClass: top
objectClass: sudoRole
cn: %administrators
sudoUser: %administrators
sudoHost: ALL
sudoCommand: ALL

ساختار sudoers را به openldap وارد میکنیم :

ldapadd -x -D cn=admin,dc=nextdevops,dc=ir -W -f /etc/ldap/schema/sudoers.ldif

نصب سرویس sssd :

این سرویس همانند cache برای ldap عمل میکند . در صورتی که سرویس ldap در دسترس نباشد می توانیم ار تاریخجه آن استفاده کنیم :

sudo apt install sssd-ldap ldap-utils libsss-sudo

دسترسی کانفیگ آن را تغییر می دهیم :

sudo install -m 600 /dev/null /etc/sssd/sssd.conf

کانفیگ آن را تغییر می دهیم :

sudo vi /etc/sssd/sssd.conf

محتوای آن :

[sssd]
config_file_version = 2
domains = nextdevops.local

[domain/nextdevops.local]
id_provider = ldap
auth_provider = ldap
ldap_uri = ldaps://ldap.nextdevops.local
cache_credentials = True
ldap_search_base = dc=nextdevops,dc=ir

سرویس آن را ریست کرده :

sudo systemctl restart sssd

ساخت اتوماتیک دایرکتوری home :

sudo pam-auth-update --enable mkhomedir

Categorized in: