Chia Sẽ Kinh Nghiệm Về IT



Tìm Kiếm Với Google
-


Gởi Ðề Tài Mới  Gửi trả lời
 
Công Cụ Xếp Bài
Tuổi 10-11-2009, 10:51 AM   #1
hoctinhoc
Guest
 
Trả Lời: n/a
Cách Chống ddos hiệu quả (bằng Script)

Chống ddos hiệu quả (bằng Script)

I> Cách 1:

1. Giới thiệu:

Hiện giờ tình trạng ddos ngày càng diễn ra nhiều, nhất là khi nhiều script ddos đang được phổ biến. Trong đó ddos bằng flash là kiểu hay gặp nhất.
Script chống ddos này sẽ rất hiệu quả trong việc hạn chế hậu quả của ddos, làm giảm rất nhiều tác động của ddos. Tôi đã dùng từ lâu rồi - nhiều lần không vào được website do bị ddos, nhưng bật script này lên vài phút là có thể vào lại được! Một trong những diễn đàn tin học lớn nhất Việt Nam - http://ddth.com, sau nhiều lần bị ddos cũng phải bảo vệ site họ bằng biện pháp tương tự như script này thực hiện.

- Bất tiện khi sử dụng script này: Khách vào website bạn không thể truy cập vào ngay trang chủ mà phải click vào một link mới vào được.
- Tiện lợi: Việc bật tắt script rất đơn giản, bạn chỉ việc chỉnh sửa đúng một ký tự là có thể bật tắt script. Do đó thời gian nào website của bạn hay bị ddos thì hãy bật script này lên, lúc nào gió yên biển lặng thì lại tắt đi

2. Cách thiết lập:

Download file nén về & giải nén ra, trong đó có file antidos.php. Bạn mở ra và sửa các thiết lập cho file này:

$level = 1;

Chọn 1 trong hai giá trị cho $level: 1 hoặc 2
- Nếu chọn 1: Để truy cập trực tiếp vào site bạn, người dùng phải click vào một link trên một website nào đó, nếu không sẽ được đưa vào một trang trên đó có một link để vào site bạn
- Nếu chọn 2: Để truy cập trực tiếp vào site bạn, người dùng phải click vào một link trên chính website của bạn, nếu không sẽ được đưa vào một trang trên đó có một link để vào site bạn.
Nếu bạn chọn 2 thì bạn phải điền tên miền của bạn ở phần sau:
$yoursite = "mysite.com";

* Để chống ddos thông thường chỉ cần để $level = 1 là đủ, để = 2 sẽ bất tiện hơn một chút cho người xem đến với website bạn từ các website khác.

$scheme = 1;

Chọn 1 trong hai giá trị cho $scheme: 1 hoặc 2

- Chọn 1: Điều chỉnh bật/ tắt chống ddos bằng cách edit trực tiếp trên file này.
Nếu bạn chọn 1 thì bạn sẽ phải thiết lập phần sau:

$antidos = 1;

Chọn 1 để bật chống ddos, 0 để tắt.
Vì nhiều khi server mới bị ddos, mặc dù vào website chậm hoặc không vào được nhưng vẫn kết nối ftp được thì bạn có thể vào host bạn và sửa giá trị của phần này để bật chống ddos. Tuy nhiên, thường thì khi đã bị ddos một lúc lâu và site đã down, bạn không thể vào host để chỉnh sửa được nữa, do đó bạn nên chọn $scheme = 2...

- Nếu chọn 2: Điều chỉnh bật/ tắt chống ddos từ một file trên một host khác!
Khi website bạn bị ddos và bạn muốn bật chống ddos, trong khi bạn lại không thể vào host bạn, thì bạn chỉ việc sửa một file khác đặt trên một host khác để bật chống ddos. Do đó nếu chọn $scheme = 2 thì bạn sẽ phải thiết lập phần sau:

$determiner = "http://anothersite.com/determiner.txt";

Đây là đường dẫn tới file mà sẽ quyết định bật hay tắt chống ddos: để bật chống ddos, bạn chỉ cần mở file determiner.txt trên host đó và nhập vào đó số "1". Còn để tắt chống ddos thì bạn chỉ cần xóa số 1 đi! Rất đơn giản & nhanh gọn phải ko.
Bạn có thể kiếm một host free để đặt file text quy định việc bật tắt chống ddos này.

Nếu host chứa file này die và không thể truy cập vào file text này thì sao? Lúc đó script chống ddos sẽ được bật theo mặc định, do đó nếu host chứa file text này không ổn định, lúc tốt lúc die thì cũng không sao

3. Cách sử dụng:

Upload file antidos.php lên host của bạn, rồi ở tất cả các file php trên website của bạn (hoặc ít ra là những file php mà nhiều người biết và truy cập vào) chèn đoạn mã sau vào ĐẦU file - trước tất cả các nội dung khác:

Mã:
        
   <?php
require("antidos.php");
?>
Tùy vào vị trí tương đối của file php mà bạn chèn đoạn mã trên vào so với file antidos.php mà bạn sẽ phải chỉnh sửa đoạn mã trên. Vd: nếu bạn upload file antidos.php vào thư mục /public_html/ ( /public_html/antidos.php ) và đường dẫn tới file php mà bạn muốn bảo vệ là /public_html/forums/index.php thì bạn sẽ phải thay đoạn code trên thành:

Mã:
        
   <?php
require("../antidos.php");
?>
Trang web với định dạng html hay htm không thể sử dụng đoạn code trên được, bạn phải đổi đuôi file thành php mới có thể sử dụng được (việc đổi định dạng file html sang php sẽ không ảnh hưởng gì tới nội dung trang web đó)



