基于安全的访问控制-NFS服务的安全配置

任务分析:

为了确保NFS服务器的安全运行,预防黑客通过外部网络直接访问到NFS服务器中的资料文件,需要通过设置只允许特定网段内的主机访问NFS文件共享服务器。

预备知识:

        NFS(Network File System)是FreeBSD支持的一种文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。不正确的配置和使用NFS,会带来安全问题。

概述

NFS的不安全性,主要体现于以下4个方面:

  • 缺少访问控制机制
  • 没有真正的用户验证机制,只针对RPC/Mount请求进行过程验证
  • 较早版本的NFS可以使未授权用户获得有效的文件句柄
  • 在RPC远程调用中,SUID程序具有超级用户权限

加固方案

        为有效应对以上安全隐患,推荐您使用下述加固方案。

配置共享目录(/etc/exports)

  • 使用anonuid,anongid配置共享目录,这样可以使挂载到NFS服务器的客户机仅具有最小权限。不要使用no_root_squash。
  • 使用网络访问控制
  • 使用安全组策略或iptable防火墙限制能够连接到NFS服务器的机器范围。
  • firewall-cmd --zone=public --add-port=111/tcp

账号验证

  • 使用Kerberos V5作为登录验证系统,要求所有访问人员使用账号登录,提高安全性。
  • 设置NFSD的COPY数目
  • 在Linux中,NFSD的COPY数目定义在启动文件 /etc/rc.d/init.d/nfs中,默认值为8。
  • 最佳的COPY数目一般取决于可能的客户机数目。您可以通过测试来找到COPY数目的近似最佳值,并手动设置该参数。
  • 选择传输协议对于不同的网络情况,有针对地选择UDP或TCP传输协议。传输协议可以自动选择,也可以手动设置。

mount -t nfs -o sync,tcp,noatime,rsize=1024,wsize=1024 EXPORT_MACHINE:/EXPORTED_DIR /DIR

  • UDP协议传输速度快,非连接传输时便捷,但其传输稳定性不如TCP,当网络不稳定或者黑客入侵时很容易使NFS性能大幅降低,甚至导致网络瘫痪。一般情况下,使用TCP的NFS比较稳定,使用UDP的 NFS速度较快。
  • 在机器较少,网络状况较好的情况下,使用UDP协议能带来较好的性能。
  • 当机器较多,网络情况复杂时,推荐使用TCP协议(V2只支持UDP 协议)。
  • 在局域网中使用UDP协议较好,因为局域网有比较稳定的网络保证,使用UDP可以带来更好的性能。
  • 在广域网中推荐使用TCP协议,TCP协议能让NFS在复杂的网络环境中保持最好的传输稳定性。

限制客户机数量

修改/etc/hosts.allow和/etc/hosts.deny来限制客户机数量。

/etc/hosts.allow

portmap:192.168.0.0/255.255.255.0:allow

portmap:140.116.44.125:allow

/etc/hosts.deny

portmap:ALL:deny

改变默认的NFS端口

        NFS 默认使用的是111端口,使用port参数可以改变这个端口值。改变默认端口值能够在一定程度上增强安全性。

配置nosuid和noexec

        SUID(Set User ID)或SGID(Set Group ID)程序可以让普通用户以超过自己权限来执行。很多SUID/SGID可执行程序是必须的,但也可能被一些恶意的本地用户利用,获取本不应有的权限。

        

尽量减少所有者是root,或是在root组中却拥有SUID/SGID属性的文件。您可以删除这样的文件或更改其属性,如:

  • 使用nosuid选项禁止set-UID程序在NFS服务器上运行,可以在 /etc/exports 加入一行:/www www.abc.com(rw, root_squash, nosuid)
  • 使用noexec禁止直接执行其中的二进制文件。

实验步骤

第一步,打开网络拓扑,启动实验虚拟机,分别查看虚拟机IP地址:

CentOS1

 CentOS2

第二步,进入CentOS2实验机,右键点击桌面空白处,选择在终端中打开,使用命令yum -y install rpcbind nfs-utils安装nfs服务 

发现nfs服务已经安装好了

第三步,使用命令mkdir /var/nfs在服务器上创建共享目录,然后使用命令chmod 755 -R /var/nfs为共享目录设置权限 

