如何在Linux下使用iptables和TCP包装器保护端口映射服务

时间:2020-01-09 10:41:56  来源:igfitidea点击:

问题描述:如何保护portmap服务?
我正在使用Debian Linux。

解决方法:根据维基百科,Portmap是在类Unix系统下运行的服务器软件,可将RPC程序号转换为DARPA协议端口号。
它的设计目标是最大程度地减少使用的端口数量,但这从未发生,因为它从未得到广泛采用。
它必须正在运行才能进行RPC调用。

启动RPC服务器时,它将告诉portmap它正在侦听的端口号以及准备服务的RPC程序号。
当客户端希望对给定程序号进行RPC调用时,它将首先在服务器计算机上保留完整的端口映射,以确定应将RPC数据包发送到的端口号。

它被NIS,NFS和FAM"广泛使用"。
它用于将动态端口分配给NIS和NFS。

您可以使用以下方法保护端口映射:- TCP包装器

  • iptables

TCP包装器

如果您要保护端口映射器,请使用守护程序名称portmap作为名称。
请记住,对于端口映射程序和rpc.mountd(NFS安装守护程序),只能使用关键字ALL和IP地址(NOT主机名或者域名)。
打开/etc/hosts.allow文件:

# vi /etc/hosts.allow

portmap服务器的整体示例仅允许从192.168.1.0/24访问。

sshd : ALL
portmap : 192.168.1.0/24

保存并关闭文件。

IPTables端口映射规则

Portmap侦听端口111。
向您的iptables添加以下规则:

如果不是来自192.168.1.0/24的,则丢弃UPD端口111数据包

iptables -A INPUT -p udp -s! 192.168.1.0/24 --dport 111 -j DROP

如果不是来自192.168.1.0/24和本地主机(127.0.0.1)的TCP端口111数据包,则将其丢弃

iptables -A INPUT -p tcp -s! 192.168.1.0/24 --dport 111 -j DROP
iptables -A INPUT -p tcp -s 127.0.0.1 --dport 111 -j ACCEPT