nginx解决非人类使用http打开的443,解决网安漏扫时误扫443端口带来的问题

一、问题描述

正常访问https的站点时,使用网址https://www.baidu.com,但会有一种错误的访问请求http://www.baidu.com:443,一般都是非人类所为,如漏洞扫描工具,那么请求以后带来的后果是个错误页面

400 Bad Request

The plain HTTP request was sent to HTTPS port

如图:

通常我们部署的nginx,会用add_header添加一些安全类属性,由于上面的错误是nginx直接返回的错误,因此不带有这些安全属性,那么漏洞扫描工具就会报告网站或主机不安全,解决起来也很麻烦,本人通过不断搜索+尝试,最终完美解决

二、解决方法

1、直接给你答案

配置默认站点
server {
listen 80 default_server;listen 443 ssl default_server;server_name _;
#这里可以补充自己要添加的安全性设置等

#修改自定义的497页面
error_page 497 /497.html;location = /497.html{return 200 "非法https请求";}

default_type text/html;return 403 "源站不存在或不可访问";
}

返回的默认400错误页太丑了,这里加了自定义,是想告诉你,虽然我们看到是400错误,实际上它并不是400错误代码,而是497代码,此前我一直自定义400,但还是显示默认页,网上找了很多教程,终于见到一位大神的回复,说是497错误,来源于:https://q.cnblogs.com/q/112867

最主要的问题是:如果不去自定义497的话,那么根据上面的配置,不会抛出403页面,一直是显示400页面,按理说上面已经监听到了,就应该返回才对,不知道算不算bug

2、尝试过程中走的弯路

当上面不配置497的时候,返回的是400,于是我第一个想到的可能性是默认配置监听不到http://xxx:443,于是误区就开始了

从请求地址http://xxx:443来分析,它应该是监听不带ssl的443端口,即listen 443;

带证书的监听是listen 443 ssl;所以我尝试添加一条只listen 443;的,确实可以监听到,也可以返回我要的结果,比如返回403或跳转等

此时,觉得问题已经解决了,然后发现,后面的配置有其它ssl站点的全都打不开了,看了日志,原来是443冲突了

listen 443和其它块中的listen 443 ssl是冲突的,不能同时使用,于是进入了误区2

尝试listen 443增加ip,我用的是腾讯云,有内网ip,如10.0.1.1,于是使用

listen 10.0.1.1:443,这里居然可以了,其它ssl站点也正常了,此时,觉得问题又解决了

但是当我把此功能在另一台服务器上配置,居然又监听不到了,另一台服务器没有内网ip,直接用的是公网绑定,于是我这样监听

listen 122.122.122.122:443,发现这样不行,又是冲突了,于是我改为

listen 127.0.0.1:443,发现其它ssl站点正常了,但是400错误又出现了

于是又不断的搜索,当我碰到497自定义页面的时候,终于解决了所有的问题,才有了第一步的解决方案

相关推荐
可可苏饼干12 分钟前
TOMCAT
java·运维·学习·tomcat
刘延林.19 分钟前
树莓派 5 上 Ubuntu 24.04 LTS 自带 RDP 远程桌面重启密码就变
linux·运维·ubuntu
我不是醉忧20 分钟前
RedHat系统搭建DNS主从服务器
linux·运维·服务器
正在努力的小河24 分钟前
Linux SPI 驱动实验
linux·运维·服务器
adnyting25 分钟前
【Linux日新月异(九)】CentOS 7其他常用命令大全:系统操作与管理必备技巧
linux·运维·centos
-dcr27 分钟前
39.华为云运维类服务
运维·服务器·华为云·lts·cts·ces·smn
木易 士心1 小时前
Protocol Buffers (Protobuf) 详解
运维·服务器
ruleslol1 小时前
nginx-负载均衡的配置
nginx
百***24131 小时前
Nginx反向代理出现502 Bad Gateway问题的解决方案
运维·nginx·gateway
以琦琦为中心2 小时前
在RK3568开发板嵌入式开发中,配置NFS服务是实现与Ubuntu虚拟机之间文件共享的常用方法
linux·运维·ubuntu·rk3568