freeswitch身份验证

时间:2013-01-12 12:20:21

标签: networking sip voip freeswitch

我是freeswitch世界的新手,我被黑客攻击有人使用我的网关并初始化来自未注册用户的呼叫而没有任何身份验证,因为我猜(在我自己测试之后),如果我发送UDP邀请包使用linux中的nc命令到freeswitch服务器,如下所示:

$ nc -u x.x.x.x 5060 < invite

invite file contain the following : 
INVITE sip:+99xxxxxxx@x.x.x.x SIP/2.0
Via: SIP/2.0/UDP x.x.x.x:5060
Max-Forwards: 70
To: Bob <sip:+99xxxxxx@xxx.xxx.xxx.xxx>
From: Alice <sip:101@x.x.x.x>;tag=1928301774
Call-ID: a84b4c76e66710@pc33.atlanta.com
CSeq: 314159 INVITE
Contact: <sip:101@192.168.15.50>
Content-Type: application/sdp
Content-Length: 142

v=0
o=ibc 1090098764 894503441 IN IP4 192.168.1.33
s=-
c=IN IP4 192.0.2.200
t=0 0
m=audio 33445 RTP/AVP 98 97 8 0 3 101
a=rtpmap:98 speex/16000
a=rtpmap:97 speex/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:20
a=zrtp

我发现了以下内容:
用户101是未注册的用户,并且在数据包中没有authintication标头,即使freeswitch允许通过我的网关进行呼叫。

那么有没有办法在通过网关发起呼叫之前对呼叫者用户名和密码进行身份验证?

4 个答案:

答案 0 :(得分:3)

我的第一个猜测是检查sofia.conf.xml 寻找

<param name="accept-blind-auth" value="true"/>

您可以在此处获得有关FS中sip身份验证的更多详细信息: http://wiki.freeswitch.org/wiki/Sofia_Configuration_Files#Auth

答案 1 :(得分:1)

在vanilla(默认示例)中,配置freeswitch有两个SIP配置文件。首先,命名内部,侦听端口5060并且需要对数据包进行身份验证。第二个SIP配置文件,名为external,在端口5060上侦听,并且不需要身份验证来进行调用。外部配置文件的安全性必须由您的拨号方案提供。如果不是,那么黑客就可以通过INVITE与freeswitch交谈,这个命令可以让freeswitch调用你的网关并通过初始调用来连接它。

答案 2 :(得分:1)

我同意@ borik-bobrujskov,只是扩大了相同的答案。

在sip_profiles / external.xml中添加以下选项

<param name="auth-calls" value="true"/>
<param name="accept-blind-auth" value="false"/>
<param name="log-auth-failures" value="true"/>
<param name="auth-all-packets" value="true"/>

这将确保为每个传入的sip请求发回如下所示的代理身份验证质询

SIP/2.0 407 Proxy Authentication Required
Via: SIP/2.0/UDP x.x.x.x:5060;branch=z9hG4bK4d5f.11c7cfacce4d26c8fd1b01339c08b1dc.0
From: "1001"<sip:100@x.x.x.x;transport=TCP>;tag=18aa565e
To: <sip:200@y.y.y.y:5080;pstn_inbound=;ignore_userinfo=>;tag=eX6m9Ktp48aaF
Call-ID: ZwRgsMB3luEHyKaM2vL9eQ..
CSeq: 1 INVITE
User-Agent: FreeSWITCH-mod_sofia/1.9.0-742-8f1b7e0~64bit
Accept: application/sdp
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY
Supported: timer, path, replaces
Allow-Events: talk, hold, conference, refer
Proxy-Authenticate: Digest realm="x.x.x.x", nonce="e797bde2-c7b5-47a7-ae95-931af57c9774", algorithm=MD5, qop="auth"
Content-Length: 0

用代理授权标头(包含摘要,用户名,领域,随机数)重新构造另一个INVITE(使用CSeq-2)不是UA,以重新发送到freeswitch服务器以进行身份​​验证并继续进行呼叫

Proxy-Authorization: Digest username="aaa", realm="x.x.x.x", nonce="e797bde2-c7b5-47a7-ae95-931af57c9774", uri="sip:200@x.x.x.x5:5080;pstn_inbound=;ignore_userinfo=", qop=auth, nc=00000001, cnonce="4060286812", response="cae451f24bbbcefeb7d01c13b070026a", algorithm=MD5

答案 3 :(得分:0)

如果你使用“param name =”,accept-blind-auth“value =”true“”会给你盲目认证。

没有密码验证。