一、Kerberos工作流程理解

  kerberos是一种安全的认证系统,通过kerberos,客户端与服务器端之间加入kerberos后,基于对称的加密算法,不再需要将自己的密码通过加密的方式传递到互联网上,而是基于target,用户拿到对应的target后,就可以取得相应服务或者应用的权限

【RHCE学习笔记】基于安全的NFS认证(kerberos)_NFS kerberos

KDC(Key Distribution Center)钥匙分发中心,用于专门存放key,它与client,Server通过加密,KDC拥有client和Server的Key,而client和Server拥有各自的KEY

【RHCE学习笔记】基于安全的NFS认证(kerberos)_NFS kerberos_02

  1. 首先client客户端需求请求Service端的服务,向KDC中心请求授权,这时,KDC为client和server创建了一个session-key,通过Client的密钥加session-key加密一份发给client,同时,用server的密钥加密session-key+客户端请求的用户名+地址+周期等打包发给client,而这个包是需要委托client发给server的

  2. client收到KDC中心分发过来的两个包,一个包通过自己的密钥直接解密得到session-key,客户端用得到的这个session-key对自己请求的用户+地址+周期等信息加密后发给server,同时将由KDC交付过来转交给server的包转给server,而由于client没有server的密钥,所以他无法对转交给server的包进行篡改。

  3. Server收到client发过来的两个包,首先用自己的密钥将client转交过来的包解密,得到session-key和一些用户名+日期+周期等,利用得到的这个session-key,将client端发过来的包进行解密,也得到一份用户名+日期+周期等,将两个进行比对,如果得到的数据是一致的,说明期间没有人对包数据进行过篡改,认证过程结束。否则则包数据存在问题,不能信任。


二、安全的NFS配置过程

一)、服务器端配置

1.首先安装所需要的组件和包

 yum install nfs-utils sssd krb5-workstation

2.加入开机自启动,服务器端有nfs-server,nfs-secure,sssd三个服务加入自启

  systemctl enable nfs-server.service
  systemctl enable nfs-secure-server.esrvice
  systemctl enable sssd.service

3.开放防火墙,需要加入nfs,mountd,rpc-bind三个服务

  firewall-cmd--permanent --add-service=nfs
  firewall-cmd --permanent --add-service=mountd
  firewall-cmd --permanent--add-service=rpc-bind
  firewall-cmd --reload

4.使用图形化工具authconfig-tui将服务端server9加入到ldap和Kerberos

   选择Use LDAP   认证方式选 Use Kerberos

   启用 [*]Use TLS

  Server:  classroom.example.com

  BaseDN:  dc=example,dc=com

   Realm:    EXAMPLE.COM

   KDC:       classroom.example.com

   Admin Server: classroom.example.com

选择OK后,这里会提示用到证书文件,先不要按回车,等将证书文件下载到本地对应目录后再按OK

#wget -O /etc/openldap/cacerts/example-ca.crt http://classroom.example.com/pub/example-ca.crt

同步将kerberos的认证文件下载到本地:

#wget -O /etc/krb5.keytab http://classroom.example.com/pub/keytabs/server9.keytab

5.启动nfs-server,nfs-sercure-server,sssd服务

  systemctl start nfs-server
  systemctl start nfs-secure-server
  systemctl start sssd

这里可以提前提服务,然后用authconfig-tui后再重启服务

6.验证ldap和kerberos是否加入成功

getent passwd ldapuser1 验证,如果能看到ldapuser1用户的信息,则说明加入ldap成功

切换到ldapuser1用户:su - ldapuser1

kinit  输入ldapuser1的密码(kerberos)

klist  如果能够正常显示(krbtgt/EXAMPLE.COM@EXAMPLE.COM)则表示kerberos状态正常

7.创建共享目录,修改权限777  

mkdir /secure   chmod 777 /secure

vim/etc/exports

/secure *(rw,sync,sec=krb5p)

这里的*可以用网段代替,表示只针对某一个网段放行。

重新加载配置文件:exportfs -r

二)、客户端配置

1.安装对应的包

 yum install nfs-utils sssd krb5-workstation

2.开启开机自启动

systemctl enable nfs-secure

 

3.使用图形化工具authconfig-tui将desktop9也加入到ldap和kerberos

  这里的配置与服务器端一样,只是下的keytab文件的路径不一样

http://classroom.example.com/pub/keytabs/desktop9.keytab

4.重启服务

systemctlrestart nfs  
systemctl restart nfs-secure
systemctl restart sssd


测试的时候与前面服务器端一样

5.查看NFS共享内容

#showmount -e server9
#mount -t nfs server9:/sercre /mnt/nfs

以上为挂载命令,如果要写入fstab则按常规格式书写

server9:/secure    /mnt/nfs    nfs    defaults    0  0

su - ldapuser1     kinit 输入密码:kerberos

klist可以看到证书文件

cd /mnt/nfs

touch ldapuser1

ll查看文件属性是否为ldapusr1:ldapuser1

验证通过,说明基于安全的NFS实验完成