با سلام . در این آموزش به بررسی راه اندازی سرویس لینوکسی 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