一、背景
随着公司服务器、服务、用户越来越多,以前单机用户管理、单机sudo授权的方式已不是发展的要求,故需要做企业级的集中身份认证授权管理(比如:ldap、kerberos、ca、dns、sudo、密码策略),原因有三:
1、便于大规模集中管理,
2、能够实现单点登录SSO,
3、结合堡垒机实现双层授权、双层审计。
经过简单考察发现freeipa是个不错的选择:
1、all in one,所有我需要的好东西都全部集成了,几条命令就能搞定,省的一个个做适配,极大的节省实施部署时间
2、背后redhat支持的开源项目,是IDM的开源版本,持续维护有保证
3、支持多主复制避免单点,毕竟是企业级应用必须得考虑高可用
4、接口丰富,支持web ui、cli、api,非常棒
5、客户端能够自动注册到ipa服务器(结合kickstart或后期脚本,本文有介绍)
freeipa官网:http://www.freeipa.org/
二、freeipa官方推荐的生产环境部署方案:
原文:http://www.freeipa.org/page/Deployment_Recommendations
freeipa生产环境部署方案主要内容:
1、域名是 Kerberos的基础,为避免domain的冲突,在搭建前一定要规划好域名体系,推荐采用申请的有管理权限的域名,即使在内网使用,也不建议随便使用没有管理权限的域名,比如使用baidu.com就不是一个好的选择;
2、freeipa只能从头搭建,不能在测试环境搭建好,修改一下域名啥的就能在生产环境使用的
3、建议采用集成的dns server,虽然可以使用外部的dns server,但配置起来较为复杂且出错概率较大。
4、为了性能和稳定性,freeipa server上不要安装其他的应用。
5、多主复制环境根据规模大小、访问频度,每个数据中心推荐2-3个副本,但不要超过4个。
6、客户端至少需要配置2个dns server来增加冗余性。
7、备份与恢复:场景不同有不同的方法,但方法都较复杂,简单可行的方法是用虚拟机来搭建并定期做快照。
http://www.freeipa.org/page/Backup_and_Restore
三、具体部署环境及方案架构
1、部署环境:
freeipa server:fedara server 23
freeipa version:4.2.4
client host:centos 6.5
网络环境:全内网访问,freeipa server不对外暴露
域名:example.com (这个用法不推荐的,因为example.com不是我申请的域名,但内网使用到不影响)
2、方案架构–多主复制:
freeipa101.example.com
freeipa102.example.com
3、公司环境都是centos为什么freeipa不部署在centos上?
在centos 6上安装会有各种各样的问题,freeipa版本还比较老,为了简化安装步骤,采用fedora server 23。
在centos 6上会有这个问题,即使解决了也无法成功安装ipa server,所以最终放弃了,转战fedora。
四、freeipa server基本系统准备工作
1、安装fedara server 23,推荐在虚拟机里做,好处你懂的
2、更新系统:
yum update
3、设置完全合格的主机名并配置hosts
[root@freeipa101 ~]# hostname
freeipa101.example.com
[root@freeipa101 ~]# more /etc/hosts
192.168.0.101 freeipa101.example.com freeipa101
4、设置dns服务器为freeipa101
more /etc/resolv.conf
nameserver 192.168.0.101
5、为避免不必要的麻烦,关闭防火墙,关闭开机启动
systemctl stop firewalld
systemctl disable firewalld (fedara下关闭firewall开机启动好像不太起作用,大家注意一下防火墙)
6、vm做快照(略)
五、安装主freeipa server
[root@freeipa101 ~]# yum install freeipa-server freeipa-server-dns -y
测试:[root@freeipa101 ~]# ldapsearch -x -b “dc=example, dc=com”
测试没问题后做个vm快照-_-
六、安装配置副本ipa server
[root@freeipa102 ~]# yum install freeipa-server freeipa-server-dns -y
副本ipa server不执行ipa-server-install安装操作。
ipa的多主复制还是很赞的:
1、在主freeipa101上,创建replica information file
[root@freeipa101 ~]# ipa-replica-prepare freeipa102.example.com –ip-address 192.168.0.102
2、scp拷贝info file 到副本ipa服务器:
[root@freeipa101 ~]# scp /var/lib/ipa/replica-info-freeipa102.example.com.gpg freeipa102.example.com:/var/lib/ipa/
3、在副本ipa服务器
[root@freeipa102 ~]# ipa-replica-install –setup-ca –setup-dns –no-forwarders /var/lib/ipa/replica-info-freeipa102.example.com.gpg
4、登录测试https://freeipa102.example.com 进行测试
iptables屏蔽101的端口,或者关机,测试102是否能正常工作,登录啥的,反之亦然,高可用这块没啥要说的,自己多模拟几次故障即可。
七、在安装配置过程中遇到的几个大坑
大坑1:
hostname的完全合格域名不应该有下划线,但可以用连字符。
完全合格主机名:freeipa101.example.com
不合格主机名:-freeipa101
这是历史原因造成的,历史服务器的hostname都不是完全合格的域名,并且hostname含有下划线,freeipa不支持。
大坑2:
安装ipa server的时候
Your system is running out of entropy, you may experience long delays
因虚拟机配置不太高,系统自带的random设备没有足够的随机数生成能力,导出计算的过程异常缓慢,有可能不成功,等不起啊,
解决方案如下:
yum install -y haveged
systemctl start haveged.service
systemctl stop firewalld
参考:
https://www.redhat.com/archives/freeipa-devel/2014-May/msg00459.html
http://blog-ftweedal.rhcloud.com/
大坑3:freeipa相关服务没有开机自启动的话,一reboot就傻眼了。
检查ipa各个服务的运行状态,如果有服务没有起来的话,尝试restart一下试试
[root@freeipa102 ldapuser1]# ipactl status
八、手动配置client host加入到freeipa server:
1、安装ipa client包
[root@client ~]# yum install ipa-client
2、设置dns为 192.168.0.101
/etc/resolv.conf
3、安装(不用指定太多参数,客户端能自动发现server)
[root@client ~]# ipa-client-install –enable-dns-updates –mkhomedir
4、测试
[jsmith@client ~]id[jsmith@client ] getent passwd admin
[jsmith@client ~]$ getent group admins
5、如果你愿意也可以安装ipa、ldap管理工具
yum install ipa-client ipa-admintools openldap-clients -y
yum install nss-pam-ldapd
九、自动注册client到freeipa server,
结合kickstart在装机完成后执行post脚本:
1、在ipa server提前创建host实体和一次性密码(注册后密码失效)
ipa host-add client1.example.com – password=secret
2、安装ipa-client
3、注册
ipa-client-install –domain= example.com –enable-dns- updates –mkhomedir -w secret –realm=example.com –server=freeipa101.example.com –hostname=client1.example.com –unattended
kickstart的弊端:
每次添加新主机,admin都需要提前在ipa服务器上创建host,很难完全自动化注册。
全自动化注册client:
enroll帐号 - 只用于注册主机
新建帐号 autoenroll,需要登录一下web,更新一下密码。
web ui创建 enroll帐号的步骤:
IPS Server -> Role Based ACL -> ROLES添加Enroll组 -> 选择PRIVILEGES权限组Host Enrollment,并添加授予权限的用户autoenroll。
PRIVILEGES权限组 需要在添加一个 add hosts 的单个权限
ipa-client-install –enable-dns-updates –mkhomedir -p autoenroll -w passwordxxx -U
或者指定hostname
ipa-client-install –enable-dns-updates –mkhomedir –hostname=-netpay141.example.com -p autoenroll -w passwordxxx -U
不建议指定freeipa server的参数,这样的话注册的client就不支持ipa server的自动failover:
ipa-client-install –enable-dns-updates –mkhomedir –domain=example.com –server=freeipa101.example.com -p autoenroll -w passwordxxx -U
小问题:
开始的时候不能自动注册,
1、dns没有配置
2、autoenroll的权限不对,重新设置权限后有缓存需要等一会才生效。
3、网卡重启后dns设置恢复原来的配置,原因dns写在了网卡配置文件,并启用了networkmanage
十、用户修改密码及密码策略:
特别提醒:freeipa的密码策略是新建用户第一次强制修改密码
用户可以在任意一台已注册到freeipa的机器上修改自己的密码:
passwd username
也可以登录freeipa web ui自助修改密码
十一、sudo权限控制自己去web页面看看,很实用很简单
十二、automount用户家目录
暂没实现,很酷的功能。
十三、双因素认证otp
暂没实现,很流利的功能。
十四、客户端sssd支持主备
cat /etc/sssd/sssd.conf : ipa-server: _srv, ipaserver,ipareplica
十五、关于时间不同步造成的一个小错误
一定要保证所有服务器时间同步:
[ldapuser1@admin40 ~]$ kinit
Password for [email protected]:
kinit: Clock skew too great while getting initial credentials
强烈推荐:
很不错一篇QA:http://www.0zu.net/freeipa/freeipa-qa.html
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Identity_Management_Guide/index.html