以下是Ubuntu下Nginx的安全設置要點:
基礎系統加固
sudo apt autoremove --purge
。sudo ufw enable
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP(可選)
sudo ufw allow 443/tcp # HTTPS
Nginx核心安全配置
/etc/nginx/nginx.conf
中添加server_tokens off;
。sudo apt install certbot python3-certbot-nginx
,然后運行sudo certbot --nginx -d example.com
。/etc/nginx/sites-available/default
中添加重定向規則。ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
訪問控制與防攻擊
location /admin {
allow 192.168.1.0/24;
deny all;
}
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
location /api/ {
limit_req zone=api_limit burst=20 nodelay;
}
add_header X-Frame-Options "SAMEORIGIN";
。add_header X-XSS-Protection "1; mode=block";
。add_header X-Content-Type-Options "nosniff";
。文件與日志安全
location ~* ^/(\.git|\.ht|logs) {
deny all;
}
autoindex off;
。640
,目錄權限為750
。高級安全增強
logrotate
定期輪轉日志,分析異常請求。參考來源: