Một vài bước để tăng cường bảo mật cho máy chủ Nginx

DDos

VIP Members
22/10/2013
524
2.191 bài viết
Một vài bước để tăng cường bảo mật cho máy chủ Nginx
Nginx là 1 máy chủ reverse proxy mã nguồn mở cho các giao thức HTTP, HTTPS, SMTP, POP3 và IMAP, cũng như là 1 máy chủ cân bằng tải (load balancer), HTTP cache và web. Gần đây, máy chủ web Nginx đã chính thức vượt qua thị phần của máy chủ Apache, để trở thành máy chủ phổ biến nhất thế giới.

Trong bài viết này, mình sẽ hướng dẫn các bạn quản trị viên trang web bổ sung thêm một vài cấu hình quan trọng giúp tăng cường bảo mật của máy chủ web nginx.

nginx.png
  1. Ẩn thông tin phiên bản máy chủ Nginx.
    Với thông tin về phiên bản máy chủ Nginx, kẻ tấn công sẽ có được cái nhìn đầu tiên về các lỗ hổng tồn tại trong phiên bản đó.

    Mã:
    sed -i "s/# server_tokens off;/server_tokens off;/g" /etc/nginx/nginx.conf
  2. Vô hiệu hóa ETags.
    ETags là một thành phần của giao thức HTTP cung cấp tính năng liên quan đến bộ nhớ đệm. Tuy nhiên, tiêu đề Etags lại chứa các thông tin nhạy cảm về máy chủ web như số inode của các tệp được yêu cầu.

    Mã:
    sed -i 's/server_tokens off;/server_tokens off;\netag off;/' /etc/nginx/nginx.conf
  3. Xóa trang mặc định của nginx server.
    Thông thường trang mặc định của máy chủ nginx sẽ có chứa thông tin phiên bản ngnix đang chạy cũng như hệ điều hành của máy chủ web. Từ đó, kẻ tấn công sẽ có được cái nhìn đầu tiên về các lỗ hổng tồn tại trong phiên bản đó.

    Mã:
    echo "" > /var/www/html/index.html
  4. Sử dụng mã hóa mạnh
    Với việc sử dụng giao thức https và các thuật toán mã hóa mạnh, sẽ ngăn ngừa các cuộc tấn công MITM.

    Mã:
    sed -i "s/ssl_prefer_server_ciphers on;/ssl_prefer_server_ciphers on;\nssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;/" /etc/nginx/nginx.conf
  5. Bật HttpOnly và Secure flags
    HttpOnly và Secure flasg giúp giảm thiểu rủi ro tập lệnh phía máy khách truy cập vào cookie.

    Mã:
    sed -i "s|^\s*try_files \\\$uri \\\$uri/ =404;|try_files \\\$uri \\\$uri/ =404;\nproxy_cookie_path / \"/; secure; HttpOnly\";|" /etc/nginx/sites-available/default
  6. Ngăn ngừa tấn công Clickjacking

    Mã:
    sed -i "s|root /var/www/html;|root /var/www/html;\nadd_header X-Frame-Options DENY;|" /etc/nginx/sites-available/default
  7. Ngăn ngừa tấn công XSS

    Mã:
    sed -i "s|root /var/www/html;|root /var/www/html;\nadd_header X-XSS-Protection \"1; mode=block\";|" /etc/nginx/sites-available/default
  8. Bắt buộc các kết nối tới máy chủ phải là bảo mật

    Mã:
    sed -i "s|root /var/www/html;|root /var/www/html;\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubdomains;\";|" /etc/nginx/sites-available/default
  9. Ngăn ngừa MIME sniffing

    Mã:
    sed -i "s|root /var/www/html;|root /var/www/html;\nadd_header X-Content-Type-Options nosniff;|" /etc/nginx/sites-available/default
  10. Thiết lập ssl session timeout
    Là khoảng thời gian lớn nhất có thể giữa hai lần user request lên server mà session của user chưa bị hủy. Bằng cách rút ngắn thời gian khả dụng giữa hai lần request, sẽ tăng cường bảo mật cho phiên làm việc của quản trị viên trang web.

    Mã:
    sed -i "s/ssl_prefer_server_ciphers on;/ssl_prefer_server_ciphers on;\nssl_session_timeout 5m;/" /etc/nginx/nginx.conf
  11. Thiết lập ssl session cache
    Kích thước bộ nhớ cache phiên SSL giới hạn số lượng phiên được lưu trong bộ nhớ cache cho một cấu hình cụ thể. Khi đạt đến giới hạn bộ nhớ cache của cấu hình, mục nhập phiên SSL cũ nhất được liên kết với cấu hình đó sẽ bị loại bỏ khỏi bộ đệm và phiên SSL mới được lưu vào bộ đệm.

    Mã:
    sed -i "s/ssl_session_timeout 5m;/ssl_session_cache shared:SSL:10m;\nssl_session_timeout 5m;/" /etc/nginx/nginx.conf
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Bên trên