配置NFS共享 (Linux与Linux之间的共享)
普通NFS服务
NFS(Network File System):网络文件系统
用途:为客户机提供共享使用的文件夹
协议:NFS(TCP/UDP 2049)、RPC(TCP/UDP 111)
NFS软件包:nfs-utils
系统服务:nfs-server
客户端不需要运行特定的系统服务
Exports配置文件解析
配置文件/etc/exports
配置文件修改:文件夹绝对路径 客户机地址(权限) 客户机地址(权限)
权限:ro或rw等控制参数
使用exportfs -r 可以重载更新过的配置
客户机访问NFS共享文件夹
1)列出有哪些共享资源: showmount -e 服务器地址
2)手动挂载NFS共享: mount 服务器地址:文件夹路径 挂载点
3)开机自动挂载配置/etc/fstab: 服务器地址:文件夹路径 挂载点 nfs _netdev 0 0
###############################################################################
案例3:普通NFS共享的实现
在虚拟机 server0 上配置NFS服务,完成以下任务:
1.只读的方式共享目录 /public,只能被 example.com 域中的系统访问
2.可读写共享目录/protected,能被 example.com 域中的系统访问
然后在虚拟机 desktop0 上访问NFS共享目录
1.将 server0 的 /public 挂到本地 /mnt/nfsmount
2.这些文件系统在系统启动时自动挂载
步骤一:在server0上发布NFS共享目录
1)检测是否安装软件包nfs-utils# rpm -q nfs-utils
2)准备需要共享的文件夹 # mkdir /public # mkdir /protected
3)建立NFS共享配置 # vim /etc/exports
/public 172.25.0.0/24(ro)
/protected 172.25.0.0/24(rw)
4)启动系统服务nfs-server,并设置开机自启 # systemctl restart nfs-server
# systemctl enable nfs-server
步骤二:在desktop0上挂载NFS共享目录/public
1)创建挂载点 # mkdir /mnt/nfsmount
2)列出server0上提供的NFS共享资源# showmount -e server0.example.com
3)配置开机挂载server0的NFS共享目录/public
# vim /etc/fstab
server0.example.com:/public /mnt/nfsmount nfs defaults,_netdev 0 0
4)测试挂载配置 # mount -a # df -hT /mnt/nfsmount/
###############################################################################
安全NFS服务
安全NFS的前提条件:服务器、客户机都需要加入LDAP+Kerberos认证
安全NFS服务的特点:
Ø 作为普通NFS的增强版
结合LDAP+kerberos技术,实现认证和加密支持
同一个kerbreos领域内,认证用户可实现“一次认证(获取通行证),多次免密登陆”的通行证机制
LDAP:管理所有用户信息
Kerbreos(地狱三头犬):提供密码认证
Ø 服务端:发布安全NFS:添加 sec=krb5p
1)调整共享目录配置,启用安全NFS支持
2)部署kerberos密钥文件
3)服务端需要运行系统服务 nfs-server.service、nfs-secure-server.service
Ø 访问安全NFS:
1)部署kerberos密钥文件到/etc
2)客户端需要运行系统服务 nfs-secure.service
3)挂载设置添加:sec=krb5p,_netdev
服务器地址:文件夹路径 挂载点 nfs sec=krb5p,_netdev 0 0
4)#mount -a #df -hT
不要忘记部署Kerberos密钥:下载各自的密钥文件,部署到 /etc/krb5.keytab
通过LDAP服务器提供用户名、通过Kerberos服务器提供密码
###############################################################################
案例4:安全NFS共享的实现
在虚拟机 server0 上配置安全NFS服务,完成以下任务:
1.访问 /protected 需 kerberos 加密,密钥地址:http://classroom/pub/keytabs/server0.keytab
2.目录 /protected 下包含名为 project 的子目录
然后在虚拟机 desktop0 上访问NFS共享目录
1.挂载 /mnt/nfssecure 需 kerberos加密,密钥地址:http://classroom/pub/keytabs/desktop0.keytab
2.用户 ldapuser0 能够在 /mnt/nfssecure/project 目录下创建文件,其密码为 kerberos
步骤一:将server0、desktop0加入kerberos认证领域
还原所有虚拟机,并将防火墙的默认区域设置为trusted
1、教学环境虚拟机按以下操作处理(将虚拟机server0与desktop0,加入LDAP、kerberos)。
1)初始化server0 # lab nfskrb5 setup //自定义脚本程序,用于本次实验用
lab nfskrb5 setup 操作的作用:
安装LDAP、kerberos的客户端相关的软件包
将用户认证配置为支持LDAP+kerberos(authconfig-gtk)
启动LDAP、kerberos的客户端相关服务
2)初始化desktop0 # lab nfskrb5 setup
3)# id ldapuser0 //验证是否识别网络用户
4)验证初始化结果
可以使用网络账号ldapuser0登入到server0或desktop0,其密码是kerberos:
# ssh [email protected]
Are you sure you want to continue connecting (yes/no)? yes //接受密钥
[email protected]'s password: //输入密码kerberos
$ //成功登入
$ exit //返回原环境
步骤二:为server0下载及部署密钥
# wget http://classroom/pub/keytabs/server0.keytab -O /etc/krb5.keytab
# file /etc/krb5.keytab //检查部署结果
步骤三:在server0上调整/protected共享配置
1)创建指定的子目录# mkdir -p /protected/project
# chown ldapuser0 /protected/project //赋予可写权限,亦可用acl
2)调整共享目录的安全控制类型
# vim /etc/exports
/public 172.25.0.0/24(ro)
/protected 172.25.0.0/24(rw,sec=krb5p) //指定安全类型
3)重启系统服务nfs-server、nfs-secure-server(安全的nfs服务),设置开机自启
# systemctl restart nfs-server nfs-secure-server //两个服务最好同时重启
# systemctl enable nfs-server nfs-secure-server
# exportfs -r
步骤四:客户端:在desktop0上挂载安全NFS共享/protected
1)创建挂载点 # mkdir /mnt/nfssecure
2)为desktop0下载及部署密钥
# wget http://classroom/pub/keytabs/desktop0.keytab -O /etc/krb5.keytab
# file /etc/krb5.keytab //检查部署结果
3)配置开机挂载安全NFS共享
# vim /etc/fstab
server0.example.com:/public /mnt/nfsmount nfs _netdev 0 0
server0.example.com:/protected /mnt/nfssecure nfs sec=krb5p,_netdev 0 0
4)重起系统服务nfs-secure,并配置开机自启 # systemctl restart nfs-secure
# systemctl enable nfs-secure
4)验证挂载配置 # mount -a # df -hT /mnt/nfs*
5)测试对挂载点的写入权限(必须用ssh进行测试,因为su不经过LDAP)
以用户ldapuser0通过SSH的方式登入desktop0,验证密码(kerberos)以获取通行证:
[root@desktop0~]# ssh [email protected] //输入密码kerberos,成功
访问desktop0的挂载点/mnt/nfssecure/的子目录project,测试可写入:
[ldapuser0@desktop0 ~]$ touch /mnt/nfssecure/project/a.txt
[ldapuser0@desktop0 ~]$ ls -lh /mnt/nfssecure/project/a.txt
-rw-rw-r--. 1 ldapuser0 ldapuser0 0 Nov 27 04:43 /mnt/nfssecure/project/a.txt
最常见的问题:
1)用来kerberos加密的密钥文件
server0 ==》 server0.keytab ==》 /etc/krb5.keytab
desktop0 ==》 desktop0.keytab ==》 /etc/krb5.keytab
检测方法:klist -k /etc/krb5.keytab
Linux系统服务完整的名称:服务名.service
nfs-server <==> nfs-server.service
nfs-secure-server <==> nfs-secure-server.service
LDAP客户端配置
1)本地账号(/etc/passwd、/etc/shadow)登录到server0
登录到不同的机器,密码可能不一样,多次登录
2)网络账号(LDAP、LDAP)登录到server0、desktop0、……
登录到不同的机器,密码一样,多次登录
3)网络账号(LDAP、kerberos)登录到server0、desktop0、……
登录到不同的机器,密码一样,一次登录
kerberos单点登录 —— 用一个用户名/密码登录一批机器(通行证)