专栏首页张戈的专栏如何确保NFS服务安全

如何确保NFS服务安全

上一篇博文《Redhat 设置 NFS 挂载的简单步骤》,其中摘录了一段 nfs 中 fuser 的使用,索性将其全部发出,以供参考。


对于 NFS 的安全问题,我们是不能掉以轻心的。那么我们如何确保它的安全呢?这里我们首先我们需要分析一下它的不安全性。看看在那些方面体现了它的不安全。NFS 服务安全性分析:不安全性主要体现于以下 4 个方面:

  • 1、新手对 NFS 的访问控制机制难于做到得心应手,控制目标的精确性难以实现
  • 2、NFS 没有真正的用户验证机制,而只有对 RPC/Mount 请求的过程验证机制
  • 3、较早的 NFS 可以使未授权用户获得有效的文件句柄
  • 4、在 RPC 远程调用中,一个 SUID 的程序就具有超级用户权限.

加强 NFS 服务安全的方法:

1、合理的设定/etc/exports**享出去的目录,最好能使用 anonuid,anongid 以使 MOUNT 到 NFS SERVER 的 CLIENT 仅仅有最小的权限,最好不要使用 root_squash.

2、使用 IPTABLE 防火墙限制能够连接到 NFS SERVER 的机器范围

iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT  
iptables -A INPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT  
iptables -A INPUT -i eth0 -p TCP -s 140.0.0.0/8 --dport 111 -j ACCEPT  
iptables -A INPUT -i eth0 -p UDP -s 140.0.0.0/8 --dport 111 -j ACCEPT

3、为了防止可能的 Dos 攻击,需要合理设定 NFSD 的 COPY 数目.

4、修改/etc/hosts.allow 和/etc /hosts.deny 达到限制 CLIENT 的目的

/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

5、改变默认的 NFS 端口

NFS 默认使用的是 111 端口,但同时你也可以使用 port 参数来改变这个端口,这样就可以在一定程度上增强安全性.

6、使用 Kerberos V5 作为登陆验证系统

修改/etc/hosts.allow 和/etc/hosts.deny 达到限制 CLIENT 的目的

/etc/hosts.allow   
portmap: 192.168.0.0/255.255.255.0 : allow   
portmap: 140.116.44.125 : allow

这个 NFS 服务安全得多注意!!

/tmp *(rw,no_root_squash)

no_root_squash:登入到 NFS 主机的用户如果是 ROOT 用户,他就拥有 ROOT 的权限,此参数很不安全,建议不要使用.

有时需要执行 umont 卸载 nfs 盘阵时,会遇见 device is busy 的情况,字面意思理解为设备忙,有其他进程正在使用此设备.

此时需要用到命令 fuser

其格式为: $ fuser -m -v  (nfs 挂载点) 回车执行后得到的结果依次是:用户 进程号 权限 命令

此命令可以查看到访问此设备的所有进程,停止进程后 umount.

如果添加参数 -k 则可以一次性将所有当前访问 nfs 共享盘阵的进程停止 也可以加-i 打开交互显示,以便用户确认

或者用 fuser 命令:

#fuser -v -m 挂载点

即可查处 用户 PID 等,KILL 掉该进程后再 umount.

或者

#umount -l 挂载点

选项 –l 并不是马上 umount,而是在该目录空闲后再 umount.还可以先用命令 ps aux 来查看占用设备的程序 PID,然后用命令 kill 来杀死占用设备的进程,这样就 umount 的 NFS 服务安全非常放心了.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PHP7.0正式版编译安装升级及WordPress问题解决分享

    盼望以久的 PHP 7.0 正式版,终于在今天发布了! ? 官方给出的新特性如下: PHP 7.0.0 comes with new version of th...

    张戈
  • 正确的Win主机网站伪静态设置方法

    在这两天折腾主题的过程中,再次注意到伪静态的设置,之前刚建站时用的是最简单的404 错误重定向的方法:复制代码,新建成一个 404.php 丢到 web 根目录...

    张戈
  • Cygwin:Windows下的Linux终端模拟器

    提到 Linux 学习,可能很多童鞋都会说,不是我不想学,而是真的没有一个好的 linux 环境:装了 linux 吧,有时又会想回 Windows 玩玩游戏娱...

    张戈
  • 基于TP的每日签到代码

    CrazyCodes
  • Python读书笔记10(不可变列表-元组)

    今天和大家分享的内容较少,和大家介绍一个新朋友即可! 元组! 元组,何方神圣?他其实就是一个固执的列表而已。 一、元组的声明(小括号) ? 元组的声明是用小括...

    用户1332619
  • php基础

    如果将一个对象转换成对象,它将不会有任何变化。如果其它任何类型的值被转换成对象,将会创建一个内置类 stdClass 的实例。如果该值为 NULL,则新的实例...

    lilugirl
  • 《如何高效学习》读书笔记

    《如何高效学习》是斯科特·杨 总结自己学习经验和方法的一本手册。他用一年的时间自学完成了 MIT 公开课上正常情况下需要四年才能修完的计算机科学的 33 门课程...

    顾宇
  • Python-科学计算-seaborn-03-箱形图

    系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3....

    zishendianxia
  • Linux 常用 netstat 命令

    用户1700948
  • Docker实践之03-Dockerfile指令详解

    所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制。就像我们之前运行了一个nginx镜像的容器,再进行修改一样,基础镜像是必须指定的。而FROM就是指定基础...

    2Simple

扫码关注云+社区

领取腾讯云代金券