پرش به محتوا

FreeIPA: مدیریت متمرکز کاربران، sudo و Kerberos برای سرورهای لینوکسی

سرور FreeIPA را با DNS داخلی نصب کنید، کاربر و گروه بسازید، قانون sudo مرکزی تعریف کنید و سرورهای دیگر را به دامین IPA وصل کنید.

Rocky Linux 10سطح: پیشرفتهبرای: Rocky Linux 10، AlmaLinux 10، CentOS Stream 10، Rocky Linux 9، AlmaLinux 9به‌روزرسانی: ۱۷ آبان ۱۴۰۵

FreeIPA برای لینوکس همان کاری را می‌کند که Active Directory برای ویندوز: هر کاربر یک حساب مرکزی دارد، با Kerberos به همه‌ی سرورها وارد می‌شود و قانون‌های sudo و دسترسی از یک جا مدیریت می‌شوند.

۱. پیش‌نیازها

  • سرور تازه با حداقل ۴ گیگابایت RAM و IP ثابت. روی آن سرویس دیگری نصب نکنید.
  • نام کامل (FQDN) درست و یک دامنه‌ی زیرمجموعه که با دامنه‌ی عمومی سایت تداخل نداشته باشد، مثلاً ipa.sahor.ir:
bash
sudo hostnamectl set-hostname ipa01.ipa.sahor.ir
echo "192.168.10.8 ipa01.ipa.sahor.ir ipa01" | sudo tee -a /etc/hosts

۲. نصب

bash
sudo dnf install -y ipa-server ipa-server-dns
sudo ipa-server-install --setup-dns --auto-reverse \
  --domain=ipa.sahor.ir --realm=IPA.SAHOR.IR \
  --hostname=ipa01.ipa.sahor.ir --forwarder=1.1.1.1

نصب‌کننده رمز Directory Manager و رمز کاربر admin را می‌پرسد. هر دو را در گاوصندوق رمز نگه دارید. نصب حدود ۱۰ دقیقه طول می‌کشد.

bash
sudo firewall-cmd --permanent --add-service={freeipa-4,dns}
sudo firewall-cmd --reload

۳. کاربر و گروه

bash
kinit admin
ipa user-add ali --first=Ali --last=Karimi --email=ali@sahor.ir --password
ipa group-add sysadmins --desc="Linux administrators"
ipa group-add-member sysadmins --users=ali

کاربر در اولین ورود باید رمزش را عوض کند. کلید SSH کاربر را هم می‌توانید مرکزی ثبت کنید:

bash
ipa user-mod ali --sshpubkey="$(cat ali.pub)"

۴. قانون sudo مرکزی

bash
ipa sudorule-add sysadmins-all --hostcat=all --cmdcat=all
ipa sudorule-add-user sysadmins-all --groups=sysadmins
ipa sudorule-show sysadmins-all

۵. اتصال سرور دیگر

روی سرور کلاینت (Rocky، Alma، Fedora یا حتی Ubuntu)، DNS را روی سرور IPA بگذارید و نصب کنید:

bash
sudo dnf install -y ipa-client
sudo ipa-client-install --mkhomedir --domain=ipa.sahor.ir --server=ipa01.ipa.sahor.ir

روی Ubuntu و Debian نام بسته freeipa-client است. آزمایش:

bash
id ali
ssh ali@web01.ipa.sahor.ir
sudo -l

۶. محدود کردن دسترسی با HBAC

قانون پیش‌فرض allow_all به همه اجازه‌ی ورود به همه‌ی سرورها را می‌دهد. آن را با قانون دقیق‌تر جایگزین کنید:

bash
ipa hostgroup-add webservers
ipa hostgroup-add-member webservers --hosts=web01.ipa.sahor.ir
ipa hbacrule-add sysadmins-web
ipa hbacrule-add-user sysadmins-web --groups=sysadmins
ipa hbacrule-add-host sysadmins-web --hostgroups=webservers
ipa hbacrule-add-service sysadmins-web --hbacsvcs=sshd --hbacsvcs=sudo
ipa hbactest --user=ali --host=web01.ipa.sahor.ir --service=sshd
ipa hbacrule-disable allow_all

ترتیب مهم است: allow_all را فقط بعد از اینکه hbactest نتیجه‌ی درست داد غیرفعال کنید. کاربر admin را هم در قانون‌های لازم نگه دارید.

نسخه‌ی پشتیبان و replica

سرور دوم را به‌صورت replica اضافه کنید. بدون replica، از کار افتادن IPA یعنی هیچ‌کس نمی‌تواند وارد سرورها شود:

bash
sudo ipa-backup
ls /var/lib/ipa/backup/