Kerberos 命令使用

这里列出Kerberos中常用的命令,毕竟在刚学习Kerberos这个安全框架的时候还是遇到了挺多的问题,所以怎么能不记录记录咧,以后也好给我的孩子长长知识,咳咳....,不好意思又吹上天了。

指南

登录 kinit admin/admin@EXAMPLE.COM

[root@dounine ~]# kinit admin/admin@EXAMPLE.COM
Password for admin/admin@EXAMPLE.COM: 123456

查询登录状态 klist

[root@dounine ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: admin/admin@EXAMPLE.COM

Valid starting       Expires              Service principal
2018-07-12T00:54:55  2018-07-13T00:54:55  krbtgt/EXAMPLE.COM@EXAMPLE.COM

退出 kdestroy

[root@dounine ~]# kdestroy
[root@dounine ~]# klist
klist: No credentials cache found (filename: /tmp/krb5cc_0)

指使指南(维护)

登录管理KDC服务器
登录后台 kadmin.local

[root@dounine ~]# kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local:  

查看用户列表 listprincs

[root@dounine ~]# kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local:  listprincs
K/M@EXAMPLE.COM
activity_analyzer/host1.demo.com@EXAMPLE.COM
activity_explorer/host1.demo.com@EXAMPLE.COM
admin/admin@EXAMPLE.COM
...

修改帐号密码(可修改忘记密码)

[root@dounine ~]# kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local:  change_password admin/admin@EXAMPLE.COM
Enter password for principal "admin/admin@EXAMPLE.COM": 123456
Re-enter password for principal "admin/admin@EXAMPLE.COM": 123456
Password for "admin/admin@EXAMPLE.COM" changed.

创建用户

[root@dounine ~]# kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local:  add_principal test1
WARNING: no policy specified for test1@EXAMPLE.COM; defaulting to no policy
Enter password for principal "test1@EXAMPLE.COM": 123456
Re-enter password for principal "test1@EXAMPLE.COM": 123456
Principal "test1@EXAMPLE.COM" created.

删除用户

[root@dounine ~]# kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local:  delete_principal test1
Are you sure you want to delete the principal "test1@EXAMPLE.COM"? (yes/no): yes
Principal "test1@EXAMPLE.COM" deleted.
Make sure that you have removed this principal from all ACLs before reusing.

只导出用户keytab文件(并且不要修改密码)

[root@dounine ~]# kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local:  xst -k admin.keytab -norandkey admin/admin@EXAMPLE.COM
Entry for principal admin/admin@EXAMPLE.COM with kvno 6, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:admin.keytab.
Entry for principal admin/admin@EXAMPLE.COM with kvno 6, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:admin.keytab.
Entry for principal admin/admin@EXAMPLE.COM with kvno 6, encryption type des3-cbc-sha1 added to keytab WRFILE:admin.keytab.
Entry for principal admin/admin@EXAMPLE.COM with kvno 6, encryption type arcfour-hmac added to keytab WRFILE:admin.keytab.
Entry for principal admin/admin@EXAMPLE.COM with kvno 6, encryption type camellia256-cts-cmac added to keytab WRFILE:admin.keytab.
Entry for principal admin/admin@EXAMPLE.COM with kvno 6, encryption type camellia128-cts-cmac added to keytab WRFILE:admin.keytab.
Entry for principal admin/admin@EXAMPLE.COM with kvno 6, encryption type des-hmac-sha1 added to keytab WRFILE:admin.keytab.
Entry for principal admin/admin@EXAMPLE.COM with kvno 6, encryption type des-cbc-md5 added to keytab WRFILE:admin.keytab.
kadmin.local:  exit

PS:有些教程说是ktadd,其实它们是一样的效果,在命令使用帮助中我们可以查询到哪些命令是一样的。

[root@dounine ~]# kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local:  ? #是查看帮助命令
Available kadmin.local requests:

add_principal, addprinc, ank
                         Add principal
delete_principal, delprinc
                         Delete principal
modify_principal, modprinc
                         Modify principal
rename_principal, renprinc
                         Rename principal
change_password, cpw     Change password
get_principal, getprinc  Get principal
list_principals, listprincs, get_principals, getprincs
                         List principals
add_policy, addpol       Add policy
modify_policy, modpol    Modify policy
delete_policy, delpol    Delete policy
get_policy, getpol       Get policy
list_policies, listpols, get_policies, getpols
                         List policies
get_privs, getprivs      Get privileges
ktadd, xst               Add entry(s) to a keytab
ktremove, ktrem          Remove entry(s) from a keytab
lock                     Lock database exclusively (use with extreme caution!)
unlock                   Release exclusive database lock
purgekeys                Purge previously retained old keys from a principal
get_strings, getstrs     Show string attributes on a principal
set_string, setstr       Set a string attribute on a principal
del_string, delstr       Delete a string attribute on a principal
list_requests, lr, ?     List available requests.
quit, exit, q            Exit program. 

用逗号分隔的命令就是相等的,例如

add_principal, addprinc, ank
delete_principal, delprinc
ktadd, xst
...等等

使用Keytab验证是否可以登录(无错误输出即可)

kinit -kt /etc/security/keytabs/admin.keytab admin/admin@EXAMPLE.COM

查看keytab文件中的帐号列表

[root@dounine ~]# klist -ket hbase.headless.keytab

Keytab name: FILE:hbase.headless.keytab
KVNO Timestamp           Principal
---- ------------------- ------------------------------------------------------
   7 2018-07-30T10:19:16 hbase-flink@demo.com (des-cbc-md5) 
   7 2018-07-30T10:19:16 hbase-flink@demo.com (aes128-cts-hmac-sha1-96) 
   7 2018-07-30T10:19:16 hbase-flink@demo.com (aes256-cts-hmac-sha1-96) 
   7 2018-07-30T10:19:16 hbase-flink@demo.com (des3-cbc-sha1) 
   7 2018-07-30T10:19:16 hbase-flink@demo.com (arcfour-hmac)

kerberos的日常操作: 

① kdc 登录:

kadim.local       仅限 kdc 主机直接登录,无须密码 ,登录进去就显示 kadmin.local:
kadmin -p  root/admin@HADOOP.COM    client 主机登录需要输入密码,登录进去就显示 kadmin:

② principal 维护  (可以登录kdc , 也可以不登录kdc 中维护)

kadmin.local  -q  "list_principals"        //  查看所有的 principal ( 服务名/_HOST@REALM.TLD )
 kadmin.local -q "addprinc  bd00/bd00@HADOOP.COM"     // 添加principal , 需要手工指定密码
 kadmin.local -q "addprinc  -randkey  bd00/bd00@HADOOP.COM"   // 随机生成密码
// 如果是系统组件需要的principal  , 可以加参数  -randkey  生成随机密码
kadmin.local  -q "delprinc  bd00/bd00@HADOOP.COM"          // 删除principal

③ principal  添加完后,就可以导出keytab  生成及查看

kadmin.local:  ktadd -k /var/kerberos/krb5kdc/kadm5.keytab  kadmin/admin  kadmin/changepw
kadmin.local: xst -k /etc/security/keytabs/hdfs.headless.keytab tocdc-tcluster@HADOOP.COM
// ktadd , xst  两种方式都行
kadmin.local -q "xst -k /etc/security/keytabs/hdfs.headless.keytab tocdc-tcluster@HADOOP.COM"
kadmin.local -q "ktadd -k /var/kerberos/krb5kdc/kadm5.keytab  kadmin/admin@HADOOP.COM"
// 注意,如上在导出keytab 的时候会改密码(之前添加principal 的密码),kinit 验证密码会不对
// 如果导出keytab 不想改密码 ,添加参数  -norandkey, 如下: (kadmin.local 方式下)
kadmin.local: ktadd -k /home/tocdc/boco.keytab -norandkey  boco/boco@HADOOP.COM   
klist  -kt  /etc/security/keytabs/spark2.headless.keytab         //查看keytab 的内容

④ 查看当前用户认证信息 :  klist  -e

⑤ 删除当前用户认证信息:  kdestroy

⑥  用户认证:

kinit  principal        // 需要密码
kinit -kt  /etc/security/keytabs/xxxx.keytab     principal      //不需要密码,keytab 已经包含

 

### Kerberos 常用命令总结 以下是常见的 Kerberos 命令及其用途: #### 配置与管理 1. **kinit**: 用于获取 TGT (Ticket Granting Ticket),并存储到缓存中。 ```bash kinit username ``` 此命令会提示输入密码,并尝试通过 KDC 获取票据[^1]。 2. **klist**: 显示当前用户的票证缓存信息。 ```bash klist ``` 可查看已获得的 TGT 和其他服务票据的信息[^2]。 3. **kdestroy**: 删除当前用户的票证缓存。 ```bash kdestroy ``` 清除所有存储在缓存中的票据,通常在退出登录时使用[^3]。 4. **kpasswd**: 修改用户的 Kerberos 密码。 ```bash kpasswd ``` 5. **ktutil**: 管理密钥表 (keytab 文件) 的工具。 ```bash ktutil addent -password -p principal_name -k key_number -e encryption_type wkt filename.keytab quit ``` 这些命令可用于向 keytab 中添加条目[^4]。 --- #### 数据库维护 6. **kdb5_util**: 用于管理和操作 Kerberos 数据库。 ```bash /usr/sbin/kdb5_util create -s ``` 创建一个新的 Kerberos 数据库实例。`-s` 参数表示启用 stash 文件功能,以便无需每次启动都提供 master password。 7. 备份数据库: ```bash /usr/sbin/kdb5_util dump /path/to/backup.dump ``` 8. 恢复数据库: ```bash /usr/sbin/kdb5_util load /path/to/backup.dump ``` 9. 列出数据库中的主体 (principals): ```bash kadmin.local -q "get_principals" ``` --- #### 安全审计 10. **kadmind**: 提供远程管理 Kerberos 数据库的功能。 ```bash kadmind ``` 启动后可以通过 `add_principal`, `delete_principal` 等指令来增删改查主体。 11. 查看日志文件以排查问题: 日志路径通常是 `/var/log/krb5kdc.log` 或者由配置文件定义的位置。 --- #### Windows 平台支持 12. 自动续期脚本: 使用 PowerShell 脚本来定期检查和更新 Kerberos 票据。 ```powershell powershell -File "C:\ProgramData\MIT\Kerberos5\checkKerberos.ps1" ``` 将此命令设置为计划任务运行,可确保长期连接的有效性。 --- ### 注意事项 上述命令适用于不同场景下的 Kerberos 部署环境,请根据实际需求调整参数或权限设置。对于生产环境中涉及敏感数据的操作,建议提前测试验证其安全性与稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值