ldap + kerberos 整合
第一部分:ldap
1. 安装ldap
yum install -y openldap openldap-clients openldap-servers openldap-devel
2. 配置ldap
# cat /etc/openldap/slapd.conf
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/kerberos.schema pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args loglevel 135
idletimeout 5
writetimeout 5 access to attrs=userPassword
by self read
by dn.exact="cn=ops,ou=Control,dc=lishen,dc=com" write
by anonymous auth access to dn.subtree="cn=Kerberos,dc=lishen,dc=com"
by dn.exact="cn=kdc-adm,ou=Control,dc=lishen,dc=com" write
by dn.exact="cn=kdc-srv,ou=Control,dc=lishen,dc=com" read
by * none access to dn.base=""
by * read access to *
by self write
by dn.base="cn=ops,ou=Control,dc=lishen,dc=com" write
by users read
by anonymous read #TLSCipherSuite HIGH:MEDIUM:-SSLv2
#TLSVerifyClient never
TLSCertificateFile /etc/openldap/certs/server.pem
TLSCertificateKeyFile /etc/openldap/certs/server.pem
TLSCACertificateFile /etc/openldap/certs/server.pem #######################################################################
# BDB database definitions
#######################################################################
database hdb
suffix "dc=lishen,dc=com"
checkpoint 32 30
rootdn "cn=root,ou=Control,dc=lishen,dc=com"
rootpw {SSHA}ifM5X6pQS2eO8hODguTPmjRLFyCnVWvP
directory /var/lib/ldap/
dbconfig set_cachesize 0 268435456 1
dbconfig set_lg_regionmax 262144
dbconfig set_lg_bsize 2097152
index objectClass,entryCSN,entryUUID eq
index uid,uidNumber,gidNumber eq,pres
index ou,krbPrincipalName eq,pres,sub
说明:
1. rootpw 后面的密码是由命令 slappasswd -s 123456 生成
2. 证书使用命令生成:openssl req -newkey rsa:1024 -x509 -nodes -out server.pem -keyout server.pem -days 36500
3. 启动openldap服务:slapd
service slapd restart
4. 测试:现在数据库是空的
slapcat
ldapsearch -x -D 'cn=root,ou=Control,dc=lishen,dc=com' -w 123456 -h 127.0.0.1 -b 'dc=lishen,dc=com'
5. 初始化数据库
准备ldif文件:
cat init.ldif
dn: dc=lishen,dc=com
dc: lishen
objectClass: domain
objectClass: dcObject dn: ou=Group,dc=lishen,dc=com
ou: Group
objectClass: organizationalUnit dn: ou=Aliases,dc=lishen,dc=com
ou: Aliases
objectClass: organizationalUnit dn: ou=People,dc=lishen,dc=com
ou: People
objectClass: organizationalUnit dn: cn=Kerberos,dc=lishen,dc=com
cn: Kerberos
objectClass: organizationalRole dn: ou=Control,dc=lishen,dc=com
ou: Control
objectClass: organizationalUnit dn: cn=kdc-srv,ou=Control,dc=lishen,dc=com
cn: kdc-srv
userPassword:: e1NTSEF9cUNhclpCYXN1SWhGRExkQ1o4bUxTbkMyZXg3bXQ2UTMK
objectClass: simpleSecurityObject
objectClass: organizationalRole dn: cn=kdc-adm,ou=Control,dc=lishen,dc=com
cn: kdc-adm
userPassword:: e1NTSEF9cUNhclpCYXN1SWhGRExkQ1o4bUxTbkMyZXg3bXQ2UTMK
objectClass: simpleSecurityObject
objectClass: organizationalRole dn: cn=root,ou=Control,dc=lishen,dc=com
cn: root
userPassword:: e1NTSEF9cUNhclpCYXN1SWhGRExkQ1o4bUxTbkMyZXg3bXQ2UTMK
objectClass: simpleSecurityObject
objectClass: organizationalRole dn: cn=demo_users,ou=Group,dc=lishen,dc=com
cn: demo_users
gidNumber: 20000
objectClass: posixGroup dn: uid=test,ou=People,dc=lishen,dc=com
uid: test
uidNumber: 10000
gidNumber: 20000
sn: Test
cn: Test User
loginShell: /bin/bash
homeDirectory: /home/users/test
objectClass: person
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
说明:文件中的userPassword由命令slappasswd -s 123456 | base64生成
执行命令导入数据:ldapadd -x -D 'cn=root,ou=Control,dc=lishen,dc=com' -w 123456 -h 127.0.0.1 -f init.ldif
执行命令验证数据导入是否成功: ldapsearch -x -D 'cn=root,ou=Control,dc=lishen,dc=com' -w 123456 -h 127.0.0.1 -b 'dc=lishen,dc=com'
6. 去掉配置文件中配置的rootdn密码,因为ldif文件中已经配置了密码
注释掉slapd.conf文件中的rootpw {SSHA}J/6iFFDlPhucaupBEI9V//gkIFTZBNrr
重启slapd:service slapd restart
测试是否密码正确:ldapsearch -x -D 'cn=root,ou=Control,dc=lishen,dc=com' -w 123456 -h 127.0.0.1 -b 'dc=lishen,dc=com'
7. 现在如果要使用LDAP作为用户认证,只需要给用户(uid=test)添加userPassword属性即可
准备ldif文件:
cat add.ldif
dn: uid=test,ou=People,dc=lishen,dc=com
changetype: modify
add: userPassword
userPassword:: e1NTSEF9Ym0rZXloV1ExalB1aWNEVU1BaHlNM0hZVHh3REIrWU4K
执行命令:ldapmodify -x -D 'cn=root,ou=Control,dc=lishen,dc=com' -w 123456 -h 127.0.0.1 -f add.ldif
如果需要更改密码,ldif例子如下:
# cat /tmp/change.ldif
dn: cn=kdc-adm,ou=Control,dc=demo,dc=local
changetype: modify
replace: userPassword
userPassword: e1NTSEF9aGc5OGh0OGVlbiszaGk3OFhkRVlWc0MzNWJ2SWRCcG8K dn: cn=kdc-srv,ou=Control,dc=demo,dc=local
changetype: modify
replace: userPassword
userPassword: e1NTSEF9aGc5OGh0OGVlbiszaGk3OFhkRVlWc0MzNWJ2SWRCcG8K
执行命令:ldapmodify -x -D 'cn=root,ou=Control,dc=lishen,dc=com' -w 123456 -h 127.0.0.1 -f change.ldif
第二部分:kerberos
1. 安装kerberos
yum install krb5-server krb5-libs
2. 配置Kerberos
cat /etc/krb5.conf
[libdefaults]
debug = false
default_realm = LISHEN.COM [realms]
LISHEN.COM = {
kdc = 127.0.0.1
admin_server = 127.0.0.1
default_domain = lishen.com
database_module = openldap_ldapconf
key_stash_file = /etc/krb5.LISHEN.COM
max_life = 1d 0h 0m 0s
max_renewable_life = 90d 0h 0m 0s
dict_file = /usr/share/dict/words
} [domain_realm]
.lishen.com = LISHEN.COM
lishen.com = LISHEN.COM [logging]
default = SYSLOG
admin_server = FILE:/var/log/kadmind.log
kdc = FILE:/var/log/kdc.log [dbdefaults]
ldap_kerberos_container_dn = cn=Kerberos,dc=lishen,dc=com [dbmodules]
openldap_ldapconf = {
db_library = kldap
ldap_servers = ldapi://
ldap_kerberos_container_dn = cn=Kerberos,dc=lishen,dc=com
ldap_kdc_dn = cn=kdc-srv,ou=Control,dc=lishen,dc=com
ldap_kadmind_dn = cn=kdc-adm,ou=Control,dc=lishen,dc=com
ldap_service_password_file = /etc/krb5.ldap
ldap_conns_per_server = 5
}
说明: ldap_kerberos_container_dn must start with a 'cn'.
4. 生成访问ldap的服务密码文件
kdb5_ldap_util -D cn=root,ou=Control,dc=lishen,dc=com -w 123456 stashsrvpw -f /etc/krb5.ldap cn=kdc-srv,ou=Control,dc=lishen,dc=com
kdb5_ldap_util -D cn=root,ou=Control,dc=lishen,dc=com -w 123456 stashsrvpw -f /etc/krb5.ldap cn=kdc-adm,ou=Control,dc=lishen,dc=com
5. 创建kerberos数据库
kdb5_ldap_util -D cn=root,ou=Control,dc=lishen,dc=com -H ldap:// create -r LISHEN.COM
6. 启动kerberos
#
service krb5kdc restart
7. 测试:添加用户
# kadmin.local
Authenticating as principal root/admin@LISHEN.COM with password.
kadmin.local: addprinc test
WARNING: no policy specified for test@LISHEN.COM; defaulting to no policy
Enter password for principal "test@LISHEN.COM":
Re-enter password for principal "test@LISHEN.COM":
Principal "test@LISHEN.COM" created. #slapcat |grep "test"
dn: uid=test,ou=People,dc=lishen,dc=com
uid: test
homeDirectory: /home/users/test
dn: krbPrincipalName=test@LISHEN.COM,cn=LISHEN.COM,cn=Kerberos,dc=lishen,dc=co
krbPrincipalName: test@LISHEN.COM
添加用户成功
测试获取凭证:
# kinit test
Password for test@LISHEN.COM:
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: test@LISHEN.COM Valid starting Expires Service principal
10/16/2016 02:11:55 10/17/2016 02:11:55 krbtgt/LISHEN.COM@LISHEN.COM
帮助:
1. http://blog.clanzx.net/2013/09/27/ldap-kerberos.html
2. http://web.mit.edu/KERBEROS/krb5-1.12/doc/admin/conf_ldap.html
3. http://docs.adaptivecomputing.com/viewpoint/hpc/Content/topics/1-setup/installSetup/settingUpOpenLDAPOnCentos6.htm
4. http://secfree.github.io/blog/2015/06/29/kerberos-ldap-deploy.html#kdc--kadmin--dn--acl
5. http://ian.wang/69.htm
6. https://help.ubuntu.com/lts/serverguide/kerberos-ldap.html#kerberos-ldap-openldap
ldap使用工具:http://directory.apache.org/studio/
ldap + kerberos 整合的更多相关文章
- ldap + kerberos + google authentication 实现两步验证
第一步:ldap + kerberos 整合 ,参考之前的文章 第二步:google authentication 安装配置,参考之前的文章 第三步:整合 ldap + kerberos + goo ...
- centos7下ldap+kerberos实现单点登陆
一. LDAP概念 http://wiki.jabbercn.org/index.php/OpenLDAP2.4%E7%AE%A1%E7%90%86%E5%91%98%E6%8C%87%E5%8D%9 ...
- SVN与LDAP服务器整合验证
说明:svn的访问是以svn://协议访问的,一般都是用http协议访问,所以要使用apache的httpd服务器apache已经添加了对ldap服务器的支持,所以svn的认证过程是使用apache代 ...
- Centos 7 集成安装Apache+PHP+Kerberos+LDAP+phpLDAPadmin
一.安装Apache 1.1.安装Apache Apache程序是目前拥有很高市场占有率的Web服务程序之一,其跨平台和安全性广泛被认可且拥有快速.可靠.简单的API扩展. 它的名字取自美国印第安人土 ...
- Ubuntu 16.04 集成安装Apache+PHP+Kerberos+LDAP+phpLDAPadmin
一.安装Apache 1.1.安装Apache apt-get update apt-get install apache2 过程如下: root@duke01:~# apt-get update命中 ...
- svn的安装(整合apache、ldap)包括错误解决post commit FS processing had error
2013年12月5日 admin 发表评论 阅读评论 以下是centos环境下,以yum安装apache及其相关软件.svn使用源码包编译,使用官网最新的1.8.5版本. 一.安装apache ope ...
- Spring Cloud Data Flow整合UAA之使用LDAP进行账号管理
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 前言 Spring Cloud Data Flow整合UAA的文章已经写了两篇,之前的方案是把用户信息保存在数据库中: ...
- 在kerberos认证过程中Active Directory的作用
LDAP介绍 1),ladp(Lightweight Directory Access Protocol),轻量级目录访问协议,提供被称为目录服务的信息服务,特别是基于X.500(构成全球分布式的目录 ...
- Linux sssd 进程 ldap 客户端配置
Linux sssd 进程 ldap 客户端配置 标签(空格分隔): ldap authconfig authconfig命令解析:authconfig 面对多计算机的身份管理以及账户信息同步, 其解 ...
随机推荐
- 【High-Speed and Accurate Laser Scan Matching Using Classified Features】
所谓的"分类特征",就是把特征分成 1. 旋转特征:用直线表示 2. 平移特征,用撕裂点和临界点表示 最大的创新点 应该就是下面的分组吧 匹配的时候,用RANSAC 或者动态规划, ...
- 2017年1月1日 java学习第二天复习
今天是新年的第一天,以前学习没有总结习惯,学习效率和成果都很不好. 学习的过程就是反复的复习和不断学习的过程,开始今天的学习总结 学习java的第二天. 今天学习了java最基础的一些内容,照着 ...
- USR-BLE101配置
新买来的模块,默认为slave模式,波特率57600,8位数据位,无检验位,1位停止位. 发送+++a,进入命令模式. 1.设置模块名称 AT+NAME=BT_Shining 2.设置发射功率(最大功 ...
- 正则匹配中 ^ $ 和 \b 的区别
正则匹配中 ^ $ 和 \b 的区别 ^和$分别代表字符串的开始和结束,因此^\d$只能匹配包含一个数字的字符串\b代表单词边界,其前后必须是不同类型的字符,可以组成单词的字符为一种类型,不可 ...
- jq中数组应用的错误
js中数组可以这样使用: <ul id="ul"> <li value="1">s</li> <li>f< ...
- ps切图抠图详解-web前端(转)
网页设计在技术层面上,第一步是美工做出网页效果图,第二步就是网页前端进行网页切图.网页切图工具常用的有fireworks.PS,这里使用PS进行网页切图. 我们通过设计稿,得到我们想要的产出物(如.p ...
- js 在页面上模拟多选,蚂蚁线线框
<html> <head></head> <style> body{padding-top:50px;padding-left:100px;paddin ...
- javascript之AJAX学习
1.AJAX即Asynchronous Javascript+XML.能够向服务器请求额外的数据而无需卸载页面. AJAx技术的核心是XMLHttpRequest对象(XHR). 2.AJAX只能向 ...
- Python笔记总结week1
1. Python介绍: 发明者:Guido 应用范围:网络应用.科学运算.GUI程序.系统管理工具.其他程序 优势:简单易懂.开发效率高.高级语言.可移植性.可扩展性.可嵌入性. 缺点:速度慢,代码 ...
- SQL Server数据库脚本备份与还原
use[master]go /*完整--备份* backup 备份 * disk='E:\USERDB.bak' 磁盘,备份文件存放的路径* name='user' 备份显示的文件名称,可随意修改* ...