CentOS7使用Kerberos认证NFSv4共享

9 篇文章 0 订阅

引言

大多数常规网络服务使用基于密码的认证方案,其中用户提供密码以访问给定的网络服务器。 但是,许多服务的认证信息的传输是未加密的。 为了确保这种方案的安全,外部人员必须无法访问网络,并且网络上的所有计算机和用户都必须是受信任的和可信任的。

使用简单的基于密码的认证,不能假定连接到Internet的网络是安全的。 任何能够访问网络的攻击者都可以使用简单的数据包分析器或数据包嗅探器来拦截用户名和密码,从而破坏用户帐户,从而损害整个安全基础结构的完整性。

Kerberos是一种比普通的基于密码的认证更加安全的认证协议。Kerberos使用对称密钥加密技术对用户进行网络服务认证,这意味着永远不会实际通过网络发送密码。

Kerberos提供了一种机制,允许用户和机器向网络标识自己,并接收对管理员配置的区域和服务的定义的、受限的访问权限。Kerberos通过认证实体的身份对其进行认证证,并且Kerberos还保护此认证数据,使其不会被外人访问、使用或篡改。

前期准备

环境共有三台计算机构成,其名称和IP 配置如下

角色主机名IP地址
Kerberos 服务器kdc.exmaple.com100.10.11.10
NFS 服务器ns.exmaple.com100.10.11.20
NFS 客户端nc.exmaple.com100.10.11.50

配置时间同步服务器

为了保证kerberos 认证能够进行,需要在三台计算机统一时间, 现将kdc设置 为ntp server, 另外两台同步kdc的时间。

kdc的配置
  1. 安装chrony服务

    # yum -y install chrony
    
  2. 修改配置文件

    注释 /etc/chrony.conf中server开头的行,并添加

    allow 100.10.11.0/24
    local stratum 10 
    stratumweight 0
    
  3. 启动chrony服务

    # systemctl enable  chronyd && systemctl restart chronyd &&systemctl status chronyd
    
nfs服务器和客户端的配置
  1. 安装chrony服务

    # yum -y install chrony
    
  2. 修改配置文件

    注释 /etc/chrony.conf中server开头的行, 设置kdc为ntp服务器

    #server 0.rhel.pool.ntp.org iburst
    #server 1.rhel.pool.ntp.org iburst
    #server 2.rhel.pool.ntp.org iburst
    #server 3.rhel.pool.ntp.org iburst
    server 100.10.11.10 iburst
    local stratum 10
    stratumweight 0
    
  3. 启动chrony服务

    # systemctl enable  chronyd && systemctl restart chronyd &&systemctl status chronyd
    
  4. 查看同步状态。

    # chronyc sources -v
    

编辑/etc/hosts文件

在KDC节点的/etc/hosts文件添加三台计算机的信息,并复制到其它2个计算机。

100.10.11.10 kdc.example.com kdc
100.10.11.20 ns.example.com ns
100.10.11.50 nc.example.com nc

Kerberos 服务器设置

首先安装主KDC,然后在安装主KDC之后安装所有必要的从KDC。

