Cách cấu hình Nginx để bảo vệ khỏi tấn công DDoS và các cuộc tấn công web khác

Đảm bảo bảo mật của máy chủ web là một yếu tố quan trọng để bảo vệ ứng dụng web khỏi các cuộc tấn công, đặc biệt là tấn công DDoS (Distributed Denial of Service) và các cuộc tấn công web khác. Nginx cung cấp một số cấu hình và công cụ mạnh mẽ để bảo vệ máy chủ của bạn khỏi những mối đe dọa này. Trong bài viết này, chúng ta sẽ tìm hiểu cách cấu hình Nginx để bảo vệ khỏi tấn công DDoS và các cuộc tấn công web khác.

Cấu hình giới hạn tốc độ (Rate Limiting)

Cấu hình giới hạn tốc độ (rate limiting) là một phương pháp phổ biến để bảo vệ khỏi tấn công DDoS bằng cách hạn chế số lượng yêu cầu được chấp nhận từ một địa chỉ IP hoặc một dải địa chỉ IP cụ thể trong một khoảng thời gian nhất định. Điều này giúp giảm tải trên máy chủ và ngăn chặn các cuộc tấn công DDoS dựa trên số lượng yêu cầu lớn.

Để cấu hình giới hạn tốc độ trong Nginx, chúng ta sử dụng module ngx_http_limit_req_module. Dưới đây là một ví dụ về cách cấu hình giới hạn tốc độ cho một địa chỉ IP cụ thể:

http {
...
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;

server {
...
location / {
limit_req zone=one burst=20;
...
}
}
}

 

Trong ví dụ trên:

  • limit_req_zone: Định nghĩa một vùng giới hạn tốc độ (one) với dung lượng 10 megabyte và tốc độ 10 yêu cầu mỗi giây.
  • limit_req: Áp dụng giới hạn tốc độ cho vùng one với giới hạn tối đa 20 yêu cầu (burst).

Bạn có thể điều chỉnh các giá trị như dung lượng vùng, tốc độ và giới hạn tối đa tùy thuộc vào yêu cầu cụ thể của ứng dụng của bạn.

Deploy Nginx and Phpfpm on Kubernetes Kodekloud

Sử dụng Module bảo vệ khỏi tấn công (Security Modules)

Nginx hỗ trợ nhiều module bảo vệ khỏi tấn công được phát triển bởi cộng đồng, cung cấp khả năng bảo vệ khỏi các cuộc tấn công web phổ biến như SQL injection, cross-site scripting (XSS), và request smuggling.

Một số module bảo vệ khỏi tấn công phổ biến bao gồm:

  • ModSecurity: Module WAF (Web Application Firewall) mạnh mẽ cho Nginx.
  • NAXSI: Module kiểm tra xác thực, bộ lọc và phân loại các yêu cầu HTTP bằng cách sử dụng các quy tắc cấu hình.

Để sử dụng module bảo vệ khỏi tấn công trong Nginx, bạn cần cài đặt và cấu hình module tương ứng. Mỗi module sẽ có cách cài đặt và cấu hình riêng, do đó, bạn nên tìm hiểu tài liệu và hướng dẫn cụ thể từng module để biết chi tiết.

Free download Welcome to nginx [2880x1800] for your Desktop, Mobile &  Tablet | Explore 68+ Black Butterfly Background | Black Butterfly Wallpaper,  Butterfly Wallpapers, Butterfly Background

Cấu hình bảo vệ từ chối dịch vụ (DoS Protection)

Nginx cung cấp một số cấu hình để bảo vệ khỏi tấn công từ chối dịch vụ (DoS). Bằng cách cấu hình đúng, bạn có thể giới hạn số lượng kết nối đồng thời, giới hạn kích thước yêu cầu, và giới hạn thời gian chờ.

Dưới đây là một ví dụ về cách cấu hình giới hạn số lượng kết nối đồng thời:

http {
...
limit_conn_zone $binary_remote_addr zone=addr:10m;

server {
...
location / {
limit_conn addr 10;
...
}
}
}

 

Trong ví dụ trên, limit_conn_zone định nghĩa một vùng (addr) với dung lượng 10 megabyte để giới hạn số lượng kết nối từ các địa chỉ IP khác nhau. limit_conn được sử dụng để áp dụng giới hạn kết nối là 10.

Bạn cũng có thể sử dụng các chỉ thị khác nhau như limit_reqlimit_rate để giới hạn kích thước yêu cầu và giới hạn tốc độ truy cập từ một địa chỉ IP cụ thể.

Chặn quốc gia miễn phí trên Nginx – Init HTML

Sử dụng CDN (Content Delivery Network)

Một cách phổ biến để bảo vệ máy chủ của bạn khỏi tấn công DDoS là sử dụng một CDN (Content Delivery Network). CDN là một mạng phân phối nội dung toàn cầu, giúp phân tán tải trọng và bảo vệ khỏi các cuộc tấn công DDoS bằng cách chuyển hướng lưu lượng truy cập qua các máy chủ CDN trước khi đến máy chủ chính.

Để sử dụng CDN, bạn cần đăng ký dịch vụ CDN và cấu hình Nginx để chuyển hướng yêu cầu tới máy chủ CDN. Thông qua việc phân phối lưu lượng truy cập, CDN có thể giảm tải trọng lên máy chủ chính và bảo vệ khỏi các cuộc tấn công DDoS mạnh mẽ.

Writing Nginx Redirects for WordPress - Jason Yingling

Kiểm tra và cập nhật thường xuyên

Cuối cùng, một phần quan trọng trong việc bảo vệ khỏi tấn công DDoS và các cuộc tấn công web khác là kiểm tra và cập nhật thường xuyên hệ thống và ứng dụng của bạn. Đảm bảo bạn áp dụng các bản vá bảo mật, cập nhật phiên bản Nginx và các module liên quan, và thực hiện kiểm tra bảo mật định kỳ để phát hiện và khắc phục các lỗ hổng bảo mật tiềm ẩn.

Get ahead of software vulnerabilities in NGINX and Microsoft Windows SMB  Remote Procedure Call service

Tóm lại, để bảo vệ máy chủ Nginx khỏi các cuộc tấn công DDoS và tấn công web khác, bạn cần cấu hình giới hạn tốc độ, sử dụng module bảo vệ khỏi tấn công, cấu hình bảo vệ từ chối dịch vụ, sử dụng CDN và kiểm tra cập nhật thường xuyên. Kết hợp những biện pháp này sẽ giúp tăng cường bảo mật và độ tin cậy của máy chủ Nginx của bạn.