RPC 是一种通过网络连接不同的计算机实现通信的协议。在这里,RPC 代表远程过程调用。当用户在客户端应用程序中发出请求时,它将在服务器上执行。换句话说,RPC 是一种用于解决不同计算机之间的通信和数据交换的协议。
对于 Linux 操作系统,RPC 服务通常会在安装期间默认启用。其中一个 RPC 服务就是 rpcbind。rpcbind 是 Linux 操作系统上的一个端口映射服务。它为应用程序提供了一个包括端口映射的机制,这有助于实现不同机器之间的通信。但如果没有妥善地配置和使用 rpcbind 服务,就会导致很多安全问题。
因此,本文将介绍如何安全地配置和使用 rpcbind 服务,以帮助保障 Linux 系统的安全。
一、什么是 rpcbind?
rpcbind 服务是Linux操作系统中的一个端口映射服务。它为应用程序提供了一种映射机制,这种映射机制可以用于实现不同机器之间的通信。这种机制被称为「Remote Procedure Call」,简称为RPC。RPC在操作系统的网络协议栈中,通过将用户空间应用程序中的函数调用转换成网络传输包,以实现不同进程间的远程进程调用。
rpcbind 服务提供了一个基于端口的映射机制,它允许一个客户端从远程机器上调用一个本地机器上正在执行的程序。因此,rpcbind 服务在 Linux 操作系统中扮演着一个重要的角色。
二、rpcbind与安全
2.1 端口暴露
rpcbind 监听在一个非特权端口上,将客户端连接到特定的服务。在默认情况下,rpcbind 服务正在监听 111 端口,而且所有的程序都可以轻松地连接到 rpcbind 服务上。
这是一种基于端口的映射机制,它没有任何身份验证,所以它可以被利用来进行攻击。这是一个网络武器库中的基本武器,因为攻击者可以使用这个端口暴露攻击,直接或间接地访问接口来获取敏感信息或操纵系统。大量攻击和利用代码已经公开,可以利用这个漏洞访问RPC服务。
2.2 远程溢出
在一些场景下,如果攻击者可以成功地将恶意代码进入一个运行中的 RPC 服务中,那么它可以在远程系统上执行恶意服务而不需要经过身份认证。这样,攻击者便可以使用 RPC 服务来操纵远程服务器。
2.3 DoS 攻击(拒绝服务攻击)
rpcbind 服务在处理远程请求时,有时会忽略客户端身份验证,这导致攻击者可以利用这个漏洞进行拒绝服务攻击(DoS)。通过向目标系统发送许多无效RPC请求,攻击者可以导致系统的资源耗尽,从而使系统不可用。这是一种受欢迎的攻击技术,因为平均传输量很小,且需要的资源较少。
2.4 数据窃取
通过在本地使用类似 Wireshark 的可用性检测工具查看RPC流量,攻击者可以轻松地截获数据,可能包含系统上的敏感信息。当攻击者成功地获取敏感数据时,它们可以操纵系统并访问受保护的资源。
三、如何安全地配置和使用 rpcbind 服务?
为了防止这些潜在的安全问题,以下是几个关于如何安全地配置和使用 rpcbind 服务的实用技巧:
3.1 配置防火墙规则
防火墙是保障系统安全最有效的方法之一。可以使用防火墙来限制来自外部网络的访问 RPC 服务的请求。在 Linux 中,可以使用 iptables 防火墙来实现这一点。
以下是如何使用 iptables 防火墙为RPC服务添加策略的指南:
a. 允许管理工具的访问:由于代表您的服务器管理的工具通常需要使用RPC服务,请打开所需的RPC相关端口。
# iptables -I INPUT 1 -p tcp --dport 111 -j ACCEPT
# iptables -I INPUT 2 -p tcp --dport 2049 -j ACCEPT
b. 允许特定的系统或 IP:当仅仅需要一个特定系统或 IP 访问 RPC 服务时,请为其配置 iptables。
# iptables -I INPUT 1 -p tcp -s 192.168.1.2 --dport 111 -j ACCEPT
c. 拒绝所有其他的IP访问
# iptables -A INPUT -p tcp --dport 111 -j DROP
这些 iptables 命令防止 RPC 服务的用户接受来自其它系统的连接,它同时只让特定的 systems(例如192.168.1.2)访问您的 RPC 服务。
3.2 确立身份验证机制
rpcbind 服务缺乏身份验证,这可能会使 Windows 和 Unix 操作系统在网络上遭受 DoS 攻击和数据窃取攻击,并使rpcbind 服务在成为目标后系统简单易受攻击。因此,系统管理员应该为RPC提供一些形式的身份验证。这可以通过将访问控制列表(ACL)添加到 services.map 和 portmap 文件中来实现。
通过使用 /etc/hosts.allow 和 /etc/hosts.deny 文件,可以将客户端限制为特定的 IP 地址。
3.3 使用网络监控工具
网络监控工具是一种可以帮助识别网络攻击技术和对抗威胁的工具。通过使用网络蜜罐、入侵检测系统和许多其他的简单工具,系统管理员可以检测签名和行为模式,以帮助识别和防止广泛的威胁。
通过使用这些工具,管理员可以清晰地看到 RPC 流量,它提供详细的会话信息,并查找可能的攻击模式。
3.4 Updated
保持自己的系统时刻更新是非常重要的,这样才能避免因为安全漏洞而被攻击。当操作系统的更新可用时,请立即更新,以避免可能的漏洞攻击。
本文所介绍的防御措施只是其中的一部分,这意味着需要更多的安全实践和措施来保护系统免受来自 Internet 的威胁。但是,如果一个公司或个人愿意采用这些措施并进行恰当的配置,那么您的系统就可以更好地防御被RPC攻击的风险。