Nginx增加SSL证书是应该注意的问题
- 防火墙配置:关闭所有未使用的外部端口。 通过为配置防火墙提供 CLI,不复杂的防火墙 (ufw) 为
iptables
提供了前端。
安装
ufw
,并将其配置为允许所需任何端口上的流量。sudo apt-get install ufw
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable - HTTPS配置
配置反向代理,以便进行安全 (HTTPS) 客户端连接
-
通过指定由受信任的证书颁发机构 (CA) 颁发的有效证书来配置服务器,以侦听端口
443
上的 HTTPS 流量。 -
通过采用以下“/etc/nginx/nginx.conf”文件中所示的某些做法来增强安全保护。 示例包括选择更强的密码并将通过 HTTP 的所有流量重定向到 HTTPS。
-
添加
HTTP Strict-Transport-Security
(HSTS) 标头可确保由客户端发起的所有后续请求都通过 HTTPS。 -
如果将来将禁用 HTTPS,请使用以下方法之一:
- 不要添加 HSTS 标头。
- 选择短的
max-age
值。
添加 /etc/nginx/proxy.conf 配置文件:
proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffers 32 4k;
编辑 /etc/nginx/nginx.conf 配置文件。 示例包含一个配置文件中的
http
和server
部分。http { include /etc/nginx/proxy.conf; limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s; server_tokens off; sendfile on; keepalive_timeout 29; # Adjust to the lowest possible value that makes sense for your use case. client_body_timeout 10; client_header_timeout 10; send_timeout 10; upstream helloapp{ server localhost:5000; } server { listen *:80; add_header Strict-Transport-Security max-age=15768000; return 301 https://$host$request_uri; } server { listen *:443 ssl; server_name example.com; ssl_certificate /etc/ssl/certs/testCert.crt; ssl_certificate_key /etc/ssl/certs/testCert.key; ssl_protocols TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; ssl_ecdh_curve secp384r1; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ssl_stapling on; #ensure your cert is capable ssl_stapling_verify on; #ensure your cert is capable add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; #Redirects all traffic location / { proxy_pass http://helloapp; limit_req zone=one burst=10 nodelay; } } }
-
- 保护 Nginx 免受点击劫持的侵害
点击劫持(也称为 UI 伪装攻击)是一种恶意攻击,其中网站访问者会上当受骗,从而导致在与当前要访问的页面不同的页面上单击链接或按钮。 使用
X-FRAME-OPTIONS
可保护网站。缓解点击劫持攻击:
-
编辑 nginx.conf 文件:
sudo nano /etc/nginx/nginx.conf
添加行
add_header X-Frame-Options "SAMEORIGIN";
。 - 保存该文件。
- 重启 Nginx。
-
- MIME 类型探查
此标头可阻止大部分浏览器通过 MIME 方式探查来自已声明内容类型的响应,因为标头会指示浏览器不要替代响应内容类型。 使用
nosniff
选项后,如果服务器认为内容是“文本/html”,则浏览器将其显示为“文本/html”。编辑 nginx.conf 文件
sudo nano /etc/nginx/nginx.conf
添加行
add_header X-Content-Type-Options "nosniff";
并保存文件,然后重新启动 Nginx。