TrinOO:
là một trong các công cụ DDoS đầu tiên được phát tán rộng rãi. TrinOO có kiến
trúc Agent – Handler, là công cụ DDoS kiểu Bandwidth Depletion Attack, sử dụng
kỹ thuật UDP flood. Các version đầu tiên của TrinOO không hỗ trợ giả mạo địa chỉ
IP. TrinOO Agent được cài đặt lợi dụng lỗi remote buffer overrun. Hoạt động
trên hệ điều hành Solaris 2.5.1 à Red Hat Linux 6.0. Attack – network giao tiếp
dùng TCP (attacker client và handler)
và UDP (Handler và Agent). Mã hóa
giao tiếp dùng phương pháp mã hóa đối xứng giữa Client, handler và Agent.
Tribe Flood Network (TFN): Kiểu kiến trúc
Agent – Handler, công cụ DDoS hoễ trợ kiểu Bandwidth Deleption Attack và
Resourse Deleption Attack. Sử dụng kỹ thuật UDP flood, ICMP Flood, TCP SYN và
Smurf Attack. Các version đầu tiên không hỗ trợ giả mạo địa chỉ IP, TFN Agent
được cài đặt lợi dụng lỗi buffer overflow. Hoạt động trên hệ điều hành Solaris
2.x và Red Hat Linux 6.0. Attack – Network giao tiếp dùng ICMP ECHO REPLY
packet (TFN2K hỗ trợ thêm TCP/UDP với tính năng chọn protocol tùy ý), không mã
hóa giao tiếp (TFN2K hỗ trợ mã hóa)
Stacheldraht: là biến thể của TFN có thêm khả năng updat Agent tự động.
Giao tiếp telnet mã hóa đối xứng giữa Attacker và Handler.
Shaft: là biến thể của TrinOO, giao tiếp Handler – Agent trên
UDP, Attacker – Hendle trên Internet. Tấn công dùng kỹ thuật UDP, ICMP và TCP
flood. Có thể tấn công phối hợp nhiều kiểu cùng lúc. Thống kê chi tiết cho phép
attacker biết tình trạng tổn thất của nạn nhân, mức độ quy mô của cuộc tấn công
để điều chỉnh số lượng Agent.
Công
cụ DDoS dạng IRC – Based
Công cụ DDoS dạng
IRC-based được phát triển sau các công cụ dạng Agent – Handler. Tuy nhiên, công
cụ DDoS dạng IRC phức tạp hơn rất nhiều, do tích hợp rất nhiều đặc tính của các
công cụ DDoS dạng Agent – Handler.
Trinity:
là một điển hình của công cụ dạng này. Trinity có hầu hết các kỹ thuật tấn công
bao gồm: UDP, TCP SYS, TCP ACK, TCP fragment, TCP NULL, TCP RST, TCP random
flag, TCP ESTABLISHED packet flood. Nó có sẵn khả năng ngẫu nhiên hóa địa chỉ
bên gởi. Trinity cũng hỗ trợ TCP flood packet với khả năng ngẫu nhân tập
CONTROL FLAG. Trinity có thể nói là một trong các công cụ DDoS nguy hiểm nhất.
Ngoài ra có thể nhắc
thêm về một số công cụ DDoS khác như Knight, được thiết kế chạy trên Windows, sử
dụng kỹ thuật cài đặt của troijan back Orifice. Knight dùng các kỹ thuật tấn
công như SYV, UDP Flood và Urgent Pointer Flooder.
Sau cùng là Kaiten,
là biến thể của Knight, hỗ trợ rất nhiều kỹ thuật tấn công như: UDP, TCP flood,
SYN, PUSH + ACK attack. Kaiten cũng thừa hưởng khả năng ngẫu nhiên hóa địa chỉ
giả mạo của Trinity.
Phòng chống DDoS
Anti DDoS Guardian
Anti DDoS Guardian là một phần mềm chống DDos cho
Server, VPS, host chạy hệ điều hành Windows cực kì mạnh mẽ, hiệu quả. Nó một ứng
dụng đa năng mạnh mẽ được thiết kế để bảo vệ một loạt các máy chủ Windows chống
lại các mối đe dọa của các cuộc tấn công từ chối dịch vụ máy chủ. Tùy biến cao,
tính năng phong phú và hiệu quả.
Hình 4.1 Giao diện
Anti DDoS Guardian
·
Lưu lượng mạng và quản lý kết nối TCP:
Giới hạn số luồng trên mạng, băng thông của khách hàng, khách hàng đồng thời số
lượng kết nối TCP và tỷ lệ kết nối TCP.
·
TCP nửa mở điều khiển kết nối.
·
UDP kiểm soát dòng chảy: Giới hạn băng
thông UDP, tỷ lệ kết nối UDP và tốc độ gói UDP.G
·
Chặn địa chỉ IP của quốc gia bất kì
·
Chặn các địa chỉ IP hoặc dãy địa chỉ.
·
Tường lửa bảo vệ. Các quy tắc tường lửa
được dựa trên địa chỉ IP từ xa, cổng, giao thức, và các yếu tố TCP / IP khác.
·
IP danh sách đen và danh sách trắng:
Giám hộ kiểm soát của người sử dụng truy cập Internet trong các lĩnh vực cụ thể
bằng cách thiết lập danh sách đen hoặc danh sách trắng.
·
Hỗ trợ nhiều định dạng danh sách IP, như
htaccess của Apache.
·
IP danh sách cập nhật tự động.
·
Quy tắc đặc biệt.
·
Real-Time hoạt động mạng lưới giám sát.
Chống DDoS The Guardian màn hình mỗi gói vào và ra trong Real-Time. Nó hiển thị
các địa chỉ địa phương, địa chỉ từ xa, và các thông tin khác của từng phiên mạng.
·
Nhìn lên địa chỉ IP. Chống DDoS giám hộ
trông lên các địa chỉ IP và quyền sở hữu thông tin từ xa.
·
Đăng nhập tập tin. Chống DDoS The
Guardian ghi mỗi địa chỉ IP bị chặn và được cho phép.
·
Chạy chống DDoS giám hộ như một dịch vụ
Windows.
·
Hỗ trợ 64-bit Windows hệ điều hành, chẳng
hạn như 64-bit Windows 2008, 64-bit Windows Vista, 64-bit Windows 7, 64-bit
Windows 8 và 64-bit Windows 2012
Có rất nhiều tính năng và sự linh hoạt trong sử dụng
phần mềm này, trong khuôn khổ bài viết chỉ đề cập chính là chức năng Anti DDoS.
Click biểu tượng khóa màu vàng trên menu để mở ra giao diện thiếp lật cài đặt:
·
TCP connection: Số lượng kết nối tối đa
giao thức TCP được phép mở trong số giây đối với mỗi IP. (10/1s là phù hợp)
·
Bandwidth: Kích thước tối đa gói tin với
mỗi IP (kb/s). Một kết nối TCP hợp lệ thường có kích thước 576~1500. Bạn nên
tính toán cho phù hợp nếu mở nhiều kết nối TCP lẫn UDP với máy chủ. (Có thể
tăng lên nhưng không nên tăng lên nhiều 2048~6144)
·
UDP connection: Số lượng gói tin UDP được
phép mở kết nối với mỗi giây (Giao thức này ít khi sử dụng chủ yếu dịch vụ DNS
nên hạ thấp xuống 10~50 để chống UDP FLOOD)
·
UDP packet rate: Số lượng gói tin ICMP
được phép mở kết nối với mỗi giây (Giao thức dùng để ping kiểm tra máy chủ nên
các bạn có thể hạ thấp xuống 5~10 để chống ICMP FLOOD)
Hình 4.2: Cấu
hình Anti DDoS Guardian
·
TCP half-open: Số lượng kết nối (1/2)
TCP tối đa được mở. (Nên hạ thấp xuống để chống SYN FLOOD, HTTP FLOOD) Nhưng nếu
hạ thấp, nhiều kết nối hợp lệ đến sẽ gặp khó khăn (nên từ 30~100)
·
UDP bandwith: lưu lượng kết nối UDP tối
đa được kết nối (1000~5000).
·
Client count: Giá trị thời gian IP kết nối
thất bại sẽ bị ngắt. (60~120) Số lượng kết nối tối đa giao thức TCP được giữ với
mỗi IP (20 là hơi nhiều với mỗi IP có thể
giảm xuống)
WatchGuard
Tường
lửa (firewall) là một thiết bị mạng
truyển thống trong việc bảo vệ hệ thống mạng. Với những thiết bị tường lửa đời
đầu chủ yếu hoạt động theo kiểu Packet Filtering, các chính sách được thiết lập
để cho phép hoặc ngăn chặn một gói tin ra/vào các vùng mạng do tường lửa phân
tách. Nhưng trước cơ an ninh mạng ngày càng nhiều, tường lửa UTM được ra đời nhằm
giải quyết các bài toán này.
Với
những thiết bị/ứng dụng tường lửa truyền thống như Iptable, pfsense...hoạt động
theo cơ chế Packet Filtering, chỉ lọc một số thông tin chính trên gói tin như địa
chỉ nguồn, đích, port...Chứ không quan tâm nhiều đến nội dung gói tin. Cơ chế
hoạt động đơn giản cho phép các thiết bị/ứng dụng tường lửa hoạt động nhanh, nhẹ
nhưng lại không thể bảo vệ hệ thống một cách hoàn hảo. Trên Internet hiện nay tồn
tại nhiều nguy hiểm đến từ:
·
Virus, spyware, malware...đã làm điêu đứng
bao nhiêu người dùng, hệ thống nhờ cơ chế lây lan, lan truyền đơn giản.
·
Email spam gây ra sự khó chịu cho người
dùng
·
Malsite là những website có chứa mã độc
·
Tấn công mạng dựa vào các lỗ hổng trên
máy chủ, thiết bị mạng...
·
Tấn công DDoS/DOS làm tê liệt hệ thống,
gây nghẽn mạng làm người dùng không truy cập được các dịch vụ
·
Ứng dụng nguy hiểm là các ứng dụng được
cài đặt ngầm vào hệ thống, gây chậm máy, đánh cắp dữ liệu...
·
....và con nhiều nguy hiểm nữa.
Thế thì với firewall hoạt động dựa theo cơ chế
Packet Filtering có thể giúp người dùng bảo vệ hệ thống trước những nguy cơ
trên không? Câu trả lời là không và tường lửa UTM (firewall Unified Threat
Management) ra đời. Ngay từ tên gọi đã cho thấy firewall UTM có thể quản lý tập
trung các mối nguy hiểm. Tường lửa UTM bao gồm các module như Antivirus,
Antispam, IPS, Application Control, WebBlocker, DDoS Defense...giúp bảo vệ hệ
thống.
Với hệ thống WatchGuard, ta có thể cấu hình trên
Firebox để chống tấn công DDOS như sau:
Giới hạn số lượng kết nối tới máy chủ (Per Server
Quota): giới hạn lượng kết nối mỗi giây từ ngoài qua Firewall vào tới máy chủ.
Hạn chế này bao gồm cả các kết nối tới máy chủ nội bộ được cho phép bởi các
Policy static NAT. Giới hạn số lượng kết nối tới các máy chủ dựa trên số lượng
yêu cầu kết nối tới một IP đích. Khi đạt tới giới hạn, Firebox sẽ tự động giảm
số lượng kết nối tới máy chủ. Ví dụ: Nếu giới hạn trên máy chủ là 100 thì
Firebox sẽ tự động drop yêu cầu kết nối thứ 101 trong cùng thời điểm vào hệ thống
từ cùng một địa chỉ IP bên ngoài vào. IP nguồn này không bị đưa vào danh sách bị
chặn. Giới hạn lượng yêu cầu từ máy client (Per
Client Quota): giới hạn lượng kết nối ra ngoài mỗi giây từ trong hệ thống nội
bộ được bảo vệ bởi Firebox. Giới hạn này dựa trên số lượng yêu cầu kết nối ra
ngoài của bất kỳ IP nội bộ nào và bất kỳ IP bên ngoài nào. Trong giao diện Web
quản trị Firebox, ta tiếp tục tiến hành như sau:
·
Chọn menu Firewall à
Default Packet Handling.
Hình 4.3 Giới hạn
số lượng kết nối máy chủ
·
Chọn Per Server Quota và Per Client
Quota
·
Đặt các giá trị giới hạn của Per Server
Quota và Per Client Quota
Nếu
dùng Policy Manager, ta thiết lập như sau:
·
Chọn menu Setup à
Default Threat Protection à Default Packet Handling.
Hình 4.4 Quản lý
chính cách trong WatchGuard
·
Chọn Per Server Quota và Per Client Quota
·
Đặt các giá trị giới hạn của Per Server
Quota và Per Client Quota.
ConfigServer Security &
Firewall
ConfigServer Security & Firewall (hay CSF) là một firewall rất phổ biến và
hiệu quả được sử dụng trên các server Linux hiện nay. Bên cạnh những tính năng
cơ bản như một firewall, CSF còn có những chức năng bảo mật nâng cao khác như
ngăn chặn flood login, port scans, SYN floods…Sau khi cài đặt chúng ta sẽ cấu
hình như sau để phòng chống DoS, DDoS.
Số
lượng kết nối tối đa cho phép từ một IP, bạn có thể đặt giá trị này theo yêu cầu
máy chủ.
[CT_LIMIT =100]
Đặt khoảng thời
gian theo dõi kết nối. Các lần scan để kiểm tra cách nhau 30s.
[CT_INTERVAL = "30"]
Gửi email thông
báo nếu một IP bị block.
[CT_EMAIL_ALERT = "1"]
Thời gian block
một IP nếu như vi phạm.
[CT_BLOCK_TIME = "1800"]
Phát
hiện tấn công brute force từ mạng botnet. Nếu như một account bị login sai quá
giới hạn cho phép từ nhiều IP khác nhau thì sẽ block toàn bộ IP đã login sai.
[LF_DISTATTACK
= "1"]
Số
lượng IP tối thiểu để nhận biết đây là tấn công phân tán (DDOS)
[LF_DISTATTACK_UNIQ
= "3"]
Bật
chức năng synflood protection : Nếu 1 IP gửi 30 cú SYN trong vòng 1s và số lượng
SYN connection tồn tại trên server đạt trên 40 thì block IP đó (block tạm thời)
[SYNFLOOD
= "1"]
[SYNFLOOD_RATE
= "30/s"]
[SYNFLOOD_BURST = "40"]
Giới
hạn số lượng new concurrent connection đến server trên mỗi IP. Ví dụ mỗi IP được
phép mở 20 concurrent new connection đến port 80 trên server.
[CONNLIMIT =
"80;20"]
Giới hạn số lượng connection đến một
port cụ thể trong một khoảng thời gian nhất định. Ví dụ như trên có nghĩa : nếu
nhiều hơn 20 kết nối tcp đến port 80 trong vòng 5s thì block IP đó tối thiểu 5s
tính từ packet cuối cùng của IP đó. Sau 5s IP đó sẽ tự động được unlock và truy
cập bình thường.
[PORTFLOOD = "80;tcp;20;5"]
Chống
DDoS Website
Tấn công DDOS hay còn được gọi tấn công từ chối dịch
vụ đơn giản được hiểu là tạo ra 1 lượt truy cập ảo ồ ạt vào một địa chỉ website
tại cùng một thời điểm nào đó đã định sẵn nhằm “đánh sập” máy chủ lưu trữ khiến
nó chạy chậm hoặc không thể chạy được nữa. 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.
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>
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 đó 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 Linux.
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. 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: (i) 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. (ii) 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.
No comments:
Post a Comment