آموزش جوین کردن لینوکس 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 <<EOFdeb http://us.archive.ubuntu.com/ubuntu/ bionic universedeb http://us.archive.ubuntu.com/ubuntu/ bionic-updates universeEOF 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 حالا بعد از ست کردن نام هاست$ hostnamectlStatic hostname: myubuntu.example.comIcon name: computer-vmChassis: vmMachine ID: 5beb7ac3260c4f00bcfbe1088f48b8c7Boot ID: b2a0d9abe43b455fb49484dbaa59dc41Virtualization: vmwareOperating System: Ubuntu 18.04.1 LTSKernel: Linux 4.15.0-29-genericArchitecture: 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.comexample.comtype: kerberosrealm-name: EXAMPLE.COMdomain-name: example.comconfigured: noserver-software: active-directoryclient-software: sssdrequired-package: sssd-toolsrequired-package: sssdrequired-package: libnss-sssrequired-package: libpam-sssrequired-package: adclirequired-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 listexample.comtype: kerberosrealm-name: EXAMPLE.COMdomain-name: example.comconfigured: kerberos-memberserver-software: active-directoryclient-software: sssdrequired-package: sssd-toolsrequired-package: sssdrequired-package: libnss-sssrequired-package: libpam-sssrequired-package: adclirequired-package: samba-common-binlogin-formats: %U@example.comlogin-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" <<EOFName: activate mkhomedirDefault: yesPriority: 900Session-Type: AdditionalSession:required pam_mkhomedir.so umask=0022skel=/etc/skelEOFسپس با استفاده ازدستورزیر 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 bahramuid=1783929917(bahram@example.com) gid=1784800513(domainusers@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.comPermit 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) ALLuser2@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@localhostThe authenticity of host 'localhost (::1)' can't be established.ECDSA key fingerprint isSHA256:wmWcLi/lijm4zWbQ/Uf6uLMYzM7g1AnBwxzooqpB5CU.ECDSA key fingerprint isMD5: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)? yesWarning: Permanently added 'localhost' (ECDSA) to the list of known hosts.ودر نهایت این تأیدی است که پیکربندی شما با موفقیت انجام شد است .لطفا برای دیدن سایر مقالات بنده به لینک زیر مراجعه فرمائیدhttps://medium.com/@devops523........................................................................................................................................