Tấn công từ chối dịch vụ phân tán (tấn công DDoS) có thể gây ra hậu quả nghiêm trong cho bất kỳ doanh nghiệp nào. Vậy làm thế nào để có thể ngăn chặn một cuộc tấn công DDoS?
Nếu bạn đang trong mùa cao điểm, nhưng số lượng đơn đặt hàng lại giảm đột biến hoặc website đột nhiên biến mất trên Internet, bạn có thể đã trở thành nạn nhân của một cuộc tấn công từ chối dịch vụ phân tán (tấn công DDoS).
Thông thường để triển khai một cuốc tấn công từ chối dịch vụ (DoS) bằng cách này hay cách khác attacker (kẻ tấn công) sẽ tạo một lượng lớn traffic (lưu lượng mạng tới máy chủ web (VPS, hosting, cloud, baremetal, …) nhằm mục đích làm cạn kiệt tài nguyên máy chủ ví dụ: quá tải về cpu, disk IO, băng thông mạng, thông lượng mạng (throughput) Khiến cho máy chủ ứng dụng web ngưng hoạt động và không thể cung cấp dịch vụ tới người dùng hợp lệ.
Do việc sử dụng một máy tính để tấn công một hệ thống lớn là không khả thi nên attacker (kẻ tấn công) sẽ sử dụng một hệ thống được gọi là botnet (một tập hợp các máy tính dưới quyền kiểm soát của kẻ tấn công do bị nhiễm virus hoặc mã độc) để tấn công vào máy chủ ứng dụng web của chúng ta. Nhằm tạo ra một lượng traffic khổng lồ. Hình thức này được gọi là tấn công từ chối dịch vụ phân tán (DDoS). Thông thượng các hệ thống botnet sẽ phân bố khắp internet (vì có nhiều người bị lây nhiễm mã độc do attacker tạo ra) nên việc sử dụng tường lửa chặn 1 IP hay một dải IP là không khả thi. Và nếu chặn như vậy có thể dẫn tới chặn nhầm nhiều người dùng hợp lệ.
Thông thường các cuộc tấn công từ chối dịch vụ phân tán DDoS với lượng băng thông lớn (volume attack) rất khó để phòng chống. Chúng ta chỉ có thể hạn chế chúng mà thôi. Sau đây là một vài trick nho nhỏ khá hữu ích cho các bạn.
Đâ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 tấn công sau đó 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.
1
2
3
4
5
6
7
8
9
|
<b>Cách 2: Chống tải lại trang web có ác ý</b>
|
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:
1
2
3
4
5
6
7
|
$text = $HTTP_SERVER_VARS[‘QUERY_STRING’];
$text = preg_replace(“#php\&#si”,’php?’,$text);
echo(‘<center><a href=http://www.domain.com/?’.$text.’>;[CLICK HERE TO ENTER]’);
?>
|
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.
Chú ý là cách này chỉ áp dụng cho website đang sử dụng server chạy trên nền tảng Linux.
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 tấn công máy chủ ứng dụng 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.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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 ”;
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 );
|
Đ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.
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.
Bạn có thể lựa chọn cài đặt một số phần mềm firewall mã nguồn mở để bảo vệ VPS hoặc máy chủ của mình như: https://en.wikipedia.org/wiki/List_of_router_and_firewall_distributions
Một trong những hệ thống tường lửa được ưa chuộng nhất hiện nay là PFSense. Pfsense có thể cài đặt nhanh chóng và dễ dàng, có giao diện để quản lý, tích hợp nhiều module tiện dụng như suricata hay Snort phục vụ cho công tác IDS, IPS (xem thêm tại đây). Việc tùy biến tập luật (rules) dễ dàng. Tuy nhiên do là hệ thống tường lửa mềm nên vẫn tồn tại nhiều hạn chế.
Sử dụng Firewall cứng chuyên dụng
Phương án này là tốt nhất, chống được DDoS quy mô lớn. Nhưng chi phí CỰC KỲ đắt đỏ, ngoài phần cứng, Bạn cần trả thêm cả phí phần mềm đi kèm, thường phần mềm tính phí theo năm.
Kdata tổng hợp