Jamal Mahmoudi
Jamal Mahmoudi
خواندن ۷ دقیقه·۱ سال پیش

آموزش جوین کردن لینوکس Debian/Ubuntu به اکتیودایرکتوری دامین

سوال: چگونه لینوکس را به اکتیودایرکتوری وصل کنم ؟

آیا می توانم توزیع های مختلف لینوکس مثل Debian /Ubuntu یا Redhat/Centos را به Active Directory Domain وصل کنم ؟ چطور؟هرچند که بهتر است احراز هویت سیستم عامل های لینوکسی را به ابزار FreeIPA بسپاریم و سیستم عامل های ویندوزی را به Active Directory Domain اما گاهی لازم میشه که OS های لینوکسی را به AD و یا ویندوز را به FreeIPA اتصال دهیم .

هر چند هدف من در این پست صرفا آموزش جوین کردن Ubuntu به Active Directory هستش البته در 8 مرحله کوتاه و ساده برای جوین ماشین های ویندوزی به FreeIPA به لینک زیر مراجعه فرمائید .

https://computingforgeeks.com/join-windows-system-to-freeipa-realm/

و اما FreeIPA چیست؟

یک راه حل مدیریت اطلاعات امنیتی یکپارچه رایگان و منبع باز است که توسط RedHat حمایت می شود. FreeIPA پیاده سازی مجددMicrosoft Active Directory نیست و می تواند به طور مستقل کار کند. تفاوت اصلی بین این دو این است که؛ FreeIPA بر روی لینوکس و سایر سیستم های مطابق با استانداردها متمرکز است در حالی که Active Directory یک ابزار ویندوز است.

در واقع این پست نحوه پیکربندی SSSD برای بازیابی و فراخوانی اطلاعات از دامنه‌های موجود در همان Active Directory Resource Forest را نشان می‌دهد. اگرشما با بیش از یک فارست AD درگیر هستین ، ممکن است این پست نتواند کل نیاز شما را پوشش دهد . و در انتها ملزومات و قوانین sudo را برای کاربرانی که از طریقAD لاگین خواهند کرد پیکربندی می‌کنیم.

در اینجا دیاگرام زیر نحوه راه اندازی و نحوه کار راه اندازی را به خوبی نشان می دهد.


بنابراین با هم مراحل زیر را برای پیوستن به دامنه Active Directory (AD) دنبال میکنیم .

$ sudo apt -y update ; sudo apt upgrade -y

https://virgool.io/p/ajq6cw387sxb/$sudoaptupdate-y;sudoaptupgrade-y

خوب این امر ضروری است زیرا اگر سرور را تازه نصب کرده باشید، ممکن است نصب با شکست مواجه شود. برای Ubuntu 20.04|18.04، مخازن زیر را به فایل sources.list خود اضافه کنید.

$ sudo tee -a /etc/apt/sources.list <<EOF

deb http://us.archive.ubuntu.com/ubuntu/ bionic universe

deb http://us.archive.ubuntu.com/ubuntu/ bionic-updates universe

EOF



https://virgool.io/p/ajq6cw387sxb/$sudotee-a/etc/apt/sources.listEOF
debhttp://us.archive.ubuntu.com/ubuntu/bionicuniverse
debhttp://us.archive.ubuntu.com/ubuntu/bionic-updatesuniverse
https://virgool.io/p/ajq6cw387sxb/EOF

مرحله 2: نام میزبان سرور و DNS خود را تنظیم کنید یک نام میزبان مناسب برای سرور خود با مؤلفه دامنه صحیح تنظیم کنید

$ sudo hostnamectl set-hostname myubuntu.example.com

https://virgool.io/p/ajq6cw387sxb/$sudohostnamectlset-hostnamemyubuntu.example.com

حالا بعد از ست کردن نام هاست

$ hostnamectl

Static hostname: myubuntu.example.com

Icon name: computer-vm

Chassis: vm

Machine ID: 5beb7ac3260c4f00bcfbe1088f48b8c7

Boot ID: b2a0d9abe43b455fb49484dbaa59dc41

Virtualization: vmware

Operating System: Ubuntu 18.04.1 LTS

Kernel: Linux 4.15.0-29-generic

Architecture: x86-64

