快捷搜索:   nginx

宝塔Nginx配置只允许域名访问 禁止直接IP访问 防止SSL泄露IP 返回ERR_EMPTY_RESPONS

宝塔的NGINX用的非常多,但是宝塔默认没有禁止别人通过IP访问,因此很容易被扫描器扫描到,加上NGINX的不是漏洞的漏洞,IP访问HTTPS的话,会自动匹配第一个站点的SSL证书给IP使用,因此会造成IP泄露(证书带域名信息,网上有扫描全网IP并读取SSL证书中域名信息的方法)

因此为了安全起见,我们需要设置两个项目

1、给IP配置上一张带错误域名的证书,防止泄露你自己的域名

2、禁止直接访问IP,将访问IP的请求,不管是HTTP还是HTTPS全部转错误页  返回状态码444 ERR_EMPTY_RESPONSE

两步其实可以合并成下面步骤操作:

1、首页在宝塔中创建一个默认站点,这里域名随意填写,只要不是你的域名就行

image.png

2、修改默认站点到新创建的这个域名

image.png

3、给IP配置上一张带错误域名的证书(给默认站点设置证书),我们这里利用了CLOUDFLARE来作为错误证书颁发源,利用CF 接入域名,可以颁发15年的仅CF CDN网络体系承认的证书的功能。

我们这里使用了cdn.bnxb.com来接入,利用CNAME接入的漏洞,我们添加了一个dnspod.com然后生成了属于 dnspod.com的证书

大家可以使用我们已经生成的这张证书,反正只要域名不是你真实的域名就行了,提供如下

公共证书

-----BEGIN CERTIFICATE-----
MIIDITCCAsagAwIBAgIUTcEWLzynkLCFCoAC1iDH2vG3EkYwCgYIKoZIzj0EAwIw
gY8xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMTgwNgYDVQQL
Ey9DbG91ZEZsYXJlIE9yaWdpbiBTU0wgRUNDIENlcnRpZmljYXRlIEF1dGhvcml0
eTAeFw0xOTAxMTMxNDMxMDBaFw0zNDAxMDkxNDMxMDBaMGIxGTAXBgNVBAoTEENs
b3VkRmxhcmUsIEluYy4xHTAbBgNVBAsTFENsb3VkRmxhcmUgT3JpZ2luIENBMSYw
JAYDVQQDEx1DbG91ZEZsYXJlIE9yaWdpbiBDZXJ0aWZpY2F0ZTBZMBMGByqGSM49
AgEGCCqGSM49AwEHA0IABAg/hZ9lDHj/f+0jDRAN23TkNEqIi46mCGnwZVD3glxL
l+a1mpfXLHSEFTipnSyQgmvkPYzQGaEIFD0q6W/ZgMujggEqMIIBJjAOBgNVHQ8B
Af8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMAwGA1UdEwEB
/wQCMAAwHQYDVR0OBBYEFCEZF6Eyem01XPbgwr6DXLZV1qsQMB8GA1UdIwQYMBaA
FIUwXTsqcNTt1ZJnB/3rObQaDjinMEQGCCsGAQUFBwEBBDgwNjA0BggrBgEFBQcw
AYYoaHR0cDovL29jc3AuY2xvdWRmbGFyZS5jb20vb3JpZ2luX2VjY19jYTAjBgNV
HREEHDAaggwqLmRuc3BvZC5jb22CCmRuc3BvZC5jb20wPAYDVR0fBDUwMzAxoC+g
LYYraHR0cDovL2NybC5jbG91ZGZsYXJlLmNvbS9vcmlnaW5fZWNjX2NhLmNybDAK
BggqhkjOPQQDAgNJADBGAiEAnrequCk/QZOOrcPH6C3Hgcy4SPNUy5rQtku/aYkj
qQoCIQCN6IyYNiXuwG+8jUgJrveiirBjiz2jXZSTEfVAyibjTg==
-----END CERTIFICATE-----

密钥

-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgK0HE3hTJQDg6p/fj
nS92eSuRKZEZ5F4grT6tWFKNYVmhRANCAAQIP4WfZQx4/3/tIw0QDdt05DRKiIuO
pghp8GVQ94JcS5fmtZqX1yx0hBU4qZ0skIJr5D2M0BmhCBQ9Kulv2YDL
-----END PRIVATE KEY-----

填写到宝塔的默认站点中

image.png

保存后,点击配置文件修改配置

将前面部分改成

listen 80 default_server;

listen 443 ssl http2 default_server;

server_name default.com;

return 444;

如下图

image.png


大功告成,现在直接访问HTTP://IP 或者HTTPS://IP

就会出现这样的提示

image.png

然后网上的漏洞扫描程序,扫到的这个IP的证书就是dnspod的了,这样你的IP就不会泄露



PS:目前最新的NGINX 1.19 已经直接支持设置ssl_reject_handshake,即终止 SSL 握手阶段,可以直接不发送证书。方法如下

要求 nginx 版本 1.19.4 以上、(编译进 nginx 的)OpenSSL 版本 1.1.1i 以上,具体请执行 nginx -V 查看 nginx version 和 built with OpenSSL 的值】


server

{

        listen 443 ssl http2 default_server;

        server_name _;

        ssl_protocols TLSv1.2 TLSv1.3;

        ssl_reject_handshake on; //启用拒绝 TLS 握手

        ssl_session_cache shared:SSL:10m; //这个必须设置,不指定 ssl_session_cache 的话,会导致 Session resumption (caching) 验证失败

        ssl_session_timeout 10m;


        access_log  /www/wwwlogs/access.log;

}


顶(6)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论