#教程# Nginx 关闭空主机头80和443访问 防止扫描

前言

最近发现网站的 IP 被不停的扫描,探测一些根本不存在的链接,有时候一秒就有几十、上百个连接,每天的日志也有几十 M,严重占用系统资源。

图片[1] - #教程# Nginx 关闭空主机头80和443访问 防止扫描 - 云线路

解决方案

替换 nginx.conf 的 server 段为:

server
    {
        listen 80 default_server reuseport;
        #listen [::]:80 default_server ipv6only=on;
        server_name _;
        return 444;	
    }
	
server
    {
        listen 443 default_server;
        server_name _;
        # ssl on;
        # 版本低于 1.14 打开 ssl on;
        ssl_certificate /usr/local/nginx/conf/ssl/none.crt;
        ssl_certificate_key /usr/local/nginx/conf/ssl/none.key;
        return 444;
	}	

禁止 443 端口的话需要自己颁发个自定义证书Nginx 给空主机头生成自签名 SSL 证书,或者申请个二级域名不解析 IP 的免费的证书,二级域名随便定义,目的是不让访问 443 端口就好了;

default_server 意思是默认主机头;

这里 return 444 的意思就是当访问 80 或者 443 端口时直接丢弃;

补充方案

Nginx从 2020 年发布的 1.19.4 版本开始,新增防 IP 泄露,现在补充一下方案大家

官方介绍

语法:ssl_reject_handshake on | 离开;
默认值:ssl_reject_handshake off;
上下文:http,服务器
该指令出现在版本 1.19.4 中。

如果启用,服务器块中的 SSL 握手将被拒绝。

例如,在以下配置中,服务器名称不是 example.com 的 SSL 握手将被拒绝

修改方法

在 nginx.conf 的 server 段增加:

ssl_reject_handshake on

需要 Nginx 版本高于 1.194,本站现在正在使用 443 为例:

server {
listen 443 ssl http2;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_reject_handshake on;

ssl_session_cache shared:le_nginx_SSL:50m;
ssl_session_timeout 1440m;
}

需要指明 ssl_protocols,否则导致 ssllib 发现不了 TLSv1.3 而启用了 TLSv1,等级直接降成 B
然后还要指定 ssl_session_cache,不然导致 Session resumption (caching)验证失败

© 本站文章随意转载,但请注明出处!
THE END
点赞11 分享
评论 抢沙发
头像
务必使用真实的邮箱地址评论,虚假邮箱的评论将不通过审核及无回复。
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容