سوال: چگونه لینوکس را به اکتیودایرکتوری وصل کنم ؟
آیا می توانم توزیع های مختلف لینوکس مثل 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
خوب این امر ضروری است زیرا اگر سرور را تازه نصب کرده باشید، ممکن است نصب با شکست مواجه شود. برای 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
مرحله 2: نام میزبان سرور و DNS خود را تنظیم کنید یک نام میزبان مناسب برای سرور خود با مؤلفه دامنه صحیح تنظیم کنید
$ sudo hostnamectl set-hostname myubuntu.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 به درستی پیکربندی شده است یا نه
اوبنتو دارای systemd-resolve است که برای دسترسی سرور باید آن را غیرفعال کنیم.
$ sudo systemctl disable systemd-resolved ; sudo systemctl stop systemd-resolved
و اما حالا اگر روی DHCP هستید، می توانید سرور DNS را به صورت دستی به روز کنید.
مرحله 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
........................................................................................................................................