nfs的配置文件是/etc/exports,它的基本格式为:

 

1、输出目录:输出目录是指NFS系统中需要共享给客户机使用的目录;

2、客户端:客户端是指网络中可以访问这个NFS输出目录的计算机

   客户端常用的指定方式:

   指定ip地址的主机:172.16.1.10/24

   指定子网中的所有主机:172.16.1.0/24或 172.16.1.0/255.255.255.0

   指定域名的主机:client.pyseclabs.com

   指定域中的所有主机:*. pyseclabs.com

   所有主机:*(谨慎使用该参数)

3、选项:NFS有3类选项,访问权限选项,用户映射选项,其他选项,具体可以参照下表:

 

如果有多个共享目录配置,则使用多行,直接在配置文件中加入一行内容:/var/nfs/ 172.16.1.0/255.255.255.0(rw,no_root_squash,sync),此处的配置是将共享目录/var/nfs/共享给指定子网中的所有主机。

 

保存好配置文件后,使用命令exportfs -r来应用更改。

 

第四步,为NFS添加系统防火墙,NFS服务除固定的111端口和2049端口外,还有其他服务如rpc.mountd设置NFS服务的端口配置文件,将其锁定在固定的几个端口中。通过修改/etc/sysconfig/nfs文件可实现这一功能,修改23行并在下面添加红色框内的选项

vim /etc/sysconfig/nfs

:set nu     //显示数字

 

 修改配置后使用wq保存并退出,接下来配置防火墙允许策略,使用命令firewall-cmd --zone=public --add-port=111/tcp --add-port=111/udp --add-port=2049/tcp --add-port=1001/tcp --add-port=1001/udp --add-port=1002/tcp --add-port=1002/udp --add-port=30001/tcp --add-port=30002/udp –permanent

然后使用命令firewall-cmd --reload在不改变状态的条件下重新加载防火墙

 

使用命令systemctl start rpcbind,systemctl start nfs依次启动rpcbind和nfs服务

 

使用命令systemctl enable将rpcbind与nfs服务加入开机启动

 

在nfs服务启动后,使用命令rpcinfo -p查看端口是否生效

 

第五步,使用命令showmount -e localhost在本地测试服务端是否可连接

 

        出现以上结果则说明NFS服务器配置已生效,且服务器运行正常。接下来切换到CentOS1客户端中,右键点击桌面空白处,选择在终端中打开,使用命令yum -y install rpcbind安装rpcbind服务 

 rpcbind服务已经被安装过,使用命令showmount -e 172.16.1.200查看nfs服务器是否可以访问

第六步,在进行下一步的挂载操作之前,我们先介绍一下通过NFS挂载远程主机文件系统时,常用参数和选项:

-a 加载文件/etc/fstab中设置的所有设备。

-f 不实际加载设备。可与-v等参数同时使用以查看mount的执行过程。

-F 需与-a参数同时使用。所有在/etc/fstab中设置的设备会被同时加载,可加快执行速度。

-h 显示在线帮助信息。

-L <标签>加载文件系统标签为<标签>的设备。

-n 不将加载信息记录在/etc/mtab文件中。

-t<文件系统类型> 指定设备的文件系统类型。常用的选项说明有:

 

-o<选项> 指定加载文件系统时的选项。有些选项也可在/etc/fstab中使用。这些选项包括:

切换到CentOS 1

        在挂载共享目录之前,首先使用命令mkdir -p /mnt/share建立挂载目录,然后使用命令mount -t nfs 172.16.1.200:/var/nfs /mnt/share/ -o nolock,nfsvers=3,vers=3将NFS共享挂载到/mnt/share/上 

第七步,使用命令mount查看挂载是否有效

 

可以看到文件已经成功挂载上去,接下来我们测试一下写入操作,使用命令touch /mnt/share/test.txt写入一个文件进行验证

 

切换到CentOS2实验机中,查看目录/var/nfs是否写入文件test.txt 

        至此我们在NFS文件共享服务器中实现了只允许172.16.1.0/24网段内的主机访问NFS文件共享服务器。 

 

实验结束~

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

腿没发霉的霉腿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值