从勒索病毒说起:我为什么给群晖写了个 GeoFence
适用版本:GeoFence 0.18.5(群晖 DSM 套件)
说明:文中所有 IP、端口、账号、令牌均为示例占位,请替换为你自己的环境信息。
开头先说三句话
- 一台默认配置的群晖,只要把 5000 / 5001 暴露到公网,通常在几小时内就会被扫到,快的以分钟计。
- 被扫到不等于被攻破,但暴露面越大、暴露时间越长,被弱口令或未修补漏洞打开的概率就越高。
- 本文要介绍的 GeoFence,解决的正是「降低被扫到的概率」+「把异常访问暴露出来」这两件事。它不修漏洞,也不替你备份。
只想看功能,可以跳到第三节;想知道我为什么写它,往下看。
一、勒索是怎么打进来的
近年针对群晖 NAS 的勒索攻击——DeadBolt、C3RB3R 这一类——套路几乎一模一样,四步。01扫
全网批量扫描常见端口:5000/5001(DSM 管理面)、22(SSH)、445(SMB)、80/443、3306、6379。这一步不需要知道你是谁,只需要知道你的 IP 段。02试门
两条路:一是弱口令,用常见的账号密码组合反复试,也就是撞库;二是未修补的漏洞,走 NAS 上某个对外服务的已知问题直接拿下,连密码都不需要。03进去
拿到权限后动作都很轻:关掉一些安全设置、留后门、开始遍历目录。04加密并留信
文件被逐批加密、扩展名被改,留下一个勒索说明。DeadBolt 那一波更狠——它直接把 DSM 的登录页改成了勒索页面,你打开 NAS 首页看到的就是报价单。
这四步里,能提前干预的只有第一步和第二步。一旦走进第三步,剩下的就只有备份能不能救你了。
二、我为什么写这个
我自己有几台 NAS 必须对公网开放:远程备份、相册、下载,还有给客户用的售后系统。把公网访问一关了之不现实,那就只能把「谁能敲到这个门」收窄。
DSM 自带的防火墙能做端口和 IP 段的限制,但有三件事它不管:
- 不能按地区。我的服务只给国内、甚至只给本省的人用,可境外扫描器照样能敲。DSM 防火墙只能一条条加 IP,而扫描器的 IP 每天都换。
- 不告诉我有人在试密码。撞库是持续性的,失败记录躺在系统日志里,除非我主动 ssh 进去 grep,否则一无所知。
- 规则会被冲掉。DSM 网络接口一动——插拔网线、切 WiFi、DDNS 重连——挂在
INPUT上的外部链就会失效,而且它不会告诉你。
第一版 GeoFence 就是照着这三个缺口写的:按地区放行、把撞库统计出来、链掉了自己补回去。后来慢慢加了端口白名单、IPv6 默认拦截、群晖 Chat 推送,长成现在这个样子。
开一个外网端口测试了12小时,真的是服了,公网上的坏人真多

三、GeoFence 是什么
一句话:在 DSM 自带防火墙之上,加一层「按地区 + 按端口 + 按登录行为」的访问控制,并把异常主动推给你。

整体是「底座 + 三层过滤」:底层仍然是 DSM 自己的防火墙,GeoFence 只在上面挂链,依次叠加区域过滤、端口过滤与登录行为监控。任意一层收紧,都能独立降低暴露面。
九、给你的上手清单
- 别把管理页面直接暴露成
0.0.0.0; - 省份准入勾到「够用」为止,别图省事全选;
- 端口白名单只留必要的,多开一个就是多一个门;
- 扫描封禁保持开着(默认就开),自家出口 IP 记得加进豁免,别把自己封了;
- DSM 账号用强密码,能开两步验证就开;
- 打开群晖 Chat 推送,撞库和封禁第一时间知道;
- 备份做离线或异地,并且真的演练一次恢复。
群晖NAS 安全防火墙自托管
