centos7安装kerberos+ldap(长沙方信)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos7安装kerberos+ldap(长沙方信)相关的知识,希望对你有一定的参考价值。
一、介绍
在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/[email protected]?
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 [email protected]:/tmp
scp /etc/krb5.conf /tmp/node2.keytab [email protected]:/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、测试
klist
? ? #列出连接信息
以上是关于centos7安装kerberos+ldap(长沙方信)的主要内容,如果未能解决你的问题,请参考以下文章