Nginx增加SSL证书是应该注意的问题

  1.  防火墙配置:关闭所有未使用的外部端口。 通过为配置防火墙提供 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


  2. 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;
            }
        }
    }
  3. 保护 Nginx 免受点击劫持的侵害

    点击劫持(也称为 UI 伪装攻击)是一种恶意攻击,其中网站访问者会上当受骗,从而导致在与当前要访问的页面不同的页面上单击链接或按钮。 使用 X-FRAME-OPTIONS 可保护网站。

    缓解点击劫持攻击:

    1. 编辑 nginx.conf 文件:

      sudo nano /etc/nginx/nginx.conf

      添加行 add_header X-Frame-Options "SAMEORIGIN";

    2. 保存该文件。
    3. 重启 Nginx。
  4. MIME 类型探查

    此标头可阻止大部分浏览器通过 MIME 方式探查来自已声明内容类型的响应,因为标头会指示浏览器不要替代响应内容类型。 使用 nosniff 选项后,如果服务器认为内容是“文本/html”,则浏览器将其显示为“文本/html”。

    编辑 nginx.conf 文件

    sudo nano /etc/nginx/nginx.conf

    添加行 add_header X-Content-Type-Options "nosniff"; 并保存文件,然后重新启动 Nginx。

 

posted @ 2020-09-17 16:54  安逸竹  阅读(333)  评论(0编辑  收藏  举报