防止CPA被扫的方案【附教程】

light2199 2026-07-10 16:12 1

昨天晚上发现自己部署的CPA也被扫了,还好并没有默认的key所以对方试了十几次都是401;


但被扫终归是极度不爽的,本来想用http auth的方案的,后面发现不行而且不方便,又去问了ai找方案结果提供的方案一个比一个拉,然后自己才想起其实加个随机路径就完事了。


以下是教程:


极简版


不要把 CPA 直接暴露到公网,用 Nginx 前面加一层随机路径前缀。


api.example.com是指你的域名,如果你用的ip+端口就保持你的ip+端口的原样即可


先去生成一个随机的16-32位的大小写混合的字符串方便后续作为路径使用。


先去修改NGINX配置,让根路径直接返回 444:


location / {
return 444;
}

这样扫 /v1/v1beta 的请求全部失败,只有知道随机前缀的人才能访问真实 API。然后去访问一下原路径的面板,正常情况下此时你已经无法直接通过域名来访问CPA了。


然后开始修改NGINX的配置,来让公网只允许从以下路径来访问CPA:


https://api.example.com/这里你自己写随机的大小写字符串/

示例:https://api.example.com/AaBbcccasdasdasda/

Nginx 用:


location ^~ /这里你自己写随机的大小写字符串/ {
proxy_pass http://127.0.0.1:8317/;
}

注意 proxy_pass 末尾的 /,它会把公网路径里的随机前缀剥掉,再转发给后端 CPA。


现在你在之前的无法访问的CPA地址后面加上你新加的这个随机路径去访问,就可以正常访问到CPA了。


另外记得改完之后去客户端里把配置末尾加上新加的随机路径


比如原来是https://api.example.com 或者https://api.example.com/v1

现在改成https://api.example.com/这里你自己写随机的大小写字符串

或者是https://api.example.com/这里你自己写随机的大小写字符串 /v1

最新回复 (19)
  • light2199 楼主 07-10 16:13
    1

    这个方案不适用sub2api,因为他前端没做相对路径兼容导致前端无法访问,但你可以单独把他的api的url按照这个方案配置也是可以的。

  • mact 07-10 16:15
    2

    域名 + fail2ban就可以了,缺点是自己点错几次可能把自己也给ban进去

  • Joesnuby 07-10 16:16
    3

    设置白名单更方便,我现在就只给我常用的ip设

  • light2199 楼主 07-10 16:17
    4

    对啊,你说的这个就是我想避免的,而且主要是压根不想给对方任何扫的机会,而且说不定哪天CPA暴个漏洞出来,你的这个方案就不行了,而我这个方案就很稳,对方压根都不知道你的路径是啥。

  • 上界司命 07-10 16:17
    5

    我用1panel做的反代管理。直接做了个白名单ip 然后用1panel搞个计划任务。每分钟解析ip更新到白名单列表里

  • light2199 楼主 07-10 16:18
    6

    哈哈,看个人吧,我本来也想设白名单的,但是自己本身平常使用的网络环境就很复杂,所以觉得白名单太麻烦了,而且我这个也不怕CPA爆漏洞了。

  • Sam Altman 07-10 16:20
    7

    vps 端口关个精光,然后让 nginx 走内网地址反代域名应该也可以避免吧

  • mact 07-10 16:21
    8

    而我这个方案就很稳,对方压根都不知道你的路径是啥。



    emmm,自己的域名 + 非www子域名这种组合对扫的人来说本来就是一串随机的字符串,只要你不是做中转或者分享了url的话和主动随机字符串效果没区别吧

  • light2199 楼主 07-10 16:21
    9

    不行,除非你的CPA公网不开放,只要你的CPA能通过域名或者ip访问就可以被扫。

  • lilingfeng 07-10 16:22
    10

    cloudflare access + Token 验证

  • light2199 楼主 07-10 16:23
    11

    我的就是自己的域名加非主域名,还是被扫了,之前看其他佬友说是证书的问题导致会知道有哪些域名可访问。

  • light2199 楼主 07-10 16:24
    12

    太慢了主要是,而且不方便我随时用,不过这个如果网络环境没问题的话肯定是最佳方案了。

  • Sam Altman 07-10 16:25
    13

    端口关光了都能扫?好奇怪,我现在去 fofa 上搜我服务器 ip 啥结果都没有

  • 散漫星空 07-10 16:26
    14

    感谢佬 先插个眼 周末来操作一下

  • light2199 楼主 07-10 16:28
    15

    我服务器就80,443可访问,域名托管在cf上。我都不知道扫我的那个人从哪知道我的子域名的。总共调了十几个key没成功就没看见他再继续了。看了眼ip在站里搜了一下是老惯犯了

  • 樱酱 07-10 16:34
    16

    自己电脑上用的话 wg组网 私网ip访问 就行了

  • zero 07-10 17:10
    17

    我现在也是这样,域名长的我都记不住

  • Magentic 07-10 17:12
    18

    太复杂了,设置强token,直接上cli让肥波5配置ip段白名单加nginx请求白名单,然后屏蔽所有机房ip段,简单粗暴

  • AriSen 07-10 17:13
    19

    我有一个想法,你们看看怎么样。服务器CPA不开放外网访问,服务器开22端口。本地开ssh端口映射。这样是不是更安全。。?

* 帖子来源Linux.do
返回