用Kamailio静默隐藏SIP的注册端口,保护IPPBX设备安全

在SIP基础设施中,注册端口(通常是 5060/5061 或自定义 UDP 端口)是攻击者关注的第一个突破口。一旦端口被扫描出来,紧接着就是暴力破解、盗打、注册劫持和洪水攻击。这里我们的思路就是,对扫描者,不做任何的回应,不发送403,401,503,什么都不发送,不做任何的回应;这样攻击者的角度,它是基本上,等同于不存在;当然,你不可能用5060来对外,需要修改默认端口。

当然安全,它是需要多维度进行的,不能够只靠一个策略,或者是单一的方法来进行;

Image
Kamailio 静默示意图

传统的基于响应的防御(如返回 403 Forbidden)虽然能够拒绝非法请求,但实际上会向攻击者暴露端口与服务类型的存在,从而招致更持续、更多样化的攻击。

今天我们分享一套在实践中被多次验证的 “端口深度隐藏” 方案,让您的 SIP 注册端口在公网中呈现与“未开放”完全一致的静默状态,从网络探测层面彻底切断攻击者的情报来源。


一、核心思路:从“拒绝”变成“静默”

一般的 SIP 防火墙策略是:收到非法请求 → 判断 → 发送错误响应(403/401/503),这个过程虽然拦截了本次请求,但攻击者收到了明确的 SIP 响应,就能确认:

  • 该 IP 的 UDP 端口开放
  • 该端口运行着 SIP 服务
  • 可能携带 Server 头、版本信息等指纹

我们的隐藏方案核心理念是 “不响应非法请求”,对所有不满足准入条件的流量直接执行内核级丢弃,不产生任何反馈数据包,让扫描器无法判断端口是否开放。

这需要结合地理位置、UA 白名单、速度限制、动态黑名单等多重机制来实现。


二、五大关键技术实现端口“隐身”

1. 地理位置强制准入(GeoIP)

绝大多数恶意扫描来自国外 IP 地址。如果您的用户仅限指定区域,可以直接在边界强制检查来源国家代码,并且如果是数据库精准是可以做到城市级别定位的;

  • 来源 IP 位于CN,JS,SH的注册请求才予以处理
  • 非 CN 的请求直接丢弃

即使攻击者使用反弹节点,这个机制也能大幅缩小攻击面。对于 GeoIP 匹配失败的未知 IP,我们同样默认丢弃,而非放行。

2. 严格 User-Agent 白名单

SIP 扫描工具会携带特殊的 UA 头部(如 friendly-scannersipvicious),或者干脆不发送 UA。我们只在白名单中允许经过授权的特定 UA 正则(例如您自有终端的特征前缀),任何不匹配的注册请求同样被静默丢弃。攻击者无法猜测您的内部白名单,因此其破防成功率很低。

3. 高频洪水识别与自动黑名单(Pike模块)

利用Kamailio内置的 Pike 模块,实时监测请求密度。若某个 IP 在短时间内的请求量超过阈值(例如 2 秒内超过 30 个请求),立即将其加入动态黑名单,之后所有来自该 IP 的流量都会被直接丢弃,无需任何响应。即使攻击者变换 User-Agent 或伪造 IP,只要扫描速度过快,就会触发静默封禁。

4. 分级计数与智能封禁

注册失败、UA 不匹配、地理违规等事件分别计数。当违规次数达到设定上限(如 5 次)后,自动将该 IP 拉入黑名单。这样,攻击者如果尝试多次探测,很快就会被彻底列入“静默黑洞”,再无探测机会。

5. 服务指纹完全隐藏

除了逻辑上的丢弃,我们还需彻底抹除响应中泄露的任何服务信息:

  • 清空 Server 头,不返回任何服务器版本
  • 强制将所有出站响应的 User-Agent 改写为统一的、无意义的 SBC 字样
  • 不回复任何 403401 等半开放错误码

只有完全合法的呼叫或注册才会产生必要的 SIP 交互,而在黑名单上的 IP 连这些交互都看不到。


三、技术实现模型

以下是基于 Kamailio 代理的关键配置片段逻辑,展示如何实现上述“静默丢弃”:

# 片段:对所有非 127.0.0.1 的流量进行多层过滤
if ($si != "127.0.0.1" && $si != "172.19.10.17") {
    # 1. 检查动态黑名单
    if ($sht(ip_ban=>$si) >= 5) {
        drop;  # 直接丢弃
    }
    # 2. Pike 高频检测
    if (!pike_check_req()) {
        $sht(ip_ban=>$si) = 10;
        drop;
    }
}

# 注册请求的地理 + UA 双重检查
if (is_method("REGISTER")) {
    if (geoip2_match("$si", "src")) {
        if ($gip2(src=>cc) != "CN") {
            drop;  # 非允许的IP,静默丢弃
        }
    } else {
        drop;  # GeoIP 匹配失败,静默丢弃
    }
    if (!($ua =~ $var(whitelist))) {
        drop;  # UA 不在白名单,静默丢弃
    }
}

在整个处理链中,几乎所有拒绝分支都使用了 drop,而不是 sl_send_reply。这样对扫描器而言,端口行为完全等同于防火墙 DROP 规则,探测包发出的任何回复都石沉大海。


四、实际效果

经过以上配置,您的 SIP 注册端口在公网扫描器面前表现出完整的“黑洞”特征:

  • Nmap 默认 UDP 扫描:无响应,标记为 open|filtered,与未使用端口完全相同
  • 专业 SIP 扫描器(如 sippts、sipvicious):发送 OPTIONS 或 REGISTER 尝试后被直接丢弃,抓取不到任何响应包
  • 长时间监听与暴力破解:失败的请求被计数,超过阈值后 IP 被加入黑名单,后续不再产生任何消息

在没有事先掌握您的 IP 地理位置、自定义 UA 白名单、请求速率 这三项精准情报的情况下,任何外部的自动探测工具都无法确认该端口是否承载 SIP 服务。


五、Kamailio的静默配置思路总结

传统的“明拒”式防御会让您的服务清晰地暴露在扫描雷达上,而采用“静默丢弃 + 多重准入过滤”的深度隐藏策略,可以从网络层直接冷落攻击者的探测行为。配合持续的指纹消除与动态黑名单,不仅能阻挡已知攻击,更能让核心通信端口在公网上彻底隐形——“看不见,就打不着”。

适用于 Freepbx等多种 SIP 代理/服务器框架,是构建高安全通信网关的重要一环。

📢 声明:

本站所有文章,如果是技术类文章,均为内部学习交流使用,非专业技术人员,请勿对设备进行任何修改及操作,以免造成设备无法运行,或者损坏,导致设备不可正常使用。建议定期对设备数据进行备份和保存。


📞 我们专注于通信器材销售和各厂家电话交换机的维护,并提供上海地区的调试和安装,可以提供各种电话交换机的主机板、CPU、外线板及分机板,各类连接套件,提供弱电布线;包含网络线、电话线、门禁。

为您推荐

发表回复

联系我们

联系我们

021-54140117

在线咨询: QQ交谈

邮箱: 54140117@163.com

工作时间:周一至周五8:30-17:30,节假日休息。
返回顶部
Call Now Button联系电话