File antidos.php chỉ là một script đơn giản, và cách thức chống ddos bằng cách kiểm tra referer cũng không có gì là mới cả, nhưng sự thật là rất ít admin biết tới cũng như áp dụng cách bảo vệ này (tôi cũng đã hỏi nhiều người), trong khi chúng ta lại cứ tìm kiếm những cách thức khác phức tạp hơn. Ít ra đây cũng là một biện pháp tạm thời khá hiệu quả trong việc hạn chế tác động của ddos (nếu ddos cường độ mạnh thì tất nhiên là không cách gì chống nổi nếu không có phần cứng đủ mạnh cũng như server ko được bảo mật cao) trong khi chúng ta chưa tìm ra được biện pháp nào thật sự hiệu quả hơn.



Cách thứ 2 : Code AntiDdos

Tạo 1 file antidos.php

Sửa đường dẫn đúng theo domain bạn dùng
Up lên host ngang hàng index...
Xác định file nào đc truy xuất nhiều nhất... thường là global.php

Mở file global.php ra

Tìm đoạn nào có chữ require
them vào

Mã:
  1. require ROOTPATH.'antidos.php';

Hoặc thêm ngay trên dưới

Mã:
  1. <?php

Ấn để copy đoạn mã bên trên
Chèn vào
  1. Mã:
        include("antidos.php");

Ấn để copy đoạn mã bên trên

Mã:
   
   include("antidos.php");

Ấn để copy đoạn mã bên trên

cũng đc

Cái này chỉ hạn chế phần nào chứ không chống hết đc :055:

Mã:
  
   <?php

//------ Phan thong tin can chinh sua ---------------

$level = 1; //level 1 la bao ve thuong, level 2 la bao ve cap cao hon

// Neu chon level 2 thi hay nhap ten mien cua minh vao phan sau:
$yoursite = "traitimyenbai.net/"; //Nhap ten mien nhu dinh dang tren va ko can http://www.


/* Ok, gio co 2 lua chon:
- bat anti ddos truc tiep tren file nay (1)
- bat no len tu 1 file o host khac (2)
*/

$scheme = 1; //Neu dien 1 la chon cach thu (1) va dien 2 la chon cach thu (2)

// Neu lua chon giai phap 1 thi hay edit phan duoi:
$antidos = 1; //Nhap 1 de bat dau antiddos va nhap 0 de tat di

// Neu lua chon giai phap 2 thi hay edit phan duoi:
$determiner = "http://traitimyenbai.net/determiner.txt"; //Link toi file ban muon bat hay tat, va trong file do hay nhap "1" hoac "0"


//Co the sua phan sau hoac giu nguyen cung duoc
$redirect = "
<br><br><br><br><br><br><br><br><br><br>
<center><font size='5'><br>
<center><font size='5'>Click <a href='".$_SERVER['REQUEST_URI']."'>[Vào Đây]</a> để đến trang bạn cần xem !</font></center>
";

// -------------- END SUB!!! ------------


//##########################################
// ### Okie, let's go (-_-) ###
//##########################################

function url_exists($url) {
$a_url = parse_url($url);
if (!isset($a_url['port'])) $a_url['port'] = 80;
$errno = 0;
$errstr = '';
$timeout = 30;
if(isset($a_url['host']) & $a_url['host']!=gethostbyname($a_url['host'])){
$fid = fsockopen($a_url['host'], $a_url['port'], $errno, $errstr, $timeout);
if (!$fid) return false;
$page = isset($a_url['path']) ?$a_url['path']:'';
$page .= isset($a_url['query'])?'?'.$a_url['query']:'';
fputs($fid, 'HEAD '.$page.' HTTP/1.0'."\r\n".'Host: '.$a_url['host']."\r\n\r\n");
$head = fread($fid, 4096);
fclose($fid);
return preg_match('#^HTTP/.*\s+[200|302]+\s#i', $head);
} else {
return false;
}
}


function on_off($file) {
$string = file_get_contents($file);
$fetch = strstr($string,"1");

if ($fetch) {
return true;
}

else {
return false;
}
}

function level_1() {
global $antidos, $redirect;
if($antidos){
if(!$_SERVER['HTTP_REFERER']) {
echo $redirect;
exit;
}
}
}

function level_2() {
global $antidos, $redirect, $yoursite;
if($antidos){
if(strpos($_SERVER['HTTP_REFERER'], 'http://www.'.$yoursite) !== 0) {
if(strpos($_SERVER['HTTP_REFERER'], 'http://'.$yoursite) !== 0) {
echo $redirect;
exit;
}
}
}
}

// Done function definition ^_^


if($scheme == 1) {
if($level == 1) level_1();
elseif($level == 2) level_2();
else { echo "Bạn phải chọn \$level = 1 hoặc \$level = 2"; exit; }
}

elseif($scheme == 2) {
if (!url_exists($determiner)) $antidos = 1;
else { $antidos = on_off($determiner); }

if($level == 1) level_1();
elseif($level == 2) level_2();
else { echo "Bạn phải chọn \$level = 1 hoặc \$level = 2"; exit; }
}

else {
echo "Bạn phải chọn \$scheme = 1 hoặc \$scheme = 2";
exit;
}

?>

chúc các bạn có thể hoàn thành được


Theo: zinone


  Trả lời ngay kèm theo trích dẫn này
Gửi trả lời


Công Cụ
Xếp Bài

Quyền Hạn Của Bạn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Hình Cảm xúc đang Mở
[IMG] đang Mở
Mã HTML đang Tắt




Bây giờ là 10:42 PM. Giờ GMT +7



Diễn đàn tin học QuantriNet
quantrinet.com | quantrimang.co.cc
Founded by Trương Văn Phương | Developed by QuantriNet's members.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.