Computer >> Máy Tính >  >> Hệ thống >> Linux

Làm thế nào để ngăn chặn một cuộc tấn công DDoS với Nginx

Làm thế nào để ngăn chặn một cuộc tấn công DDoS với Nginx

Các cuộc tấn công từ chối dịch vụ phân tán hoặc “DDoS” sẽ tuần tự tài nguyên của máy chủ thông qua các chiến thuật giao tiếp kỹ thuật số lạm dụng. Những kiểu tấn công này là cuộc đột kích có tổ chức của thế giới máy tính. Nhiều hành động chống đối khó chịu kết hợp với nhau để tạo ra mối đe dọa đủ ghê gớm để ngăn chặn một máy chủ dày dạn kinh nghiệm. Tệ nhất là có nhiều phương tiện tiến hành chiến tranh web du kích chống lại các máy chủ không nghi ngờ. May mắn thay, các máy chủ có thể được định cấu hình để chống lại.

Nginx, một hệ thống máy chủ rất phổ biến dành cho các máy Unix, có đủ chức năng tích hợp để hạn chế đáng kể hiệu quả của các cuộc tấn công DDoS.

Dưới đây là một số tùy chọn hiệu quả để xử lý các mối đe dọa như vậy trên máy chủ được cung cấp bởi Nginx:

Sao lưu tệp cấu hình của bạn

Trước khi thay đổi bất kỳ cài đặt nào, hãy đảm bảo rằng bạn sao lưu nhanh cấu hình máy chủ của mình. Lệnh sau hoạt động cho việc này:

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup-original

Làm thế nào để ngăn chặn một cuộc tấn công DDoS với Nginx

Sau khi hoàn tất, bạn đã sẵn sàng để tiếp tục.

Kiểm tra lưu lượng truy cập

Theo dõi lưu lượng truy cập máy chủ của bạn giúp tối ưu hóa bảo mật và triển khai các chiến thuật bổ sung dễ dàng hơn. Nginx có một mô-đun được tạo riêng cho việc này.

Thiết lập trang trạng thái

Nginx thường đi kèm với một mô-đun có tên “trạng thái sơ khai” (http_stub_status_module) cho phép loại chức năng này được tích hợp vào môi trường máy chủ của bạn khá dễ dàng. Trước tiên, hãy kiểm tra nó bằng lệnh sau:

nginx -V

Làm thế nào để ngăn chặn một cuộc tấn công DDoS với Nginx

Hoặc chuyển phần trên sang grep để tìm nhanh hơn:

nginx -V 2>&1 | grep -o with-http_stub_status_module

Làm thế nào để ngăn chặn một cuộc tấn công DDoS với Nginx

Nếu đầu ra của bạn giống như đầu ra ở trên, thì bạn đã sẵn sàng; nếu không, bạn sẽ cần cài đặt lại hoặc biên dịch lại cài đặt Nginx của mình với mô-đun đi kèm.

Việc thiết lập trang trạng thái mà bạn có thể kiểm tra rất đơn giản, nhưng bạn cũng cần giới hạn quyền truy cập vào trang đó ở mức tối thiểu (máy của bạn) để giữ an toàn cho trang. Bắt đầu bằng cách mở tệp cấu hình chính của máy chủ của bạn tại “/etc/nginx/nginx.conf.”

Làm thế nào để ngăn chặn một cuộc tấn công DDoS với Nginx

Mở nó và thêm mã sau vào “lệnh http” để kích hoạt mô-đun, thay thế thông tin của riêng bạn thay vì “localhost”, “/ status_page” và “127.0.0.1”:

máy chủ
server {
	listen 80;
	listen [::]:80;
	server_name localhost;	
 
	##
	# Status Page Settings
	##	
 
	location /status_page {
		stub_status on;
		allow 127.0.0.1;
		allow ::1;
		deny all; 		
	}
 
}

Lưu ý :bạn sẽ cần đặc quyền sudo để sửa đổi tệp này.

Làm thế nào để ngăn chặn một cuộc tấn công DDoS với Nginx

Bây giờ hãy kiểm tra cấu hình của bạn:

sudo nginx -t

Làm thế nào để ngăn chặn một cuộc tấn công DDoS với Nginx

Nếu tất cả đều ổn, hãy gửi cho máy chủ của bạn một tín hiệu tải lại:

sudo systemctl reload nginx

Làm thế nào để ngăn chặn một cuộc tấn công DDoS với Nginx

