gops-企业级集中身份认证及授权管理实践freeipa

一、背景 
随着公司服务器、服务、用户越来越多,以前单机用户管理、单机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


你可能感兴趣的:(gops-企业级集中身份认证及授权管理实践freeipa)