حالا باید بررسی کنید که DNS به درستی پیکربندی شده است یا نه

https://virgool.io/p/ajq6cw387sxb/$cat/etc/resolv.conf

اوبنتو دارای systemd-resolve است که برای دسترسی سرور باید آن را غیرفعال کنیم.

$ sudo systemctl disable systemd-resolved ; sudo systemctl stop systemd-resolved

و اما حالا اگر روی DHCP هستید، می توانید سرور DNS را به صورت دستی به روز کنید.

https://virgool.io/p/ajq6cw387sxb/$sudounlink/etc/resolv.conf;sudovim/etc/resolv.conf

مرحله 3: نصب پکیج های مورد نیاز

حال باید پکیج های زیر برای اتصال Ubuntu 20.04|18.04 / Debian 10 به دامنه Active Directory (AD) نصب کنید .

$ sudo apt -y update ; sudo apt upgarade -y

$ sudo apt -y install realmd

$ sudo apt -y install libnss-sss

$sudo apt -y install libpam-sss

$sudo apt -y install sssd sssd-tools

$ sudo apt -y install adcli

$ sudo apt -y install samba-common-bin

$ sudo apt -y oddjob oddjob-mkhomedir packagekit

مرحله 4: حالا دامنه Active Directory را در Debian 10 / Ubuntu دیسکاور کنید. با دستور < realm discover > پیکربندی کامل دامنه و لیستی از بسته هایی را که برای ثبت سیستم در دامنه باید نصب شوندرا برمی گرداند مطابق شکل زیر

$ sudo realm discover example.com

example.com

type: kerberos

realm-name: EXAMPLE.COM

domain-name: example.com

configured: no

server-software: active-directory

client-software: sssd

required-package: sssd-tools

required-package: sssd

required-package: libnss-sss

required-package: libpam-sss

required-package: adcli

required-package: samba-common-bin

و اما حالا دامنه AD واقعی خود را جایگزین example.com کنید.

مرحله 5: Join Ubuntu 20.04|18.04 / Debian 10 To Active Directory (AD)domain

برای اتصال ماشین ی لینوسی به دامنه اکتیو دایرکتوری ویندوز، یک حساب کاربری ادمین AD مورد نیاز است.

$ realm join –help

$ sudo realm join -U Administrator example.com (نام دامین واقعی )

Password for Administrator:

و حالا پس از وارد کردن پسورد بایستی به کمک دستور زیر بررسی کنید که خروجی زیر را باید ببینید اگر این خروجی برای شما نمایش داده نشد وضعیت سرویس های زیر را چک کنید

$ realm list

example.com

type: kerberos

realm-name: EXAMPLE.COM

domain-name: example.com

configured: kerberos-member

server-software: active-directory

client-software: sssd

required-package: sssd-tools

required-package: sssd

required-package: libnss-sss

required-package: libpam-sss

required-package: adcli

required-package: samba-common-bin

login-formats: %U@example.com

login-policy: allow-realm-logins

........................................................................................................................................

