Phòng chống DDoS với Nginx và Nginx Plus
Distributed Denial‑of‑Service (DDoS) attack là hành động cố gắng làm cho các dịch vụ thường là website bị tấn công bởi rất nhiều yêu cầu được gửi từ nhiều máy tính khác nhau khiến cho trang web trờ nên quá tải và ko thể phản hồi lại yêu cầu từ các máy client. Dưới đây Bizfly Cloud xin chia sẻ một số phương pháp chống DDoS giúp bảo vệ website của bạn hiệu quả.
Sử dụng NGINX và NGINX Plus để chống DDoS
Nginx và Nginx Plus có nhiều tính năng giúp giảm nhẹ tác hại của cuộc tấn công DDoS dự trên việc điều chỉnh lưu lượng truy cập và các yêu cầu. Dưới đây là một số phương pháp bảo vệ website của bạn trước các cuộc tấn công DDoS.
1. Giới hạn tuần suất các yêu cầu
Sử dụng NGINX Plus để chống DDoS
Bạn có thể giới hạn tần suất gửi request tới server cho các người dùng. Ví dụ bạn tính toán một người dùng bình thường có thể gửi 2 yêu cầu login (request) mỗi giây là nhiều rồi. Vậy bạn có thể cấu hình Nginx và Nginx Plus cho phép một địa chỉ client IP có thể gửi request đến trang login 2 lần mỗi giây (tương đương với trung bình 30 yêu cầu / 1 phút)
limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m; server { # ... location /login.html { limit_req zone=one; # ... } }
limit_req_zone
cấu hình một vùng nhớ chia sẻ (zone) có tên là one để lưu trữ trạng thái (state) của yêu cầu theo kiểu key-value, trong trường hợp này key là địa chỉ IP của client. limit_request
có hiệu lực trong block /login.html
và tham chiếu điến cấu hình bộ nhớ chia sẻ one
.
2. Giới hạn số lượng kết nối
Bạn có thể giới hạn số lượng kết nối được mở từ một địa chỉ IP. Ví dụ bạn có thể cấu hình cho phép tối đa 10 kết nối đến địa chỉ /store
trên trang web của bạn
limit_conn_zone $binary_remote_addr zone=addr:10m; server { # ... location /store/ { limit_conn addr 10; # ... } }
limit_conn_zone
cấu hình một vùng nhớ chia sẻ là addr
để lưu trữ thông tin các request theo từng địa chỉ client IP. Tương tự limit_conn
có hiệu lực trong block /store
và đọc dữ liệu từ vùng nhớ chia sẻ là addr
và đặt giới hạn tối đa là 10 kết nối trên một địa chỉ client IP.
3. Chặn một số địa chỉ IP
Bạn có thể khai báo một số địa chỉ IP vào trong blacklist (danh sách đen) với chỉ thị deny
làm cho Nginx và Nginx Plus từ chối mọi kết nối từ các địa chỉ IP trong danh sách này. Ví dụ bạn muốn chặn các địa chỉ IP trong dải 123.123.123.1 đến 123.123.123.28
location / { deny 123.123.123.0/28; # ...
Hoặc bạn có thẻ chỉ định từng địa chỉ IP một như sau
location / { deny 123.123.123.3; deny 123.123.123.5; deny 123.123.123.7; # ... }
4. Chỉ cho phép một số IP truy cập
Trong trường hợp này bạn sẽ chỉ định một số địa chỉ IP có thể truy cập đến trang web của bạn, còn lại sẽ từ chối hết các kết nối từ địa chỉ IP khác Ví dụ chỉ cho phép kết nối từ các địa chỉ IP ở trong dải 192.168.1.0 đến 192.168.1.24;
location / { allow 192.168.1.0/24; deny all; # ... }
5. Giới hạn số lượng kết nối đến server
Với Nginx bạn có thế giới hạn số lượng kết nối tối đa đến server, nếu quá số lượng này server sẽ tự động từ chối yêu cầu. Ví dụ bạn muốn cấu hình cho server chỉ nhận tối đa 200 kết nối bạn có thể làm như 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; }
Trong ví dụ trên max_conns
để khai báo số lượng kết nối tối đa đến server. Trong khi đó queue
là hàng đợi dùng khi tất cả server đều đạt số lượng tối đa kết nối thì yêu cầu tiếp theo sẽ được đưa vào hàng đơi và sẽ được giữ trong hàng đợi tối đa là 30 giây
Kết luận
Việc loại bỏ hoàn toàn DDoS là rất khó, tuy nhiên ta có một số biện pháp loại bỏ các trường hợp tấn công đơn giản hoặc giảm nhẹ tác hại của các vụ tấn công DDoS. Hy vọng các ví dụ trên có thể giúp ích cho bạn trong thực tế. Cảm ơn bạn đã theo dõi bài viết
Theo viblo.asia
>> Có thể bạn quan tâm: Giảm thiểu chế độ DDoS sử dụng Rack::Attack
Bizfly Anti DDOS - Giải pháp chống tấn công từ chối dịch vụ vượt trội cho ứng dụng và website thuộc hệ sinh thái điện toán đám mây Bizfly Cloud. Với đội ngũ kỹ thuật viên trình độ cao và kinh nghiệm lâu năm làm việc trong các công nghệ khác nhau như cloud, mobile, web… Bizfly Cloud có đủ khả năng để hỗ trợ đưa ra những giải pháp và công nghệ toàn diện giúp doanh nghiệp bảo mật và an toàn.
Để được tư vấn vui lòng liên hệ: (024) 7302 8888-(028) 7302 8888