上线前 checklist

软件环境

项目要求说明
PHP>= 7.48.x 兼容;需 CLI 模式(计划任务用)
扩展curl / jsoncurl 缺失时情报拉取退回 stream 模式
Web服务Nginx / Apache伪静态非必需;绑定域名 mi.dimiao.cn
数据库无需v1.x 使用JSON文件存储,v2.0可选MySQL
Docker可选仅"蜜罐引擎"需要;平台本体纯PHP
计划任务crontab每30分钟执行 fetch_feeds.php

数据流与隔离边界

攻击者扫描/爆破/投递
→
HFish蜜罐独立VPC/容器
→
collect.php令牌鉴权
→
本站大屏/情报
  • 蜜罐主机与业务网隔离,出方向仅放行分析服务器
  • 情报拉取为出站只读,不暴露任何入站服务
  • install.lock 存在时 install.php 自动锁定

install.sh 全自动安装

脚本依次完成:环境检测 → 目录权限 → 生成采集令牌 → 首次拉取情报源 → 注册crontab → 可选启动Docker蜜罐引擎。

执行命令

# 上传解压后,在站点根目录执行: chmod +x install.sh ./install.sh # 完整安装(含Docker蜜罐引擎) ./install.sh --no-docker # 仅安装平台本体(PHP空间/虚拟主机场景)
  1. 环境检测

    校验 PHP≥7.4、curl/json 扩展、data/ 与 logs/ 可写,任一不达标即中止并给出修复提示。

  2. 令牌生成

    使用 /dev/urandom 生成 24字节随机 collect_token 写入 data/config.json,作为采集接口鉴权凭证。

  3. 首次情报拉取

    调用 scripts/fetch_feeds.php 立即构建本地缓存;网络不通时告警但不中断安装。

  4. 计划任务注册

    自动写入 crontab(*/30 分钟),crontab 不可用时打印手动配置命令。

  5. 蜜罐引擎

    检测到 Docker 时自动 docker-compose up -d 拉起 HFish,并提醒 9001 管理端仅限内网。

install.php 可视化安装

适用于宝塔/虚拟主机等不方便执行脚本的环境:浏览器访问 install.php,检测项全绿后点击"开始安装"即完成初始化,并生成 install.lock 锁定安装入口。

  1. 上传文件

    将本目录全部文件上传至站点根目录(index.html 与PNG同级)。

  2. 访问向导

    浏览器打开 https://mi.dimiao.cn/install.php,查看自动检测结果。

  3. 初始化

    选择轮询间隔 → 开始安装 → 记录页面显示的 collect_token。

  4. 收尾

    删除 install.php;按页面提示配置 crontab 定时执行 fetch_feeds.php。

容器化完整栈

一条命令同时拉起"平台Web(php:7.4-apache)+ HFish蜜罐引擎":

docker-compose.yml(已含在站点根目录)

docker-compose up -d # 启动 web + hfish 两个容器 # 情报缓存刷新(容器内无cron,宿主机配置): # */30 * * * * docker exec dimiao-hp-web php /var/www/html/scripts/fetch_feeds.php
  • 宿主22端口被占用时,将 compose 中 "22:22" 改为 "2222:22"
  • HFish 管理端 9001 仅放行办公IP,首登立即修改默认口令
  • 平台数据卷为当前目录,升级仅需替换文件后 docker restart

真实情报从哪来

内置公开情报源(无需API Key,遵守各源条款)

数据源格式缓存TTL内容
blocklist.deiplist30分钟综合攻击IP(全球蜜罐社区回传)
GreenSnowiplist30分钟扫描/攻击封禁IP
FireHOL Level1netset60分钟聚合威胁清单(jsDelivr镜像回退)
Spamhaus DROPnetset120分钟垃圾邮件/僵尸网络网段
Feodo Trackerjson60分钟僵尸网络C2(abuse.ch官方)
URLhauscsv60分钟活跃恶意软件下载URL

拉取-解析-归一化-合并全部由 api/lib/FeedFetcher.php 完成;新增数据源只需在 data/feeds.json 追加条目(id/urls/format/ttl),零代码改动。全部源不可达时,前端自动展示最近一次缓存或离线快照,页面永不白屏。

运维标准

  • logs/feeds.log 与 logs/events_raw.jsonl 每日轮转,保留90天
  • data/ 与 logs/ 权限 750,属主为PHP进程用户
  • collect_token 每90天轮换一次
  • 备份范围:data/ 全量 + install.sh 同级配置
  • 升级:替换文件 → 保留 data/ 与 logs/ → 执行 fetch_feeds.php 验证

故障排查

现象原因解决
IOC列表显示"离线快照"未执行过fetch_feedsphp scripts/fetch_feeds.php
数据源全部FAIL出站被墙/无外网放行443出站或配置代理
collect.php 401令牌错误核对 data/config.json
事件流不动HFish未配Webhook按集群管理页指南配置
500错误PHP版本过低升级至7.4+