V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jqknono
V2EX  ›  程序员

聊聊个人网站和域名的安全防护

  •  1
     
  •   jqknono · 2 天前 · 1760 次点击

    前言

    最近论坛里看到有人问"我的服务器天天被扫端口怎么办"、"网站访问日志里一堆奇怪的请求是怎么回事"之类的问题。作为一个同样被折磨过的人,我来分享下自己踩过的坑和总结的一些经验。

    相信不少人和我一开始一样觉得:"我就一个小网站,谁会来攻击我啊?" 但现实是,现在的攻击基本都是自动化的,根本不在乎你是大站还是小站,反正扫一遍又不费什么事。

    真实案例分析

    先说说我自己遇到的情况。

    在 Cloudflare 上部署了个特别简单的展示站,就两个页面,结果上线第一天就被扫了。

    我的 worker 只处理//logs-collector 两类请求, 但仍然面临着持续的扫描攻击, 先来看看都是些什么奇怪的访问。

    一开始其它的 URL 全部返回404, 上线当天就有香港主机开始扫, 源 IP 天天换, 但大部分是香港的. 由于有些用户是香港 IP 访问, 也不能直接 ban 地区.

    以上这些 URL 全都是怀有各种目的的尝试, 这些契而不舍的尝试基本上都是为了寻找漏洞.

    但这样扫占用 CF 免费请求数, 污染我的日志, 也不是什么好事。

    修改将所有其它请求都返回200, 加上Host on Cloudflare Worker, don't waste your time

    这样被扫的稍微少了点, 虽然我不知道是否有因果关系。

    如果是运行在自己主机上的服务, 天天被这样扫, 而服务一直不做安全更新, 迟早有被扫到漏洞的一天。

    对攻击者来说, 就是每天定时不停的尝试, 能攻破一个是一个, 基本都是自动化的, 设备和时间成本都不高。

    这些扫描是怎么回事?

    说白了就是有人在用工具到处扫描,看看能不能碰到漏洞。一开始我还天真地觉得返回 404 就完事了,结果发现这帮人是机器人,根本不在乎你返回什么,该扫还是扫。

    攻击者行为特征

    1. IP 地址频繁变化:主要来自香港等境外地区
    2. 攻击持续性:全天候不间断扫描
    3. 攻击方式:自动化工具批量探测常见漏洞路径
    4. 针对性:对所有暴露在公网的服务进行无差别攻击

    安全威胁分析

    攻击者特点

    • 跨境作案普遍,降低追责可能
    • 自动化工具广泛使用,包括 Nmap 、Masscan 等端口扫描工具
    • 持续性攻击,成本低廉
    • 肉鸡资源充足,IP 地址频繁变化
    • 攻击时间通常选择在深夜或节假日

    常见攻击方式

    1. 端口扫描
      • 批量扫描开放端口
      • 识别常用服务( SSH 、RDP 、MySQL 等)
    2. 漏洞扫描
      • 扫描已知漏洞的老旧软件
      • 通过路径特征和文件名特征识别
    3. 自行构造输入, 通过输入验证漏洞

    怎么防护更安全?

    能不暴露就不暴露

    说实话,最安全的方式就是不要把服务直接暴露在公网上。你们肯定见过很多常用的子域名:

    这些都是攻击者最爱尝试的。所以建议:

    1. 自己用的服务就别往外网放了

      • 内网用 AdguardHome 搭个 DNS 服务器就行
      • 要访问就用固定 IP ,多安全
    2. 非要远程访问的话

      • 上 Tailscale 或 Zerotier 这种隧道服务
      • 比直接开端口安全多了

    实在要暴露,就上个 CDN

    赛博佛祖Cloudflare就不多说了, 在个人折腾者找到真正有商业价值的项目之前, 它肯定一直都是免费的。

    国内的的就是阿里云ESA, 两个我都在用, 阿里云的免费用 3 个月, 正常是一个根域名 10 元一个月限 50G 流量, 在 CF 全免费面前我就不多做介绍了。

    安全服务普遍比较贵, 不做保护的话, 被攻击了损失很大, 如果付费保护就是每天看着直接的"损失"。

    边缘安全服务算是一种保险, 非常廉价, 性价比超高的安全服务, 典型的让专业的人做专业的事。

    边缘安全主要目的是隐藏自己的真实 IP, 用户访问边缘节点, 边缘节点计算决策是否回源访问真实 IP 。

    它的本质就是一个前置的反向代理, 集成了缓存, WAF, CDN, DDoS 防护等功能. 由于用户到服务中间插入第三者, 因此它有一定的概率会造成用户体验下降。

    CF 和 ESA 我都在用, 总结来说就是让体验最好的一部分用户体验略微下降, 但是让更多地区的用户体验提升了, 整体来说仍然是非常值得.

    这里所有 IP 都是边缘节点的 IP, 我可以放心的公开. 如果是刚起步的业务, 缺少安全方面的投入, 最好使用边缘安全服务, 本建议无广.

    说两个我在用的:

    1. Cloudflare:

      • 免费版基本够用
      • 不差钱的话确实可以买他家域名,服务全
    2. 国内的阿里云 ESA:

      • 三个月免费试用
      • 正常 10 块钱一个月,50G 流量
      • 主要是国内访问快点

    这些服务其实就是帮你挡在前面,别人访问的是他们的服务器,看不到你的真实 IP ,还能帮你防各种攻击,挺值的。

    总结一下

    1. 自己用的服务:

    2. 要给别人用的服务:

      • 国际站点上 Cloudflare 准没错
      • 国内访问多的可以考虑阿里 ESA
      • 有条件的话可以找拨测服务测测速度

    边缘安全服务我只知道 Cloudflare 和阿里云 ESA, 有其他推荐的欢迎补充。

    最后,这些都是我的个人经验,欢迎各位大佬补充指正。

    15 条回复    2025-01-20 10:48:41 +08:00
    LnTrx
        1
    LnTrx  
       2 天前
    境内加 CDN 还是应该慎重,刷流量导致钱包重创的风险难以根治。
    搞好本地防火墙和应用安全设置,扫到也不是什么大事。实在想防止暴露,还可以考虑:

    1. IPv6 。非常规后缀不太可能遭被动扫到。
    2. 通配符证书+非常规子域名。单域名证书可能因为证书透明度被扫到,但通配符证书不可能枚举所有子域,非常规子域名不容易被发现。
    jqknono
        2
    jqknono  
    OP
       2 天前 via Android
    @LnTrx 是的,CDN 风险就是被狂刷流量。我这里推荐的不是纯 CDN ,都是边缘安全计算,它们都号称可以防刷,承担了一部分安全能力,这样就不用自己来做安全了。
    LnTrx
        3
    LnTrx  
       2 天前
    @jqknono 但防刷本身往往也是按量付费的,没防住的部分也很难让厂商承担
    googlefans
        4
    googlefans  
       2 天前
    用虚拟主机,流量大就宕机就行了
    jqknono
        5
    jqknono  
    OP
       2 天前 via Android
    @googlefans 被扫到漏洞就不好了
    googlefans
        6
    googlefans  
       2 天前
    @jqknono 你关闭端口
    kome
        7
    kome  
       2 天前 via iPhone
    我这套的 CF 和免费 WAF ,每天都在被扫*.php 、git 相关、wordpress ,一天千把次,而且基本都是微软的 IP ,少部分 amazon 的,还有一些商业 SEO 。我放行了爬虫,但是一些辣鸡商业爬虫们也进来了,在 robots.txt 里面拒绝了,鬼知道他们遵守不遵守。
    菜鸡的辣鸡小站,也无所谓有没有人看,别打我就行。
    Track13
        8
    Track13  
       2 天前 via Android
    我一个 nextjs 的静态博客天天扫.php 路径。也是无语😒
    aero99
        9
    aero99  
       1 天前
    自己境外搭建了一个电子书服务,域名在 cf ,vps 上关闭了常用端口,但是有时要桌面 rdp 远程,那如何保证安全啊
    jqknono
        10
    jqknono  
    OP
       1 天前
    @aero99 vps 上搭一个 headscale, 远程用 tailscale, 一般可以直连穿透
    JKOR
        11
    JKOR  
       1 天前
    我自用的服务都是双向 TLS 认证,client 端没有证书就打不开。
    gearfox
        12
    gearfox  
       1 天前
    谢谢楼主分享
    jqknono
        13
    jqknono  
    OP
       1 天前
    @JKOR 双向认证的话, 我理解是不是和 tailscale 有点相似?
    是这个吗? https://www.cloudflare.com/zh-cn/learning/access-management/what-is-mutual-tls/
    JKOR
        14
    JKOR  
       1 天前
    @jqknono #13 是 mTLS ,就是互相验证。客户端证书和网站的 SSL 证书原理相同,但过程相反。SSL 证书是客户端像服务器验证身份,这个是服务器也会向客户端验证证书,无证书则拒绝握手。
    4grep
        15
    4grep  
       1 天前
    www.yunaq.com 这家也有免费版本,免费 waf 和 cdn ,一直在用还不错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4259 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 04:08 · PVG 12:08 · LAX 20:08 · JFK 23:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.