Website được thiết kế tối ưu cho thành viên chính thức. Hãy Đăng nhập hoặc Đăng ký để truy cập đầy đủ nội dung và chức năng. Nội dung bạn cần không thấy trên website, có thể do bạn chưa đăng nhập. Nếu là thành viên của website, bạn cũng có thể yêu cầu trong nhóm Zalo "CNTT" các nội dung bạn quan tâm.

24. Bảo mật Nginx: header, rate limit, deny rule

ICT

1. Vì sao cần bảo mật Nginx ở mức cấu hình?

Ngay cả khi:

  • Hệ điều hành đã được hardening

  • Firewall đã cấu hình đúng

  • SSL đã triển khai chuẩn

Web Server vẫn là:

điểm tiếp xúc trực tiếp và liên tục với Internet.

Rất nhiều tấn công không nhằm:

  • Khai thác lỗ hổng hệ điều hành
    mà nhằm:

  • Dò endpoint

  • Quét CMS

  • Tạo tải giả (flood)

  • Khai thác cấu hình web sơ hở

Bài này tập trung vào 3 nhóm biện pháp bảo mật đơn giản nhưng hiệu quả:

  • Security header

  • Rate limiting

  • Deny rule


2. Nguyên tắc bảo mật Nginx trong môi trường production

Trong loạt bài này, chúng ta áp dụng:

  1. Chỉ bật những gì hiểu rõ

  2. Không “chặn bừa cho chắc”

  3. Bảo mật phải dễ quan sát – dễ rollback

  4. Ưu tiên biện pháp phòng ngừa phổ biến

Nguyên tắc:

Bảo mật tốt là bảo mật không làm hệ thống khó vận hành.


3. Security Headers – tăng bảo mật phía trình duyệt

3.1. Vì sao cần security header?

Security header:

  • Không bảo vệ server trực tiếp

  • Nhưng giảm rủi ro khai thác phía client

  • Giúp trình duyệt xử lý nội dung an toàn hơn


3.2. Các header khuyến nghị cho production

Trong server block HTTPS, thêm:

 
add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Content-Type-Options "nosniff" always; add_header X-XSS-Protection "1; mode=block" always; add_header Referrer-Policy "strict-origin-when-cross-origin" always; add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;

Giải thích ngắn gọn:

  • X-Frame-Options: chống clickjacking

  • nosniff: chống đoán MIME

  • XSS-Protection: hỗ trợ chống XSS cơ bản

  • Referrer-Policy: kiểm soát thông tin referrer

  • Permissions-Policy: chặn quyền không cần thiết

Nguyên tắc:

Chỉ bật header không ảnh hưởng logic ứng dụng.


3.3. Lưu ý về Content-Security-Policy (CSP)

CSP rất mạnh, nhưng:

  • Dễ gây lỗi nếu cấu hình sai

  • Không nên bật vội

Khuyến nghị:

Chỉ cấu hình CSP khi đã hiểu rõ tài nguyên ứng dụng.


4. Rate limiting – chống brute force và flood nhẹ

4.1. Rate limit là gì?

Rate limit giúp:

  • Giới hạn số request từ một IP

  • Giảm brute force login

  • Giảm bot scan, flood nhẹ

Không thay thế firewall hay WAF, nhưng:

Giảm tải và giảm rủi ro rất hiệu quả.


4.2. Cấu hình rate limit cơ bản

Trong block http (nginx.conf hoặc conf.d):

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

4.3. Áp dụng rate limit cho website

Trong server block:

 
location / {
   limit_req zone=one burst=20 nodelay;
   try_files $uri $uri/ =404;
}

Giải thích:

  • rate=10r/s: 10 request/giây/IP

  • burst=20: cho phép burst ngắn

  • nodelay: không làm chậm request hợp lệ

Khuyến nghị:

Chỉ áp dụng rate limit cho các endpoint cần thiết.


5. Deny rule – chặn truy cập không mong muốn

5.1. Chặn truy cập file và thư mục nhạy cảm

 
location ~ /\.(?!well-known) {
   deny all;
}

Chặn:

  • .git

  • .env

  • .htaccess

  • File ẩn


5.2. Chặn truy cập đường dẫn không cần thiết

Ví dụ chặn endpoint hay bị scan:

 
location ~* /(wp-admin|wp-login|xmlrpc\.php) {
   deny all;
}

Áp dụng khi:

  • Website không dùng WordPress


5.3. Chặn theo IP (khi cần)

 
deny 192.168.1.100;
allow all;

Chỉ dùng khi:

  • Có IP tấn công rõ ràng

  • Không chặn diện rộng


6. Kết hợp deny rule và log

Khuyến nghị:

  • Theo dõi access log

  • Chỉ chặn khi có bằng chứng

  • Tránh “chặn mù”

Nguyên tắc:

Deny rule phải dựa trên log, không dựa trên cảm giác.


7. Những sai lầm phổ biến khi bảo mật Nginx

  • Chặn quá mạnh gây lỗi ứng dụng

  • Bật CSP khi chưa hiểu

  • Rate limit quá thấp

  • Chặn IP động theo cảm tính

Những sai lầm này khiến:

Bảo mật trở thành nguyên nhân gây sự cố.


8. Checklist bảo mật Nginx cơ bản

  •  Security headers đã bật

  •  Rate limit cấu hình hợp lý

  •  Chặn file ẩn và đường dẫn nhạy cảm

  •  Không bật cấu hình không hiểu rõ

  •  Có thể rollback nhanh


9. Liên hệ với các lớp bảo mật khác

Bảo mật Nginx là:

  • Lớp thứ hai sau firewall

  • Lớp đầu tiên tiếp xúc với HTTP/HTTPS

Nó cần được:

  • Kết hợp với firewall

  • Kết hợp với bảo mật ứng dụng

  • Không hoạt động đơn lẻ


10. Bài tiếp theo

Trong Bài 25, chúng ta sẽ bước sang phần backend:

Tổng quan PHP-FPM trong hệ thống Web Server

Bài này sẽ giúp:

  • Hiểu rõ vai trò PHP

  • Chuẩn bị cho cài đặt PHP đúng cách

  • Tránh lỗi cấu hình chồng chéo