Thiết lập Rulers Chống DDOS với Cloudflare
Như đã chia sẻ trong bài viết trước đó, Website của Tôi bị tấn công DDOS nặng nề khiến cho hầu hết các nhà cung cấp dịch vụ tại Việt Nam phải từ chối phục vụ và hoàn tiền.
Hôm nay, Sau hơn 30 ngày và Website vẫn sống khoẻ cùng với việc theo dõi khối lượng tấn công tăng vọt trên Cloudflare nhưng Website vẫn ổn định và CPU chỉ ở mức dưới 5%, Tôi viết bài này chia sẻ với các bạn chút hiểu biết nông cạn mà Tôi đã ứng dụng để chống lại đợt tấn công quy mô lớn này với hơn 9 tỷ request trong chưa tới 30 ngày và trong 2 ngày gần nhất, mỗi ngày lượng request đã tăng gấp đôi, 500tr request mỗi ngày.
Tổng dữ liệu qua Cloudflare gánh là 17TB.
1. CLOUDFLARE PRO
Tôi phải mua Cloudflare Pro $20/tháng để có thêm các tính năng chống DDOS và Web Application Firewall với nhiều Ruler mà Cloudflare thiết lập cho WordPress và các kiểu tấn công DDOS khác.
(Hình số 2)
Các Ruler riêng
Tôi sử dụng tổng cộng 9 Ruler như hình ảnh số 03 các bạn có thể xem qua sau đó chúng ta tiếp tục với các Ruler Firewall cụ thể.
2. CHẶN TẤN CÔNG, KHÔNG ĐƯỢC CHẶN BOT TÌM KIẾM VÀ CÁC DỊCH VỤ BỔ TRỢ.
Tôi sử dụng WordPress vì vậy Jetpack là một phần không thể thiếu cùng với Sucuri, Wordfence và đặc biệt là các Bot tìm kiếm vì Website của tôi có thứ hạng rất cao trên Google
Chính vì vậy tôi cho phép các request từ dải IP của jetpack và các dịch vụ cần thiết được gửi thẳng đến Server mà không qua tường lửa để không làm gián đoạn dịch vụ.
Đặc biệt, Cloudflare có một Option là Know Bot, bạn phải bật luôn tính năng này để không chặn các công cụ tìm kiếm Index website làm giảm thứ hạng hoặc không xuất hiện trên kết quả tìm kiếm.
(Ảnh số 04)
3. CHẶN CÁC ASNS NGUY HIỂM
Khi phân tích các Request, Tôi nhận thấy các đợt tấn công đến từ 05 ASNs chủ lực bao gồm:
AS4134 - CHINANET-BACKBONE - Tung Cẩu.
AS14061 - DIGITALOCEAN-ASN Nhà cung cấp dịch vụ VPS lớn nhất nhì thế giới.
AS53667 - PONYNET mạng Botnet nằm trong lòng nước Mẽo thiên đường
AS396507 - EMERALD-ONION
AS22773 - ASN-CXA-ALL-CCI-22773-RDC
Tại Việt Nam, Tôi thấy có 1 lượng tấn công rất lớn từ WEBICO VỚI ASNS LÀ AS135951 Tôi đã truy cập trang chủ và gửi liên hệ nhưng không được đơn vị này phản hồi.
Bạn có thể xem ảnh 05
4. CHẶN CÁC REQUEST VỚI RANDOM QUERY STRING TỪ VIỆT NAM
Khi quan sát, Tôi thấy các Ruler có thể sẽ bị bỏ qua nên quyết định tách Vietnam và các quốc gia ngoài Vietnam để thêm vào Ruler cho chắc cú. Chỗ này Tôi chưa có thời gian để Logic thêm nên sẽ cải thiện sau.
Tôi phân tích và nhận thấy các tấn công có một đặc điểm chung là sau đường dẫn tĩnh, thường được thêm vào một loạt các ký tự đặc biệt với đặc trưng:
......
Nên Tôi đã thêm nó vào thành một Ruler và dùng điều kiện hoặc - Và trong Cloudflare để setup như hình số 06
Lưu ý trong phần này, bạn không được chặn một số Random Query String bắt đầu với các tham số sau:
?a : Nếu dùng AMP của Google thì cuối url có ?amp
?f vì các truy cập từ Facebook cũng sinh một loạt các query string ngẫu nhiên bắt đầu bằng ?fbid
?u: Vì các campain quảng cáo bắt đầu với ?utm
?s vì khi tìm kiếm, WordPress thường bắt đầu với ?s=
?p vì trong các url admin của Wordpress thường có tham số ?p như ?page hoặc ?post....
5. CHẶN REFERER TỪ CÁC NGUỒN LẠ
Khi phân tích Referer, Tôi nhận thấy rất lạ khi có những truy cập với Referer từ FBI, CIA, Whitehouse... Và nhiều nguồn vớ vẩn khác, nên Tôi chặn Referer Vietnam từ các nguồn này như hình số 07
Một số kiểu Referer điển hình các bạn sẽ thấy như hình 08
Lưu ý: Không được chặn Bing và Google vì đó là 2 nguồn chủ lực. Nhưng nếu referer từ các domain từ các quốc gia khác như google.com.ai, google.ai, google.ae... Thì đó chắc chắn là tấn công chứ không phải Bot.
Tôi không chặn Referer từ Google.com và google.com.vn còn lại cho mẹ nó vào chặn hết.
6. CHẶN REFERER TƯƠNG TỰ RULER 05 NHƯNG CHO CÁC QUỐC GIA KHÁC
Chắc bạn sẽ khó hiểu chỗ này, nhưng Tôi không thể chặn Việt Nam và không thể để ruler Challenge vì nó ảnh hưởng tới bạn đọc. Nên Tôi Allow Vietnam và Challenge các quốc gia khác, thành ra nếu Truy cập từ Vietnam có Referer bẩn như trên Cloudflare nó vẫn allow. Nên Tôi phải cho 1 Ruler riêng đặt lên trên Ruler này.
Bạn xem hình 09, Referer tương tự nhưng loại bỏ yếu tố quốc gia.
Trong phần này, ngoài các Referer, Tôi cho luôn cả các Random Query String tương tự mục 04.
7. BLOCK CÁC QUỐC GIA TẤN CÔNG MẠNH VÀ CHỦ YẾU LÀ SPAM
Các quốc gia nguy hiểm bị Tôi chặn vì thực tế cũng chẳng có truy cập từ đó mà nó tấn công thì vãi tè quá nên Block cho chắc cú.
Đứng đầu là China
Ấn Độ
Afghanistan
Indonesia
Ecuado
Iran
Iraq
Israel
Ảnh 10 bạn sẽ thấy cách Setup Ruler chính xác.
8. CHALLENGE VỚI CÁC QUỐC GIA KHÔNG PHẢI VIỆT NAM VÀ KHÔNG BỊ BLOCK
Tôi phải bật tường lửa và sẽ có 1 trang yêu cầu capcha với các quốc gia không phải Vietnam và không bị Block vì Tôi không thể rảnh mà thêm toàn bộ các quốc gia đó vào danh sách Block.
Ngoài ra, Tôi vẫn có truy cập tốt từ các quốc gia như Nhật, hàn, Pháp, Úc nên lựa chọn Challenge là tốt nhất. Sau khi vượt qua Challenge, User có khoảng 4 tiếng mới bị lại là một giải pháp tốt.
Bạn có thể xem Ruler ở ảnh 11.
9. CHỈ CHO PHÉP KẾT NỐI TCP QUA CỔNG 80 VÀ 443 THÔNG QUA CÁC IP ĐẾN TỪ CLOUDFLARE
Tôi đang sử dụng VPS tại Vultr và có một tính năng thú vị là Firewall với Option chỉ cho phép kết nối, request từ Cloudflare.
Tôi đã bật tính năng này và link Droplet với ruler Firewall.
Bạn có thể xem hình 12
Trên đây là toàn bộ chia sẻ của Tôi về việc sử dụng Cloudflare để phòng chống tấn công DDOS mà không nhất thiết phải bật chế độ Under Attack Mode của Cloudflare gây khó chịu cho người sử dụng.