2026年2月15日 星期日

[Open-source tool] 如何配置FreeIPA的使用者登入認證(Authentication)和存取控制(Host-Based Access Control, HBAC)?

 

FreeIPA是一套身分識別和存取管理的開源軟體,主要核心功能包含認證 (Authentication)、授權控管 (Authorization)、目錄服務 (Directory Service)和憑證管理 (PKI),同時其主要應用於Linux作業系統平台,簡言之,其類似Linux作業系統的Microsoft Active Directory(AD)。對於預算有限但有資安需求的中小企業,可透過FreeIPA建立一套穩固和彈性的使用者控管中心系統,IT管理人員不再需要依序登入每台機器去新增特定帳號(如bob, tracy)。另外,當新進員工入職,僅需在FreeIPA控制介面設定,即可使全公司的特定主機能立即識別該使用者身分,相當適合中小企業提升運維效率。

本文主要著重在FreeIPA的認證 (Authentication)功能,其透過 Kerberos 協定實現單一登入(SSO),讓使用者只需一組帳號密碼即可登入到對應的客戶端,如同本文封面影片所示。


硬體環境和架構

- FreeIPA Server 端:硬體為樹莓派5b/8g,Linux作業系統為AlmaLinux 10,並利用docker部署FreeIPA服務,IP為192.168.0.114,主機名為ipa.rpi.lab。

- Client端:硬體為N100迷你主機配置的虛擬機,Linux作業系統為Ubuntu 22.04 LTS desktop, IP為192.168.0.113,主機名為ub-vm.rpi.lab。主要作為開發人員的測試平台(Dev Host)

- 控管邏輯:配置HBAC Rule(allow_dev_group_login),允許dev_group的成員(bob)可登入Client端,而hr_group的成員(tracy)則被禁止登入Client端。


配置作業

配置作業分為FreeIPA server端和client端,經樹莓派以docer成功部署FreeIPA後,配置內容如下:

FreeIPA Server 端配置(樹莓派端)

a. 取得 kinit admin 票據

在 FreeIPA 中,管理動作需要 Kerberos 票據。透過終端命令列進入容器後執行下列指令,並輸入Doker部署FreeIPA時設定的密碼後,才算正式取得修改目錄內容的權杖。
kinit admin

b. 新增使用者與群組

  1. 新增使用者:在 Web UI 的 Identity -> Users下,新增兩個使用者帳號bob與tracy。
  2. 設定群組:前往 Identity -> Groups,建立dev_group並將bob加入;建立hr_group並將tracy加入。

c. 確認使用者資訊

可透過終端命令列執行下列指令,看是否可檢視到使用者的詳細資訊,包含UID和所屬群組等等內容,確保資料庫已正確同步。另外,當有使用者資訊問題時,這指令也可用來排查。
sudo docker exec -it freeipa ipa user-show bob

d. 配置 Hosts

要控管客戶端電腦(假設客戶端電腦的hostname定義為ub-vm.rpi.lab),並使該客戶端主機加入rpi.lab網域中,使未來存取時,server端認得client端。若完成註冊,進到Web UI介面Identity -> Hosts中,即可看到名稱為ub-vm.rpi.lab客戶端主機。

e. 配置 HBAC Rule

藉由建立一條名為allow_dev_group_login的規則,來完成控管邏輯。
  1. Who:指定為dev_group,換言之,只有該群組內的成員被允許。
  2. Accessing:指定為dev_servers主機群組,其中上述客戶端(ub-vm.rpi.lab)被配置在dev_servers主機群組中。
  3. 控管效果:當allow anyone設定為disable且allow_dev_group_login設定為Enable時,控管邏輯即生效。

FreeIPA 客戶端配置(Ubuntu VM 端)

a. 安裝 freeipa-client

在 Ubuntu 上執行下列指令,即會自動安裝客戶端並完成DNS與Kerberos的設定作業,並在使用者首次登入時自動建立home目錄。
sudo apt install freeipa-client -y
sudo ipa-client-install --mkhomedir

b. 檢視使用者資訊

安裝完成後,無需新增本地帳號,透過Ubuntu終端命令列執行下列指令,即可檢視到來自 FreeIPA Server端已建置的使用者資料。
id bob
id tracy

接下來即可參考影片方式,自行測試控管邏輯。


最後,關於HBAC的Via Service設定內容,HBAC 規則不僅定義"誰能進哪台機器",還定義"透過什麼管道進入"。在Via Service區塊中,可根據管控邏輯加入下列選項:

- sshd:允許透過 SSH 遠端連線登入。
- sudo / sudo-i:允許使用者執行提權動作。
- login:允許本地終端機登入。
- gdm-password:允許使用者登入圖形化桌面,原因在於 Linux 桌面環境(如GNOME)使用的是GDM(GNOME Display Manager)認證。


沒有留言:

張貼留言