FreeIPA 是集成了ldap+Kerberos(Kerberos 認證原理很少說,簡單的說就是在身份認證的時候不傳輸密碼,而是在傳輸票據,更加安全可靠)+web管理的集中式用戶認證管理系統(系統級別的sso,能夠對apache,ftp,nfs,ldap,smtp ,ssh作身份認證。可是對samba 的身份認證不支持。samba貌似只支持AD),同時還能夠與微軟的AD進行用戶信息的同步。
html
我是基於centos 6.5 配置安裝配置,centos ipa 身份認證是redhat 創建在開源FreeIPA身份管理軟件上。與FreeIPA配置,命令徹底同樣。web
基本環境:shell
ipa.dadi.com ipa1.dadi.com (ipa server)
nfs3.dadi.com (nfs server)
client.dadi.com (ipa client)
apache
dns 配置:centos
bind 配置參考:安全
; ldap servers _ldap._tcp IN SRV 0 100 389 ipa.dadi.com _ldap._tcp IN SRV 0 100 389 ipa1.dadi.com ;kerberos realm _kerberos IN TXT DADI.COM ; kerberos servers _kerberos._tcp IN SRV 0 100 88 ipa.dadi.com _kerberos._udp IN SRV 0 100 88 ipa.dadi.com _kerberos-master._tcp IN SRV 0 100 88 ipa.dadi.com _kerberos-master._udp IN SRV 0 100 88 ipa.dadi.com _kpasswd._tcp IN SRV 0 100 464 ipa.dadi.com _kpasswd._udp IN SRV 0 100 464 ipa.dadi.com _kerberos._tcp IN SRV 0 100 88 ipa1.dadi.com _kerberos._udp IN SRV 0 100 88 ipa1.dadi.com _kerberos-master._tcp IN SRV 0 100 88 ipa1.dadi.com _kerberos-master._udp IN SRV 0 100 88 ipa1.dadi.com _kpasswd._tcp IN SRV 0 100 464 ipa1.dadi.com _kpasswd._udp IN SRV 0 100 464 ipa1.dadi.com ipa IN A 192.88.50.48 ipa1 IN A 192.88.50.49 nfs3 IN A 192.88.50.50 client IN A 192.88.50.51
注意:每臺服務器還須要配置反向DNS解析,不然會有問題。bash
yum install ipa-server bind-dyndb-ldap -y
而後同步時間:服務器
ntpdate ntp.dadi.com
配置:dom
ipa-server-install
而後一路yes 便可,會自動配置krdc,ldap,ldap web 管理,安裝完成後執行:ssh
kinit admin klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: admin@DADI.COM Valid starting Expires Service principal 12/19/13 10:22:23 12/20/13 10:22:21 krbtgt/DADI.COM@DADI.COM ipa config-mod --defaultshell=/bin/bash ##修改全部用戶默認shell 路徑 添加用戶: ipa user-add fsm --uid=1001 --gid=1001 修改用戶密碼: ipa passwd fsm 查詢添加用戶信息: ldapsearch -x -b "dc=dadi, dc=com" uid=fsm GSS 加密查詢: ldapsearch -Y GSSAPI uid=fsm -LLL
因爲是身份認證系統,必須作HA,不然若是ipa server 壞了,那麼你還能登陸其餘系統嗎。後果可想而知。
ipa.dadi.com 上執行:
kinit admin ipa-replica-prepare ipa1.dadi.com scp /var/lib/ipa/replica-info-ipa1.dadi.com.gpg root@ipa1.dadi.com:/root
ipa1 上執行:
yum install ipa-server bind-dyndb-ldap -y /etc/init.d/iptables stop chkconfig iptables off ntpdate ntp.dadi.com ###時間必定要同步,防火牆關閉把,否則要開放幾個端口。 ipa-replica-install replica-info-ipa1.dadi.com.gpg --skip-conncheck
安裝成功後查看,在ipa或者是ipa1上執行:
kinit admin ipa-replica-manage list ipa1.dadi.com: master ###兩臺都是master,能夠同時進行讀寫 ipa.dadi.com: master
yum install ipa-client ipa-admintools openldap-clients -y ipa-client-install --mkhomedir --no-ntp --domain=dadi.com --server=ipa.dadi.com --no-sssd -p admin
ipa.dadi.com 上執行:
kinit admin ipa-getkeytab -s ipa.dadi.com -p host/client.dadi.com -k /tmp/krb5.keytab scp /tmp/krb5.keytab client.dadi.com:/tmp
在client.dadi.com 上執行:
(echo rkt /tmp/krb5.keytab; echo wkt /etc/krb5.keytab) |ktutil klist -etk Keytab name: FILE:/etc/krb5.keytabKVNO Timestamp Principal---- ----------------- -------------------------------------------------------- 3 12/17/13 17:06:46 host/client.dadi.com@DADI.COM (aes256-cts-hmac-sha1-96) 3 12/17/13 17:06:46 host/client.dadi.com@DADI.COM (aes128-cts-hmac-sha1-96) 3 12/17/13 17:06:46 host/client.dadi.com@DADI.COM (des3-cbc-sha1) 3 12/17/13 17:06:46 host/client.dadi.com@DADI.COM (arcfour-hmac)
測試登陸:
這個時候能夠在任意一臺機器上執行ssh -l fsm client.dadi.com 就能夠登陸 client 這臺機器了。注意client 的時間必定要與ipa server 時間是同步的,不然ssh 用戶是沒法登陸的。
添加ipa1 /etc/krb5.conf 配置中。
#File modified by ipa-client-install[libdefaults] default_realm = DADI.COM dns_lookup_realm = false dns_lookup_kdc = false rdns = false ticket_lifetime = 24h forwardable = yes[realms] DADI.COM = { kdc = ipa.dadi.com:88 kdc = ipa1.dadi.com:88 ###添加ipa1 master_kdc = ipa.dadi.com:88 master_kdc = ipa1.dadi.com:88 ###添加ipa1 admin_server = ipa.dadi.com:749 admin_server = ipa1.dadi.com:749 ###添加ipa1 default_domain = dadi.com pkinit_anchors = FILE:/etc/ipa/ca.crt } [domain_realm] .dadi.com = DADI.COM dadi.com = DADI.COM
/etc/nslcd.conf /etc/pam_ldap.conf 中添加:
uri ldap://ipa.dadi.com,ldap://ipa1.dadi.com
service nslcd restart service sshd restart service oddjobd restart
測試HA:
人工down掉ipa server 看看能不可以ssh 登陸 client。正常狀況固然是能夠了。或者是在ipa1上添加一個用戶,而後啓動ipa,看是否可以同步到ipa上來。
centos6/redhat6: /etc/nslcd.conf /etc/pam_ldap.conf 中添加: ssl start_tls tls_reqcert never tls_cacertdir /etc/cacerts mkdir /etc/cacerts cd /etc/cacerts cp /etc/ipa/ca.crt cacert.crt service nslcd restart service sshd restart
ipa.dadi.com 上執行: kinit admin ipa host-add nfs3.dadi.com ipa service-add nfs/nfs3.dadi.com 添加用戶登陸ldap mount nfs 鍵值: ipa automountkey-add default auto.home --key=fsm --info=nfs3.dadi.com:/export/fsm ##添加fsm /home 目錄 nfs3.dadi.com 上執行: mkdir /export/fsm && cp /etc/skel/.bash* /export/fsm && chmod 700 /export/fsm && chown -R fsm:fsm /export/fsm vi /etc/export /export *.dadi.com(rw,fsid=0,insecure,no_subtree_check) ###不用krb5認證,krb5 因爲加密密鑰問題,尚未作通 service rpcbind restart service nfs restart client.dadi.com 上執行: ipa-client-automount --location=default -S --server=ipa.dadi.com 測試: ssh -l fsm client.dadi.com 的時候會自動mount /home/fsm 這個目錄
說明:這是我目前真實的系統環境。
1、nfs krb5 問題,老是報錯以下:
WARNING: gss_accept_sec_context failed
nfs3 rpc.svcgssd[1960]: ERROR: GSS-API: error in handle_nullreq: gss_accept_sec_context(): GSS_S_FAILURE (Unspecified GSS failure. Minor code may provide more information) - Wrong principal in request
這個錯說是加密密鑰形成,目前還沒解決。
2、誇機房問題。
其實這個問題比較簡單,每一個機房放兩臺ipa server,由於所有是master(ldap 版本必須是2.4 以上的版本),全部哪裏寫用戶信息都會同步到全網。固然誇機房mount nfs 是能夠的。考慮到高可用,若是放置nfs 的機房斷網或者是沒法連接的時候就會有問題。這個問題有兩個解決方案,一是不用自動mount nfs,ldap 的home 目錄就放在本地機器上。二是經過私網IP地址解決,每一個機房都放置一臺nfs 服務器,而且都配置私網ip地址,好比 192.88.50.53。這樣就能夠解決nfs誇機房問題,還會引出一個問題,nfs 之間數據同步問題。請你想一下?
參考文檔:http://docs.fedoraproject.org/en-US/Fedora/18/html/FreeIPA_Guide/index.html