Để truy cập trang trạng thái của bạn, hãy truy cập vị trí server_name, theo sau là “/ status_page” trong trình duyệt web hoặc bằng cách sử dụng công cụ dòng lệnh như curl. (Điều này hữu ích nếu bộ nhớ cache của trình duyệt của bạn không tự động cập nhật.) Sau đây là lệnh curl để truy cập trang trong các ví dụ của chúng tôi:

curl localhost/status_page

Làm thế nào để ngăn chặn một cuộc tấn công DDoS với Nginx

Trong trình duyệt, phần trên trông giống như hình sau.

Làm thế nào để ngăn chặn một cuộc tấn công DDoS với Nginx

Kiểm tra nhật ký truy cập

Nếu bạn nhận thấy lưu lượng truy cập bất thường khi kiểm tra trang trạng thái được định cấu hình ở trên, bạn nên kiểm tra nhật ký truy cập của máy chủ. Bạn có thể tìm thấy điều này tại “/var/log/nginx/access.log.” Nhật ký liệt kê các phương thức HTTP được sử dụng, ngày / giờ truy cập, tác nhân người dùng và các trang được truy cập.

Làm thế nào để ngăn chặn một cuộc tấn công DDoS với Nginx

Giới hạn kết nối

Trong số nhiều chiến thuật hữu ích đáng thử để ngăn chặn các cuộc tấn công DDoS, một trong những cách đơn giản và hiệu quả nhất là giới hạn tỷ lệ lưu lượng truy cập đến.

Tốt nhất, bạn nên hạn chế quyền truy cập vừa đủ để ngăn chặn các chương trình độc hại chế ngự máy chủ của bạn với tốc độ vô nhân đạo trong khi vẫn duy trì tốc độ hợp lý cho các khách hàng là con người. Trong Nginx, điều này có thể được thực hiện với limit_req_zonelimit_req các chỉ thị. Đoạn mã sau đặt các ràng buộc về bộ nhớ và tốc độ để sử dụng ở bất kỳ vị trí nào mà máy chủ của bạn được định cấu hình để hiển thị:

limit_req_zone $binary_remote_addr zone=speedbump:10m rate=10r/s;

“Vùng” chỉ định tên và kích thước (trong trường hợp này là Megabyte) của không gian trong bộ nhớ nơi lưu trữ các yêu cầu của người dùng. “Tỷ lệ” thiết lập tổng số yêu cầu Nginx sẽ chấp nhận mỗi giây (trong ví dụ này là 10). Hãy coi mã này như một quy tắc và mã tuân theo việc sử dụng quy tắc đó:

limit_req zone=speedbump burst=20;

Đoạn mã trên thực sự không chỉ thực hiện quy tắc giới hạn của chúng tôi; nó cũng thêm một hàng đợi nhỏ lên đến 20 yêu cầu để xử lý nhẹ nhàng các kết nối hợp pháp hiển thị nhanh hơn một chút so với bình thường, vượt quá cả quy tắc và hàng đợi dẫn đến lỗi 503 cho máy khách. Dưới đây là giao diện của cả hai lệnh trong nginx.conf:

Làm thế nào để ngăn chặn một cuộc tấn công DDoS với Nginx

Địa chỉ IP đưa vào danh sách đen

Nếu bạn có thể biết được địa chỉ IP đang DDoSing máy chủ của mình, bạn chỉ cần đưa nó vào danh sách đen và loại bỏ bất kỳ kết nối nào bắt nguồn từ địa chỉ IP này.

Thêm mã sau vào lệnh máy chủ của bạn:

location / {
    deny 123.123.123.0/28;
    # ...
}

Yêu cầu chặn đối với một số tệp nhất định

Nếu cuộc tấn công DDoS đang nhắm mục tiêu vào các tệp nhất định trên máy chủ của bạn - ví dụ:tệp xmlrpc.php trên WordPress (đây là tệp được nhắm mục tiêu nhiều trong hầu hết các máy chủ WordPress) - bạn có thể chặn tất cả các yêu cầu đến nó. Thêm mã này vào chỉ thị máy chủ của bạn:

location /xmlrpc.php {
    deny all;
}

Làm theo quy trình trên và bạn sẽ hạn chế được hầu hết các cuộc tấn công DDoS. Hãy nhớ xem tài liệu Nginx để biết các tùy chọn bảo mật bổ sung mà bạn có thể áp dụng.