[OpenSIPS-Users] Fwd: Re: How to protect OpenSIPS from undesidered requests (DoS attack?)
Roberto Spadim
roberto at spadim.com.br
Wed Mar 6 21:23:22 CET 2013
maybe a log file, and deny ip is faster
but if you want it per user, it's slower, since you must check if user is
ok in a database
using ip, you only need to log and a external program (ex fail2ban) can
block it via iptables, hosts.deny or other method
2013/3/6 Muhammad Shahzad <shaheryarkh at gmail.com>
> While this will work for small setups but i have feeling that this won't
> be suitable for high load productive systems, since it does same thing as
> fail2ban but runs INLINE, blocking other sip requests till it is finished.
>
> Thank you.
>
>
> On Wed, Mar 6, 2013 at 8:48 PM, Hubert Mickael <mickael at winlux.fr> wrote:
>
>> Hi,
>> Pike module to stop flood ?
>> I have add perl script at pike to add firewall rule in my freebsd.
>>
>> Example opensips conf:
>>
>> #------------------- module pike ---------------
>> loadmodule "pike.so"
>> #----------- pike params ------------
>> modparam("pike", "sampling_time_unit", 2)
>> modparam("pike", "reqs_density_per_unit", 80)
>> modparam("pike", "remove_latency", 130)
>> modparam("pike", "pike_log_level", -1)
>>
>> in script:
>>
>> * if(!pike_check_req())**
>> ** {**
>> ** if(perl_exec("pikesendmail"))**
>> ** {**
>> ** xlog("L_INFO","Fonction perl_exec PIKE OK");**
>> ** }**
>> ** xlog("L_WARN","PIKE_CHECK_REQ banned IP $si because of
>> flooding requests");**
>> ** exit;**
>> ** }*
>>
>> perl script:
>>
>>
>> sub pikesendmail
>> {
>> MIME::Lite->send('smtp', 'smtp.....');
>>
>> my $serverIP = OpenSIPS::AVP::get("serverIP");
>> my $sourceIP = OpenSIPS::AVP::get("sourceIP");
>>
>> my @exceptions = (@my IP);
>>
>> my $logfile = "/var/log/pikemodule.log";
>> my $date = localtime();
>> open LOGFILE, ">>$logfile" or die "cannot open logfile $logfile
>> for append: $!";
>>
>> my $subject = "IP $sourceIP blocked by server $serverIP";
>> my @body ;
>> my @argsbash ;
>> my @listeIP ;
>> my $maxid ;
>> my $newid ;
>> my $reglepresente = 0 ;
>> my $inhib = 0 ;
>> my $i=0;
>>
>> for $i (@exceptions)
>> {
>> if($sourceIP eq $i)
>> {
>> $inhib = 1 ;
>> last ;
>> }
>> }
>>
>> foreach(`ipfw list | grep ^005 | awk -F" " {'print \$5'}`)
>> {
>> push (@listeIP,$_) ;
>> }
>>
>> for(@listeIP){
>> print "$_";
>> if($_ =~ $sourceIP){
>> #print "regle deja presente\n";
>> $reglepresente = 1 ;
>> }
>> }
>>
>> if($reglepresente == 0 && $inhib == 0){
>>
>> $maxid=`ipfw list | grep ^005 | tail -n1 | awk -F" "
>> {'print \$1'} | sed "s/^00//"`;
>> if ($maxid eq ''){
>> $newid = 500 ;
>> }else{
>> $newid = $maxid+1 ;
>> }
>>
>>
>> @argsbash = ("ipfw", "add $newid deny ip from $sourceIP
>> to me");
>> if(system(@argsbash) == 0
>> or die "system @argsbash failed: $?"){
>> print LOGFILE "$date INFO : Nouveau blocage pour
>> SIP flooding \n";
>> print LOGFILE "$date INFO : Regle IPFW appliquee
>> ID $newid \n";
>> log(L_INFO, "SIP Flooding, IP $sourceIP blocked
>> with IPFW rule $newid\n");
>> }
>>
>> open(EMAILB,"/usr/local/libexec/templ_email.tpl") || die
>> ("Erreur d'ouverture de EMAILB") ;
>> while (<EMAILB>) {
>> $_ =~ s/PARA1/$sourceIP/g;
>> $_ =~ s/PARA2/$serverIP/g;
>> $_ =~ s/PARA3/$newid/g;
>> push (@body,$_);
>> }
>>
>> close(EMAILB);
>>
>> # Création d'un objet MIME::Lite avec les en-têtes du
>> message
>> my $message = MIME::Lite->new(
>> From => 'OpenSIPS <noreply at hexanet.fr><noreply at hexanet.fr>
>> ',
>> To => '',
>> Subject => "$subject",
>> "X-Mailer" => 'OpenSIPS',
>> Type => 'text/html',
>> Data => "@body",
>> );
>>
>> if($message->send()){
>> print LOGFILE "$date INFO : Mail envoye pour
>> blocage IP $sourceIP\n";
>> log(L_INFO, "SIP Flooding, mail has been sent\n");
>> }
>>
>> close LOGFILE ;
>> }
>>
>> return 1;
>> }
>>
>> bye
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>
>
>
> --
> Muhammad Shahzad
> -----------------------------------
> CISCO Rich Media Communication Specialist (CRMCS)
> CISCO Certified Network Associate (CCNA)
> Cell: +49 176 99 83 10 85
> MSN: shari_786pk at hotmail.com
> Email: shaheryarkh at googlemail.com
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>
--
Roberto Spadim
SPAEmpresarial
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20130306/8ba6a546/attachment-0001.htm>
More information about the Users
mailing list