[Asterisk-Users] Max number of connection in IAX ?

Tilghman Lesher tilghman at mail.jeffandtilghman.com
Thu May 1 13:53:20 MST 2003


On Thursday 01 May 2003 14:45, Brancaleoni Matteo wrote:
> Hi.
>
> I was wondering if there's a parameter to limit
> the number of concurrent sessions in IAX, globally or
> on a per-user basis.
>
> That could be needed for security purposes
> (to prevent dos attacks), to limit bandwidth / cpu usage, or
> to not allow more than N guest connections, for example.

Limiting the number of connections will not prevent DOS
attacks.  Consider that an IAX session may have an unlimited
length.  Now consider an attacker creating N connections,
where N is your maximum limit of connections.  The attacker
has effectively cut off your ability to place IAX calls.  In
other words, resource starvation is just as effective a DOS
attack as resource overloading.

That said, the usecnt variable in channels/chan_iax.c should
contain the current number of IAX channels.

A patch as simple as this should work:

-Tilghman

Index: channels/chan_iax.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_iax.c,v
retrieving revision 1.8
diff -u -r1.8 chan_iax.c
--- channels/chan_iax.c 27 Apr 2003 21:36:19 -0000      1.8
+++ channels/chan_iax.c 1 May 2003 20:58:03 -0000
@@ -65,6 +65,8 @@

 #define DEBUG_SUPPORT

+#define MAX_IAX_CONNECTIONS    30
+
 /* Sample over last 100 units to determine historic jitter */
 #define GAMMA (0.01)

@@ -1952,6 +1954,10 @@
                ast_setstate(tmp, state);
                ast_pthread_mutex_lock(&usecnt_lock);
                usecnt++;
+               if (usecnt > MAX_IAX_CONNECTIONS) {
+                       usecnt--;
+                       tmp = NULL;
+               }
                ast_pthread_mutex_unlock(&usecnt_lock);
                ast_update_use_count();
                if (state != AST_STATE_DOWN) {




More information about the asterisk-users mailing list