Cài đặt bảo mật Security Headers A+ dễ như ăn kẹo

Trong quá trình phát triển phải luôn đi đôi với bảo vệ chống giặc ngoại xâm 😀 và bảo mật web cũng vậy, cấu hình Security Headers là điều bạn nên làm để tăng cường bảo mật cho website.

Trong bài viết này hãy cùng Vũ Trụ Số tìm hiểu về Security Headers cũng như cách để cấu hình để Security Headers đạt xanh điểm toàn bộ khi check với các công cụ check như securityheaders.com hay

Security Headers là gì?

Security Headers là một tập hợp các HTTP response headers được sử dụng để cung cấp mức độ bảo mật cao hơn cho các ứng dụng web và tránh một số lỗ hổng bảo mật phổ biến.

Khi một trình duyệt web gửi yêu cầu tới một trang web, máy chủ sẽ phản hồi bằng một HTTP response, trong đó có chứa các thông tin về trang web và các headers. Các Security Headers đơn giản là các HTTP response headers cụ thể được thêm vào để cải thiện bảo mật của trang web.

Một số Security Headers quan trọng

Một số Security Headers quan trọng và thường được sử dụng bao gồm:

X-XSS-Protection: Được sử dụng để bật hoặc tắt bộ lọc chống tấn công Cross-Site Scripting (XSS) trong trình duyệt. Điều này giúp ngăn chặn các cuộc tấn công XSS bằng cách chặn việc thực thi mã độc JavaScript không mong muốn từ các nguồn không đáng tin cậy.

X-Content-Type-Options: Sử dụng để ngăn trình duyệt thực hiện nhận dạng loại nội dung bằng cách chặn sự thay đổi bất hợp pháp của phần đầu nội dung (Content-Type) từ phía người tấn công. Điều này giúp ngăn chặn một số cuộc tấn công liên quan đến sự xử lý sai loại nội dung.

X-Frame-Options: Được sử dụng để ngăn việc nhúng trang web trong một khung (frame) của một trang web khác. Điều này giúp bảo vệ chống tấn công clickjacking và giữ cho trang web của bạn không bị lồng vào một trang web bên ngoài không đáng tin cậy.

Referrer-Policy: Xác định các thông tin về nguồn gốc (referrer) mà trình duyệt sẽ gửi khi người dùng click vào một liên kết. Điều này có thể giúp bảo vệ thông tin riêng tư của người dùng và giảm rủi ro liên quan đến lỗ hổng thông tin về nguồn gốc.

Thêm các Security Headers này vào các HTTP response của trang web có thể giúp bảo vệ trang web của bạn khỏi nhiều cuộc tấn công phổ biến và cải thiện mức độ bảo mật của ứng dụng web của bạn.

Cách cấu hình Security Headers cho WordPress

Để cấu hình Security Headers cho WordPress lên điểm A+ như hình dưới đây, bạn đơn giản chỉ cần cài thêm 1 plugin có tên là Security Headers do tác giả Joseph Mendez viết là xong, đơn giản chỉ cần cài đặt và kích hoạt là sẽ xanh khi check với 1 số công cụ như securityheaders.com hay atatus

Ngoài ra bạn cũng có thể cài plugin

Ngoài ra nếu máy chủ của bạn có module mod_headers thì bạn có thể thêm code dưới đây vào file .htaccess để tối ưu phần Headers Security.

<IfModule mod_headers.c>
   Header set X-XSS-Protection "1; mode=block"
   Header set X-Content-Type-Options "nosniff"
   Header always append X-Frame-Options SAMEORIGIN
   Header set Referrer-Policy "no-referrer-when-downgrade"
</IfModule>

Cách cấu hình Security Headers trên máy chủ OpenLiteSpeed

Nếu bạn sử dụng OpenLiteSpeed bạn có thể cấu hình Security Headers như sau.

Truy cập vào trình quản lý máy chủ ví dụ CyberPanel > Vào phần quản lý website ví dụ: https://IP:8090/websites/vutruso.com sau đó click vào vHost Conf

Thêm đoạn code phía dưới vào dưới cùng của file, sau đó lưu lại.

context / {
    location      $DOC_ROOT/
    allowBrowse     1
    extraHeaders   Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
  }
  context / {
    location        $DOC_ROOT/
    allowBrowse     1
    extraHeaders   X-Content-Type-Options nosniff
  }
  context / {
    location       $DOC_ROOT/
    allowBrowse    1
    extraHeaders    X-XSS-Protection 1;mode=block
  }
  context / {
    location    $DOC_ROOT/
    allowBrowse    1
    extraHeaders  X-Frame-Options SAMEORIGIN
  }
  context / {
    location      $DOC_ROOT/
    allowBrowse   1
    extraHeaders   Referrer-Policy strict-origin
  }

Hoặc nếu bạn có ssh bạn có thể theo đường dẫn /usr/local/lsws/conf/vhosts/vutruso.com, mở file vhost.conf lên và thêm code bên trên vào.

