Skip to content

天楚锐齿

人工智能 云计算 大数据 物联网 IT 通信 嵌入式

天楚锐齿

  • 下载
  • 物联网
  • 云计算
  • 大数据
  • 人工智能
  • Linux&Android
  • 网络
  • 通信
  • 嵌入式
  • 杂七杂八

使用Kerberos给Linux鉴权

2018-03-13
Kerberos和LDAP:
     Kerberos:需要在linux和kerberos上同时具有该用户才能鉴权,相当于该用户具有两个密码(linux上shadow里面一个,kerberos里面一个),不能保存除密码之外的用户信息,不过鉴权比较安全。
     LDAP:不需要linux上具有用户,它可以管理用户的各种信息(包括用户组等),跟用户相关的操作全部通过ldap(包括chown、passwd等命令,当然客户端必须选择使用LDAP管理用户信息和用户鉴权)。
Kerberos需要你在一个安全的服务器上运行两个后台进程:
> 密钥分发中心(KDC)后台进程:处理所有的密码验证请求,并生成Kerberos证书,叫做凭证授予凭证(TGT);
> Kerberos管理进程:允许你远程添加、删除和修改账号,而不用登陆到运行Kerberos管理进程的计算机上,它也处理来自用户的密码修改请求。
使用Kerberos,只有一个密码修改需要通过网络传输一个强壮的加密密码。认证用户的过程中,Kerberos KDC给用户授予一个临时的证书,TGT,典型地,这些证书有10或24小时的有效期,这个有效期是可以配置的,但是不能超过24小时。
realm(Kerberos区域):它是一个管理域,它有自己的Kerberos数据库,每个Kerberos区域都有它自己的一套Kerberos服务员,你的区域名可以是任何内容,但是它应该映射到你在DNS中的区域,如果新Kerberos区域是为你的整个DNS域example.com准备的,你应该将你的Kerberos区域取一个相同的名字(所有字母大写,这是Kerberos的惯例):EXAMPLE.COM,或者,如果你正在example.com下创建一个新的工程部区域,你应该选项ENG.EXAMPLE.COM作为区域名。

1. 安装:
# yum install krb5-server
配置kerberos集群的总控文件,kerberos服务可以由多台服务器组成,其中有且只有一台作master,由admin_server决定该master在哪里。:
# 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 = HANBORQ.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes

[realms]
HANBORQ.COM = {
kdc = nd0-rack2-cloud:88
admin_server = nd0-rack2-cloud:749
default_domain = hanborq.com
}

[domain_realm]
.hanborq.com = HANBORQ.COM

hanborq.com = HANBORQ.COM

[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
其中[libdefaults]:定义整个kerberos的缺省值,。
其中[realms]:定义Kerberos区域,可以定义多个,它里面的kdc表示kdc进程运行在哪里,admin_server表示管理进程运行在哪里,default_domain表示缺省处理哪个DNS域名。
其中[domain_realm]:定义主机或DNS域名到kerberos域的映射关系,就是那些DNS域名或主机由哪个kerberos域处理,因为前面的default_domain只能定义一个域名,这里可以让该域处理更多的主机或DNS域名。

配置具体该集群每台机器的kdc文件:
# vi /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
v4_mode = nopreauth
kdc_tcp_ports = 88

[realms]
HANBORQ.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 = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal des-cbc-crc:v4 des-cbc-crc:afs3
}

建立kerberos鉴权数据库:
# kdb5_util create -r HANBORQ.COM -s
会要求输入数据库密码,必须记住该密码。

