Linux Iptables允许NFS客户端访问NFS服务器

时间:2020-01-09 10:34:12  来源:igfitidea点击:

端口映射器在服务启动时将每个NFS服务动态分配给一个端口。
如何允许合法的NFS客户端使用RHEL/Fedora/CentOS Linux 5.x iptables防火墙访问NFS服务器?
您需要打开以下端口:

  • "TCP/UDP 111 "RPC 4.0 portmapper

  • " TCP/UDP 2049" NFSD(nfs服务器)

  • "端口映射静态端口"在/etc/sysconfig/nfs文件中定义的各种TCP/UDP端口。

配置NFS服务以使用固定端口

但是,NFS和端口映射是相当复杂的协议。
由于不应从组织外部访问NFS服务器,因此应在每台主机和边界防火墙上进行防火墙保护,以防止NFS守护程序受到远程访问。
但是,默认情况下,端口映射程序在服务启动时将每个NFS服务动态分配给端口。

动态端口不能通过端口过滤防火墙(例如iptables)来保护。
首先,您需要将NFS服务配置为使用固定端口。
打开/etc/sysconfig/nfs,输入:

# vi /etc/sysconfig/nfs

如下修改config指令以设置未使用的TCP/UDP端口:

# TCP port rpc.lockd should listen on.
LOCKD_TCPPORT=lockd-port-number
# UDP port rpc.lockd should listen on.
LOCKD_UDPPORT=lockd-port-number 
# Port rpc.mountd should listen on.
MOUNTD_PORT=mountd-port-number
# Port rquotad should listen on.
RQUOTAD_PORT=rquotad-port-number
# Port rpc.statd should listen on.
STATD_PORT=statd-port-number
# Outgoing port statd should used. The default is port is random
STATD_OUTGOING_PORT=statd-outgoing-port-number

这是我的生产NFS服务器之一的示例列表:

LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020

保存并关闭文件。
重新启动NFS和portmap服务:

# service portmap restart
# service nfs restart
# service rpcsvcgssd restart

更新/etc/sysconfig/iptables文件

打开/etc/sysconfig/iptables,输入:

# vi /etc/sysconfig/iptables

添加以下行,确保它们出现在RH-Firewall-1-INPUT链的最后LOG和DROP行之前:

-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 111 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 111 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 2049 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24  -m state --state NEW -p tcp --dport 32803 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24  -m state --state NEW -p udp --dport 32769 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24  -m state --state NEW -p tcp --dport 892 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24  -m state --state NEW -p udp --dport 892 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24  -m state --state NEW -p tcp --dport 875 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24  -m state --state NEW -p udp --dport 875 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24  -m state --state NEW -p tcp --dport 662 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 662 -j ACCEP

保存并关闭文件。
将192.168.1.0/24替换为您实际的LAN子网/mask组合。
您需要使用/etc/sysconfig/nfs配置文件定义的静态端口值。
重新启动iptables服务:

# service iptables restart