[asterisk-dev] res_pjsip_acl: endpoint specific ACL

Dmitriy Serov serov.d.p at gmail.com
Mon Mar 23 16:29:20 CDT 2015


Hello.
And Sorry for my english :)

https://issues.asterisk.org/jira/browse/ASTERISK-24890

I continue to migrate from asterisk 11 to 13.2 and continues to face 
problems of compatibility.
chan_sip has a very good ability to limit registration for a particular 
PEER to the specified set of IP addresses. I have not found such an 
opportunity in res_pjsip.
ACL offers only limit of the IP packet or contact without being tied to 
a particular endpoint. Because registration restrictions by IP require 
only part of endpoints, then using version 13.2 all registrations are 
unprotected, insecure.
I propose to implement an option to specify the endpoint in ACL section.

Studying the implementation of res_pjsip_acl and chan_sip come to the 
conclusion that it is much easier to do new named option "acl" in the 
endpoint section.
But the realization of this prevents that the module res_pjsip 
(endpoint) knows nothing about res_pjsip_acl (pjsip ACL).
Using ACL only from acl.conf is a bad idea, because for something done 
ACL sections in pjsip.conf :)

So, the only way left - Zero to Many ENDPOINTs can be associated with an 
ACL object.
Where is the ACL test code should be placed?
- in acl_on_rx_msg (res_pjsip_acl)
- in registrar_on_rx_request (res_pjsip_registrar). Oh, That would be 
the best place, but there is also nothing is known about the ACL.

res_pjsip_acl can parse ACL and register them with name format 
'endpoint_<endpoint_name>_<acl_name>'. In registrar_on_rx_request can 
test ACL with names like 'endpoint_<endpoint_name>_%'.
And of course acl_on_rx_msg should ignore ACL, which are binded to 
endpoints.

What do you think about this implementation? Maybe there is a better 
approach?

Dmitriy Serov



More information about the asterisk-dev mailing list