開源身份認證工具 FreeIPA 安裝配置大全
文/圖:曹江華
IPA 是 Identity、Policy 和 Audit 的縮寫, FreeIPA 是一個開源免費的身份認證體系,能夠提供類似 Active Directory 的身份認證功能,也是一款整合的安全訊息管理解決方案。
FreeIPA 整合了 LDAP+Kerberos+Web 管理的集中式用戶認證管理系統,FreeIPA 包含 Linux、389 Directory Server、MIT Kerberos、NTP、DNS、Dogtag (Certificate System) 等技術。
FreeIPA 簡介
FreeIPA 的好處是全整合,企業級應用都全部整合了,幾條命令就能搞定,極大的節省實施部署時間。而且支援企業級的集中身份認證授權管理如 LDAP、Kerberos、CA、DNS、SUDO、密碼策略,便於大規模集中管理,能夠實現單點登入(Single Sign-On)。它是 IDM 的開源版本,是 Red Hat 支援的開源項目,持續維護有保證。而且 接口豐富,支援 Web 界面和命令行,客戶端能夠自動註冊到 IPA 伺服器,FreeIPA 的組件如下(圖1)。

FreeIPA 組件
FreeIPA 分為數個部分,其中驗證服務使用 Kerberos 的密鑰分發中心 (Key Distribution Center, KDC)。目錄服務使用 389 Directory Server,389 Directory Server 是一個企業級的 Linux 目錄服務,完全支援 LDAPv3 規範。證書系統採用 Red Hat Certificate System 認證系統,提供安全框架來確保用戶的身份以及通訊的私密性。域名解析服務使用 DNS Bind 伺服器 。安全管理服務使用 SSSD,SSSD 是 Red Hat Enterprise Linux 6 中新加入的一個守護進程,該進程可以用來存取多種驗證伺服器,如 LDAP,Kerberos 等,並提供授權。SSSD 是介於本地用戶和數據儲存系統之間的進程。本地客戶端首先連接SSSD,再由 SSSD 聯繫外部資源提供者,例如一台遠程伺服器。時間同步方面使用NTP伺服器 ,用戶可透過瀏覽器和IPA命令管理。FreeIPA 官方推薦的生產環境部署方案,可參考以下 URL。
http://www.freeipa.org/page/Deployment_Recommendations
架設服務要點
域名是 Kerberos 的基礎,為避免域名衝突,在搭建前一定要規劃好域名體系。推薦採用申請的有管理權限的域名,即使在內網使用,也不建議用沒有管理權限的域名。 FreeIPA 必須每次都從頭開始搭建,不能在測試環境搭建好,修改一下域名就能在生產環境使用。建議採用整合的 DNS 伺服器,雖然可以使用外部的 DNS 伺服器,但配置起來較為複雜且出錯概率較大。為了性能和穩定性,FreeIPA 伺服器儘量不要安裝其他的應用程式。多主複製環境根據規模大小、存取頻度,每個數據中心推薦 2 到 3 個副本,但不要超過 4 個。客戶端至少需要配置 2 個 DNS 伺服器,來增加冗餘性。FreeIPA 包括伺服器和客戶端,伺服器和客戶端交互過程下(圖2)。FreeIPA 的相關服務埠號如下,設置防火牆的時候要打開(表1)。
服務 | 埠號 | 通訊協定 |
---|---|---|
HTTP/HTTPS | 80,443 | TCP |
LDAP/LDAPS | 389,636 | TCP |
Kerberos | 88,464 | TCP/UDP |
DNS | 53 | TCP/UDP |
NTP | 123 | UDP |
表1:使用FreeIPA時要打開的埠號。

部署環境及方案架構
先介紹一下部署環境,首先是網路環境,FreeIPA伺服器不提供對外存取,這次以example.com為域名說明,表2是這次的FreeIPA伺服器配置。
角色 | 作業系統 | 主機名稱 | IP位址 | DNS |
IPA伺服器 | CentOS 7 | ipa.example.com | 192.168.12/24 | 192.168.1.2 |
IPA 客戶端 | CentOS 7 | client1.example.com | 192.168.1.100/24 | 192.168.1.2 |
IPA伺服器副本 | CentOS 7 | ipa1.example.com | 192.168.13/24 | 192.168.1.2 |
表2:是次的 FreeIPA 伺服器配置。
接下來設置主機名稱,我們需要設置為 FQDN (Fully Qualified Domain Name),這裡是 ipa.example.com。在 /etc/hosts 中解析主機名稱為本地 IP 位址,設定如下。
192.168.1.12 ipa.example.com ipa
然後開啟防火牆的相關下埠號。
firewall-cmd –add-service={ssh,dns,freeipa-ldap,freeipa-ldaps, https,https,ntp} –permanent (ENTER)
firewall-cmd –permanent –add-port={80/tcp,443/tcp,389/tcp,636/tcp,88/tcp,464/tcp,53/tcp,88/udp,464/udp,53/udp,123/udp} (ENTER)
firewall-cmd –reload (ENTER)