查看那些principal已经建立:
# kadmin.local -q “listprincs”
Authenticating as principal root/admin@HANBORQ.COM with password.
K/M@HANBORQ.COM
kadmin/admin@HANBORQ.COM
kadmin/changepw@HANBORQ.COM
kadmin/history@HANBORQ.COM
kadmin/nd0-rack2-cloud@HANBORQ.COM
krbtgt/HANBORQ.COM@HANBORQ.COM
建立keytab,注意keytab跟上面kdc.conf文件中一致:
# kadmin.local -q “ktadd -k /var/kerberos/krb5kdc/kadm5.keytab kadmin/admin”
# kadmin.local -q “ktadd -k /var/kerberos/krb5kdc/kadm5.keytab kadmin/changepw”
增加用户,需记住密码:
# kadmin.local -q “addprinc krbadm@HANBORQ.COM”
# kadmin.local -q “addprinc ldapadm@HANBORQ.COM”
# kadmin.local -q “delprinc XXX@HANBORQ.COM”
修改ACL规则,文件位置就是kdc.conf里面定义的:
# vi /var/kerberos/krb5kdc/kadm5.acl
krbadm@HANBORQ.COM      *
*/admin@HANBORQ.COM     *
*/*@HANBORQ.COM         i
*@HANBORQ.COM           i

启动:
# service krb5kdc start
# service krb524 start
# /usr/kerberos/sbin/kadmind
测试一下:
# kadmin -p krbadm -q “listprincs”
# kadmin -p krbadm
# kadmin -p ldapadm -q “listprincs”
最后一个会提示没有list权限,因为ACL规则里面没有添加该用户。
测试客户端能否得到ticket:
# kinit krbadm@HANBORQ.COM
# klist
klist命令能看到已经得到了ticket。

Linux SSH通过Kerberos登录,必须在kerberos和linux同时存在该用户才能使用kerberos鉴权登录,因为kerberos只能保存用户名、密码,不能保存其它用户信息,需要保存的话,应该使用LDAP:
打开Kerberos鉴权:

# sed -i “/USEKERBEROS=/d” /etc/sysconfig/authconfig && echo “USEKERBEROS=yes” >> /etc/sysconfig/authconfig
拷贝kerberos服务器上的krb5.conf文件到客户端:
# scp KERBEROS_SERVER:/etc/krb5.conf /etc/krb5.conf
修改pam设置,/etc/pam.d/system-auth文件增加内容,注意放置的位置:
# vi /etc/pam.d/system-auth
…
auth        required      pam_env.so
auth       sufficient   pam_krb5.so use_first_pass ignore_root forwardable
auth       required     pam_unix.so nullok_secure try_first_pass
…

session    sufficient   pam_unix.so

session    sufficient   pam_krb5.so ignore_root
…
这里的use_first_pass和try_first_pass只能请求一次口令,ignore_root表示kerberos不能用于root登录(好象无效),sufficient表示该条成功则返回,后面不执行。

修改sshd配置:
# vi /etc/ssh/sshd_config
KerberosAuthentication yes
KerberosOrLocalPasswd yes
KerberosTicketCleanup yes
UsePAM yes
AllowTcpForwarding yes
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
GssapiKeyExchange yes

修改ssh配置:
# vi /etc/ssh/ssh_config
Host *
GSSAPIAuthentication yes
GSSAPIDelegateCredentials yes

重启sshd服务:
# service sshd restart

增加主机keytab:
# kadmin -p krbadm -q “addprinc -randkey host/vmw1@HANBORQ.COM”
# kadmin -p krbadm -q “ktadd host/vmw1@HANBORQ.COM”
这里的host固定为”host”四个字符,vmw1为客户端hostnname或DNS域名,-randkey使用随机key登录,不用输入密码。

在客户端增加用户:
# useradd testUser
Kerberos里面添加用户,有要求输入krbadm的密码和新用户需要的密码:
# kadmin -p krbadm -q “addprinc testUser@HANBORQ.COM”

登录:
# ssh testUser@10.24.1.40
可以使用kerberos里面的密码登录,当然也可以使用linux里面的密码登录。

2,404次阅读

Post navigation

前一篇:

dhcping和arping的使用

后一篇:

使用LDAP给Linux鉴权和进行用户管理

发表回复 取消回复

要发表评论,您必须先登录。

个人介绍

需要么,有事情这里找联系方式:关于天楚锐齿

=== 美女同欣赏,好酒共品尝 ===

微信扫描二维码赞赏该文章:

扫描二维码分享该文章:

分类

  • Linux&Android (81)
  • Uncategorized (1)
  • 下载 (28)
  • 云计算 (38)
  • 人工智能 (9)
  • 大数据 (35)
  • 嵌入式 (34)
  • 杂七杂八 (35)
  • 物联网 (65)
  • 网络 (25)
  • 通信 (22)

归档

近期文章

  • 飞书机器人发送卡片interactive消息
  • Springboot JPA实现对数据库表统一的增删改查
  • WEB的内容安全策略CSP(Content-Security-Policy)
  • CSS利用@media和viewport实现响应式布局自动适配手机电脑等
  • VUE前端增加国际化支持

近期评论

  • linux爱好者 发表在《Linux策略路由及iptables mangle、ip rule、ip route关系及一种Network is unreachable错误》
  • maxshu 发表在《使用Android的HIDL+AIDL方式编写从HAL层到APP层的程序》
  • Ambition 发表在《使用Android的HIDL+AIDL方式编写从HAL层到APP层的程序》
  • Ambition 发表在《使用Android的HIDL+AIDL方式编写从HAL层到APP层的程序》
  • maxshu 发表在《Android9下用ethernet 的Tether模式来做路由器功能》

阅读量

  • 使用Android的HIDL+AIDL方式编写从HAL层到APP层的程序 - 23,810次阅读
  • 卸载深信服Ingress、SecurityDesktop客户端 - 18,519次阅读
  • 车机技术之车规级Linux-Automotive Grade Linux(AGL) - 10,570次阅读
  • linux下的unbound DNS服务器设置详解 - 9,323次阅读
  • 在Android9下用ndk编译vSomeIP和CommonAPI以及使用例子 - 9,136次阅读
  • linux的tee命令导致ssh客户端下的shell卡住不动 - 8,639次阅读
  • Linux策略路由及iptables mangle、ip rule、ip route关系及一种Network is unreachable错误 - 8,126次阅读
  • 车机技术之360°全景影像(环视)系统 - 8,088次阅读
  • 车机技术之Android Automotive - 7,940次阅读
  • Windows下安装QEMU并在qemu上安装ubuntu和debian - 7,840次阅读

其他操作

  • 注册
  • 登录
  • 条目 feed
  • 评论 feed
  • WordPress.org

联系方式

地址
深圳市科技园

时间
周一至周五:  9:00~12:00,14:00~18:00
周六和周日:10:00~12:00

标签

android AT命令 CAN centos docker Hadoop hdfs ip java kickstart linux mapreduce mini6410 modem nova OAuth openstack os python socket ssh uboot 内核 协议 安装 嵌入式 性能 报表 授权 操作系统 数据 数据库 月报 模型 汽车 深信服 源代码 统计 编译 脚本 虚拟机 调制解调器 车机 金融 鉴权
© 2025 天楚锐齿