Một nhà phát triển SaaS đã phát hiện ra rằng việc bật Chế độ Bot Fight Mode của Cloudflare cho mọi tên miền trong tài khoản của mình đã làm đình trệ lưu lượng API trong suốt một tháng, khiến các khách hàng trả phí không thể sử dụng các tính năng cốt lõi của sản phẩm.
Vấn đề nảy sinh khi nhà phát triển nhận thấy các chỉ số sử dụng đột ngột đi ngang. Lượng đăng ký mới vẫn tiếp tục tăng, nhưng số phiên truy cập (active sessions) thì ngừng tăng trưởng. Sau nhiều tuần viết lại mã và gỡ lỗi, một nút gạt bảo mật duy nhất hóa ra lại là thủ phạm: Chế độ Bot Fight Mode của Cloudflare đã gắn nhãn endpoint AWS Lambda của chính dịch vụ SaaS đó là một bot độc hại và chặn nó.
Một thiết lập duy nhất đã làm hỏng cả một dịch vụ như thế nào
Hệ thống (stack) của nhà phát triển dựa trên các cuộc gọi server-to-server. Một hàm Lambda nội bộ thường xuyên gửi dữ liệu ngược lại tên miền công khai của SaaS, một mô hình phổ biến trong các kiến trúc micro-service hiện đại. Bot Fight Mode sẽ đưa ra thử thách hoặc chặn các yêu cầu trông giống như các trình thu thập dữ liệu (scrapers) tự động, nhằm bảo vệ các trang web thiên về nội dung khỏi việc bị khai thác dữ liệu.
Khi chế độ này được bật trên tất cả các zone, Cloudflare đã coi yêu cầu gửi đi của Lambda là một client tự động khác. Yêu cầu này không bao giờ đến được ứng dụng, và vì việc chặn xảy ra tại edge, các công cụ giám sát của SaaS không thấy bất kỳ lỗi nào – lưu lượng truy cập chỉ đơn giản là biến mất. Mức sử dụng CPU của nhà phát triển trên Cloudflare Workers tăng vọt, khiến anh nghi ngờ có một scraper bên ngoài thay vì backend của chính mình.
Chỉ sau khi đào sâu vào nhật ký (logs) của Cloudflare, anh mới thấy các mục bị chặn bởi "Bot Fight Mode" khớp với dải IP của Lambda. Anh đã tắt tính năng này cho các zone bị ảnh hưởng, và lưu lượng API đã hoạt động trở lại, đưa các chỉ số sử dụng về mức bình thường.
Tại sao sai lầm này lại quan trọng đối với các nhà vận hành SaaS
- Các sản phẩm tập trung vào API cần các kênh server-to-server mở. Bot Fight Mode giả định rằng lưu lượng truy cập chính là các yêu cầu từ trình duyệt của con người để lấy HTML, hình ảnh hoặc các tài nguyên tĩnh. Các nền tảng SaaS cung cấp API, webhooks hoặc các callback nội bộ có thể bị giới hạn tốc độ (throttled) hoặc bị chặn mà không có mã lỗi hiển thị nào truyền đến lớp ứng dụng.
- Các thiết lập bảo mật toàn cầu hiếm khi phù hợp với mọi khối lượng công việc. Việc áp dụng một cấu hình Cloudflare duy nhất cho tất cả các tên miền sẽ đối xử với mọi trang web như thể chúng có cùng một mô hình đe dọa. Các trang web nội dung, diễn đàn và backend của SaaS có các yêu cầu bảo mật rất khác nhau.
- Các lỗi âm thầm làm tiêu tốn doanh thu. Hệ thống cảnh báo của nhà phát triển đã không kích hoạt vì các yêu cầu bị chặn không bao giờ đến được ứng dụng. Chỉ có sự sụt giảm trong các chỉ số tương tác của người dùng mới gợi ý về vấn đề. Nếu không chủ động xem xét nhật ký ở cấp độ edge, các vấn đề tương tự có thể tồn tại mà không được chú ý.
Những gì nhà phát triển có thể làm để tránh cùng số phận
- Kiểm tra hồ sơ lưu lượng truy cập của từng zone. Trước khi bật Bot Fight Mode, hãy liệt kê các loại yêu cầu mà tên miền của bạn mong đợi: trình duyệt của con người, các cuộc gọi API, webhook callback hoặc các cuộc gọi dịch vụ nội bộ. Nếu bất kỳ loại nào là thiết yếu cho chức năng cốt lõi, hãy coi zone đó là "ưu tiên API" (API-first) và giữ các thiết lập giảm thiểu bot ở mức tối thiểu.
- Kiểm tra các thay đổi trong môi trường staging. Cloudflare cho phép bạn áp dụng các thiết lập cho một subdomain duy nhất hoặc một staging zone. Hãy xác minh rằng các hoạt động tự động hợp lệ vẫn hoạt động trước khi triển khai thay đổi trên phạm vi toàn cầu.
- Giám sát nhật ký ở cấp độ edge như một phần của stack quan sát (observability stack). Truyền (stream) nhật ký tường lửa và giảm thiểu bot của Cloudflare đến SIEM, Loki hoặc bất kỳ dịch vụ tổng hợp nào. Đối chiếu sự gia tăng đột biến của các yêu cầu bị chặn với sự sụt giảm trong các chỉ số ứng dụng để phát hiện sớm các lỗi âm thầm.
- Đảm bảo các thiết lập bảo mật có thể đảo ngược. Hãy giữ một kế hoạch rollback đã được lập tài liệu. Nếu một quy tắc mới gây ra hành vi không mong muốn, hãy tắt nó trước và xác nhận thay đổi trước khi dành thời gian để tìm cách khắc phục bằng mã nguồn.
- Đặt câu hỏi đúng. Thay vì hỏi "làm thế nào để tôi chặn các scraper?", hãy hỏi "công cụ này có giải quyết được vấn đề cụ thể mà tôi đang gặp phải không?". Một tính năng bảo mật chặn scraper có thể không phải là câu trả lời phù hợp cho một SaaS cần truy cập API mở.
Góc nhìn rộng hơn
Bot Fight Mode vẫn có giá trị đối với các trang web cần bảo vệ nội dung tĩnh khỏi các trình thu thập dữ liệu (crawlers) hung hãn. Nhược điểm của nó là không có khả năng phân biệt giữa một scraper độc hại và một client tự động hợp lệ tuân theo cùng một mô hình HTTP.
Bài học rút ra
Khi bạn quản lý nhiều tên miền dưới một tài khoản Cloudflare duy nhất, hãy coi mỗi tên miền là một zone bảo mật riêng biệt. Chỉ bật Bot Fight Mode ở những nơi lưu lượng truy cập hoàn toàn do con người điều khiển; đối với các khối lượng công việc SaaS nặng về API, hãy tắt thiết lập này hoặc tinh chỉnh nó bằng các quy tắc tường lửa tùy chỉnh. Chỉ một cú nhấp chuột có thể làm im lặng lưu lượng truy cập hợp lệ hiệu quả như cách nó chặn một scraper.
