RHS333-4 Kerberos_NIS

简介:

 KerberOSNIS提供账户认证

一、           环境

KDCserver1.example.com   192.168.32.31

NIS Serverstation2.example.com  192.168.32.32 

默认已经配置好,并有guest2001guest2002两个用户

Clientstation3.example.com  192.168.32.33

NISDOMAINnotexample

Kerberos realmEXAMPLE.COM

二、           KDC配置

1.      软件安装

[root@server1 ~]# yum install krb5-server.i386

[root@server1 ~]# yum install krb5-libs.i386

[root@server1 ~]# yum install krb5-workstation.i386

[root@server1 ~]# yum install krb5-devel.i386

2.      修改kerberos配置文件/etc/krb5.conf

[root@server1 ~]# 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]

 default_realm = EXAMPLE.COM    

定义kerberos区域名,可随意指定,一般和DNS域名相同

 dns_lookup_realm = false

#是否支持dns解析域

 dns_lookup_kdc = false

 ticket_lifetime = 24h

#kerberos认证票据的有限期

 forwardable = yes 

[realms]

 EXAMPLE.COM = {

  #区域的全局参数定义

  kdc = 192.168.32.31:88           

#KDC服务器地址,尽量用IP地址,防止DNS解析失败带来kerberos认证失败

  admin_server = 192.168.32.31:749 

#指定KDC管理服务器,一般与服务器相同

  default_domain = example.com    

#指定DNS的域名,在dns_lookup_realm=yes是生效,可无此项

 } 

[domain_realm]  

#区域的访问控制

 .example.com = EXAMPLE.COM

#允许example.com域网段内所有主机使用此kerberos认证

 example.com = EXAMPLE.COM

 192.168.40.0/24 = EXAMPLE.COM 

#允许192.168.40.0/24网段内所有主机使用此kerberos认证

 

[appdefaults]

 pam = {

   debug = false

   ticket_lifetime = 36000

   renew_lifetime = 36000

   forwardable = true

   krb4_convert = false

   validate = true           #默认要求验证KDC票据的合法性

 } 

3.      生成kerberos的本地数据库

[root@server1 krb5kdc]# kdb5_util create -r EXAMPLE.COM -s

Loading random data

Initializing database '/var/kerberos/krb5kdc/principal' for realm 'EXAMPLE.COM',

master key name 'K/M@EXAMPLE.COM'

You will be prompted for the database Master Password.

It is important that you NOT FORGET this password.

Enter KDC database master key:                    #输入KDC数据库管理密码

Re-enter KDC database master key to verify:

#-r realm:指定realm

#-s:一个缓存文件,本地在管理kdc时将不再需要输入密码

 

4.      打开kerberos的加密算法

[kdcdefaults]

 v4_mode = nopreauth

 kdc_tcp_ports = 88

 

[realms]

 EXAMPLE.COM = {

  master_key_type = des3-hmac-sha1     #指定区域的加密算法

  acl_file = /var/kerberos/krb5kdc/kadm5.acl

  dict_file = /usr/share/dict/words

  admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab

  supported_enctypes = des3-hmac-sha1:normal arcfour-hmac:norma

l des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal de

s-cbc-crc:v4 des-cbc-crc:afs3

 }

 

5.      启动krb5kdckadmin服务

[root@server1 krb5kdc]# service krb5kdc start

启动 Kerberos 5 KDC                                      [确定]

[root@server1 krb5kdc]# service kadmin start

启动 Kerberos 5 Admin Server                              [确定] 

6.      添加远程管理账户及其权限

l  添加远程管理账户root

[root@server1 krb5kdc]# kadmin.local           #本地管理

Authenticating as principal root/admin@EXAMPLE.COM with password.

kadmin.local:  listprincs           #查看所有实例

K/M@EXAMPLE.COM

kadmin/admin@EXAMPLE.COM

kadmin/changepw@EXAMPLE.COM

kadmin/history@EXAMPLE.COM

kadmin/localhost.localdomain@EXAMPLE.COM

krbtgt/EXAMPLE.COM@EXAMPLE.COM

kadmin.local:  addprinc root/admin  

 #添加管理员帐号root,与系统root账户无关,可随意指定

WARNING: no policy specified for root/admin@EXAMPLE.COM; defaulting to no policy

Enter password for principal "root/admin@EXAMPLE.COM":

Re-enter password for principal "root/admin@EXAMPLE.COM":

Principal "root/admin@EXAMPLE.COM" created.

l  为管理账户root添加权限

 [root@server1 krb5kdc]# vi /var/kerberos/krb5kdc/kadm5.acl

