V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nai1si
V2EX  ›  程序员

短信接口被攻击,怎么禁掉境外 ip 访问

  •  
  •   nai1si · 98 天前 · 2873 次点击
    这是一个创建于 98 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请问怎么禁掉境外 ip 访问,阿里云的服务器。已做频率限制,增加图形验证码。又怕图形验证码被识别,现在都不敢往里充值了。

    29 条回复    2024-07-31 12:42:47 +08:00
    StinkyTofus
        1
    StinkyTofus  
       98 天前
    限制频率, 增加验证码, 已经够了, 再增加限制就太影响用户体验了, 如果这样还承受不了, 换其他方式吧。
    llcxx
        2
    llcxx  
       98 天前
    判断 IP 是否中国 IP 段,不是就默认不发短信就好
    nai1si
        3
    nai1si  
    OP
       98 天前
    怎么判断 ip 是不是境内 ip
    toneewang
        4
    toneewang  
       98 天前 via iPhone
    @nai1si 根据 ip 库,能大部分匹配,不能最准确
    nai1si
        5
    nai1si  
    OP
       98 天前
    @toneewang ip 库在哪里?
    37Y37
        6
    37Y37  
       98 天前 via Android
    通过 DNS 解析,境外的不解析或者解析个错误的地址,很多 DNS 都提供这功能,例如阿里云
    julyclyde
        7
    julyclyde  
       98 天前
    @nai1si geoip
    nginx 可以直接支持
    fredcc
        8
    fredcc  
       98 天前
    云防火墙-防护配置-访问控制-互联网边界-入向策略

    waf 也有类似设置
    gaobh
        9
    gaobh  
       98 天前 via iPhone
    dns 侧,线路选境外,解析到 127.0.0.1 即可
    zjsxwc
        10
    zjsxwc  
       98 天前
    https://github.com/17mon/china_ip_list/blob/master/china_ip_list.txt
    写个 bash 脚本让 iptables 只允许上面的中国 ip 访问就行

    #!/bin/bash

    # 清空所有规则
    iptables -F

    # 允许本地回环接口的通信
    iptables -A INPUT -i lo -j ACCEPT

    # 允许已建立的连接和相关连接
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    # 获取中国的 IP 段列表(这需要您事先准备好)
    CHINA_IP_RANGES=(
    "1.0.1.0/24"
    "2.0.0.0/16"
    # ..... 添加更多的中国 IP 段
    )

    # 对于每个中国的 IP 段,添加允许规则
    for ip_range in "${CHINA_IP_RANGES[@]}"
    do
    iptables -A INPUT -s $ip_range -j ACCEPT
    done

    # 拒绝其他所有的输入连接
    iptables -A INPUT -j DROP
    nai1si
        11
    nai1si  
    OP
       98 天前
    @gaobh 攻击方本地可以改 hosts 文件
    EdisonEdz
        12
    EdisonEdz  
       98 天前
    geoip ,加个实现包判断下 ip 就好了
    nai1si
        13
    nai1si  
    OP
       98 天前 via Android
    @EdisonEdz 目前你公司也在用吗? 效果好不好
    SilenceLL
        14
    SilenceLL  
       98 天前
    用 nginx + geoip 封掉就可以,你可以看下 nginx access 日志,里面的 country 字段是否跟你的预期一致。
    nai1si
        15
    nai1si  
    OP
       98 天前 via Android
    研究研究
    abccccabc
        16
    abccccabc  
       98 天前
    你的验证码换成汉字,目前能识别汉字图形的系统不多吧?
    flytsuki
        17
    flytsuki  
       98 天前
    让运费在防火墙拦截,只开放中国的 ip 段
    VagrantZ
        18
    VagrantZ  
       98 天前
    eluotao
        19
    eluotao  
       98 天前
    直接非注册用户不发验证码。
    feiyan35488
        20
    feiyan35488  
       97 天前
    @nai1si 有免费的 ip 库,如 ipip
    加上验证码,尽量用滑动或智能验证码,提升用户体验
    lambdaq
        21
    lambdaq  
       97 天前
    @nai1si #11



    “@gaobh 攻击方本地可以改 hosts 文件”

    兄弟。如果你觉得改 hosts 文件就能改 ip ,可能你需要补的课比较多。。。漏洞不止这一处
    nai1si
        22
    nai1si  
    OP
       97 天前 via Android
    @eluotao 注册的时候就得用,哈哈
    nai1si
        23
    nai1si  
    OP
       97 天前 via Android
    @lambdaq 我就知道这一处,请指教
    nai1si
        24
    nai1si  
    OP
       97 天前 via Android
    @feiyan35488 滑动验证码是否涉及到机器学习
    nai1si
        25
    nai1si  
    OP
       97 天前 via Android
    @SilenceLL 打算先试试看看效果咋样
    eluotao
        26
    eluotao  
       97 天前
    分 3 部:
    1 、先分析 ip + 浏览器指纹国内还是国外 任何 ip 提交超过 2 个号码 就把号码和 ip 加黑名单 有免费 收费
    2 、再分析提交号码是否虚拟号等不正常运营号码 只要是,直接返回拒绝 此方法免费
    3 、最后商用验证码 滑块即可 免费 收费 都有

    这样下来基本就能解决大部分黑产,少量有技术的,还有一部分,就上微信扫码
    nai1si
        27
    nai1si  
    OP
       97 天前
    @eluotao 滑块验证码,免费的有推荐吗
    feiyan35488
        28
    feiyan35488  
       97 天前
    @nai1si 建议用商用的,不是很贵
    免费的话,可以找开源的,或商用产品的试用流量
    alamak76
        29
    alamak76  
       97 天前
    1. cloudflare
    2. 自家防火门,用 ip2location ip 库来防国外。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3729 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:30 · PVG 18:30 · LAX 02:30 · JFK 05:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.