配置安全的网络nfs文件共享服务

由于本人是使用的rhce模拟考试环境来做的本题目,所以文中说到的实验脚本和评分脚本,以及krb5.keytab文件只有我本套环境独有,如果自己做练习可以不去使用实验脚本和评分脚本,直接进行配置服务并挂载就可以。

对此套环境有兴趣的朋友可以给我留言,看到必回复。

1、首先

服务端(server0)和客户端(desktop0)执行实验脚本

[root@server0 ~]# lab nfskrb5 setup
[root@desktop0 ~]# lab nfskrb5 setup

2、配置服务端(server0)

2.1 下载kerberos秘钥

[root@server0 ~]# wget -O /etc/krb5.keytab http://classroom.example.com/pub/keytabs/server0.keytab
---- ::-- http://classroom.example.com/pub/keytabs/server0.keytab
Resolving classroom.example.com (classroom.example.com)... 172.25.254.254
Connecting to classroom.example.com (classroom.example.com)|172.25.254.254|:... connected.
HTTP request sent, awaiting response... OK
Length: (.2K)
Saving to: ‘/etc/krb5.keytab’ %[==============================================================================>] , --.-K/s in 0s -- :: ( MB/s) - ‘/etc/krb5.keytab’ saved [/]

2.2 修改nfs配置文件

[root@server0 ~]# vim /etc/sysconfig/nfs
...
RPCNFSDARGS="-V 4.2"
...

使用4.2版本,nfs挂载的时候可以将selinux安全上下文同时导出

2.3 启动nfs-secure-server服务并设置开机自动启动

[root@server0 ~]# systemctl start nfs-secure-server
[root@server0 ~]# systemctl enable nfs-secure-server
ln -s '/usr/lib/systemd/system/nfs-secure-server.service' '/etc/systemd/system/nfs.target.wants/nfs-secure-server.service'
[root@server0 ~]#

2.4 创建共享文件夹并且将文件夹写入/etc/exportfs文件中

[root@server0 ~]# mkdir /securenfs
[root@server0 ~]# chown nfsnobody /securenfs/
[root@server0 ~]# ll -d !$
ll -d /securenfs/
drwxr-xr-x. nfsnobody root Apr : /securenfs/ [root@server0 ~]# vim /etc/exports
...
/securenfs desktop0(sec=krb5p,rw)
... [root@server0 ~]# exportfs -r
[root@server0 ~]# exportfs
/securenfs desktop0.example.com

2.5 配置防火墙

[root@server0 ~]# firewall-cmd --permanent --add-service=nfs
success
[root@server0 ~]# firewall-cmd --reload
success
[root@server0 ~]# firewall-cmd --list-all
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client nfs ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

3、配置客户端(dekstop0)

3.1 下载秘钥文件

[root@desktop0 ~]# wget -O /etc/krb5.keytab http://classroom.example.com/pub/keytabs/desktop0.keytab

3.2 启动nfs-secure 服务并开机自启动

[root@desktop0 ~]# systemctl enable nfs-secure
ln -s '/usr/lib/systemd/system/nfs-secure.service' '/etc/systemd/system/nfs.target.wants/nfs-secure.service'
[root@desktop0 ~]# systemctl start nfs-secure

3.3 创建挂载点并设定开机自动挂载

[root@desktop0 ~]# mkdir /mnt/secureshare
[root@desktop0 ~]# vim /etc/fstab server0:/securenfs /mnt/secureshare nfs defaults,rw,v4.,sec=krb5p

4、测试

4.1 在server0上建立测试文件

[root@server0 ~]# echo "Hello World" >> /securenfs/testfile.txt
临时更改该文件的selinux安全上下文,更改文件的拥有者和权限
[root@server0 ~]# chcon -t public_content_t /securenfs/testfile.txt
[root@server0 ~]# chown ldapuser0:ldapuser0 /securenfs/testfile.txt
[root@server0 ~]# chmod /securenfs/testfile.txt
[root@server0 ~]# ll -Z !$
ll -Z /securenfs/testfile.txt
-rw-r--r--. ldapuser0 ldapuser0 unconfined_u:object_r:public_content_t:s0 /securenfs/testfile.txt
[root@server0 ~]#

4.2 desktop0查看该文件

因为前边加了-V 4.2的参数,所以public_content_t这个规则也被挂载过来来了

[root@desktop0 ~]# ll -Z /mnt/secureshare/testfile.txt
-rw-r--r--. ldapuser0 ldapuser0 unconfined_u:object_r:public_content_t:s0 /mnt/secureshare/testfile.txt
[root@desktop0 ~]#

4.3用ldapuser0用户测试向该文件写入内容

[root@desktop0 ~]# ssh ldapuser0@localhost
ldapuser0@localhost's password:
Creating home directory for ldapuser0.
[ldapuser0@desktop0 ~]$ echo "I'm write" >> /mnt/secureshare/testfile.txt
[ldapuser0@desktop0 ~]$ cat !$
cat /mnt/secureshare/testfile.txt
Hello World
I'm write
[ldapuser0@desktop0 ~]$

用管理员用户写入无法写入该文件

[root@desktop0 ~]# echo "test" >> /mnt/secureshare/testfile.txt
-bash: /mnt/secureshare/testfile.txt: Permission denied
[root@desktop0 ~]#

