人生就是由众多的细节组成的
正因为是个细节,所以常被人所淡忘

如何防止网站源IP地址泄露 套cdn隐藏服务器源IP

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

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

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

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

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

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

BT宝塔禁止直接用IP访问与防止SSL泄露IP

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

BT宝塔禁止直接用IP访问与防止SSL泄露IP

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;

如下图

 

大功告成,现在直接访问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;
}

 

如果原站IP已经暴露
第一步,换个IP;
第二步,服务器 80 443 端口只允许CF的IP段访问,其他IP直接拒绝连接;
第三步,nginx 配置 CF 的自签根证书,让服务器和CF这段连接的通信使用CF得证书,这样即使 80 443 端口意外开放,别人手动解析到你的IP上域名对的上的情况下连接也会阻断,避免通过证书找到真实IP;
第四步,CF上各种安全设置强制SSL啥的都打开。
剩下的就是网站自身了,动态程序的话注意日志和返回的信息触发邮件啥的不要暴露IP即可

赞(1) 打赏
未经允许不得转载:毛桃博客 » 如何防止网站源IP地址泄露

评论 抢沙发

评论前必须登录!

 

实践是学习的最佳途径

支持快讯、专题、百度收录推送、人机验证、多级分类筛选器,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、文章图片弹窗、自动缩略图等...

了解更多看平潭

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册