Hoặc nếu bạn sử dụng Directadmin bạn có thể theo đường dẫn /usr/local/directadmin/data/templates/custom/openlitespeed_vhost.conf

Ngoài code bên trên bạn có thể khai báo 1 số tiêu đề như: Expect-CT, Feature-Policy và Content Security Policy HTTP headers thì mới đạt điểm A+ được (phần này tuỳ theo website nên bạn hãy tìm hiểu thêm để sử dụng cho phù hợp)

context / {
    location     $DOC_ROOT/
    allowBrowse   1
    extraHeaders  Expect-CT enforce, max-age=21600
}
context / {
    location    $DOC_ROOT/
    allowBrowse    1
    extraHeaders  Feature-Policy geolocation 'self'; vibrate 'none'
}
context / {
    location    $DOC_ROOT/
    allowBrowse   1
    extraHeaders  Content-Security-Policy default-src https:; font-src https: data:; img-src https: data:; script-src https:; style-src https:;
}

Sau đó khởi động lại OpenLiteSpeed bằng lệnh sudo /usr/local/lsws/bin/lswsctrl restart là xong.

Cấu hình Security Headers trên máy chủ Nginx

Để cấu hình Security Headers trên máy chủ Nginx, bạn cần chỉnh sửa tệp cấu hình Nginx cho trang web của bạn. Thông thường, tệp cấu hình sẽ nằm trong thư mục /etc/nginx/conf.d/ hoặc /etc/nginx/sites-available/. Dưới đây là các bước để thêm các Security Headers vào cấu hình Nginx:

1. Đảm bảo module headers đã được kích hoạt: Trước tiên, bạn cần đảm bảo rằng module “headers” đã được kích hoạt trong tệp cấu hình Nginx. Điều này có thể được thực hiện bằng cách kiểm tra trong tệp /etc/nginx/nginx.conf hoặc các tệp cấu hình con. Tìm dòng bên dưới để xác nhận module đã được kích hoạt:

http {
    ...
    include /etc/nginx/mime.types;
    include /etc/nginx/conf.d/*.conf;
    ...
}

Nếu bạn không thấy dòng include /etc/nginx/conf.d/*.conf; hoặc tương tự trong tệp cấu hình, hãy thêm nó vào.

2. Thêm Security Headers: Tiếp theo, mở tệp cấu hình cho trang web của bạn (ví dụ: your_domain.conf) bằng lệnh:

sudo nano /etc/nginx/conf.d/your_domain.conf

3. Thêm các Security Headers vào tệp cấu hình: Trong tệp cấu hình Nginx, thêm các dòng sau vào phần server block (hoặc location block) cho trang web của bạn:

server {
    ...
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";
    add_header X-Frame-Options "SAMEORIGIN";
    add_header Referrer-Policy "no-referrer-when-downgrade";
    ...
}

Hoặc nếu bạn muốn áp dụng các Security Headers cho tất cả các trang web trên máy chủ, bạn có thể thêm các dòng trên vào phần http block trong tệp /etc/nginx/nginx.conf

4. Lưu và thoát: Sau khi thêm các dòng, lưu tệp cấu hình và thoát khỏi trình soạn thảo.

5. Kiểm tra cú pháp và khởi động lại Nginx: Trước khi khởi động lại Nginx, hãy đảm bảo rằng tệp cấu hình không có lỗi cú pháp. Sử dụng lệnh sau để kiểm tra cú pháp:

sudo nginx -t

Nếu không có lỗi, bạn có thể khởi động lại Nginx để áp dụng các thay đổi:

sudo systemctl restart nginx

Sau khi hoàn tất các bước trên, máy chủ Nginx của bạn sẽ bổ sung Security Headers vào các HTTP response và cải thiện mức độ bảo mật của trang web WordPress hoặc bất kỳ ứng dụng web nào bạn đang chạy trên máy chủ.

Kết luận

Dù bạn sử dụng phương pháp nào, đảm bảo kiểm tra kỹ lại website sau khi cấu hình các Security Headers để đảm bảo không có lỗi hoặc xung đột nào xảy ra và đảm bảo mức độ bảo mật được nâng cao.

Phương pháp cài plugin Security Headers dành cho website WordPress thì mình vẫn khuyến khích và ưu tiên nên cài đặt Security Headers ở máy chủ thay hơn so với phương pháp cài plugin.

Chúc bạn thành công.

daotiendung

Tiến Dũng Đào chuyên quản lý, vận hành các dịch vụ website. Anh có nhiều năm kinh nghiệm về VPS, Hosting, technical SEO, CMS. Đặc biệt yêu thích WordPress với hơn 5 năm phát triển theme và plugin. Sở thích của anh là đọc, viết blog, đi du lịch, tập võ và chia sẻ các kiến thức cho mọi người.

Bài viết liên quan