前言
最近发现网站的 IP 被不停的扫描,探测一些根本不存在的链接,有时候一秒就有几十、上百个连接,每天的日志也有几十 M,严重占用系统资源。
解决方案
替换 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)验证失败
© 本站文章随意转载,但请注明出处!
>> 如果您觉得本站文章对您有所帮助,购买 VPS 时候请走本站AFF链接!
>> 某些文章具有时效性,若内容有错误或已失效,欢迎在下方评论区留言向我们反馈.
>> 所有文章均基于分享的原则,所有言论均个人观点,请注意全部都不是推荐,是分享!分享!分享!
>> 所有文章均基于分享的原则,所有言论均个人观点,请注意全部都不是推荐,是分享!分享!分享!
THE END
暂无评论内容