
记录牧安平台从 0 到 1 的开发过程,一个待业在家的网安老兵边做边想。
待业在家的这段日子,电脑是每天都开的。
手边其实有个上一版的壳——我管它叫 Shepherd 1.0,塞在备份目录里。能用,但越用越觉得别扭:它更像给自己玩的一个玩具,想管多个客户、想让数据从别的地方主动上报进来,它撑不住。

所以我又开了个目录,起名 WN101,准备重做一版。对外叫"牧安安全检测平台 V2.0",说白了就是:一个能管多个客户、能接收前端探针数据的安全运营后台。
这篇文章不讲"为什么"要做这个——做都做了,讲那些没意思。就说说我从哪下手,头两周踩了些什么。
在家自己鼓捣,最怕依赖一堆、部署一堆。所以我给这版定了条死规矩:只用 Python 标准库,不碰 Flask、不碰 Django,数据库用 SQLite,数据全留本地不上云。装个 Python 就能跑,双击 start.bat 起来,端口 8800。
这不是什么高明的架构选择,就是图省事。后面要给小客户兜底,人家机器环境千奇百怪,依赖越少,越不容易在客户端上报错。
安全运营这行,底子是检查项。你有几百条标准检查项,按主机、数据库、中间件、终端分好类,系统才知道该查什么、查出来怎么判。
我手里攒了一批 Excel 检查表——主机六个 sheet、数据库五个、中间件十二个、终端三个,加起来 26 张表、429 条。第一步我没写界面,是先把这堆东西导进 SQLite,建好表、加索引。
这一步最枯燥。解析 Excel、对系统名、标准化字段、批量插库……跑完看统计:主机 121、数据库 78、中间件 156、终端 74,共 429 条。Windows 下读这些带中文的表,GBK 和 UTF-8 来回折腾,处理不好导出来全是乱码,后来统一按中文环境兼容处理才过。看见数字对上,心里才踏实——底子有了。
数据有了,得有东西去执行检查。我写了个 CheckEngine 当调度核心,底下挂 BaseChecker 当检查器基类,具体实现分 Linux 和 Windows 两种。
连服务器这块,Linux 走 SSH(paramiko,可选),Windows 走 WMI / PowerShell,本地就直接 subprocess 跑命令。先做 Linux 检查器,11 个检查方法:无关账号、root 登录、密码策略、SSH 配置、补丁……Windows 后来补了 9 个:防火墙、杀毒、审计这些。
为什么先 Linux 后 Windows?因为我手边 Linux 环境多,测着方便。纯粹顺手,没什么道理。
后台再能查,得有人能登录进来用。这块做了个登录页 /login,用户名密码进去发一个 Bearer Token,有效期 7 天,过期重新登。默认账户 admin / admin123——这个密码肯定得改,我心里有数,先跑起来再说。
前端也顺手整了一版 V2:左边树形菜单 220 像素,顶上一道 60 像素的工具栏,主色定#1677FF,深浅两套主题能切换。不为好看,是盯一天眼睛不累。
做到这儿,后台骨架算立起来了。但真正让我觉得"这东西活了"的,是某天刷新页面,看见 192.168.58.142 那台单机版探针把扫描记录和心跳发了过来。

不是我手动点出来的,是它自己连上来、自己报的。那一瞬间比写完多少函数都实在——这玩意儿不是个本地玩具了,它开始"听"外面的消息了。
这版能跑,但越写越明显:一个后台想把客户管理、资产、检查、监测、上报全塞进去,臃肿是迟早的事。后来我是怎么把它想清楚、拆成三层的,下一篇聊。
本系列记录牧安平台从 0 到 1 的开发过程,一个待业在家的网安老兵边做边想。
下期:《做着做着,一个后台装不下了》。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。