因为当前是用kerberos安全认证

5、提交评分脚本

[root@server0 ~]# lab nfskrb5 grade
Grading Kerberos NFS...
Checking correct krb5.keytab exists... PASS
Checking for correct RPCNFSDARGS... PASS
Checking nfs-secure-server service is started... PASS
Checking nfs-server service is enabled... PASS
Checking /securenfs directory exists... PASS
Checking for correct /etc/exports file... PASS
Checking if the server knows about the exported directory... PASS Overall result: PASS
Congratulations! You've passed all requirements.
[root@desktop0 ~]# lab nfskrb5 grade
Grading exercise Kerberos NFS...
Checking correct krb5.keytab exists... PASS
Checking nfs-secure service is started... PASS
Checking nfs-secure service is enabled... PASS
Checking /mnt/secureshare directory exists...PASS
Checking for correct /etc/fstab entry for the secure export...PASS
Checking for mounted nfs share ...PASS Overall result: PASS
Congratulations! You've passed all requirements

  

Linux nfs使用krb5的方式安全挂载的更多相关文章

  1. Linux NFS挂载

    Linux NFS挂载 一.NFS挂载 192.25.10.101/home/sharedata/azkaban/ODS_HS08 挂载到 192.25.10.102/home/data_azkaba ...

  2. linux nfs服务配置挂载以及oracle使用nfs存储挂载注意事项

    服务端共享目录 /home/XXX/nfs_shared 172.16.22.0/24(rw,no_root_squash) service nfs restart 常用命令: 查看所有nfs共享目录 ...

  3. Linux NFS服务器的安装与配置

    一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操 ...

  4. (转)Linux NFS服务器的安装与配置

    转自:http://www.cnblogs.com/mchina/archive/2013/01/03/2840040.html 由于在6系列里面,portmap已经改名了 ,6系列需要使用 serv ...

  5. 【转载】Linux NFS服务器的安装与配置

    一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操 ...

  6. Linux NFS服务器的安装与配置(转载)

    一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操 ...

  7. Linux NFS存储服务部署

    什么是NFS 中文意思是网络文件系统,主要功能是通过网络(一般是局域网)让不同主机之间可以共享文件或目录 NFS属于本地文件存储服务 缺点1: 1 2 3 4 5 6 7 windows上无法使用   ...

  8. Linux 基础教程 33-硬盘分区及挂载

    挂载命令     在Windows系统中如果插入了U盘.移动硬盘.光驱等,只要能被Windows系统识别出来,则系统会进行自动挂载并添加盘符,然后我们就可以访问,而这一切均由系统完成,用户并不需要做任 ...

  9. Linux NFS服务器的简明配置6.8

    Linux NFS服务器的简明配置6.8   Linux NFS服务器的简明配置 一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的 ...

随机推荐

  1. C# 6.0:在catch和finally中使用await

    Asyn方法是一个现在很常用的方法,当使用async和await时,你或许曾有这样的经历,就是你想要在catch块或finally块中使用它们,比如当出现一个exception而你希望将日志记在文件或 ...

  2. 激活WINDOWS SERVER 2019

    Windows Server 2019 Datacenter WMDGN-G9PQG-XVVXX-R3X43-63DFGWindows Server 2019 Standard N69G4-B89J2 ...

  3. Android Studio无法识别手机

    1.代理配置 1.1 无FQ的网络:需要配置代理: 1.2 公司网:不需要配置代理: 2.检查驱动安装情况: 2.1 检查设备管理器中的驱动是否正常安装: 成功后: 3.手机开启开发者模式

  4. Skyline TerraExplorer 7.0- 扩展信息树

    Skyline TerraExplorer V7增加了一个扩展信息树的控件TEInformationWindowEx.  该控件能够将TE3DWindowEx窗口里面的对象显示为信息树的方式.TEIn ...

  5. React高级指引

    深入JSX 本质上来讲,JSX是为React.createElement方法提供的语法糖 <MyButton color=}> Click Me </MyButton> 编译为 ...

  6. redis哨兵架构的基础知识及部署和管理

    一.前言 1.哨兵的介绍 sentinal,中文名是哨兵 哨兵是redis集群架构中非常重要的一个组件,主要功能如下 ()集群监控,负责监控redis master和slave进程是否正常工作 ()消 ...

  7. MindFusion 中节点关键路径的遍历

    工作中总能遇到 一些 奇葩的需求,提出这些奇葩需求的人,多半也是奇葩的人,要么不懂相关的计算机软件知识,要么就是瞎扯蛋,异想天开,然而这些奇葩的需求,我也总能碰到.言规正传,在一次项目中,使用了 Mi ...

  8. nginx mac

    ==> nginx Docroot is: /usr/local/var/www The default port has been set in /usr/local/etc/nginx/ng ...

  9. 常见cmd命令,开发人员必备

    运行程序 notepad--------打开记事本 calc-----------启动计算器 regedit.exe-------注册表 write----------写字板 mmc--------- ...

  10. spring boot 监听器实例

    在日常项目中订单创建成功后,会有类似各式各样的通知.有站内通知.短信通知.微信,app通知. 伪代码: 这里,只用伪代码示例.各式各样的通知 肯定不只一行代码.只是简化.如果后续还要增加各种各样的通知 ...