Mục lục
Trong thời đại Internet phát triển mạnh mẽ, các mối đe dọa về an ninh mạng ngày càng gia tăng, đặc biệt là tấn công DDoS (Từ chối Dịch vụ phân tán). Loại tấn công này có thể làm gián đoạn hoạt động của website, gây tổn thất tài chính và ảnh hưởng nghiêm trọng đến uy tín. Để bảo vệ website khỏi các cuộc tấn công này, Cloudflare đã cung cấp nhiều giải pháp hiệu quả, ngay cả với tài khoản miễn phí.
Bài viết này sẽ hướng dẫn bạn cách thiết lập và tối ưu các biện pháp bảo vệ trên Cloudflare bằng tài khoản miễn phí, giúp giảm thiểu rủi ro DDoS một cách hiệu quả mà không cần chi phí.
Các hình thức tấn công
Dưới đây là các hình thức tấn công DDoS phổ biến mà website có thể gặp phải. Việc hiểu rõ từng loại sẽ giúp bạn áp dụng các biện pháp phòng chống phù hợp.
Tấn công Layer 3 (Network Layer Attack)
- SYN Flood: Kẻ tấn công gửi hàng loạt yêu cầu SYN nhưng không hoàn tất bắt tay TCP, làm cạn kiệt tài nguyên máy chủ.
- ICMP Flood (Ping Flood): Gửi nhiều gói tin ICMP (ping) để tiêu tốn băng thông của server.
- UDP Flood: Gửi số lượng lớn gói UDP đến cổng ngẫu nhiên trên server, khiến nó phải kiểm tra và tiêu tốn tài nguyên.
Tấn công Layer 4 (Transport Layer Attack)
- TCP Connection Exhaustion: Tấn công bằng cách giữ nhiều kết nối TCP mở lâu nhất có thể để làm cạn kiệt kết nối hợp pháp.
- DNS Amplification: Kẻ tấn công gửi yêu cầu giả mạo đến máy chủ DNS công cộng, phản hồi lớn hơn gây quá tải mục tiêu.
Tấn công Layer 7 (Application Layer Attack)
- HTTP Flood: Gửi số lượng lớn request HTTP đến máy chủ web để làm cạn kiệt tài nguyên.
- Slowloris: Giữ các kết nối HTTP mở càng lâu càng tốt để ngăn server phục vụ request mới.
- Brute Force Attack: Liên tục thử đăng nhập vào trang admin để chiếm quyền điều khiển.
Cơ chế hoạt động của Cloudflare
Cloudflare hoạt động như một reverse proxy, đứng giữa người dùng và server gốc để kiểm soát mọi request đến website. Một số cơ chế quan trọng giúp Cloudflare bảo vệ website khỏi DDoS bao gồm:
- Mạng lưới CDN và Anycast: Cloudflare có hệ thống máy chủ phân tán toàn cầu, giúp hấp thụ và lọc lưu lượng tấn công từ nhiều nơi khác nhau.
- Lọc và nhận diện tấn công: Cloudflare sử dụng AI và các quy tắc bảo mật để phân biệt traffic hợp lệ và độc hại.
- Rate Limiting cơ bản: Giúp giới hạn tần suất request để giảm nguy cơ tấn công flood (giới hạn trong gói miễn phí).
- Caching: Giảm tải cho server bằng cách lưu trữ nội dung tĩnh, hạn chế ảnh hưởng của các cuộc tấn công DDoS.
(Để tìm hiểu chi tiết về cơ chế hoạt động của Cloudflare, bạn có thể tham khảo tại đây).
Những điều cần lưu ý
- Cloudflare không thể bảo vệ hoàn toàn website khỏi DDoS nếu attacker tấn công trực tiếp vào IP gốc của server. Do đó, bạn cần ẩn IP thực của server bằng cách chỉ sử dụng Cloudflare làm proxy. Bạn có thể tham khảo tài liệu hướng dẫn Hướng dẫn kết nối Domain với Cloudflare để thực hiện điều này.
- Kiểm tra log request thường xuyên để xác định các request đáng ngờ và cập nhật Firewall Rules.
- Với tài khoản miễn phí, một số tính năng bảo mật cao như Super Bot Fight Mode, WAF nâng cao, Rate Limiting nâng cao sẽ không khả dụng.
- Kết hợp Cloudflare với các biện pháp bảo mật khác như tối ưu server, CDN và hạn chế truy cập vào API nhạy cảm.
Hướng dẫn thực hiện
Lưu ý: Các phương pháp dưới đây đều áp dụng cho tài khoản Cloudflare miễn phí, một số tính năng nâng cao chỉ có trên các gói trả phí.
Bật “Under Attack Mode”
Khi website của bạn đang bị tấn công mạnh, bạn có thể bật chế độ “Under Attack Mode” để Cloudflare tự động kiểm tra và lọc request độc hại.
(Chống: Layer 7 – HTTP Flood, Slowloris)
Cách thiết lập:
- Đăng nhập vào Cloudflare Dashboard.
- Chọn website cần bảo vệ.
- Vào Security > Settings.
- Ở mục Security Level, chọn I’m Under Attack!.
- Kiểm tra website, nếu thấy trang xác minh của Cloudflare xuất hiện khi truy cập như hình bên dưới thì chế độ đã được kích hoạt thành công.
- Khi cuộc tấn công kết thúc, bạn có thể giảm mức bảo vệ xuống “High” hoặc “Medium” để tránh ảnh hưởng đến trải nghiệm của người dùng.
Cấu hình Firewall Rules
Firewall Rules cho phép bạn kiểm soát và chặn các request độc hại dựa trên nhiều tiêu chí như IP, quốc gia, đường dẫn truy cập, user-agent,… Điều này giúp ngăn chặn các cuộc tấn công DDoS một cách hiệu quả.
(Chống: Layer 3, Layer 4, Layer 7 – SYN Flood, UDP Flood, HTTP Flood, Brute Force)
Cách thiết lập:
- Đăng nhập vào Cloudflare Dashboard.
- Chọn website cần bảo vệ.
- Vào Security > WAF.
- Chuyển sang tab Custom rules, nhấn vào Create rule.
- Dưới đây là giải thích chi tiết cho từng phần trong giao diện Create rule:
- Rule name (required): Đây là nơi bạn nhập tên mô tả cho quy tắc của mình. Hãy đặt một cái tên dễ hiểu, giúp bạn nhanh chóng nhận diện được mục đích của quy tắc, ví dụ: “Chặn IP từ quốc gia X” hay “Giới hạn truy cập /login từ một IP”.
- Create rule with AI Assistant: Tùy chọn này cho phép bạn sử dụng trợ lý AI của Cloudflare để tạo biểu thức tự động dựa theo một số câu hỏi để xác định các tiêu chí cần lọc và sau đó gợi ý câu hình rule cho bạn.
- Field: Đây là dropdown để bạn chọn trường dữ liệu nào trong request cần kiểm tra. Ví dụ: Country (quốc gia), IP Source Address (địa chỉ IP nguồn). Mỗi trường đại diện cho một phần của yêu cầu truy cập.
- Operator: Sau khi chọn Field, bạn cần chọn toán tử so sánh. Các tùy chọn thường có thể là “equals”, “does not equal”, “contains”, “matches regex”,… Toán tử này giúp xác định cách so sánh giá trị mà bạn nhập.
- Value: Đây là nơi bạn cần nhập giá trị so sánh. Ví dụ, nếu bạn muốn chặn các địa chỉ IP từ một quốc gia cụ thể, bạn có thể nhập tên quốc gia hoặc dải IP cụ thể.
- Expression Preview: Nếu bạn quen với ngôn ngữ biểu thức của Cloudflare (CF Expression Language), bạn có thể chỉnh sửa trực tiếp biểu thức để có được cấu hình chính xác hơn hoặc tinh chỉnh các điều kiện phức tạp.
- Then take action… / Choose action: Sau khi đã thiết lập điều kiện, bạn cần chọn hành động sẽ được thực hiện khi rule khớp với một yêu cầu. Các hành động có thể là:
- Block: Chặn hoàn toàn request.
- Challenge (JS Challenge hoặc CAPTCHA): Yêu cầu người dùng vượt qua thử thách xác minh.
- Allow: Cho phép requset, thường dùng trong trường hợp rule dùng để đánh dấu và giám sát.
- Log: Chỉ ghi nhận request mà không can thiệp vào quá trình xử lý.
- Nhấn Deploy để áp dụng quy tắc.
- Dưới đây là ví dụ về cách tạo một Firewall Rule trên Cloudflare để chặn toàn bộ request từ quốc gia Việt Nam với tài khoản miễn phí, cụ thể:
- Rule name: Chặn quốc gia Việt Nam.
- Field: Country (tương ứng với quốc gia của địa chỉ IP nguồn).
- Operator: Chọn “is in” để so sánh giá trị của trường với danh sách các giá trị mà tôi cung cấp.
- Value: Nhập “Vietnam” (hoặc viết tắt là “VN”). Trong ví dụ này, Cloudflare chuyển đổi thành biểu thức (ip.src.country in {“VN”}).
- Then take action: Chọn “Block” để chặn các request phù hợp với điều kiện đã đặt, nghĩa là tất cả các request từ quốc gia Việt Nam sẽ bị chặn và không được đánh giá bởi các rule tiếp theo.
- Place at: Chọn “First” để đảm bảo rằng rule này được áp dụng đầu tiên trong quá trình đánh giá, giúp ngăn chặn kịp thời lưu lượng đến từ quốc gia bị chặn.
- Và đây là kết quả khi áp dụng quy tắc hoàn tất.
Lưu ý: Với tài khoản miễn phí thì mỗi website bạn chỉ có thể tạo tối đa 5 Firewall Rules. Nếu muốn tạo thêm hơn 5 rules, bạn sẽ cần nâng cấp lên gói trả phí.
Sử dụng Rate Limiting cơ bản
Rate Limiting giúp giới hạn số lượng request từ một IP cụ thể trong một khoảng thời gian, từ đó giảm thiểu tác động của các cuộc tấn công flood hoặc brute force login.
(Chống: Layer 7 – HTTP Flood, Brute Force Attack)
Cách thiết lập:
- Đăng nhập vào Cloudflare Dashboard.
- Chọn website cần bảo vệ.
- Vào Security > WAF.
- Chuyển sang tab Rate limiting rules, nhấn vào Create rule.
- Dưới đây là hướng dẫn chi tiết cho từng trường trong giao diện tạo Rate Limiting rule:
- Rule name (required): Đây là trường bạn nhập tên mô tả cho rule. Ví dụ: “Giới hạn Request/login” giúp bạn nhận diện nhanh mục đích của rule.
- Create rule with AI Assistant: Tùy chọn này cho phép sử dụng trợ lý AI Cloudflare để tự động tạo rule dựa trên một số câu hỏi.
- Field: Chọn trường mà bạn muốn áp dụng giới hạn.
- Operator: Sau khi chọn Field, bạn cần chọn toán tử so sánh.
- Value: Đây là nơi bạn cần nhập giá trị so sánh
- With the same characteristics…: Tùy chọn này cho phép bạn giới hạn rule áp dụng cho các yêu cầu có đặc điểm tương tự (ví dụ: cùng URL hoặc phương thức HTTP). Nếu rule của bạn nhằm mục đích chung cho mọi request từ một IP, bạn có thể để mặc định.
- When rate exceeds… Requests (required): Đây là số lượng request tối đa mà một IP có thể gửi trong khoảng thời gian bạn quy định. Ví dụ: nếu bạn nhập “10”, tức là nếu một IP gửi hơn 10 request trong thời gian xác định thì rule sẽ kích hoạt.
- Period (required): Chọn khoảng thời gian để đếm số request: Ví dụ: “1 minute” hay “60 seconds”. Như vậy, rule sẽ đánh giá số lượng request gửi trong mỗi khoảng thời gian đó.
- Then take action – Choose action: Chọn hành động sẽ được áp dụng khi rule được kích hoạt. Các hoạt động phổ biến bao gồm:
- Block: Chặn hoàn toàn request từ IP vượt quá giới hạn.
- Challenge: Yêu cầu người dùng vượt qua một thử thách (như CAPTCHA) trước khi được truy cập.
- Rate Limit: Áp dụng các biện pháp giới hạn tốc độ (nếu có lựa chọn này riêng).
- For duration… Duration (required): Xác định khoảng thời gian hành động (như chặn) sẽ được áp dụng. Ví dụ: “1 minute” nghĩa là sau khi rule kích hoạt, IP sẽ bị chặn trong 1 phút.
- Nhấn Deploy để áp dụng quy tắc.
- Dưới đây là ví dụ về cách tạo một Rate limit rule trên Cloudflare nhằm chặn các yêu cầu đến /login và /wp-admin:
- Rule name (required): Rate Limit /login & /wp-admin
- Field: URI Path
- Operator: is in
- Value: /login, /wp-admin
- With the same characteristics…: IP (áp dụng giới hạn cho từng địa chỉ IP riêng biệt)
- When rate exceeds… Requests (required): 10 (một IP gửi hơn 10 request)
- Period (required): 10 seconds
- Then take action – Choose action: Block (chặn các request thỏa mãn điều kiện và ngừng đánh giá các rule khác)
- For duration… Duration (required): 10 seconds (IP sẽ bị chặn trong 10 giây khi vượt quá giới hạn)
- Place at: Chọn First để rule này được áp dụng trước các rule khác.
Lưu ý: Với tài khoản miễn phí thì mỗi website bạn chỉ có thể tạo tối đa 1 Rate Limiting Rules. Nếu muốn tạo thêm hơn 1 rule, bạn sẽ cần nâng cấp lên gói trả phí.
Bật Bot Fight Mode
Bot Fight Mode giúp phát hiện và giảm thiểu lượng traffic từ các bot độc hại, từ đó bảo vệ website khỏi các cuộc tấn công tự động.
(Chống: Layer 7 – HTTP Flood, Brute Force Attack)
Cách bật:
- Đăng nhập vào Cloudflare Dashboard.
- Chọn website cần bảo vệ.
- Vào Security > Bots.
- Bật Bot Fight Mode.
- Đây là trạng thái sau khi bật Bot Fight Mode hoàn tất.
Kết luận
Với các biện pháp bảo vệ miễn phí từ Cloudflare, bạn có thể giảm thiểu nguy cơ bị tấn công DDoS mà không cần tốn chi phí. Tuy nhiên, việc bảo vệ website không chỉ dựa vào Cloudflare mà cần có chiến lược bảo mật tổng thể, bao gồm giám sát lưu lượng, tối ưu server và cập nhật cấu hình bảo mật thường xuyên. Chúc các bạn thành công.