FreeIPA برای لینوکس همان کاری را میکند که Active Directory برای ویندوز: هر کاربر یک حساب مرکزی دارد، با Kerberos به همهی سرورها وارد میشود و قانونهای sudo و دسترسی از یک جا مدیریت میشوند.
۱. پیشنیازها
- سرور تازه با حداقل ۴ گیگابایت RAM و IP ثابت. روی آن سرویس دیگری نصب نکنید.
- نام کامل (FQDN) درست و یک دامنهی زیرمجموعه که با دامنهی عمومی سایت تداخل نداشته باشد، مثلاً
ipa.sahor.ir:
sudo hostnamectl set-hostname ipa01.ipa.sahor.ir
echo "192.168.10.8 ipa01.ipa.sahor.ir ipa01" | sudo tee -a /etc/hosts۲. نصب
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 را میپرسد. هر دو را در گاوصندوق رمز نگه دارید. نصب حدود ۱۰ دقیقه طول میکشد.
sudo firewall-cmd --permanent --add-service={freeipa-4,dns}
sudo firewall-cmd --reload۳. کاربر و گروه
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 کاربر را هم میتوانید مرکزی ثبت کنید:
ipa user-mod ali --sshpubkey="$(cat ali.pub)"۴. قانون sudo مرکزی
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 بگذارید و نصب کنید:
sudo dnf install -y ipa-client
sudo ipa-client-install --mkhomedir --domain=ipa.sahor.ir --server=ipa01.ipa.sahor.irروی Ubuntu و Debian نام بسته freeipa-client است. آزمایش:
id ali
ssh ali@web01.ipa.sahor.ir
sudo -l۶. محدود کردن دسترسی با HBAC
قانون پیشفرض allow_all به همه اجازهی ورود به همهی سرورها را میدهد. آن را با قانون دقیقتر جایگزین کنید:
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 یعنی هیچکس نمیتواند وارد سرورها شود:
sudo ipa-backup
ls /var/lib/ipa/backup/