On 19 Mar 2015, at 18:38, canuck15 <canuc...@hotmail.com> wrote: > It looks like auth_check() will work. It seems intelligent enough to scan all > instances of the same domain as long as the username is unique so that should > get things working. > > The problem here is that there is a fundamental difference between Asterisk > and Kamailio authentication. Asterisk authentication works with FQDN or IP. > However, Kamailio is not designed to authenticate anything with FQDN unless > it is also a realm and identified as such by the UA. I believe that is the > main issue here. SIP trunks typically do not use or care about realm. So > after the initial invite response from Kamailio the SIP trunk provider > typically responds with the IP address as the realm. Asterisk authentication is kind of broken - it disregards the domain and is based on the user name or only use IP/port. Many years ago I worked on adding multiple domain support in asterisk - part of the code is still there. Then the project leader added a huge patch for single-domain TLS and I gave up that work.
Kamailio is much more flexible. While the auth module only handles realm, you can easily connect the account to a set of specific From: SIP URI's and do a full authentication and authorization scheme that works as you want. You can build in a number of ways - which makes it very mush more SIP-compliant and flexible. > > It does almost seem like there should be a special module to deal with this > sort of thing. None of the existing modules seem to be the right fit. Kamailio is a toolkit. Don't take a single module as the only solution. It's like linux, you combine a set of small functions and build solutions. Very different from Asterisk. I don't think we need a new module. You can already build stuff like this by combining functionality in different modules. /O > > > On 3/18/2015 9:03 AM, Daniel Tryba wrote: >> On Wednesday 18 March 2015 08:32:10 canuck15 wrote: >>> I can run a cron job every hour to DNS lookup and update the ip_addr >>> table as needed so I think this is a satisfactory solution for IP >>> authentication. >> Is there a mechanism to identify all originating servers for a >> hostname/domain? If the answer is no (and AFAIK is it) then this solution >> doesn't work. >> >> I used this in the past, a subscriber has a userpref with ip/port combo. But >> this ins't an answer for subaccounts on trunks (unles you can get the sender >> to actually use different ports). 3 is the whitelist for ip adresses on >> record. I abandoned this due to to much problems with trunks, they just have >> to authenticate or go elsewere. >> >> BTW only for tcp since udp sources can be spoofed. I guess the best way is to >> use tls with certificate verification (good luck getting the trunks to >> implement this :) >> >> route[AUTHENTICATE] >> { >> if(!is_method("REGISTER") && allow_address("3", "$si", "$sp") && >> $proto=="tcp") >> { >> if(!avp_db_query("select username from usr_preferences where >> attribute='ip_authentication' and domain='$td' and (value='$si:$sp' or value >> like '$si:%') order by length(value) limit 1")) >> { >> xlog("L_ALERT","ACL: $rm from $fu (IP:$si:$sp)\n"); >> sl_send_reply("403", "Not Allowed by AUTHENTICATE >> ACL"); >> exit; >> } >> >> $avp(au)=$avp(i:1); >> } >> else >> { >> $var(authenticated)=www_authenticate("$td", "subscriber"); >> >> if (!www_authenticate("$td", "subscriber")) { >> xlog("L_ALERT","AUTHENTICATE: $rm from $fu to $tu >> (IP: >> $si:$sp)\n"); >> www_challenge("$td", "1"); >> exit; >> } >> >> $avp(au)=$au; >> >> consume_credentials(); >> } >> > > > _______________________________________________ > SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list > sr-users@lists.sip-router.org > http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users _______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users