码迷,mamicode.com
首页 > 其他好文 > 详细

centos7安装kerberos+ldap(长沙方信)

时间:2018-09-14 11:06:45      阅读:513      评论:0      收藏:0      [点我收藏+]

标签:需要   server   hud   开启   repo   mon   并且   服务端   ticket   

一、介绍

在centos7中,实现Kerberos+openldap来实现集中身份认证,其中Kerberos来作认证,openldap用来做账号管理。


二、openldap

1.YUM源

cat /etc/yum.repos.d/base.repo

[os]
name=os
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/
enabled=1
gpgcheck=0

[epel]
name=epel
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/
enabled=1
gpgcheck=0

2.安装ldap

yum install -y openldap-servers openldap-clients
? ? #openldap-servers,服务端
? ? #openldap-clients,客户端


3.配置openldap

https://www.openldap.org/doc/admin24/slapdconf2.html

openldap 2.4有两种配置方式:
(1)slapd.conf,这是2.3版本以前的配置方式,2.4版本也支持
(2)LDIF数据库,2.3版本以后,使用动态运行时配置引擎的方式来配置ldap,其配置数据存储在LDIF数据库中,位于/etc/openldap/slapd.d

优势:
ldap的配置在运行中就可以进行修改,无需重启服务即可生效??


3.1、配置

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
? ? #数据库配置文件

chown -R ldap. /var/lib/ldap/?

slappasswd
? ? #产生一个加密过后的密码

vi /etc/openldap/slapd.d/cn\=config/olcDatabase\={0}config.ldif

olcRootPW: {SSHA}fdD1iX+g42FnwbjVhuDuKv2FEj69U9No
? ? #在最后添加一行
? ? #密码为上面产生的密码

vi /etc/openldap/slapd.d/cn\=config/olcDatabase\={2}hdb.ldif

olcSuffix: dc=example,dc=com
olcRootDN: cn=Manager,dc=example,dc=com
olcRootPW: {SSHA}oe7odi30W9Jy4YbqW348HV4p7B5n6khU
olcAccess: {0}to attrs=userPassword by self write by dn.base="cn=Manager,dc=example,dc=com" write by anonymous auth by none
olcAccess: {1}to
by dn.base="cn=Manager,dc=example,dc=com" write by self write by * read


3.2、监控

vi /etc/openldap/slapd.d/cn\=config/olcDatabase\={1}monitor.ldif

olcAccess: {0}to by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
al,cn=auth" read by dn.base="cn=Manager,dc=example,dc=com" read by
none
? ? #更改dc=my-domain为example


3.3、测试配置文件

slaptest -u


3.4、启动服务

systemctl start slapd
systemctl enable slapd


3.5、定义schema

