woshisongzhe
V2EX  ›  站长

拒绝 TCP 协议,发现还能访问网站

  •  1
     
  •   woshisongzhe · Aug 18, 2016 · 9807 views
    This topic created in 3578 days ago, the information mentioned may be changed or developed.
    以前一致认为 HTTP 协议是建立在 tcp 协议之上的,如果禁了 tcp 协议之后,那么就不能访问网站了,现在我尝试把 TCP 协议禁了之后网站也能访问,看来如果网站不是需要保持长连接需要 tcp 协议,那么可以把它禁了,这样,网站安全性就更进一步了
    Supplement 1  ·  Aug 18, 2016
    问题总算研究清楚了:理论和实践上是可以“拒绝” TCP 协议的,这种方式是在进入后端服务器之前要设置一个代理服务器,这个代理服务器替代后端服务器进行三次握手之后才把访问内容传递到后端服务器,这样,后端对于 SYN Flood 类型的 DDOS 攻击完全无视,当然要求这代理服务器能辨别哪些流量属于 SYN Flood ,比如在第一次握手以及第二次握手在限定时间内没有得到反映时立马丢弃

    最后,感谢回复“哈哈哈哈哈”的同学
    Supplement 2  ·  Aug 19, 2016
    本帖有一些同音字,比如开头的“一致”实际为“一直”,本帖实则是一个分享贴,虽然有错误,但对个体的防护有很大的启发与借鉴作用,具体措施本人不再提供
    58 replies    2016-08-19 11:22:24 +08:00
    justfly
        1
    justfly  
       Aug 18, 2016
    什么鬼
    aprikyblue
        2
    aprikyblue  
       Aug 18, 2016 via Android
    什么鬼
    hahiru
        3
    hahiru  
       Aug 18, 2016 via Android
    蛤?
    aprikyblue
        4
    aprikyblue  
       Aug 18, 2016 via Android
    你确定。。不是禁错了??
    woshisongzhe
        5
    woshisongzhe  
    OP
       Aug 18, 2016
    @aprikyblue 我在阿里云后台禁的
    just1
        6
    just1  
       Aug 18, 2016 via Android
    消失的 2 楼
    我猜是浏览器缓存
    Hanxv
        7
    Hanxv  
       Aug 18, 2016 via Android
    你确定不是缓存?
    HTTP 就是建立在 TCP 协议之上,它需要可靠传输。如果使用 UDP ,你能想象你的网站会是什么样子么?

    还扯淡,安全性。传输都不可靠,你还敢说安全。
    woshisongzhe
        8
    woshisongzhe  
    OP
       Aug 18, 2016
    @just1 不是缓存,我测试了好几次了,也重启了服务器
    cloverstd
        9
    cloverstd  
       Aug 18, 2016
    一个河,你把桥给撤了,你咋过去
    bdbai
        10
    bdbai  
       Aug 18, 2016 via Android
    楼主试试 telnet 你服务器的 80 端口,把请求手打进去看看情况。
    woshisongzhe
        11
    woshisongzhe  
    OP
       Aug 18, 2016
    @Hanxv 之前我就只开放 tcp ,其他的都封了

    我昨晚开始封了 TCP 之后发现网站也能访问

    TCP 协议是指握手之后才进行数据传输,所说 http 协议是建立在 TCP 上,但 HTTP 是无状态响应
    jasonyang9
        12
    jasonyang9  
       Aug 18, 2016
    恭喜 LZ 发现外星科技。强烈建议抓包看看到底是什么鬼
    rock_cloud
        13
    rock_cloud  
       Aug 18, 2016
    用 curl 试试?
    woshisongzhe
        14
    woshisongzhe  
    OP
       Aug 18, 2016
    @bdbai 提示‘不是内部命令。。。。’
    0TSH60F7J2rVkg8t
        15
    0TSH60F7J2rVkg8t  
       Aug 18, 2016
    楼主从哪里访问的?访问地址确定不是运营商给返回的缓存页面吗?
    iyaozhen
        16
    iyaozhen  
       Aug 18, 2016 via Android
    楼主也是叼啊。去 17ce 啥的测试下,你会发现全国都红了。
    rphoho
        17
    rphoho  
       Aug 18, 2016   ❤️ 1
    0.0 火钳刘明
    derpc
        18
    derpc  
       Aug 18, 2016 via iPhone
    瓜子饮料可乐
    cocochan
        19
    cocochan  
       Aug 18, 2016   ❤️ 2
    完全可以, OVH 的防火墙就是这样在遭受 DDoS 攻击后会阻断所有的 TCP 但是 HTTP 流量会被转发

    149.56.231.130

    www.nyavm.com

    各位可以试试看
    bdbai
        20
    bdbai  
       Aug 18, 2016 via Android
    @woshisongzhe Windows 需要启用功能, Linux 从包管理器装。
    无状态跟 TCP 没关系吧。
    jasontse
        21
    jasontse  
       Aug 18, 2016 via iPad
    mark 等真相
    RobertYang
        22
    RobertYang  
       Aug 18, 2016 via Android
    难道你是 QUIC ? 23333
    xmh51
        23
    xmh51  
       Aug 18, 2016
    坐等真相 阿里云被打脸?? 后台 tcp 被禁 网站还能访问 23333
    dndx
        24
    dndx  
       Aug 18, 2016
    楼主这不是高级黑吧。
    wsy2220
        25
    wsy2220  
       Aug 18, 2016 via Android
    火钳刘明
    woshisongzhe
        26
    woshisongzhe  
    OP
       Aug 18, 2016
    @jasonyang9 我现在在服务器外套了个均衡负载,但是我把内外网出入口的 tcp 也都封了,但是也是可以访问,感觉非常奇怪,难道通过阿里云的控制端封禁无效?但是我设置其他的比如 22 端口只留下白名单等设置也都有效

    @ahhui 直接通过浏览器输入网址以及通过 app 链接都能获取到结果,包括查询数据库等都能获取到正确结果

    @iyaozhen 测了,不过访问的是均衡负载的 ip ,但是我明明把所以内外网的出入口的 tcp 全都封了,也能访问到网站,真是奇了怪了

    @xmh51 我刚才直接把域名指向后端服务器,吃完饭回来发现又访问不了,但是通过均衡负载那个域名还能访问,问题是我内网也把它给封了的,难道 tcp 对内外不起作用还是说内网采取的不是 TCP 协议?
    jy01264313
        27
    jy01264313  
       Aug 18, 2016
    什么鬼,没听懂?
    Citrus
        28
    Citrus  
       Aug 18, 2016
    阿里云的负载均衡分七层和四层,目测楼主配了一个七层 HTTP 负载均衡然后把四层全封死了。。。这样不能访问才奇怪呢。。。
    Citrus
        29
    Citrus  
       Aug 18, 2016
    不过楼主这从现象推原因的逻辑也是挺牛逼的。快去证伪万有引力和牛顿定律吧!
    crab
        30
    crab  
       Aug 18, 2016
    那你 80 端口监听用啥协议啊
    zealic
        31
    zealic  
       Aug 18, 2016
    阿里云的防火墙我就不说了,各种逻辑不通顺,封了的端口可以继续访问,出口流量配置允许所有流量无效,必须配置指定的外部入站随机端口端 40000+ 允许才能正常工作
    UnisandK
        32
    UnisandK  
       Aug 18, 2016
    验证到后来楼主变成了阿里黑。。
    woshisongzhe
        33
    woshisongzhe  
    OP
       Aug 18, 2016
    @Citrus 不是,我只配了 4 层的均衡负载

    @crab 均衡负载的 80 端口是监听 tcp

    @zealic 阿里云的流量、内存、 cpu 抓取的是误差非常大的,你能想象 cpu 的利用率达 100 网站还能打得开么?根据阿里云的抓取,是的,还能打得开,而我抓取的就 8 点几,不知道他们是怎么抓取的,流量我如果抓取了 100Kb/s ,阿里云的抓取肯定达到 500Kb/s 了

    @UnisandK 楼主从来不去黑别人
    zealic
        34
    zealic  
       Aug 18, 2016
    @woshisongzhe 阿里走的是双向流量收费,本身内网 NAT 貌似也是要收费的;由于它定制了操作系统在内部加入了一些 agent 和内部系统通信和动态更新,所以对于网络防火墙限制有许多例外,总体来说非常恶心。
    woshisongzhe
        35
    woshisongzhe  
    OP
       Aug 18, 2016
    @zealic 问题是他们宣称的单向收费(收取出口流量),但是目前也就是在研究研究,先不管那么多了
    FreeDog
        36
    FreeDog  
       Aug 18, 2016
    那个防火墙不是只针对 CentOS 有效吗?之前看到的提示是那样子,所以就没有用它
    qzy168
        37
    qzy168  
       Aug 18, 2016
    ban 了 TCP 还能访问网站是什么原理?
    whahugao
        38
    whahugao  
       Aug 18, 2016
    马克一下 坐等下文
    woshisongzhe
        39
    woshisongzhe  
    OP
       Aug 18, 2016
    @qzy168 现在的情况是,直接指向 ECS 是访问不了网站的,但是通过均衡负载即使后段的内网出入口封了 tcp 后还是能访问,我怀疑是均衡负载的内网 ip 直接与后端的服务器绑上了,无论后端怎么封,都是可以通过均衡负载访问,因为均衡负载没有设置封禁 tcp
    mengzhuo
        40
    mengzhuo  
       Aug 18, 2016
    哈哈哈哈 今日最佳笑话!!!
    intsilence
        41
    intsilence  
       Aug 18, 2016
    哈哈哈哈哈。
    iamzhuyi
        42
    iamzhuyi  
       Aug 18, 2016 via Android
    楼主是宋喆
    goodryb
        43
    goodryb  
       Aug 18, 2016
    哈哈哈哈哈哈哈哈,楼主 NB
    9hills
        44
    9hills  
       Aug 18, 2016
    看到后来,发现『拒绝』 TCP 协议的办法就是做一个七层的转发。。。。。。

    喂喂,这个还用发现么
    woshisongzhe
        45
    woshisongzhe  
    OP
       Aug 18, 2016
    @9hills 假如没有现成的七层转发你这么做?
    woshisongzhe
        46
    woshisongzhe  
    OP
       Aug 18, 2016
    @9hills 另外,阿里云的 7 层负载不负责给你防 DDOS ,流量过来照样给你导进来
    oska874
        47
    oska874  
       Aug 18, 2016
    好奇,怎么禁掉 tcp ?
    liyvhg
        48
    liyvhg  
       Aug 18, 2016 via Android
    楼主试一下
    sudo iptables -I INPUT -p tcp -j DROP
    彻底丢掉 TCP 的包,温馨提示:提前做好备份
    woshisongzhe
        49
    woshisongzhe  
    OP
       Aug 18, 2016
    @liyvhg 我是通过阿里云的 ECS 控制台设置的,没有对 iptables 设置
    @oska874 通过阿里云的 ECS 控制台
    liyvhg
        50
    liyvhg  
       Aug 18, 2016 via Android
    @woshisongzhe 估计阿里云自己做了一些控制,放开了常用端口
    9hills
        51
    9hills  
       Aug 18, 2016
    @woshisongzhe 7 层负载均衡会把 SYN flood 给你导进来?
    woshisongzhe
        52
    woshisongzhe  
    OP
       Aug 18, 2016
    @9hills 客服工单就这么回复:不具有防 DDOS 功能
    woshisongzhe
        53
    woshisongzhe  
    OP
       Aug 18, 2016
    @liyvhg 据我深入了解,均衡负载可以从另一方来说是替换了原 ECS 的公网 ip ,导致你对这个 ECS 怎么设置只要通过均衡负载访问的都无效
    usernametoolong
        54
    usernametoolong  
       Aug 18, 2016
    从上到下看了一遍。。。。。真的是。。。。。
    无言以对。。。。。。。。
    justfly
        55
    justfly  
       Aug 18, 2016
    大致看明白了 一台阿里云主机本来有外网 IP 后来在上面加了一个负载均衡 就把原来外网 IP 网卡的 tcp 禁掉了,然后去访问负载均衡器发现能访问。所以得出帖子的结论。
    crazycen
        56
    crazycen  
       Aug 19, 2016 via iPhone
    看了评论回复,发现是伪证!
    veelog
        57
    veelog  
       Aug 19, 2016 via Android
    传输层都被禁用了,应用层是如何通信的???
    woshisongzhe
        58
    woshisongzhe  
    OP
       Aug 19, 2016 via iPhone
    @justfly 是的,这也是我后来才发现的,但还不够完整,因为我也把内网的也给禁用了
    @veelog 这需要对阿里云的均衡负载分析才知道,而不是只针对后端的 ECS
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5400 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 166ms · UTC 07:56 · PVG 15:56 · LAX 00:56 · JFK 03:56
    ♥ Do have faith in what you're doing.