Arşiv Anasayfa Linux
Sayfalar: 1
40 Üzeri Ip Bağlantı Kuramasın. By: [B][R][N] Date: January 24, 2010, 05:34:24 AM
Trojan saldırılarında httpd.conf maxclients sayısını aşarak httpd sayfalarına ulaşamamızı sağlayan saldırganlar için ufak bir httpd flooder güvenliğidir.
Sunucuda apf kurulu olması gereklidir. Scripte chmod yetkisi verip çalıştırmanız yeterlidir, script her 5 saniyede bir netstat çekip ipleri kontrol edecektir 40 üzeri bağlantı kuran ipler apf tarafından banlanacaktır.


KOD:#!/usr/bin/perl

####################
#  16.05.2006 tarihinde yazilmistir.
###################

# Kaç saniyede bir aratýlsýn
$delay = 5;
# Baðlantý ipi kaç tane baðlantý kurulursa atýlsýn
$allowed = 40;

open(STDERR, ">atilan.log");
print STDERR "load balancer starting " . `date`;


if (fork) { exit(0); }
$SIG{ALRM} = 'IGNORE';

while (1) {
sleep($delay);
&check_load();
}


sub check_load {

if($blocked && ((time) - $blocked) > 360000) {
system("/usr/local/sbin/apf -r");
$cdate = localtime((time));
print STDERR "$cdate firewall restart load: " . `date`;
$blocked = "";
return;
}

undef(%u);
open(CONN,"netstat -an|");
@conn = <CONN>;
foreach $c (@conn) {
if($c =~ m!^tcp +\d+ +\d+ +(\d{1,13}\.\d{1,13}\.\d{1,13}\.\d{1,13}):80 +(\d{1,13}\.\d{1,13}\.\d{1,13}\.\d{1,13}):\d+!)
{
$u{$2}++;
}
}

$t = 0;

foreach $i (keys %u) {
$t += $u{$i};
if($u{$i} > $allowed) {
system("/usr/local/sbin/apf -d $i");
$blocked = (time);
$cdate = localtime((time));
print STDERR "$cdate blocked: $i ( $u{$i} ) total connections: $t load: " . `uptime`;
}
}
close(CONN);
}


Sevgilerle.

SiteMap - İmode - Wap2