在Debian系統上配置Nginx以添加安全頭信息,可以提高網站的安全性。以下是一些常見的安全頭信息及其配置方法:
Content-Security-Policy (CSP): CSP可以防止跨站腳本攻擊(XSS)和其他代碼注入攻擊。
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://trustedscripts.example.com; object-src 'none';";
X-Content-Type-Options: 防止瀏覽器MIME類型嗅探。
add_header X-Content-Type-Options "nosniff";
X-Frame-Options: 防止點擊劫持攻擊。
add_header X-Frame-Options "SAMEORIGIN";
Strict-Transport-Security (HSTS): 強制瀏覽器使用HTTPS連接。
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
X-XSS-Protection: 啟用瀏覽器的XSS過濾器(現代瀏覽器已經不再支持這個頭,但仍然可以添加以提高兼容性)。
add_header X-XSS-Protection "1; mode=block";
Referrer-Policy: 控制Referer頭的發送。
add_header Referrer-Policy "no-referrer-when-downgrade";
Feature-Policy: 控制瀏覽器功能的啟用(類似于CSP,但更細粒度)。
add_header Feature-Policy "accelerometer 'none'; camera 'none'; geolocation 'none';";
Permissions-Policy: 控制瀏覽器功能的啟用(類似于Feature-Policy,但更現代)。
add_header Permissions-Policy "accelerometer=(), camera=(), geolocation=()";
以下是一個完整的Nginx配置示例,包含了上述安全頭信息:
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://trustedscripts.example.com; object-src 'none';";
add_header X-Content-Type-Options "nosniff";
add_header X-Frame-Options "SAMEORIGIN";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "no-referrer-when-downgrade";
add_header Feature-Policy "accelerometer 'none'; camera 'none'; geolocation 'none';";
add_header Permissions-Policy "accelerometer=(), camera=(), geolocation=()";
root /var/www/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
max-age
指定),在此期間無法通過HTTP訪問該網站。通過以上配置,可以顯著提高Nginx服務器的安全性。