$ sudo systemctl status sssd.service
sudo: unable to resolve host eniac-tech.local: Name or service not known
[sudo] password for bahram:
Sorry, try again.
[sudo] password for bahram:
● sssd.service - System Security Services Daemon
Loaded: loaded (/lib/systemd/system/sssd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-11-20 11:20:11 +0330; 1 day 5h ago
Main PID: 6512 (sssd)
Tasks: 2 (limit: 18932)
Memory: 10.1M
CPU: 1.828s
CGroup: /system.slice/sssd.service
├─6512 /usr/sbin/sssd -i --logger=files

└─6514 /usr/libexec/sssd/sssd_be --domain shadowutils --uid 0 --gid 0 --logger=files

---------------------------------------------------------------------------------------------------------------------

$ systemctl status realmd.service
● realmd.service - Realm and Domain Configuration
Loaded: loaded (/lib/systemd/system/realmd.service; static)
Active: active (running)since Tue 2023-11-21 17:19:21 +0330; 1s ago
Docs: man:realm(8)
man:realmd.conf(5)
Main PID: 86861 (realmd)
Tasks: 4 (limit: 18932)
Memory: 1.5M
CPU: 26ms
CGroup: /system.slice/realmd.service
└─86861 /usr/libexec/realmd

.......................................................................................................................................

نکته : در توضیع های مبتنی بر RHEL، فهرست اصلی کاربر به طور خودکار ایجاد می شود اما در اوبونتو / دبیان، باید این ویژگی راخودتان فعال کنید.

$sudo bash -c "cat > /usr/share/pam-configs/mkhomedir" <<EOF

Name: activate mkhomedir

Default: yes

Priority: 900

Session-Type: Additional

Session:

required pam_mkhomedir.so umask=0022

skel=/etc/skel

EOF


سپس با استفاده ازدستورزیر PAM را آپدیت کنید

$ sudo pam-auth-update

اکنون <OK>را انتخاب کنید

اینجا مطمئن شوید که"activate mkhomedir" انتخاب شده است، و باید [*] داشته باشد.

سپس <Ok> را برای ذخیره تغییرات انتخاب کنید. فایل پیکربندی sssd.conf شما در /etc/sssd/sssd.conf قرار دارد. هر زمان که تغییری در فایل ایجاد شد، حتما راه اندازی مجدد لازم است.

$ sudo systemctl restart sssd.service ; sudo systemctl status sssd.service

حالا اگر اتصال درست کار می کند، باید اطلاعات کاربر AD را دریافت کنید.

$ id bahram

uid=1783929917(bahram@example.com) gid=1784800513(domain

users@example.com) groups=1783870513(domain users@example.com)


مرحله 6: Control Access – Limit to user/group

دسترسی به سرور را می‌توان با اجازه دادن به کاربران/و گروه‌های خاص محدود کرد.

محدود کردن کاربران:

حالا برای اجازه دسترسی کاربر از طریق SSH و کنسول، از دستور استفاده کنید:

$ sudo realm permit user1@example.com

$ sudo realm permit user2@example.com user3@example.com

Permit access to group – Examples

$ sudo ream permit -g sysadmins

$ sudo realm permit -g 'Security Users'

$ sudo realm permit 'Domain Users' 'admin users'

خالا این فایل sssd.conf را تغییر می دهیم

اگر می‌خواهید به همه کاربران اجازه دسترسی بدهید، دستورزیر اجرا کنید:

$ sudo realm permit –all

ویا برای جلوگیری از دسترسی همه کاربران دامنه، ازدستور زیر استفاده کنید

$ sudo realm deny –all

مرحله 7: Sudo Access را پیکربندی کنید

به‌طور پیش‌فرض، یوزر دامین ها اجازه افزایش امتیاز به روت را نخواهند داشت. کاربران باید بر اساس نام های کاربری یا گروه ها دسترسی داشته باشند. اجازه دهید ابتدا فایل اعطای مجوز sudo را ایجاد بکنیم.

$ sudo vi /etc/sudoers.d/domain_admins

افزودن تک کاربر:

user1@example.com ALL=(ALL) ALL

حالا کاربر دیگری را اضافه کنید:

user1@example.com ALL=(ALL) ALL

user2@example.com ALL=(ALL) ALL

حالا اضافه کردن گروه

%group1@example.com ALL=(ALL) ALL

گروهی با دو یا سه نام اضافه کنید.

%security\ users@example.com ALL=(ALL) ALL

%system\ super\ admins@example.com ALL=(ALL) ALL

مرحله 8: دسترسی SSH را تست کنید .

دسترسی به سرور از راه دور به عنوان کاربر در AD مجاز به ورود به سیستم.

$ ssh user1@localhost

The authenticity of host 'localhost (::1)' can't be established.

ECDSA key fingerprint is

SHA256:wmWcLi/lijm4zWbQ/Uf6uLMYzM7g1AnBwxzooqpB5CU.

ECDSA key fingerprint is

MD5:10:0c:cb:22:fd:28:34:c6:3e:d7:68:15:02:f9:b4:e9.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.

ودر نهایت این تأیدی است که پیکربندی شما با موفقیت انجام شد است .


لطفا برای دیدن سایر مقالات بنده به لینک زیر مراجعه فرمائید

https://medium.com/@devops523

........................................................................................................................................










active directoryاحراز هویتلینوکس debian ubuntuلینوکسشبکه
Senior DevOps Engineer
شاید از این پست‌ها خوشتان بیاید