Thật sự thì không có phương pháp chống DDOS hiệu quả nhất nhưng nếu
với mức độ nhỏ và mang tính không chuyên khi sử dụng các phần mềm được
lập trình sẵn ở quy mô nhỏ lẻ thì ta hoàn toàn có thể chủ động phòng
chống.
Cách 1: Chống iframe.
Đây là phương pháp được xem là thô sơ nhất. Kẻ tấn
công sẽ mượn 1 website có lượt truy cập lớn nào đó chèn các iframe hướng
về website cần đánh rồi cho chạy lệnh refresh (tải lại) nhiều lần hoặc
họ viết sẵn 1 tập tin flash với công dụng tương tự rồi đặt lên website
và khi người dùng truy cập vào website này thì họ vô tình bất đắc dĩ trở
thành người tấn công website kia.
Với hình thức tấn công kiểu như thế này bạn hoàn toàn có thể chống lại
bằng cách chèn 1 đoạn mã Javascript chống chèn iframe từ các website
khác đến website của bạn.
<script language="JavaScript">
if (top.location != self.location)
{top.location = self.location}
</script>
Bạn có thể tại đoạn mã trên tại:
Cách 2: Chống tải lại trang web có ác ý
Một hình thức tấn công khác nữa là dùng phím F5 liên tục có chủ ý, hoặc
dùng một phần mềm được lập trình sẵn với công dụng tương tự (tải lại
trang web liên tục sau những khoảng thời gian định sẵn) của một nhóm
người làm cho trang web của bạn tải lại (reload) liên tục. Việc này có
thể làm tốn băng thông của trang web hoặc làm trang web chạy chậm vì
những kết nối ảo.
Với cách thức tấn công này thì nếu dùng cách một để chống coi như
là vô ích. Nếu bạn bị tấn công như thế này thì bạn hãy thiết lập tập tin
.htaccess với nội dung:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?domain.com [NC]
RewriteRule !antiddos.phtml http://www.domain.com/antiddos.phtml?%{REQUEST_URI} [QSA]
Sau đó tạo thêm một một tập tin antiddos.phtml có nội dung
<?
$text = $HTTP_SERVER_VARS['QUERY_STRING'];
$text = preg_replace("#php&#si",'php?',$text);
echo('<center><a
href=http://www.domain.com/?'.$text.'><font color=red size=5
face=Monotype>[CLICK HERE TO
ENTER]</font></a</center>');
?>
Sau đó bạn upload 2 tập tin này lên thư mục gốc của website. Như vậy là
mỗi khi truy cập vào website, nếu lần đầu tiên thì sẽ có thông báo yêu
cầu nhấn chuột thì bạn mới vào được website và ở các lần sau sẽ không có
và các phần mềm DDOS được lập trình sẽ bị chặn lại ở bước click chuột
để vào trang web ở lần truy cập đầu tiên nên việc tải lại trang web chỉ
đơn thuần là 1 trang HTML nhỏ không ảnh hưởng nhiều đến hệ thống.
Bạn có thể đoạn mã trên tại:
Chú ý là cách này chỉ áp dụng cho website đang sử dụng server chạy trên nền Linux.
Cách 3: Giới hạn số kết nối website tại một thời điểm
Khi một khách truy cập vào website thì sẽ tạo ra một truy vấn kết nối
với cơ sở dữ liệu (CSDL) lấy thông tin và trả về thông qua hiển thị của
website. Mỗi máy chủ sẽ có phép bao nhiêu truy vấn kết nối là hạn định
và khi vượt quá hạn mức này thì việc truy cập sẽ khó khăn hoặc không thể
truy xuất được. Các tin tặc lợi dụng vào điều này để tạo ra các truy
cập ảo, kết nối ảo thông qua proxy hay chuyên nghiệp hơn là mạng botnet
nhằm đánh sập trang web và phá hỏng CSDL website. Để hạn chế điều này ta
có thể chủ động giới hạn số kết nối truy vấn tin (lượt truy cập) cùng
một thời điểm.
Bạn thêm dòng đoạn mã sau vào trang chủ của website.
function server_busy($numer) {
if (THIS_IS == 'WEBSITE' && PHP_OS == 'Linux' and @file_exists (
'/proc/loadavg' ) and $filestuff = @file_get_contents ( '/proc/loadavg'
)) {
$loadavg = explode ( ' ', $filestuff );
if (trim ( $loadavg [0] ) > $numer) {
print '<meta http-equiv="content-type" content="text/html; charset=UTF-8" />';
print 'Lượng truy cập đang quá tải, mời bạn quay lại sau vài phút.';
exit ( 0 );
}
}
}
$srv = server_busy ( 1000 ); // 1000 là số người truy cập tại 1 thời điểm
Đoạn mã trên có ý nghĩa cho phép 1000 người online trên website tại
một thời điểm. Nếu vượt qua số 1000 thì khách truy cập sẽ nhận được
thông báo: Lượng truy cập đang quá tải. Mời bạn quay lại sau vài phút.
Bạn có thể tải đoạn mã trên tại:
Chú ý đoạn mã này chỉ áp dụng cho ngôn ngữ lập trình PHP.
Đây chỉ là ba cách chống đỡ mang tính chất giản đơn áp dụng cho
những đợt tấn công nhỏ lẻ. Để website của mình hoạt động tốt và có sức
chống chọi lại những đợt tấn công quy mô lớn bạn nên:
- Tối ưu hóa website ví dụ bạn có thể xây dựng bộ nhớ đệm (cache) cho website để nhằm giảm số kết nối vào CSDL.
- Lựa chọn nhà cung cấp hosting lưu trữ web tốt để có những đối phó với những đợt tấn công.