KDC系统应为专用计算机。 这台机器必须非常安全-如果可能的话,除了KDC之外,它不应运行任何服务。

  1. 安装KDC所需的软件包:

    # yum -y install krb5-server krb5-libs krb5-workstation pam_krb5
    
  2. 编辑 /etc/krb5.conf/var/kerberos/krb5kdc/kdc.conf配置文件,以反映领域名称和域到领域(domain-to-realm)的映射。

    例如 /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
    dns_lookup_realm = false
    dns_lookup_kdc = false
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = true
    allow_weak_crypto = true
    [realms]
    EXAMPLE.COM = {
    kdc = kdc.example.com
    admin_server = kdc.example.com
    default_domain = example.com
    }
    [domain_realm]
    .example.com = EXAMPLE.COM
    example.com = EXAMPLE.COM
    

    可以通过使用正确的域名替换EXAMPLE.COM和example.com的实例(确定将大写和小写的名称保持正确的格式)并将KDC从kerberos.example.com更改为Kerberos服务器名称来构造一个简单的领域。 按照惯例,所有领域名称均为大写,所有DNS主机名和域名均为小写。 这些配置文件的手册页包含有关文件格式的完整详细信息。

    由于我们使用default realm为EXAMPLE.COM, 所以无需修改 /var/kerberos/krb5kdc/kdc.conf,若用另外的realm,需替换此文件中的EXAMPLE.COM

  3. 使用kdb5_util实用程序创建数据库。

    # kdb5_util create -s
    

    create命令创建存储Kerberos领域密钥的数据库。 -s参数创建一个存储主服务器密钥的存储文件。 如果不存在用于从中读取密钥的存储文件,则Kerberos服务器(krb5kdc)每次启动时都会提示用户输入主服务器密码(可用于重新生成密钥)。

  4. 编辑 /var/kerberos/krb5kdc/kadm5.acl文件。 kadmind使用此文件来确定哪些主体具有对Kerberos数据库的管理访问权限以及它们的访问级别。 例如:

    */admin@EXAMPLE.COM *
    

    大多数用户在数据库中由单个主体表示(具有NULL或空实例,如joe@example.com)。在此配置中,具有admin实例的第二个主体(例如,joe/admin@example.com)的用户能够对领域的Kerberos数据库实施完全管理控制。

    在服务器上启动kadmind之后,任何用户都可以通过在领域中的任何客户端或服务器上运行kadmin来访问其服务。 但是,只有kadm5.acl文件中列出的用户才能以任何方式修改数据库,但更改自己的密码除外。

    kadmin实用程序通过网络与kadmind服务器通信,并使用Kerberos处理认证。因此,在通过网络连接到服务器进行管理之前,第一个主体必须已经存在。使用kadmin.local命令创建第一个主体,该命令专门设计为与KDC在同一主机上使用,并且不使用Kerberos进行身份验证

  5. 在KDC终端上使用kadmin.local创建主体(即nfs server和nfs client的host主体和nfs服务主体):

    # kadmin.local -q "addprinc root/admin"
    
    # kadmin.local -q "addprinc -randkey host/ns.example.com"
    # kadmin.local -q "addprinc -randkey host/nc.example.com"
    # kadmin.local -q "addprinc -randkey nfs/ns.example.com"
    # kadmin.local -q "addprinc -randkey nfs/nc.example.com"
    
  6. 使用以下命令启动Kerberos:

    # systemctl enable krb5kdc.service&&systemctl restart krb5kdc.service&&systemctl status krb5kdc.service
    # systemctl enable kadmin.service&&systemctl restart kadmin.service&&systemctl status kadmin.service
    
  7. 使用kadmin中的addprinc命令为用户添加主体。 kadminkadmin.local是KDC的命令行界面。 因此,启动kadmin程序后,可以使用许多命令(例如addprinc)。 有关更多信息,请参见kadmin手册页。

  8. 验证KDC是否正在签发票证。首先,运行kinit以获取票证并将其存储在凭证缓存文件中。
    接下来,使用klist查看缓存中的凭证列表,并使用kdestroy销毁缓存及其包含的凭证。

    默认情况下,kinit尝试使用相同的系统登录用户名(而不是Kerberos服务器)进行认证。 如果该用户名与Kerberos数据库中的主体不对应,则kinit会发出错误消息。 如果发生这种情况,请在命令行中为kinit提供正确的主体名称作为参数:

    kinit principal

    为root/admin创建并缓存Kerberos票证授予票证:

    # kinit root/admin
    # klist -f
    Ticket cache: KEYRING:persistent:0:0
    Default principal: root/admin@EXAMPLE.COM
    
    Valid starting       Expires              Service principal
    10/05/2020 13:58:10  10/06/2020 13:58:10  krbtgt/EXAMPLE.COM@EXAMPLE.COM
    # kadmin.local  listprincs
    K/M@EXAMPLE.COM
    host/nc.example.com@EXAMPLE.COM
    host/ns.example.com@EXAMPLE.COM
    kadmin/admin@EXAMPLE.COM
    kadmin/changepw@EXAMPLE.COM
    kadmin/kdc.exmaple.com@EXAMPLE.COM
    kiprop/kdc.exmaple.com@EXAMPLE.COM
    krbtgt/EXAMPLE.COM@EXAMPLE.COM
    nfs/nc.example.com@EXAMPLE.COM
    nfs/ns.example.com@EXAMPLE.COM
    root/admin@EXAMPLE.COM
    
  9. 为nfs服务器和客户端生成各自的秘钥表文件,并保存在/tmp文件夹下, quit退出 kadmin

    # kadmin.local -q "ktadd -norandkey -k /tmp/server.keytab nfs/ns.example.com"
    # kadmin.local -q "ktadd -norandkey -k /tmp/client.keytab nfs/nc.example.com"
    
  10. 查看keytab密钥表文件。

       # klist -kt /tmp/server.keytab
       # klist -kt /tmp/client.keytab
    

