如何确保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 服务安全非常放心了.
- 简单易学的机器学习算法——线性可分支持向量机
- 基于gensim的Doc2Vec简析,以及用python 实现简要代码
- 关于db link权限分配的苦旅(一) (r7笔记第42天)
- Java设计模式-责任链模式
- Java设计模式-策略模式
- CPU 100%负载的性能优化分析(r7笔记第40天)
- Sklearn-train_test_split随机划分训练集和测试集
- 使用shell来定制dbms_sqltune(r7笔记第39天)
- 简单易学的机器学习算法——分类回归树CART
- Java设计模式-状态模式
- DBA和开发同事的一些代沟(四) (r7笔记第36天)
- python获取文件所在目录和文件名,以及检索当前文件名的方法
- 数据同步中的误导(r7笔记第34天)
- java读取xml文件
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 解密:粽子的密码
- 两个超级有意思的C语言题目,很多人都一脸懵逼!
- 用Gaussian 16做二分量赝势自旋轨道DFT(SODFT)计算
- 214专属,C语言实现跳动的心!
- 这道题有“圈套" 基础不好很容易上套!
- 靶机闯关 DC-8
- 在Java虚拟机上班是一种怎样的体验?
- Linux下远程工作防掉线的一个办法
- Centos安装最新版本cmake
- 【实战】提权某找小姐网站服务器
- 激发态计算中的溶剂效应
- 不会吧,有人用了两年Spring, 居然不知道包扫描是怎么实现的
- 不会吧!都 0202 年了,不会还有不知道 axios 的吧
- 全栈的自我修养: 002使用@vue/cli进行vue环境搭建 (使用Vue,SpringBoot,Flask完成前后端分离)
- JAVA | Java 解决跨域问题 花式解决跨域问题