I noticed a typo in my post that may easily confuse someone... <user id="7105551212" cidr="127.0.0.0/8//"> should be: <user id="7105551212" cidr="127.0.0.0/8"> -metik Metik wrote:
Bill,
I think you would add this to the user profile in the directory. The "brian.xml" example (located in ${confdir}/directory/) provided with the default/sample configuration files demonstrates how to to do this by introducing a "cidr" attribute to the the "user" element.
Example:
<user id="7105551212" cidr="127.0.0.0/8//"> <params> <param name="password" value="opensaysme"/> <param name="vm-password" value="14916"/> </params> <variables> <variable name="user_context" value="default"/> </variables> </user>
"http://wiki.freeswitch.org/wiki/Acl" contains some great info (including a relevant example).
-metik
Bill W. wrote:
Hey Metik,
Thanks so much for your insights and your help. And yes, I was able to append the X-AUTH-IP header with no problem. But that didn't solve the issue. After some more research, it appears that the problem isn't with auth-calls at all.
I disabled all auth-call directives in every sip profile and the registration through a proxy is still being rejected.
I looked in sofia_reg.c and if auth_acl is defined, sofia_reg checks the ip variable against the auth_acl cidr.
if (auth_acl) { if (!switch_check_network_list_ip(ip, auth_acl)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "IP %s Rejected by user acl %s\n", ip, auth_acl); ret = AUTH_FORBIDDEN; goto end; }
So I guess the question is, is it possible to control what gets put into the ip variable?
Thanks, Bill
Metik wrote:
Honestly, several years ago I accomplished this by mod'ing SER (which became OpenSER which was then forked to OpenSIPS and Kamalio) and using one cluster of proxies for subscriber endpoints and another for infrastructure (so that I could keep RTP flows optimized yet support double NAT when required by an endpoint). Although the network looks different today.
However, we were never quite happy about the lack of media failover (complicated NAT) and evaluated several commercial solutions until finding Covergence (which is now, for better or for worse since the jury is still out, owned by ACME Packet). At the time, they offered the best mix of security (their forte) yet scaled very well in comparison to their competitors that I had tested in our lab (ACME Packet, Kagoor, Netrake, NexTone, Kagoor, and Jasomi). In fact, they made a great decision, not unlike that of the FS developers, to implement a proven/stable SIP protocol stack. Nothing is perfect and that does not mean that we did not spend a considerable amount of time documenting bugs so that they could be addressed and it would work as it should
We still use OpenSIPS for certain CSCF functionality (due to its speed and flexibility since it is not a B2BUA).
Based on Mathieu's response (and he is definitely someone that would know), it looks like you should be able to easily append a X-AUTH-IP header (via OpenSIPS) containing the IP address of the endpoint and call it a day.
-metik
Bill W wrote:
Hey Metik,
That's exactly what I'm trying to do... load balance across multiple FS boxes, and have any machine in the cluster be able to reach a device behind a NAT firewall. Hence the need for the proxy. Also, I'm trying to keep the proxy relatively "dumb" and put all the logic in the FS boxes.
True I could do the auth on the proxies as well, but then I'm setting up another authentication scheme in addition to what is on the FS boxes, and then integrating the databases so everything is consistent.
I also have hosts that talk to the FS boxes directly, rather than through the proxy. So I can't get rid of auth_acl on FS either, even if I do implement it on the proxies. So my setup becomes much more complex and potentially brittle.
And all we're really talking about for FreeSWITCH, conceptually speaking, is populating a variable with a different IP. We could even make it configurable, as to which IP is to be used for the auth-acl.
What are you using for SBCs? (if you are allowed to divulge that) I'm currently using OpenSIPS for my proxy.
Thanks, Bill
Metik wrote:
Why not simply implement this feature in the PROXY itself?
FS has a pretty comprehensive security feature set for endpoints that directly register with it.
Don't get me wrong, I do agree this is useful especially if you are going to be using your proxies to load balance across multiple FS boxes to create an ad-hoc cluster. I actually have session border controllers that have this feature and use it quite often.
-metik
Bill W wrote:
Hey Metik,
Thanks for the reply, and the pointers for doing it with xml_curl.
I'll guess have to do that in the short term, but in my opinion, having auth-acl be able to work through a proxy is very important as it is a vital part of a comprehensive security feature set. And it would be much simpler to implement from an end-user perspective than the alternative of doing it in xml_curl.
As a matter of fact, I'm considering offering a bounty for that feature. What is the going rate for that kind of thing?
Is anyone out there interested in coding this feature? Or chipping in for the bounty?
Thanks, Bill
Metik wrote:
> This may be difficult considering that ACL needs to consider the > original src IP/URI. To do that it, freeswitch would need to do so > using a header that retains that information (i.e. From, Via, Contact, > etc.). Which I do not believe is currently possible using auth-acl or > apply-proxy-acl. > > However, you should be able to emulate the behavior using mod_xml_curl > (and validating against appropriate variables available when using it to > authenticate the request). > > see: http://wiki.freeswitch.org/wiki/Mod_xml_curl#Authorization > > -metik > > > Bill W wrote: > > > > >> Hey Brian, >> >> >> I've been doing some testing and I am unable to get auth-calls to work >> through a proxy the way I want them to, even with setting >> apply-proxy-acl to either the endpoint IP or the proxy IP. >> >> I have a multi-tenant system with multiple domains with multiple users >> in each domain. And I want to restrict a user to an arbitrary CIDR and >> challenge them for a password. The arbitrary CIDR will vary from UA to >> UA, and is specified in the directory via the auth-acl parameter. >> >> TL,DR; I want to get auth-calls to use the IP of the UA endpoint, not of >> the proxy. >> >> >> Thanks, >> Bill >> >> Brian West wrote: >> >> >> >> >> >>> it needs to be an ACL from acl.conf or a ip/cidr >>> >>> /b >>> >>> On Dec 17, 2009, at 5:41 AM, Bill W wrote: >>> >>> >>> >>> >>> >>> >>>> Okay, I added: <param name="apply-proxy-acl" value="true"/> to my sofia >>>> profile and restarted sofia, and still no joy. >>>> >>>> I'm on FreeSWITCH Version 1.0.trunk (15764) >>>> I've got <param name="auth-acl" value="190.218.103.12/32"></param> in >>>> the directory, but I'm still being rejected by the acl: >>>> >>>> 2009-12-17 06:04:59.920517 [WARNING] sofia_reg.c:1928 IP 64.135.119.105 >>>> Rejected by user acl 190.218.103.12/32 >>>> >>>> Here's what I believe is the appropriate snippet of the debug output: >>>> http://pastebin.freeswitch.org/11531 >>>> >>>> Thoughts? >>>> Thanks, >>>> Bill >>>> >>>> >>>> >>>> >>>> >>> ------------------------------------------------------------------------ >>> >>> _______________________________________________ >>> FreeSWITCH-users mailing list >>> FreeSWITCH-users@lists.freeswitch.org >>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users >>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users >>> http://www.freeswitch.org >>> >>> >>> >>> >>> >> _______________________________________________ >> FreeSWITCH-users mailing list >> FreeSWITCH-users@lists.freeswitch.org >> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users >> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users >> http://www.freeswitch.org >> >> >> >> >> >> > _______________________________________________ > FreeSWITCH-users mailing list > FreeSWITCH-users@lists.freeswitch.org > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users > UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users > http://www.freeswitch.org > > > > _______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org