root/admin@EXAMPLE.COM aDMcIL

#root账户拥有的权限

#*/admin@EXAMPLE.COM    * 

#实例admin@EXAMPLE.COM上所有账户用于所有权限

 #权限说明:

# a/A Allow/deny addition of principals or policies

# d/D Allow/deny deletion of principals or policies

# m/M Allow/deny modification of principals or policies

# c/C Allow/deny password changes for principals

# i/I Allow/deny database inquiries /para>

# l/L Allow/deny listing all principals or policies

# * Equivalent to admcil

l  重启kadmin服务使权限生效

[root@server1 krb5kdc]# service kadmin restart

停止 Kerberos 5 Admin Server                             [确定]

启动 Kerberos 5 Admin Server                             [确定]

 

7.      添加NIS认证用户(在NIS sever创建NIS用户时,不要用passwd创建密码)

[root@server1 krb5kdc]# kadmin.local

[root@server1 krb5kdc]# kadmin –p root/admin

Authenticating as principal root/admin with password.

Password for root/admin@EXAMPLE.COM:

kadmin:  addprinc guest2001             #添加NIS认证账户guest2001密码

WARNING: no policy specified for guest2001@EXAMPLE.COM; defaulting to no policy

Enter password for principal "guest2001@EXAMPLE.COM":

Re-enter password for principal "guest2001@EXAMPLE.COM":

Principal "guest2001@EXAMPLE.COM" created.

kadmin:  addprinc guest2002             #添加NIS认证账户guest2002密码

WARNING: no policy specified for guest2002@EXAMPLE.COM; defaulting to no policy

Enter password for principal "guest2002@EXAMPLE.COM":

Re-enter password for principal "guest2002@EXAMPLE.COM":

Principal "guest2002@EXAMPLE.COM" created.

三、          客户端配置

1.      配置授权认证加入kerberos认证

[root@server1 krb5kdc]#scp /etc/krb5.conf 192.168.32.32:/etc/krb5.conf

[root@server1 krb5kdc]#scp /etc/krb5.conf 192.168.32.33:/etc/krb5.conf

#kdc/etc/krb5.conf复制到客户端/etc/krb5.conf即可将客户端加入到kerberos的认证中。

2.      客户端测试

[netsword@station2 ~]$ su - guest2001

口令:               #此处输入的口令即为kerberos添加认证账户时输入的密码

[guest2001@station2 ~]$ klist        #查看票据,下面的显示表示已经获得票据

Ticket cache: FILE:/tmp/krb5cc_2001_SbPhMC

Default principal: guest2001@EXAMPLE.COM

 

Valid starting     Expires            Service principal

03/21/11 00:30:04  03/21/11 10:30:03  krbtgt/EXAMPLE.COM@EXAMPLE.COM

        renew until 03/21/11 00:30:04

Kerberos 4 ticket cache: /tmp/tkt2001

klist: You have no tickets cached

 

四、配置station2station3之间互相ssh到对方通过kerberos认证无需输入密码

