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