V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
探索世界的好奇心万岁
ddgweb
V2EX  ›  分享发现

第一次知道 https 会暴露服务器 ip

  •  1
     
  •   ddgweb · 2020-12-06 23:38:17 +08:00 · 7573 次点击
    这是一个创建于 532 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为网站一直有用 cdn 加速,也没有泄露过 ip,但是在群里发一下域名,别人一下子就给我服务器 ip 找出来,然后随手给我来一发 udpfloor,然后封 1 天黑洞,这就很烦。

    然后找了一些资料才知道,用 Nginx 部署网站,开启 ssl 的情况,直接访问 https+ip 会暴露证书,间接的别人就能扫到域名=ip

    当然最后我通过各种办法,暂时解决了

    45 条回复    2021-02-23 16:00:17 +08:00
    haojie06
        1
    haojie06  
       2020-12-06 23:44:11 +08:00
    默认放一个自签名的证书就好了,不然像是[censys]( https://censys.io/)这种网站的爬虫全网扫描,一下就暴露了。
    cydian
        2
    cydian  
       2020-12-07 00:05:51 +08:00 via Android
    如果是这样遍历查找,难道不慢么?
    chihiro2014
        3
    chihiro2014  
       2020-12-07 00:22:17 +08:00
    咦,学到了
    ZRS
        4
    ZRS  
       2020-12-07 00:43:57 +08:00
    有全网证书嗅探爬虫的,一般的做法是自签一个
    stille
        5
    stille  
       2020-12-07 00:45:29 +08:00 via iPad
    nginx 配置好第一件事就是关闭 ip 空主机头,retune 444 ; 并给 ssl 配个自签证书。
    miyuki
        6
    miyuki  
       2020-12-07 08:27:28 +08:00
    配个默认主机 conf,一张自签证书就 OK 了,然后再白名单 cdn 的回源段
    lqzhgood
        7
    lqzhgood  
       2020-12-07 11:22:40 +08:00
    遍历全网 ip,得到 源站 ip + 证书,然后遍历全网域名得到 域名 + 证书,
    然后证书匹配得到 源站 ip + 域名

    这个意思? 这难度有点大吧
    Aliencn
        8
    Aliencn  
       2020-12-07 11:44:55 +08:00
    你第一个事情说的是别人通过了你的域名找到了你的源站 IP 。
    第二个事情说的是通过 IP 获取到了 HTTPS 的证书域名。

    这俩事情没啥关系吧。
    wangxiaoaer
        9
    wangxiaoaer  
       2020-12-07 12:06:36 +08:00
    直接访问 https+ip 会暴露证书,间接的别人就能扫到域名=ip------------------

    没看懂,这俩 IP 不是同一个吧?
    shuax
        10
    shuax  
       2020-12-07 13:07:14 +08:00
    你们是不是对 cdn 有误解啊
    no1xsyzy
        11
    no1xsyzy  
       2020-12-07 13:17:56 +08:00   ❤️ 1
    @wangxiaoaer 简单地举例好了
    $ curl https://39.156.69.79 -sv --output /dev/null 2>&1 | grep CN=
    * subject: C=CN; ST=Beijing; O=BeiJing Baidu Netcom Science Technology Co., Ltd; OU=service operation department; CN=www.baidu.cn

    ( OpenSSL 似乎也能做这事,但不太记得 OpenSL 的语法了)

    我知道 IP,可以去探测这个 IP 上的证书。
    那么只要我把 IPv4 空间全部探测一遍,我就知道某个没有防护此类信息泄漏的域名在哪个 IP 上
    no1xsyzy
        12
    no1xsyzy  
       2020-12-07 13:20:23 +08:00   ❤️ 1
    说实话,最稳的是 cloudflared ( Agro 反向隧道),你甚至不需要开放端口。
    shuax
        13
    shuax  
       2020-12-07 13:32:35 +08:00
    我懂了,这个和 cdn 没关系。就是有人把所有 IP 扫了一遍,把证书记下来,下次别人直接去查就出来了。
    ddgweb
        14
    ddgweb  
    OP
       2020-12-07 15:33:17 +08:00
    @shuax 如你所述,就是如此。
    ddgweb
        15
    ddgweb  
    OP
       2020-12-07 15:39:45 +08:00
    @no1xsyzy 你举例非常准确,此问题在全网暴露情况非常普遍,绝大多数博客、个人中小企业站长,都有忽略这个问题。
    ColoThor
        16
    ColoThor  
       2020-12-07 15:58:42 +08:00
    所以服务器放一个证书,这样 cdn 和 直接访问就不是一个证书,就可以避免这个问题?
    julyclyde
        17
    julyclyde  
       2020-12-07 16:30:27 +08:00
    lz 这个思路是颠倒因果了
    确实,开启 SSL 的时候,直接访问过去,服务器会出示证书,证书里带了自己的域名
    但是上面这个做法的前提是先要知道 IP

    问题是如果已经知道了 IP 何必还 SSL 呢,直接 flood 你不就得了?
    ColoThor
        18
    ColoThor  
       2020-12-07 16:54:37 +08:00
    @julyclyde #17 是这样的,现有情况是拥有全网的 ip 与 证书 对应信息,就像茫茫人海没有目标。之后知道域名,对比全网 ip 的证书,就找到了域名对应的 ip
    julyclyde
        19
    julyclyde  
       2020-12-07 16:57:40 +08:00
    @ColoThor 既然已经拥有全网 ip 和证书对应信息了,直接在列表里搜域名不就得了,何必去 SSL 一下呢?
    qsnow6
        20
    qsnow6  
       2020-12-07 17:01:37 +08:00
    长知识了
    ColoThor
        21
    ColoThor  
       2020-12-07 17:07:36 +08:00
    @julyclyde #19 获取域名的证书
    ColoThor
        22
    ColoThor  
       2020-12-07 17:09:49 +08:00
    @julyclyde #19 具体逻辑我也没搞懂。不知道 cdn 到服务器是 https,也就是全程加密是不是就没 lz 的问题了
    imdong
        23
    imdong  
       2020-12-07 17:25:51 +08:00   ❤️ 2
    看懂了,虽然知道会被扫描,但是没想过 https + ip 会暴露域名这个问题。

    自签名了个 口吐芬芳 的证书....

    ![image.png]( https://i.loli.net/2020/12/07/IYiDuS7KapyWj6Q.png)
    julyclyde
        24
    julyclyde  
       2020-12-07 18:02:33 +08:00
    @imdong 哈哈哈哈,你这个证书真是 有意思
    Xusually
        25
    Xusually  
       2020-12-07 18:18:23 +08:00
    @imdong DDOS 10TBps x 24 小时豪华套餐已经安排上了
    Xusually
        26
    Xusually  
       2020-12-07 18:18:50 +08:00
    @imdong 补楼上 [手动狗头.gif]
    opengps
        27
    opengps  
       2020-12-07 18:22:16 +08:00 via Android
    说明问题出在了你 cdn 后端继续用了同一个证书?
    这样的话或者不用证书,或者用单独的后端域名可解
    yanzhiling2001
        28
    yanzhiling2001  
       2020-12-07 18:31:04 +08:00
    忽视是因为不知道....
    上 ssl 还都是宝塔或者 acme 代劳的,没想到还会有人扫证书。

    证书自签,再套 cdn ? cdn 的证书用正确的,自己本机的用自签的?什么原理有没有大雕介绍一下
    des
        29
    des  
       2020-12-07 18:44:27 +08:00 via iPhone
    屏蔽非 cdn 的 ip 访问就好了,总有人扫确实很烦
    lcdtyph
        30
    lcdtyph  
       2020-12-07 19:09:20 +08:00 via iPhone
    @julyclyde
    扫各大机房 ip 的 443 端口就好了,发送 clienthello,对方回复的 serverhello 中有 ssl 证书,证书里的 common name 有域名信息。这样就知道了这个 ip 的域名
    lcdtyph
        31
    lcdtyph  
       2020-12-07 19:12:41 +08:00 via iPhone
    @julyclyde
    扫描一遍 ip 段就可以得到一个域名-ip 的多值映射表。然后以后想查某个域名对应的源站 ip 查这个表就行了
    westoy
        32
    westoy  
       2020-12-07 19:22:23 +08:00
    CDN 一般都有 IP 列表的, 你默认屏蔽然后针对 CDN IP 段 ipset 搞个白名单
    no1xsyzy
        33
    no1xsyzy  
       2020-12-07 19:35:10 +08:00   ❤️ 1
    @yanzhiling2001 可能是当直接访问 IP 时返回自己给自己 IP 自签的一个证书。
    我觉得还是只给 CDN ip 白名单比较稳妥,其他 IP 过来直接 DROP,谁也不知道你开了 443
    yanzhiling2001
        34
    yanzhiling2001  
       2020-12-07 20:12:34 +08:00
    @no1xsyzy OK 。知道了,这个可以。
    xiaofeifei8
        35
    xiaofeifei8  
       2020-12-07 20:39:20 +08:00 via Android
    难道 cdn 的流量不是钱吗?最根本的问题没有解决掉啊,只要你有域名能访问,别人该打你还是打你,和知不知道 ip 没啥关系咋
    superrichman
        36
    superrichman  
       2020-12-07 20:42:28 +08:00 via iPhone
    https://site.ip138.com/v2ex.com/

    知道域名可以直接找历史 ip 的
    imdong
        37
    imdong  
       2020-12-07 21:33:28 +08:00
    另外,题主的描述是不对的。

    不是 https 会暴露 IP,而是不正确配置 HTTPS 会导致服务器暴露网站域名。
    yanzhiling2001
        38
    yanzhiling2001  
       2020-12-07 21:42:14 +08:00
    mdzz
        39
    mdzz  
       2020-12-07 23:34:35 +08:00
    @no1xsyzy 补充 OpenSSL 的: `openssl s_client -connect 39.156.69.79:443`
    weakish
        40
    weakish  
       2020-12-08 00:01:06 +08:00
    @xiaofeifei8 主帖说的 udpfloor 是针对 IP 的攻击,不涉及域名。一般这类攻击不会针对 CDN 节点的 IP 。
    lzhw
        41
    lzhw  
       2020-12-08 00:17:17 +08:00   ❤️ 1
    类似这种批量扫描全网 ip 得到对应默认证书域名以建立反查数据库的搞法也是黑灰产最爱干的,之前泄露的微博 5 亿手机号绑定数据和 QQ 8 亿手机号绑定数据其实就是黑灰产遍历全网手机号段批量喂给微博和 QQ 的“通讯录自动匹配好友”接口获取的,有了海量的手机号和对应的微博 uid/QQ 号数据,自然就可以通过微博 uid 和 QQ 号来反查绑定的手机号~
    echo1937
        42
    echo1937  
       2020-12-08 00:29:06 +08:00
    @lcdtyph #30 有点像 MD5 的彩虹表。
    salmon5
        43
    salmon5  
       2020-12-08 09:46:24 +08:00
    http://nginx.org/en/CHANGES
    *) Feature: the "ssl_reject_handshake" directive.
    解决扫 IP 获取证书问题
    lemonda
        44
    lemonda  
       2020-12-09 20:00:57 +08:00
    一个 IP 上有很多网站也可以扫出来么?
    默认 https IP 返回的应该是按字母顺序排的第一个域名
    Owenjia
        45
    Owenjia  
       2021-02-23 16:00:17 +08:00
    全网扫描自己个人做是有点难,但现在有 censys/shodan,国内各大机关和安全公司搞得复制品也好多。
    考虑下 1) 关空主机头 2)防火墙只允许 cdn ip 访问 3) cdn 与 源站之间使用 mTLS ?
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1047 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 20:13 · PVG 04:13 · LAX 13:13 · JFK 16:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.