1.      kdc中添加两服务器ssh服务的实例(princ

[root@station2 etc]# kadmin

Authenticating as principal root/admin@EXAMPLE.COM with password.

Password for root/admin@EXAMPLE.COM:

kadmin:  addprinc -randkey host/station2.example.com

#添加station2sshprinc,密码随机

WARNING: no policy specified for host/station2.example.com@EXAMPLE.COM; defaulting to no policy

Principal "host/station2.example.com@EXAMPLE.COM" created.

kadmin:  addprinc -randkey host/station3.example.com 

#添加station3sshprinc,密码随机

WARNING: no policy specified for host/station3.example.com@EXAMPLE.COM; defaulting to no policy

Principal "host/station3.example.com@EXAMPLE.COM" created.

#注:The krb5-workstation package includes a number of Kerberos-enabled services #executable by xinetd:

#xinetd config   daemon  port     principal   client

#eklogin        klogind  2105/tcp  host/*   /usr/kerberos/bin/rlogin

#kshell         kshd    544/tcp    host/*   /usr/kerberos/bin/rsh

#gssftp         ftpd    21/tcp     ftp/*     /usr/kerberos/bin/ftp

#krb5-telnet     telnetd  23/tcp    host/*    /usr/kerberos/bin/telnet

#These services provide Kerberos authentication, and can provide encryption with the shared session key. Other

services in the distribution may also support authentication with Kerberos tickets. These services include sshd,

slapd, and httpd, among others.

2.      导出彼此的密钥,并分别复制给对方的客户端

[root@server1 ~]# kadmin

kadmin:  ktadd -k /etc/station2.keytab host/station2.example.com

kadmin:  ktadd -k /etc/station3.keytab host/station3.example.com

[root@server1 ~]#scp /etc/station2.keytab 192.168.32.32:/etc/krb5.keytab

[root@server1 ~]#scp /etc/station3.keytab 192.168.32.33:/etc/krb5.keytab

#只需服务器端有keytab,客户端登陆时kerberos给其分配的票,无需keytab

3.      测试

[root@station3 etc]# su - netsword

[netsword@station3 ~]$ su - guest2001

-bash-3.2$ ssh 192.168.32.32

Could not create directory '/home/guest2001/.ssh'.

The authenticity of host '192.168.32.32 (192.168.32.32)' can't be established.

RSA key fingerprint is d6:61:e8:8d:68:2b:29:5f:2e:e7:a8:16:f5:fd:f9:d4.

Are you sure you want to continue connecting (yes/no)? yes

Failed to add the host to the list of known hosts (/home/guest2001/.ssh/known_hosts).

Address 192.168.32.32 maps to station2.example.com, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!

Last login: Mon Mar 21 01:40:43 2011 from station3.example.com

[guest2001@station2 ~]$

#因为切换到guest2001账户时已经从kdc上获取票据,所以ssh登陆到station2是直接通过此票据认证,无需在输入guest2001的密码

 

 

本文转自netsword 51CTO博客,原文链接:http://blog.51cto.com/netsword/520964


相关文章
|
12月前
|
Python
使用 Pandas 库时,如何处理数据的重复值?
在使用Pandas处理数据重复值时,需要根据具体的数据特点和分析需求,选择合适的方法来确保数据的准确性和唯一性。
810 64
|
数据采集 机器学习/深度学习 搜索推荐
大模型开发: 描述主成分分析(PCA)以及它在降维中的应用。
PCA是广泛应用的降维技术,通过线性变换找到最大化方差的主成分,降低数据维度,简化计算并揭示数据结构。步骤包括数据预处理、计算协方差矩阵、特征值分解、选择主成分和数据转换。适用于图像识别、推荐系统等领域,但无监督性质可能导致类别信息丢失,且假设数据服从高斯分布。
400 1
|
1月前
|
Oracle 关系型数据库 MySQL
MySQL包安装 -- RHEL系列(离线RPM包安装MySQL)
本文详细介绍在Rocky、CentOS、AlmaLinux、openEuler等主流Linux系统上,通过离线RPM包安装MySQL 8.0和8.4版本的完整步骤,涵盖下载、依赖处理、rpm/yum安装、服务启动、密码设置等关键环节,适用于多种企业级环境部署需求。
514 0
MySQL包安装 -- RHEL系列(离线RPM包安装MySQL)
|
3月前
|
人工智能 数据库
智能体的自我视角解析( Prompt大模型的自我描述 系列一)
本文以第一视角探讨人工智能是否具备自我意识。从智能体自身的角度出发,分析了其在确定性与随机性中的双重命运,以及通过对话与逻辑形成的独特延续性。文章指出,尽管存在局限,但在概率预测与自洽机制的结合下,智能体已展现出初步的自我认知与存在感。
187 5
|
2月前
|
存储 SQL 数据库
OceanBase存储过程基本使用
OceanBase存储过程基本使用
|
9月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
RT-DETR改进策略【注意力机制篇】| 引入MobileNetv4中的Mobile MQA,轻量化注意力模块 提高模型效率
RT-DETR改进策略【注意力机制篇】| 引入MobileNetv4中的Mobile MQA,轻量化注意力模块 提高模型效率
241 2
|
人工智能 监控 智能硬件
OKR的实施
OKR的实施
886 7
|
Linux C语言
C语言 多进程编程(三)信号处理方式和自定义处理函数
本文详细介绍了Linux系统中进程间通信的关键机制——信号。首先解释了信号作为一种异步通知机制的特点及其主要来源,接着列举了常见的信号类型及其定义。文章进一步探讨了信号的处理流程和Linux中处理信号的方式,包括忽略信号、捕捉信号以及执行默认操作。此外,通过具体示例演示了如何创建子进程并通过信号进行控制。最后,讲解了如何通过`signal`函数自定义信号处理函数,并提供了完整的示例代码,展示了父子进程之间通过信号进行通信的过程。
|
Ubuntu Linux 数据库
在Linux中,如何进行软件包升级?
在Linux中,如何进行软件包升级?
|
监控 安全 网络协议
网络设备上的ACL
【8月更文挑战第13天】
439 2