今天主要讲解Kerberos与LDAP

今天主要讲解KerberosLDAP

虽然LDAP是加密的但是加密强度还不够,因此需要Kerberos

微软的活动目录就是:LDAP + kerberos + ntp + CA.

因为Linux在命令行下操作所以较为复杂。

 

KerberosRHS333的重点,在实际的工作中Kerberos是重点。

惠普的单点登录就是Kerberos实现的。

一次登陆全网漫游。

 

Kerberos是来自于一个传说。

由美国的MIT开发的。

Kerberos太复杂了。

 

取自希腊的神话。

 

上一期的RHCA也重点研究了Kerberos,其细节要看文档。

它的使用方法与之前的所有原理都不一样。

 

细节要看文档,要自己琢磨。

Kerberos有排错的内容。

 

今天的东西是实现类似于微软活动目录的东西。

 

——

Introduce to Kerberos

Configure the KDC and clients

Integrate LDAP and Kerberos

Configure SASL mappings for LDAP access control

以前是使用ldapsearch -x  GSSAPI.

 

Kerberos

之前是使用crypt的加密算法加密的密码。

密码还是在互联网上传输的。

 

getent shadow如果有权限还是可以看到md5的加密串。

 

Kerberos传输的是票(tickets

 

Secure network authentication system

       Based around credentials called tickets.基于对身份验证的方法实现验证,这种方式被成为票。

       Tickets secured by secret key encyption.票的安全是通过私钥加密的,因此Kerberos就是要保障票的安全

Kerberos是安全的网络认证系统,它是专门用来做认证的。

 

认证体系是由两部分组成的。

NSS提供账号。LDAP

PAM提供认证。Kerberos

 

/etc/nsswitch.conf

/etc/pam.d/system-auth

 

Three participants.Kerberos由三个成员组成的

       Key Distribution Center(KDC)钥匙分发中心,核心组件,类似于CA

       Application Server(Network services)应用程序。

       Client users客户端。

 

在之前的课程里账户信息和密码信息都是有LDAP提供的。

system-config-authentication

 

正常情况下是客户端访问服务由服务保障安全,但是现在客户端将请求发送给KDC,由KDC来保障服务的安全。

 

Kerberos and LDAP

Kerberos tickets can authenticate users to the LDAP server

Kerberos can be one part of a secure centralized user management system.

LDAP provides basic NSS information

Kerberos authenticate users,replacing pam_ldap.so

 

Principals.代理人,角色。

一个最基本的单位是Principal

A principal identifies each participant in a kerberos authentication.

每个参与Kerberos认证的表示为Principals

Identified by primary,instance and realm

 

Each Principal has a password.

passwords are used as encryption keys

Users memorize passwords

Services store passwords in a keylab file

KDC knows all passwords.

 

完整的Principal表示方法:

e1vis/admin@server116.example.com

用户  描述      Realm

 

除了用户还有一个网络服务。

ftp/station1.example.com@server116.example.com

服务名        Instance          realm(Kerberos的域)

station1.example.comftp服务加入server116.example.com中。

 

需要把以上的角色加入Kerberos中。

加的之前要提供一个供验证的密码。

 

Kerberos是未来在整个网络用的。

通常用大写的DNS来表示

所以要具体在描述中定位到具体的计算机.

 

每个Principal都有一个密码,这个不是明文的密码而是密钥,它会保存在一个文件里。

这个密码是为了加密钥匙的。

用户会记忆这个密码。

用户的密码是必须要输入的。

而服务的密码是存放在一个文件里的,服务的密码是随机生成的。

我们人只知道用户的密码,而不知道服务的密码。

KDC知道所有的密码,因为KDC存储所有的密码。

 

未来创建了用户后不创建密码,而把密码交由Kerberos验证。

——

8-6/8-7把整个原理讲述了,非常抽象,真正的详细说起来起码是60页的文档。

TGT票据分发中心。

user enters username and password

Login program sends request for a TGT for that principal to the KDC

KDC sends the login program a TGT encrypted using the user's password

If the login program can decrypt the TGT with the password provided by the user,the user is authenticated.

 

在使用前所有的客户端与Service都要加入KDC

加入后会生成KDC与各个加入者之间的密钥。

客户端会向KDC请求一张票,它被称为TGT

KDC会使用之前KDC与客户端之间生成的密钥来加密TGT,并发送给客户端。

这么做是要保证得到TGT且可以正常使用的是真正的客户端,真正的请求者。

客户端拿到TGT后,客户端会把TGT与要访问的Service打包在一起发送给KDC。这里的前提是目标Service已经加入了KDC+IP+时间戳...more

KDC收到了请求后,把客户端发送给他的信息打包在一起,使用ServiceKDC之间的密钥加密这个打包发送给客户端。

客户端是读不懂这个打包的,然后客户端把打包的东西加上客户端与KDC之间的密钥再打包在一起发给Service  #在这一步的时候不太清楚。(Here is a Question!!)

       这个时候直接把上面KDC与服务之间的密钥打包的包加上IP和时间戳发送给服务.

 

Question:服务还有别的动作吗?IP与时间戳是否打包了两次?Why?

打包两次IP与更新时间戳是为了服务解压包之后出现了两个IP与时间戳,IP确定要一样,两个时间戳之间会存在时间戳,不能超过一天。否则过期。其它的信息都一样,只是时间戳不一样。

 

每次传输、交换过程中都会有加密与解密,加密与解密的基础是KDC与各个参与者之间的密钥。

 

以上的过程就是两件事情:验证通过与票的安全。

 

请求的Service与客户端都是真正的人。

 

CA只能保证传输的网络安全,不能保证其它的安全。

Kerberos保证认证的安全。

 

Kerberos的安全在于KDC的安全与票的安全。与KDC与参与者之间的密钥的安全。

——

Kerberos的协议分为两个部分:

客户端想KDC发送自己的身份信息。

KDC自己是管理者,KDC之下有更详细的票据分发中心。

KDCTGS(票据分发服务)发送TGT

 

(...and so on:Here comes from sirKerberos相关文档。后期整理)

至少要看5遍,才能看懂流程。要清晰。

 

Question:关于在互联网上暴露输入密码的过程,仍然不够清晰。

——

Service Profile: Kerberos

krb5-server,krb5-libs

 

krb5kdc

kadmind,客户端远程管理

kpropd

 

一定要关心NTP,不能超过5分钟。

否则Kerberos是无法管理的

 

VMware的时间会飘,时间不准确。

所以一定要有NTP服务器保证时间的准确。

——

/etc/krb5.conf

——

Installing a Master KDC.

 

Kerberos的配置还是比较简单的。

.16是客户端

.116是服务器

 

这个试验是在116上做的.

——

[domain_realm]            权限控制

 

创建Kerberos数据库:

kdb5_util create -r SERVER116.EXAMPLE.COM -s.

-s    存储一个密码文件。

 

cd /var/kerberos/krb5kdc/

kdc.conf

 

keytab    存放服务的密码。

 

kadm5.acl      设置权限,哪些Principal有哪些权限。

小写 - 允许

大写 - 拒绝

* = ADMCIL

 

kdb5_util create -r SERVER101.EXAMPLE.COM -s

会提示输入密码,这是最高权限的密码。

kadmin.local

 

authconfig-tui

ltfp 92.168.0.16

pub/certs

my-ca.crt

/etc/openldap/cacerts

 

krb5kdc restart

 

一定要注意时间的问题.

 

(Pausing)

(Continue:201096 20:33:09)

 

一、kdc:

yum install krb5-server

/etc/krb5.conf

/var/kerberos/krb5kdc/kdc.conf   | kadmin5.acl

创建kdc数据库

启动krb5kdc/kadmin服务.

 

Kerberos要学两遍,这次当着学习,下次RHS333当作复习.

 

kadmin.local   管理

 

二、Client

kdc中的krb5.conf复制到/etc

使用kadmin -p root/admin远程管理

——

listprincs

addprinc

deleteprinc

?      #Get some Help

——

Using kadmin.

addpol     添加一个策略

addpol -max life 30days -minLife 3days -history 3 gusts2001

guest2001添加策略

getpol guest2001

查看guest2001的策略

——

man kadmin

——

ktadd

randomizes password

——

Install applicaition Servers

set up /etc/krb5.conf

Run kadmin

 

addprinc -randkey host/server116.example.com@server116.example.com

listprincs

ktadd -k /etc/krb5.keytab host/server116.example.com

 

/etc/pam.d/system-auth

——

klist

票的默认有效期是12个小时。

kinit

 

用户需要记忆自己的密码,而服务的密码是存放在keytab文件中的。

这里的客户端是服务器。

——

kinit可以得到一个新的TGT

kdestroy可以删除一个认证。

——

Debugging Kerberized Services.

ktutil

ktutil

rkt /etc/xxx.keytab

list

 

——

kvno

——

Slave KDCs.辅助的KDC.

负载均衡与容错。

kprop/kadmind只运行在辅助的KDC上面。

 

所以的KDC上运行krd5kdc

 

KDC database可以存储在LDAP中。IPA Server

——

Configuring slave KDCs

 

(以上介绍完了Kerberos的流程)

Kerberos的安全。

如果主机安全但是网络不安全。

KDC的安全是非常重要的。

如果服务本身不安全那么票的安全也不能保障。

客户端如果不安全票的安全也不能保障

 

所以系统中有防止的机制。

预认证功能。

防止客户端被伪造。

——

modprinc

defaul_principal_flags = +preauth

保证票据过期了不被其它的人截取使用。

——

防止有人伪造KDC,保证票本身的合法性。

validate=true

——

LDAP and Kerberos

Access Control Issues

CAKerberos配合操作.

——

实验:(这里用SASL的方法验证,原来是简单认证,现在是自动协商的方式认证)

 

yum install cyrus-sasl-gssapi

kadmin.local

addprinc -randkey ldap/server116.example.com

ktadd -k /etc/ldap ....

listprincs

vim /etc/sysconfig/dirsrv             GSS加密

/etc/sysconfig/dirsrv-admin

dirsrv restart

dirsrv-admin restart

redhat-ibm-console

       SASL Mapping.

       gssapi-map

       id=....(etc)

       dn=....(etc)

       ...(etc)

dirsrv restart

dirsrv-admin restart

 

...(etc)sasl是基于Kerberos.

 

ldapsearch -Y GSSAPI

——

明天把课后的几个试验做完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值