操作系统版本说明:
华为欧拉操作系统openEuler 22.03 lts
银河麒麟V10
这两个操作系统已经自带安装nfs-utils,虽然和centos redhat fedora红帽系列的操作系统都是使用yum包管理器,但是nfs-utils相关依赖有所区别,关于红帽系列的如何固定NFS服务的端口,请参考前面的博客文章:
CentOS 7 NFS服务搭建以及防火墙设置(服务 端口两种方式)——筑梦之路_筑梦之路的博客-CSDN博客_centos nfs 端口
NFS服务固定端口和安全加固——筑梦之路_筑梦之路的博客-CSDN博客_nfs服务端口
这里其实也是根据上面第二个博客来操作,由于是国产化操作系统适配,特别提出来,再次将过程步骤记录一下。
-------------------------------------------以下内容以openEuler为例,银河麒麟v10类似# 查看nfs-utils是否已安装,未安装需要安装rpm -qa | grep nfsnfs-utils-help-2.5.4-4.oe2203.x86_64
nfs-utils-2.5.4-4.oe2203.x86_64# 查看服务状态 和 默认监听的端口systemctl status nfs rpcbindrpcinfo -p# 修改配置,固定NFS端口vi /etc/services
#添加注释
#mountd 20048/tcp # NFS mount protocol
#mountd 20048/udp # NFS mount protocol
#rquotad 875/tcp # rquota daemon
#rquotad 875/udp # rquota daemon#添加自定义端口配置
rquotad 30001/tcp
rquotad 30001/udp
lockd 30002/tcp
lockd 30002/udp
mountd 30003/tcp
mountd 30003/udp
statd 30004/tcp
statd 30004/udp# 重启服务,进行验证systemctl restart nfs-idmap
systemctl restart nfs-lock
systemctl restart nfs-server
systemctl restart rpcbindrpcinfo -p# 以上还有随机端口,未修改到的则进行下一步vi /etc/nfs.conf#在原来的标签下添加内容
[lockd]
port=30002
udp-port=30002
[statd]
port=30004再次重启服务进行验证无误即可
关于华为欧拉操作系统和银河麒麟V10操作系统固定NFS端口方面的资料比较少,而相关社区也没有有用的解决方案,特此做个记录。
防火墙设置:
# 服务方式# 让防火墙通过NFS服务
firewall-cmd --permanent --add-service=nfs # 通过rpc服务(如果不开启,rpcinfo就不能扫描)
firewall-cmd --permanent --add-service=rpc-bind # 通过mountd服务(如果不开启,不能远程showmount)
firewall-cmd --permanent --add-service=mountd #重载
firewall-cmd --reload# 端口方式firewall-cmd --permanent --add-port=2049/tcp
firewall-cmd --permanent --add-port=2049/udp
firewall-cmd --permanent --add-port=111/tcp
firewall-cmd --permanent --add-port=111/udpfirewall-cmd --permanent --add-port=30001-30004/tcp
firewall-cmd --permanent --add-port=30001-30004/udp
firewall-cmd --reload# 安全加固 设置黑白名单思路:通过系统白名单和nfs配置来进行加固1.修改nfs配置
cat /etc/exportsdata 192.168.47.0/255.255.255.0(rw,sync,no_root_squash)此处表示允许192.168.47.0/24这个网段访问,其他不允许访问#重载配置
exportfs -avr2.添加访问白名单和黑名单cat /etc/hosts.allowmountd:192.168.47.
rpcbind:192.168.47.:allow
portmap:192.168.47.
lockd:192.168.47.
rquotad:192.168.47.
statd:192.168.47.
#本机
portmap:127.0.0.1
lockd:1127.0.0.1
rquotad:127.0.0.1
statd:127.0.0.1
mountd:127.0.0.1
rpcbind:127.0.0.1:allow192.168.47. 表示此网段可访问cat /etc/hosts.denymountd:ALL
rpcbind:ALL:deny
statd:ALL
portmap:ALL
lockd:ALL
rquotad:ALL3.验证192.168.47网段机器访问:rpcinfo server-ipshowmount -e server-ip192.168.10网段机器访问:
rpcinfo server-ipshowmount -e server-ip此处获取不到nfs的信息,也不能挂载即成功加固
iptables版本的防火墙设置#开放NFS端口111 2049 tcp/udp
iptables -A INPUT -p tcp -m tcp --dport 2049 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 2049 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 111 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 111 -j ACCEPT
#NFS固定的其他端口30001-30004
iptables -A INPUT -p tcp -m tcp --dport 30001:30004 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 30001:30004 -j ACCEPT
------------------------------------
关于安全加固,使用黑白名单的方式,某些操作系统不生效的原因:
hosts.allow和hosts.deny属于tcp_Wrappers防火墙的配置文件,而用tcp_Wrappers防火墙控制某一服务访问策略的前提是,该服务支持tcp_Wrappers防火墙,即该服务应用了libwrapped库文件。
查看某服务(如ssh)是否应用了libwrapped库文件的方法是:
# ldd /usr/sbin/sshd |grep libwrap.so.0
参考资料:
hosts.allow、hosts.deny配置不生效的解决方法 - 码农教程