FIP(File Integrity Protection),文件完整性保护工具,使用 Go 编写。
基于 fsnotify 开源项目实现,底层使用了 Inotify 机制 hook 系统调用,能够同时监听多个文件目录变更,可用于文件系统监控、网页防篡改等场景。
特性:跨平台、递归监控、零延迟、系统资源占用低。
- 下载:
releases/fip_agent_linux_amd64 - 修改权限:
chmod +x fip_agent_linux_amd64 - 首次使用执行
./fip_agent_linux_amd64 -g生成配置文件 - 运行:
./fip_agent_linux_amd64
- 下载:
releases/fip_agent_windows_amd64.exe - 首次使用执行
fip_agent_windows_amd64.exe -g生成配置文件 - 运行:
fip_agent_windows_amd64.exe
编译环境:Go > 1.21
- 下载:
git clone git@github.com:eW1z4rd/FIP-agent.git && cd FIP-agent - 编译:
go build -o fip-agent main.go - 运行:
./fip-agent
Usage of fip-agent: -c string set the config file path (default "./config.yaml") -g generate the config file -v show version info -h print this help summary pageinclude、exclude可以配置多个目录,支持相对路径和绝对路径,会递归发现其下所有子目录(不建议监听大范围目录);- 用
type匹配文件后缀类型,忽略其他类型文件的告警,使用.*监听所有文件; - 支持监听 5 种事件:
create、write、remove、rename、chmod; - 支持指定放行时间窗口,在该时间范围内的变更操作,可选择不产生告警(
quiet)或添加放行标签(tag); - 支持 Cgroup 内核级资源限制,默认 CPU 使用率不超过 10%,内存占用值不超过 500MB。
# 监控配置 watch: # 包含路径 # ./ 监听当前文件目录及其所有子目录 # /data/sec 监听/data/sec目录及其所有子目录 include: - ./ - /tmp # 排除路径 # /data/sec/.git 忽略/data/sec/.git目录及其所有子目录 exclude: - .git - .idea # 文件类型 # .* 所有文件 # .go 后缀为.go的文件 type: # - .* - .go - .html # 监听模式 # create 创建文件事件 # write 写入文件事件 # remove 删除文件事件 # rename 重命名文件事件 # chmod 修改文件权限事件 mode: - create - write - remove - rename - chmod # 放行时间 # start 开始时间 # end 结束时间 # mode 放行模式(quiet-不产生告警;tag-添加放行标签) release: start: "00:00:00" end: "00:00:00" mode: tag # 资源配置 cgroup: # 最大CPU使用率(单位 %) max_cpu_usage: 10% # 最大内存占用值(可选单位:K、M、G) max_memory_usage: 500M使用组件:Loki + Promtail + Grafana

