Tấn công từ chối dịch vụ phân tán (DDoS – Distributed Denial of Service) là hình thức tấn công nhằm làm quá tải hệ thống máy tính hoặc hệ thống mạng, khiến dịch vụ không thể hoạt động bình thường hoặc buộc phải ngừng cung cấp. Trong các cuộc tấn công DDoS, máy chủ mục tiêu bị “bão hòa” bởi một lượng lớn yêu cầu truy cập được tạo ra đồng thời từ nhiều nguồn khác nhau.
Khi số lượng yêu cầu vượt quá khả năng xử lý của máy chủ, tài nguyên hệ thống sẽ bị cạn kiệt, dẫn đến tình trạng không thể đáp ứng các yêu cầu hợp lệ. Hậu quả là người dùng không thể truy cập hoặc sử dụng các dịch vụ trên website và hệ thống bị tấn công.
Trong phần dưới đây, tôi xin giới thiệu một số lệnh cơ bản giúp kiểm tra và đánh giá tình trạng máy chủ khi nghi ngờ đang bị tấn công DDoS.
– Đếm lượng connection vào Port 80:
netstat -n | grep :80 |wc -l
– Kiểm tra số lượng connection đang ở trạng thái SYN_RECV:
netstat -n | grep :80 | grep SYN_RECV|wc -l
– Hiển thị tất cả các IP đang kết nối và số lượng kết nối từ mỗi IP:
netstat -an|grep :80 |awk '{print $5}'|cut -d":" -f1|sort|uniq -c|sort -rn
– Nếu muốn kiểm tra IP nào mở nhiều SYN thì thêm vào:
netstat -an|grep :80|grep SYN |awk '{print $5}'|cut -d":" -f1|sort|uniq -c|sort -rn
– Đối với server có nhiều IP, để kiểm tra IP nào đang bị tấn công:
netstat -plan | grep :80 | awk '{print $4}'| cut -d: -f1 |sort |uniq -c
– Hiển thị tất cả các IP đang kết nối và số lượng kết nối từ mỗi IP:
netstat -an | grep ':80' | awk '{print $5}' | sed s/'::ffff:'// | cut -d":" -f1 | sort | uniq -c
– Hiển thị số lượng kết nối mỗi loại
netstat -an | grep :80 | awk '{print $6}' | sort | uniq -c
61 ESTABLISHED
13 FIN_WAIT1
17 FIN_WAIT2
1 LISTEN
25 SYN_RECV
298 TIME_WAIT
– Hiển thị tất cả các IP đang kết nối và số lượng kết nối từ mỗi IP
watch "netstat -an | grep ':80' | awk '{print \$5}' | sed s/'::ffff:'// | cut -d\":\" -f1 | sort | uniq -c"
watch "netstat -an | grep :80 | awk '{print \$6}' | sort | uniq -c"
Khi đã phát hiện IP có dấu hiệu bất thường, bạn có thể sử dụng CSF để block IP đó lại.