Phòng chống DDoS với Nginx và Nginx Plus hiện đang là giải pháp được nhiều doanh nghiệp lựa chọn bởi Nginx và Nginx Plus có thể dựa trên việc điều chỉnh lưu lượng truy cập và các yêu cầu để giảm nhẹ tác hại của tấn công DDoS. Một số phương pháp bảo vệ website của bạn trước cuộc tấn công DDoS sẽ được Bizfly Cloud chia sẻ trong bài viết dưới đây.
Giới hạn tần suất các yêu cầu
Tần suất gửi request tới người dùng sẽ do bạn giới hạn. Nếu hoạt động thao tác nhanh, một người dùng bình thường có thể gửi tối đa 2 yêu cầu login. Tuy nhiên, khi sử dụng cấu hình Nginx hoặc Nginx Plus, bạn có thể gửi request đến trang login nhiều hơn 2 lần mỗi giây.
Khi muốn lưu trữ trạng thái của yêu cầu, bạn có thể sử dụng “limit_req_zone”, trong đó key là địa chỉ IP của khách hàng. “limit_request” có hiệu lực trong block “/ login.html” và tham chiếu đến cấu hình bộ nhớ chia sẻ “one”.
Giới hạn số lượng kết nối
Bạn có thể lập giới hạn số lượng kết nối được mở từ một địa chỉ IP. Giả sử, bạn có thể thiết lập cho phép tối đa 10 kết nối địa chỉ “/store” trên web của bạn.
“limit_conn_zone” cấu hình một vùng nhớ chia sẻ là addr để lưu trữ các thông tin request theo từng địa chỉ IP của khách hàng. Khá giống với “limit_conn” có hiệu lực trong block “/ store” và đọc dữ liệu từ vùng nhớ addr, giới hạn tối đa 10 kết nối trong một địa chỉ IP khách hàng.
Chặn địa chỉ IP
Với chỉ thị “deny”, Nginx và Nginx Plus có thể từ chối mọi kết nối từ các địa chỉ IP trong danh sách bạn đã khai báo vào blacklist (danh sách đen). Ví dụ, khi bạn muốn chặn các địa chỉ IP trong các ải 123.123.123.1 đến 123.123.123.28 thì bạn có thể sử dụng đoạn mã location / { deny 123.123.123.0/28; # … hoặc chỉ định từng địa chỉ IP bằng đoạn mã:
location / { deny 123.123.123.3;
deny 123.123.123.5;
deny 123.123.123.7; # … }
Cho phép một số IP truy cập
Chỉ những IP đã được cho phép mới có thể truy cập đến trang web của bạn. Ngoài ra, các kết nối từ địa chỉ khác đều sẽ bị từ chối. Ví dụ khi bạn muốn cho phép kết nối các địa chỉ IP ở trong dải 192.168.1.0 đến 192.168.1.24 thì bạn có thể sử dụng đoạn mã:
location / { allow 192.168.1.0/24;
deny all;
# …}
Giới hạn số lượng kết nối server
Với Nginx, bạn có thể giới hạn số lượng kết nối đến server một cách tối đa. Nếu số lượng này vượt quá giới hạn được cho phép, server sẽ ngay lập tức tự động từ chối yêu cầu kết nối mà người dùng gửi đến. Ví dụ, nếu bạn muốn tiến hành việc cấu hình cho một server chỉ nhận hạn mức kết nối tối đa là 200 thì bạn có thể thực hiện đoạn mã sau:
upstream website {server 192.168.100.1:80 max_conns=200;
server 192.168.100.2:80 max_conns=200;
queue 10 timeout=30s; }
Tại ví dụ này max_conns sẽ đảm nhận việc khai báo số lượng kết nối tối đa đến máy chủ còn queue là hàng đợi dùng. Khi tất cả các máy chủ đều đã đạt số lượng kết nối tối đa thì những yêu cầu tiếp theo sẽ được server đưa vào hàng đợi và được giữ tại hàng đợi trong khoảng thời gian tối đa là 30 giây.
DDoS là một hành động tấn công website bằng nhiều yêu cầu được gửi đến từ nhiều máy chủ khác nhau, khiến website trở nên quá tải và không thể phản hồi lại những yêu cầu từ các máy khách. Việc loại bỏ hoàn toàn DDoS là rất khó nhưng việc phòng chống DDoS với Nginx và Nginx Plus sẽ phần nào làm giảm nhẹ hoặc đơn giản hoá các tác hại mà tấn công DDoS mang đến cho hệ thống.
Nếu bạn muốn nâng cao khả năng chống DDoS chứ không chỉ là làm giảm nhẹ như Nginx hay Nginx Plus thì dịch vụ Anti DDoS chính là giải pháp tối ưu nhất mà bạn đang tìm kiếm. Hệ thống Anti DDoS của Bizfly Cloud với khả năng tự phát hiện và ngăn chặn nhanh chóng các nguồn tấn công tới server trong một khoảng thời gian ngắn mà vẫn đảm bảo người dùng truy cập server một cách bình thường trong thời điểm cuộc tấn công diễn ra. Nếu bạn muốn tìm hiểu thêm về những lợi ích khác của Bizfly Anti DDoS hoặc muốn sử dụng dịch vụ này thì bạn có thể liên hệ với Bizfly Cloud để được hướng dẫn cụ thể nhé!
Nội dung có sự tham khảo từ Bizfly Cloud
BizFly Cloud – Cung cấp dịch vụ điện toán đám mây tốt nhất tại Việt Nam
Vận hành bởi VCcorp
Địa chỉ: Số 1 Nguyễn Huy Tưởng, P. Thanh Xuân Trung, Q. Thanh Xuân, TP Hà Nội.
Google map: https://goo.gl/maps/CUqazfqqgd5w4HSh6
Discussion about this post