NFS 服务器设置

NFS服务器同时充当Kerberos客户端。设置Kerberos 5客户端所需要做的就是安装客户端软件包并为每个客户端提供有效的krb5.conf配置文件。

  1. 在所有Kerberos 5客户端计算机上安装krb5-libs和krb5-workstation软件包。

    yum -y install krb5-workstation krb5-libs pam_krb5
    
  2. 安装nfs服务器软件包

    yum -y install  nfs-utils
    
  3. 从kdc服务器拷贝配置文件和keytab秘钥表文件并保存在/etc目录下

# scp kdc:/etc/krb5.conf /etc/krb5.conf   
# scp kdc:/tmp/server.keytab /etc/krb5.keytab 
  1. 创建导出目录,修改目录的权限为777。

    # mkdir /opt/share01/
    # chmod 777 /opt/share01
    
  2. 编辑/etc/exports 文件。

    /opt/share01  *.example.com(rw,sec=krb5p)
    
  3. 修改 /etc/sysconfig/nfs文件。

    RPCNFSDARGS="-V 4" 
    
  4. 启动nfs服务。

    # systemctl enable nfs&&systemctl restart nfs&&systemctl status nfs
    # systemctl enable nfs-secure&&systemctl restart nfs-secure&&systemctl status nfs-secure
    

NFS客户端设置

NFS客户端同时充当Kerberos客户端。设置Kerberos 5客户端所需要做的就是安装客户端软件包并为每个客户端提供有效的krb5.conf配置文件。

  1. 在所有Kerberos 5客户端计算机上安装krb5-libs和krb5-workstation软件包。

    # yum -y install krb5-workstation krb5-libs pam_krb5
    
  2. 安装nfs软件包

    # yum -y install  nfs-utils
    
  3. 从kdc服务器拷贝配置文件和keytab秘钥表文件并保存在/etc目录下

    # scp kdc:/etc/krb5.conf /etc/krb5.conf   
    # scp kdc:/tmp/cleint.keytab /etc/krb5.keytab 
    
  4. 启动nfs服务。

    # systemctl enable nfs&&systemctl restart nfs&&systemctl status nfs
    
  5. 创建挂载点,并挂载NFS共享

    # mkdir /mnt/share01
    # showmount -e 100.10.11.20
    # mont -t nfs -o sec=krb5p 100.10.10.20:/opt/share01  /mnt/share01/
    
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
在CentOS 7上配置NFSv4,你可以按照以下步骤进行操作: 1. 安装NFS服务器软件: 在CentOS 7上,你可以使用以下命令安装NFS服务器软件: ``` sudo yum install nfs-utils ``` 2. 创建共享目录: 接下来,你需要创建一个要共享的目录。使用以下命令创建一个名为"share"的目录: ``` sudo mkdir /share ``` 3. 配置NFS服务器: 打开NFS服务器配置文件,可以使用以下命令编辑配置文件: ``` sudo nano /etc/exports ``` 在该配置文件中,你需要添加一个条目来指定要共享的目录和访问权限。例如,要将/share目录共享给所有客户端,可以添加以下行: ``` /share *(rw,sync,no_subtree_check) ``` 这将允许所有客户端以读写模式挂载/share目录。你还可以根据需要调整访问权限和其他选项。 4. 重启NFS服务器: 保存并关闭配置文件后,你需要重启NFS服务器以使更改生效。可以使用以下命令重启NFS服务器: ``` sudo systemctl restart nfs-server ``` 如果未发生错误,NFS服务器将重新加载配置文件并准备好接受客户端的连接。 5. 配置NFS客户端: 在客户端上,你需要安装NFS客户端软件。使用以下命令在CentOS 7上安装NFS客户端软件: ``` sudo yum install nfs-utils ``` 6. 挂载NFS共享: 最后,你可以使用以下命令将NFS共享挂载到客户端上的一个目录中: ``` sudo mount server-ip:/share /mnt ``` 其中,"server-ip"是NFS服务器的IP地址,"/share"是要共享的目录,"/mnt"是要将共享目录挂载到的本地目录。 配置完成后,你就可以在客户端上访问和操作NFS共享的文件和目录了。请注意,这只是一个简单的配置示例,你可以根据实际需求进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值