ls /etc/openldap/schema/*.ldif |xargs -I {} ldapadd -Y EXTERNAL -H ldapi:/// -f {}?


3.6、定义结构?

vi /etc/openldap/base.ldif

dn: dc=example,dc=com
objectclass: dcObject
objectclass: organization
dc: example
o: ldap
?
dn: ou=People,dc=example,dc=com
objectclass: organizationalUnit
ou: People?

dn: ou=Group,dc=example,dc=com
objectclass: organizationalUnit
ou: Group

注意
? ? 1.条目之间必须要有一个空行
? ? 2.文件的最后不能有空行?

ldapadd -x -D cn=Manager,dc=example,dc=com -W -f /etc/openldap/base.ldif
? ? #创建根节点
? ? #并且设置Manager的密码


3.7、查询

ldapsearch -x -D cn=Manager,dc=example,dc=com -w redhat -b "dc=example,dc=com"


4、migrationtools

useradd demouser1

useradd demouser2

vi /usr/share/migrationtools/migrate_common.ph

$DEFAULT_MAIL_DOMAIN = "example.com";
$DEFAULT_BASE = "dc=example,dc=com";
$EXTENDED_SCHEMA = 1;

grep demo /etc/passwd > /tmp/users

grep demo /etc/group > /tmp/groups

cd /usr/share/migrationtools/

./migrate_passwd.pl /tmp/users /tmp/users.ldif

./migrate_group.pl /tmp/groups /tmp/groups.ldif?

ldapadd -x -D cn=Manager,dc=example,dc=com -w redhat -f /tmp/groups.ldif

ldapadd -x -D cn=Manager,dc=example,dc=com -w redhat -f /tmp/users.ldif?


5、LDAP客户端

yum install -y nss-pam-ldapd

authconfig-tui
? ?#图形化配置客户端?

getent passwd demouser1
? ? #如果能获取到用户信息,说明OK?

id demouser1?

注意,
默认ldap用户在客户端本地是没办法创建家目录的?


9、nfs共享家目录

9.1、服务端

yum install -y nfs-utils

vi /etc/exports

/home *(rw,sync)?

systemctl start rpcbind

systemctl enable rpcbind

systemctl start nfs-server?

systemctl enable nfs-server


9.2、客户端

yum install -y nfs-utils autofs

vi /etc/auto.master

/home /etc/auto.autofs --timout=600

vi /etc/auto.autofs

  • kerberos.example.com:/home/&

systemctl enable autofs?

systemctl start autofs


10、配置TLS加密??

http://www.openldap.org/doc/admin24/tls.html#Server%20Certificates

如果要通过客户端的sssd进行LDAP认证,必须开启TLS加密。sssd不支持不加密的认证通道。


10.1、创建CA机构

cd /etc/pki/tls/certs

(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out cacert.crt -days 3650

cd /etc/pki/CA

touch serial index.txt

echo 01 > serial


10.2、生成用户证书

cd /etc/pki/tls/certs?

(umask 077;openssl genrsa -out slapd.key 1024)

openssl req -new -key slapd.key -out slapd.csr
? ? #生成请求文件

openssl ca -in slapd.csr -out slapd.crt -days 3650
? ? #CA机构签发用户证书


10.3、配置LDAP

vi /etc/openldap/slapd.d/cn\=config.ldif

olcTLSCACertificateFile: /etc/pki/tls/certs/cacert.crt
olcTLSCertificateFile: /etc/pki/tls/certs/slapd.crt
olcTLSCertificateKeyFile: /etc/pki/tls/certs/slapd.key
? ? #指定3个文件的位置
? ? #删除TLSCACertificatePath这一行

systemctl restart slapd

注意:
TLSCACertificatePath,此伪指令指定在单独文件中包含单个CA证书的目录的路径,删除


三、kerberos

1、安装kerberos

yum install -y krb5-server
? ? #安装kerberos


2、配置

vi /etc/krb5.conf

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_realm = EXAMPLE.COM
default_ccache_name = KEYRING:persistent:%{uid}

[realms]
EXAMPLE.COM = {
kdc = kerberos.example.com
admin_server = kerberos.example.com
}

[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM

注意:
? ? kerberos.example.com这个主机名要能解析

vi /var/kerberos/krb5kdc/kdc.conf
vi /var/kerberos/krb5kdc/kadm5.acl
? ? #如果不使用默认域名,才需要去改这两个文件
? ? #将域名改为自己的


3、初始化kerberos

kdb5_util create -s -r EXAMPLE.COM

systemctl start kadmin

systemctl start krb5kdc

systemctl enable krb5kdc

systemctl enable kadmin


4、创建认证

Kerberos认证的唯一ID叫principal,由primary、instance、realm三部分组成
格式为:primary/instance@realm?

principal有3种类型:user、service、host

kadmin.local

addprinc root/admin
? ? #给root用户创建一个user类型的、带管理权限的principal
addprinc demouser1
addprinc demouser2
? ? #创建user类型的principal
addprinc -randkey host/node1.example.com
addprinc -randkey host/node2.example.com
? ? #创建host类型的principal
addprinc -randkey nfs/node1.example.com
? ? #创建service类型的principal
? ? #后面node1节点配置NFS,可通过kerberos安全导出
ktadd -k /tmp/node1.keytab host/node1.example.com
ktadd -k /tmp/node2.keytab host/node2.example.com
ktadd -k /tmp/nfs.keytab nfs/node1.example.com
? ? #将key从KDC导出
listprincs
? ? #列出客户端
quit

scp /etc/krb5.conf /tmp/node1.keytab root@node1:/tmp
scp /etc/krb5.conf /tmp/node2.keytab root@node2:/tmp
? ? #拷贝krb5配置文件和客户端的key


5、客户端配置

yum install -y pam_krb5 krb5-workstation

cp /tmp/krb5.conf /etc/

mkdir /etc/krb5.conf.d/
? ? #因为配置文件里有includedir /etc/krb5.conf.d/,所以必须创建这个目录,否则下面的命令失败

ktutil

rkt /tmp/node1.keytab

wkt /etc/krb5.keytab

list

quit


6、配置ssh

? ? ? ? GSSAPI:Generic Security Services Application Program Interface,GSSAPI 本身是一套 API,由 IETF 标准化。其最主要也是著名的实现是基于 Kerberos 的。一般说到 GSSAPI 都暗指 Kerberos 实现。
? ? ? ? GSSAPI 是一套通用网络安全系统接口。该接口是对各种不同的客户端服务器安全机制的封装,以消除安全接口的不同,降低编程难度。

vi /etc/ssh/ssh_config

GSSAPIAuthentication yes
GSSAPIDelegateCredentials yes?

vi /etc/ssh/sshd_config

GSSAPIAuthentication yes
GSSAPICleanupCredentials yes

systemctl reload sshd


7、测试

ssh demouser1@node1

klist
? ? #列出连接信息

centos7安装kerberos+ldap(长沙方信)

标签:需要   server   hud   开启   repo   mon   并且   服务端   ticket   

原文地址:http://blog.51cto.com/gongxin12/2174978

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!