Nginx - TLS/SSL安全优化HTTPS评级A+指南

概述

本文分享一些个人将https评级从c提升至A+的思路与一些基础优化和漏洞修复,并记录其中遇到的问题


1.HTTPS安全加固指南


1.1 升级openssl版本

openssl版本过低可以会对后续一些安全配置不兼容,原本版本是1.1.0升级到1.1.1就可以了,这里选择1.1.1n

源码包下载路径:/source/old/1.1.1/index.html

1.1.1操作步骤

# 将源码包上传至服务器/data/soft目录

tar -zxvf openssl-1.1.1n.tar.gz

cd openssl-1.1.1n

# 配置安装

./config --prefix=/usr/local/openssl

make && make install

# 找出原本openssl安装目录,并备份替换

mv  /usr/bin/openssl  /usr/bin/openssl.old

mv /usr/include/openssl /usr/include/openssl.old

mv  /usr/lib64/libssl.so  /usr/lib64/libssl.so.old

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/openssl/include/openssl /usr/include/openssl

ln -s /usr/local/openssl/lib/libssl.so /usr/lib64/libssl.so

ln -s /usr/local/openssl/lib/libssl.so /usr/lib64/libssl.so

echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

# 查看openssl已经是新版本了

openssl version

OpenSSL 1.1.1n  15 Mar 2022

1.2 解决Diffie-Hellman 公共密钥过弱

这里需要使用openssl生成2048位公钥,解决公钥过弱的问题

1.2.1操作步骤

# 移动到crt证书和key的存放位置,生成dhparam.pem

cd /usr/local/nginx/conf

openssl dhparam -out dhparams.pem 2048

chmod -R 755 dhparam.pem

# 编辑nginx.conf配置文件

vim nginx.conf

# 在https的server块添加

ssl_dhparam /usr/local/nginx/conf/dhparam.pem;

1.3 解决Diffie-Hellman 公共密钥过弱 / 关闭TLSv1.0、TLSv1.1、SSLv3和SSL POODLE[贵宾犬]漏洞的解决办法

SSLv3安全性太低,SSL POODLE[贵宾犬]漏洞也是基于SSLv3实现的所以将其关掉,关掉TLSv1.0和TLSv1.1是为了提高安全性,可以使用TLSv1.2和TLSv1.3

1.3.1操作步骤

# 编辑nginx.conf配置文件

vim nginx.conf

# 在https的server块中更改下列两项配置

ssl_protocols TLSv1.2;

ssl_ciphers  ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

# ssl_protocols取消对TLSv1.0、TLSv1.1的支持时还需要将相对应的配置给删除

 具体配置参数可以访问:https://ssl-config.mozilla.org/按照具体的版本信息进行配置

1.4 HSTS严格传输安全协议

1.4.1操作步骤

# 在nginx.conf配置文件server块中开启HSTS协议

server {

        add_header Strict-Transport-Security "max-age=36000000; includeSubdomains; preload";

注解:在客户端请求服务端时,服务端会在请求头中附带Strict-Transport-Security,它的作用是在下次浏览器访问该网址的HTTP时自动转换成HTTPS,该目的是为了防止中间人攻击。
max-age:是指Strict-Transport-Security的有效时间,按秒数计算,需要设置在至少6个月以上。
preload:预加载,这个涉及浏览器的预加载名单,有兴趣可以自行百度。


2.Nginx优化以及基础漏洞修复


2.1 Nginx只允许域名访问

2.1.1操作步骤

# 禁止通过IP访问

    server {
        listen 80 default_server;
        server_name _;
        return 404;
    }

2.2  HTTP头Hostname 攻击

2.2.1操作步骤

    server {
        listen 80;
        server_name _; 

        if ($http_Host !~* ^IP或者域名$){
                return 403;
        }
    }

2.3 隐藏版本号

2.3.1操作步骤

http {
    server_tokens off;

}

文章会慢慢更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值