核心是阻断攻击者探测关键RPC服务,需严格封禁111端口(TCP/UDP),仅允许可信子网访问;同步屏蔽2049、892、32769–32803等高危端口及ICMP timestamp/time-exceeded报文,并启用SYN日志记录与fail2ban联动实现可溯防御。

要有效拦截针对内网横向移动的RPC端口扫描,核心是阻断攻击者探测和利用关键RPC服务(如portmap/rpcbind、NFS、mountd、lockd等)的入口。这类扫描常通过TCP/UDP 111端口发起,并联动2049、892、32769–32803等动态端口完成横向渗透。配置需兼顾精准阻断、日志可溯与最小干扰。
重点封禁基础RPC端口(111端口)
111端口(portmap/rpcbind)是所有RPC服务的“门面”,绝大多数横向移动工具(如rpcdump、Metasploit auxiliary/scanner/portscan/rpc_portmapper)首先扫描它。必须严格限制访问范围:
- 禁止所有外部IP访问:添加两条规则,分别针对TCP和UDP协议
iptables -I INPUT -p tcp --dport 111 -j DROPiptables -I INPUT -p udp --dport 111 -j DROP- 若内网确有合法RPC调用(如NFS客户端),仅放行可信子网,例如:
iptables -I INPUT -s 10.10.0.0/16 -p tcp --dport 111 -j ACCEPTiptables -I INPUT -s 10.10.0.0/16 -p udp --dport 111 -j ACCEPT
限制高危辅助端口与ICMP探测
攻击者常配合ICMP timestamp或time-exceeded报文进行网络测绘与路径探测,同时尝试连接NFS相关端口。应一并收敛:
- 禁用ICMP timestamp请求与响应(类型13/14),防止时钟指纹识别:
iptables -I INPUT -p icmp --icmp-type timestamp-request -j DROPiptables -I INPUT -p icmp --icmp-type timestamp-reply -j DROP - 屏蔽入向time-exceeded报文(类型11),降低路由拓扑暴露风险:
iptables -I INPUT -p icmp --icmp-type time-exceeded -j DROP - 关闭非必需NFS辅助端口(除非明确启用NFS服务):
iptables -I INPUT -p tcp --dport 2049 -j DROPiptables -I INPUT -p udp --dport 2049 -j DROPiptables -I INPUT -p tcp -m multiport --dports 892,32769:32803 -j DROP
启用SYN日志用于扫描行为捕获
单纯DROP无法感知扫描动作。建议在DROP规则前插入LOG规则,记录所有新建TCP连接尝试,便于发现异常扫描源:
- 在INPUT链最前端记录SYN包:
iptables -I INPUT -p tcp --syn -j LOG --log-prefix "RPC-SCAN-ATTEMPT: " - 日志将写入
/var/log/messages或journald,可通过以下命令实时监控:journalctl -f | grep "RPC-SCAN-ATTEMPT" - 结合
fail2ban可自动封禁高频扫描IP(需额外配置jail规则)
验证与加固要点
配置完成后必须验证生效,同时避免误伤业务:
- 执行
iptables -nL INPUT --line-numbers确认规则顺序:LOG应在DROP之前,ACCEPT应在DROP之前(如有白名单) - 检查rpcbind服务是否已停用:
systemctl is-active rpcbind;若非必需,应彻底禁用:systemctl stop rpcbind && systemctl disable rpcbind - 使用
ss -tunl | grep -E ':(111|2049|892)'确认无监听进程残留 - 保存规则(CentOS/RHEL):
service iptables save或iptables-save > /etc/sysconfig/iptables

















