XU LY NHANH DDOS RANDOM URL BANG 1 COMMAND

XỬ LÝ NHANH DDOS RANDOM URL BẰNG 1 COMMAND

Dạo này các Web bị DDOS nhiều dẫn đến nghẽn mạng, không thể truy cập được làm nhiều anh em. Hôm nay Digizone sẽ hướng dẫn anh em xử lý nhanh DDOS Random URL Bằng 1 Command

XU LY NHANH DDOS RANDOM URL BANG 1 COMMAND

XỬ LÝ NHANH DDOS RANDOM URL BẰNG 1 COMMAND

Tối qua đang chơi với con thì người anh thân thiết gọi điện, nhờ xem giúp VPS đang chạy bên provider khác bị tấn công DDoS khiến server bị quá tải. Do bất ngờ và máy chủ ko nằm hạ tầng bên mình nên mình chọn hướng tiếp cận xử lý nhanh gọn (vì cũng khuya rồi), sáng hôm sau thì sẽ setup bài bản sau.
Website chạy WP và bị tấn công kiểu Random URL (tạo ra những URL vô nghĩa – nhìn hình bên dưới). Đặc điểm nhận diện:
– Sử dụng method GET.
– URL random bộ charset “a-z” và “A-Z”, không chứa số, ký tự đặc biệt.
– Độ dài từ 4-10 ký tự
– HTTP version 2.0
– IP phần lớn nước ngoài
– User-Agent, Referer … đều random.
– Số lượng IP tấn công khoảng hơn 5000 IP
Có nhiều hướng tiếp cận để giải quyết:
– Chặn theo GeoIP
– Limit rate để lọc IP => chặn theo
– Limit rate IP quốc tế
– Challenge IP quốc tế
– Chặn Header Proxy
420649477 122115888938161365 1409611760135823419 n
Tuy nhiên cũng khuya và VPS này chưa có sẵn các môi trường, công cụ cần thiết nên mình chọn hướng tiếp cận cục súc: parse log realtime và đẩy vào firewall. Mình chọn hướng này vì các bạn có xem stream của mình về DDoS sẽ dễ dàng nhận kiểu đánh này thông qua proxy, số lượng IP là HỮU HẠN (vì không fake được IP). Chặn hết IP botnet là xong 😀
Vì số lượng IP lớn, nên mình dùng ipset:
# Khởi tạo set
ipset create BLACKLIST hash:ip
# Inject rule vào iptables (table filter – chain INPUT): match IP trong BLACKLIST thì DROP
iptables -A INPUT -p tcp -m set –match-set BLACKLIST src -j DROP
Câu lệnh quan trọng nhất và cũng là trick mình muốn chia sẻ hôm nay: tail log realtime kết hợp với grep để đẩy IP vào firewall:
——–
tail abc.com-access_log -f | egrep –line-buffered “GET (/[a-zA-Z]{4,10} HTTP/2.0)” | egrep –line-buffered -v “admin|login” | awk ‘{print $1}’ | while read ip ; do echo “Blocking: $ip”; ipset -exist add BLACKLIST $ip; done
——–
Giải thích:
– tail abc.com-access_log -f: theo dõi log realtime, cập nhật các dòng log mới
– egrep –line-buffered “GET (/[a-zA-Z]{4,10} HTTP/2.0)”: lọc ra các request có dấu hiệu giống với tấn công như mô tả ở trên. Tham số cần lưu ý là “line-buffered” để chạy realtime kết hợp với “tail -f”. Nếu ko có cái này, lệnh egrep chỉ chạy 1 lần và ko cập nhật entry mới
– egrep –line-buffered -v “admin|login”: whitelist các URL false positive
– awk ‘{print $1}’ | while read ip ; do echo “Blocking: $ip”; ipset -exist add BLACKLIST $ip; done: Lấy IP và cập nhật vào danh sách BLACKLIST
Treo lệnh trên ở screen mode cho nó chạy rồi tắt máy đi ngủ, sáng mai dậy setup phòng thủ bài bản sau (vừa ngủ vừa hi vọng attacker ko đổi kiểu đánh =]])