James,

Excellent testing, much appreciated...

In summary, it appears adding support for:
--
; For Asterisk 1.4
exten => s,n,Set(BANIP=${SIPCHANINFO(recvip)})
exten => s,n,Log(NOTICE,\'${BANIP}\' - Dialplan Noted Suspicious IP Address)

; For Asterisk 1.6/1.8
exten => s,n,Set(BANIP=${CHANNEL(recvip)})
exten => s,n,Log(NOTICE,'${BANIP}' - Dialplan Noted Suspicious IP Address)
--
in the Adaptive-Ban plugin seems useful.  I will do that.  (a one line addition 
:-) )

It appears the asterisk functions SIPCHANINFO()/CHANNEL() are the best tools we 
have to determine the SIP source IP address via the dialplan, while not always 
perfect, it is quite useful for this application.  The Adaptive-ban 
ADAPTIVE_BAN_WHITELIST and ADAPTIVE_BAN_WHITELIST_INTERNAL=1 should take care 
of problematic spoofed IP's.

Thanks for planting the seed for this feature.

Lonnie



On May 19, 2011, at 12:13 PM, James Babiak wrote:

> Lonnie,
> 
> Yeah I have persistent logging enabled. I also changed the 10MB default down 
> to 2MB to help with keeping the processing of the log file down. The 
> (complex) sed call is what was spiking the system load up very high when the 
> log files were close to 10MB. I would agree with making the syslogd options 
> exposed to be tweaked by users through the GUI.
> 
> I like the SIPCHANINFO/CHANNEL variable use better. It seems to more 
> accurately acquire the true IP address of the attacker. As I mentioned 
> before, while it would cut down tremendously on scans, I would see the 
> occasional false positive in my bans. Things such as my own IP or 127.0.0.1 
> or a NAT'd address. Using your variable, in my own testing, seems to 
> alleviate *some* of that.
> 
> When calling from a NAT'd phone, it used to pull the NAT IP, but now will 
> pull the public one, which is good. But when I was using sipp to try and 
> spoof my IP to see the effect, I noticed some strange behavior...
> 
> The first few attempts would show up as:
>     -- Executing [service@from-pstn-unknown:6] Set("SIP/5060-000003a1", 
> "BANIP=127.0.1.1") in new stack
>     -- Executing [service@from-pstn-unknown:7] NoOp("SIP/5060-000003a1", "IP 
> is 127.0.1.1") in new stack
>     -- Executing [service@from-pstn-unknown:8] System("SIP/5060-000003a1", 
> "echo 127.0.1.1 >> /mnt/kd/banlist") in new stack
> using the SIPCHANINFO(recvip) variable. I wasn't even specifying any special 
> IP, just running it against my box. 
> 
> The invite looked like this:
> --==--
> <--- SIP read from 72.64.129.130:1316 --->
> INVITE sip:[email protected]:5060 SIP/2.0
> Via: SIP/2.0/UDP 127.0.1.1:5060;branch=z9hG4bK-9481-1-0
> From: sipp <sip:[email protected]:5060>;tag=9481SIPpTag001
> To: sut <sip:[email protected]:5060>
> Call-ID: [email protected]
> CSeq: 1 INVITE
> Contact: sip:[email protected]:5060
> Max-Forwards: 70
> Subject: Performance Test
> Content-Type: application/sdp
> Content-Length:   129
> 
> v=0
> o=user1 53655765 2353687637 IN IP4 127.0.1.1
> s=-
> c=IN IP4 127.0.1.1
> t=0 0
> m=audio 6000 RTP/AVP 0
> a=rtpmap:0 PCMU/8000
> --==--
> 
> Which is identical to the way my NAT'd phone's invite looked. The only 
> difference is that the BANIP for my phone was it's public address, whereas 
> the BANIP for the sipp call above was 127.0.1.1. Seems weird.
> 
> Even weirder, when I used sipp to launch ten calls at once, the first two 
> showed up as 127.0.1.1, the rest showed up as my public IP. This was using 
> simply "./sipp [host". I wonder if this is some kind of bug?
> 
> When changing the from/contact/etc. sip headers manually, it doesn't seem to 
> have any affect, and sets the correct SRC IP for the variable. I assume 
> changing the IP header would allow you to pass the variable a spoofed result, 
> which in turn could be used as a form of DoS attack.
> 
> -James
> 
> On Wed, May 18, 2011 at 7:02 PM, Lonnie Abelbeck <[email protected]> 
> wrote:
> James,
> 
> By default "syslogd -s 1024 -m 60 -b 2" /var/log/messages are rotated at 1MB. 
>  Note that if the syslog is rotated the pre-existing ban'ed IP are not 
> removed, unless the box is rebooted or the firewall is restarted.  I have 
> only seen minor effects on a net5501 under these conditions.  A single 
> (albeit complex) 'sed' call does the grunt-work in the adaptive-ban plugin.
> 
> If PERSISTLOG = yes, then the logs are rotated at 10MB (and on slow flash 
> instead of RAM) this could become slow.  I never set PERSISTLOG.  Possibly we 
> need more control of the syslogd options with PERSISTLOG = yes .
> 
> Michael and I have been playing around with the idea (spawned by you) of 
> generating a Log() for the adaptive-ban plugin to catch.  To get the IP 
> address we found a better method:
> --
> ; For Asterisk 1.4
> exten => s,n,Set(BANIP=${SIPCHANINFO(recvip)})
> exten => s,n,Log(NOTICE,\'${BANIP}\' - Dialplan Noted Suspicious IP Address)
> 
> ; For Asterisk 1.6/1.8
> exten => s,n,Set(BANIP=${CHANNEL(recvip)})
> exten => s,n,Log(NOTICE,'${BANIP}' - Dialplan Noted Suspicious IP Address)
> --
> 
> A question for anyone, is the BANIP value above spoof-able?
> 
> Lonnie
> 
> 
> 
> On May 18, 2011, at 5:23 PM, James Babiak wrote:
> 
> > Lonnie,
> >
> > Good idea, never thought about doing it that way.
> >
> > I would still personally want to keep track of them in some persistent file 
> > though to be reloaded on reboots.
> >
> > I also noticed that when my log files get large (>5MBs), the adaptive ban 
> > script seems to require large amounts of processing power. I noticed the 
> > other day where my load level was spiking close to 1. When I disabled the 
> > plugin, or started rotating my logs at 2MBs, it dropped dramatically. Have 
> > you had similar issues?
> >
> > Many attackers will actually try to place the call attempts using your own 
> > IP address, so I need to add the ability for it to filter out those IPs, 
> > otherwise it will put invalid entries into the banned list. It doesn't 
> > actually cause any negative side effects (outside of extra useless 
> > entries), but it also doesn't block the traffic.
> >
> > -James
> >
> > On Tue, May 17, 2011 at 8:08 PM, Lonnie Abelbeck 
> > <[email protected]> wrote:
> > James,
> >
> > Very clever!
> >
> > It probably is a little too convoluted, but if the dialplan contained:
> > --
> > exten => _.,n,Set(BLKIP1=${CUT(CHANNEL,\/,2)})
> > exten => _.,n,Set(BLKIP2=${CUT(BLKIP1,\-,1)})
> > exten => _.,n,Log(NOTICE,\'${BLKIP2}\' - Dialplan Ban IP Address)
> > --
> > it would generate the log
> > --
> > May 17 18:55:14 pbx local0.notice asterisk[30186]: NOTICE[30186]: Ext. s:5 
> > in @ default: '10.10.50.1' - Dialplan Ban IP Address
> > --
> > Then the AIF adaptive-ban plugin could be tweaked to have support for that 
> > forced syslog string.
> >
> > Lonnie
> >
> >
> > On May 17, 2011, at 2:14 PM, James Babiak wrote:
> >
> > > I too was getting scanned a lot. My system is locked down, so I wasn't 
> > > really worried about tollfraud, but it would fill up my logs and CDRs 
> > > which got annoying.
> > >
> > > I wanted to still be able to accept certain unauthenticated inbound calls 
> > > (conf@ and james@, etc.), so I couldn't disable them altogether. So I put 
> > > together this little dialplan entry as a last resort in my incoming 
> > > context:
> > >
> > > ; Don't accept any calls not identified above
> > > exten => _.,1,Progress()
> > > exten => _.,n,Set(CDR(userfield)=${EXTEN})
> > > exten => _.,n,Wait(1)
> > > exten => _.,n,Answer()
> > > exten => _.,n,Set(BLKIP1=${CUT(CHANNEL,\/,2)})
> > > exten => _.,n,Set(BLKIP2=${CUT(BLKIP1,\-,1)})
> > > exten => _.,n,Noop(BLOCKING ALL VOIP TRAFFIC FROM ${BLKIP2})
> > > exten => _.,n,System(echo ${BLKIP2} >> /mnt/kd/banlist)
> > > exten => _.,n,System(iptables -A ADAPTIVE_BAN_CHAIN -p udp -s ${BLKIP2} 
> > > -j ADAPTIVE_BAN_DROP_CHAIN)
> > > exten => _.,n,Zapateller()
> > > exten => _.,n,Playback(the-number-u-dialed)
> > > exten => _.,n,SayDigits(${EXTEN})
> > > exten => _.,n,Playback(has-been-disconnected&or&no-longer-in-service)
> > > exten => _.,n,Playback(check-number-dial-again)
> > > exten => _.,n,Congestion(5)
> > > exten => _.,n,Hangup()
> > >
> > > It will echo the IP address into a persistent banlist (which gets 
> > > reimplemented on a reboot), and then adds an iptables rule to block any 
> > > more udp traffic from that host. So if someone tries to scan me, the 
> > > first attempt will be accepted and logged, but any future attempts will 
> > > be blocked.
> > >
> > > Has helped tremendously!
> > >
> > > And I use the adaptive ban plug-in for sshd and asterisk user account 
> > > scans.
> > >
> > > -James
> > >
> > > On Thu, Apr 28, 2011 at 9:19 AM, Lonnie Abelbeck 
> > > <[email protected]> wrote:
> > >
> > > On Apr 28, 2011, at 7:27 AM, Ingmar Schraub wrote:
> > >
> > > > On 04/28/2011 01:06 PM, Joss Giffard wrote:
> > > >> Hi,
> > > >>
> > > >> I recently updated our asterisk system to astlinux 0.7.7 whilst moving
> > > >> to a new SIP trunk provider. Everything seems to be up and running
> > > >> correctly apart from the fact that very occasionally each of the VoIP
> > > >> phones will receive an incoming call from 'asterisk' that once answered
> > > >> is simply silence... I was wondering if anyone else has experienced
> > > >> anything similar or has any idea what would be causing this (or indeed
> > > >> how to cure it). The phones themselves are all Grandstream GXP2000s.
> > > >
> > > > Looks like SIP scanning/spamming/toll fraud attack. You could tweak your
> > > > Asterisk configuration to not allow any other un-authenticated inbound
> > > > calls than from your SIP trunk provider and/or add some further security
> > > > controls to prevent such things.
> > > >
> > > > Here is a report from someone who had a similar experience:
> > > >
> > > > http://www.fonality.com/trixbox/forums/trixbox-forums/open-discussion/blank-call-caller-id-asterisk
> > > >
> > > > There are also some ideas on how to block such calls. Some are good,
> > > > some may not make sense to everyone.
> > > >
> > > > Regards,
> > > >
> > > > Ingmar
> > >
> > > I agree with Ingmar, additionally if you are using Asterisk 1.4 you might 
> > > want to set:
> > > --
> > > alwaysauthreject=yes
> > > --
> > > (Asterisk 1.8 defaults to yes) to reduce the amount of information to the 
> > > scanner.
> > >
> > > You may also want to enable the Adaptive Ban plugin:
> > >
> > > Network Tab -> Firewall Plugins: [ adaptive-ban ]
> > >
> > > set to ENABLED=1 via the { Configure Plugin } button, adjust any options 
> > > and "Restart Firewall" to apply.
> > >
> > > The Adaptive Ban firewall plugin operates on the same principle as 
> > > Fail2Ban, automatically blocking IP addresses that generate errors in the 
> > > logs over a pre-defined threshold.
> > >
> > > Lonnie
> > >
> > >
> > >
> > > ------------------------------------------------------------------------------
> > > WhatsUp Gold - Download Free Network Management Software
> > > The most intuitive, comprehensive, and cost-effective network
> > > management toolset available today.  Delivers lowest initial
> > > acquisition cost and overall TCO of any competing solution.
> > > http://p.sf.net/sfu/whatsupgold-sd
> > > _______________________________________________
> > > Astlinux-users mailing list
> > > [email protected]
> > > https://lists.sourceforge.net/lists/listinfo/astlinux-users
> > >
> > > Donations to support AstLinux are graciously accepted via PayPal to 
> > > [email protected].
> > >
> > > ------------------------------------------------------------------------------
> > > Achieve unprecedented app performance and reliability
> > > What every C/C++ and Fortran developer should know.
> > > Learn how Intel has extended the reach of its next-generation tools
> > > to help boost performance applications - inlcuding clusters.
> > > http://p.sf.net/sfu/intel-dev2devmay_______________________________________________
> > > Astlinux-users mailing list
> > > [email protected]
> > > https://lists.sourceforge.net/lists/listinfo/astlinux-users
> > >
> > > Donations to support AstLinux are graciously accepted via PayPal to 
> > > [email protected].
> >
> >
> > ------------------------------------------------------------------------------
> > What Every C/C++ and Fortran developer Should Know!
> > Read this article and learn how Intel has extended the reach of its
> > next-generation tools to help Windows* and Linux* C/C++ and Fortran
> > developers boost performance applications - including clusters.
> > http://p.sf.net/sfu/intel-dev2devmay
> > _______________________________________________
> > Astlinux-users mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/astlinux-users
> >
> > Donations to support AstLinux are graciously accepted via PayPal to 
> > [email protected].
> >
> > ------------------------------------------------------------------------------
> > What Every C/C++ and Fortran developer Should Know!
> > Read this article and learn how Intel has extended the reach of its
> > next-generation tools to help Windows* and Linux* C/C++ and Fortran
> > developers boost performance applications - including clusters.
> > http://p.sf.net/sfu/intel-dev2devmay_______________________________________________
> > Astlinux-users mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/astlinux-users
> >
> > Donations to support AstLinux are graciously accepted via PayPal to 
> > [email protected].
> 
> 
> ------------------------------------------------------------------------------
> What Every C/C++ and Fortran developer Should Know!
> Read this article and learn how Intel has extended the reach of its
> next-generation tools to help Windows* and Linux* C/C++ and Fortran
> developers boost performance applications - including clusters.
> http://p.sf.net/sfu/intel-dev2devmay
> _______________________________________________
> Astlinux-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/astlinux-users
> 
> Donations to support AstLinux are graciously accepted via PayPal to 
> [email protected].
> 
> ------------------------------------------------------------------------------
> What Every C/C++ and Fortran developer Should Know!
> Read this article and learn how Intel has extended the reach of its 
> next-generation tools to help Windows* and Linux* C/C++ and Fortran 
> developers boost performance applications - including clusters. 
> http://p.sf.net/sfu/intel-dev2devmay_______________________________________________
> Astlinux-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/astlinux-users
> 
> Donations to support AstLinux are graciously accepted via PayPal to 
> [email protected].


------------------------------------------------------------------------------
What Every C/C++ and Fortran developer Should Know!
Read this article and learn how Intel has extended the reach of its 
next-generation tools to help Windows* and Linux* C/C++ and Fortran 
developers boost performance applications - including clusters. 
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
Astlinux-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/astlinux-users

Donations to support AstLinux are graciously accepted via PayPal to 
[email protected].

Reply via email to