Agith文件监控实时追踪文件操作与权限变更【免费下载链接】Agithlinux command influence analysis项目地址: https://gitcode.com/openeuler/Agith前往项目官网免费下载https://ar.openeuler.org/ar/Agith是一款专为Linux系统设计的变更监控工具能够实时追踪文件操作与权限变更帮助IT运维人员构建确定性运维能力监控变更过程并输出变更影响面。变更影响面是指变更过程访问的文件、网络节点、用户服务、数据库表等构成的集合对于保障系统安全和稳定运行至关重要。为什么需要Agith文件监控运维中的变更操作是IT系统故障的一大重要诱因。根据公开论文分析云厂商公开故障案例的归因分析中84.7%的故障发生在系统升级与维护过程中。变更故障有时会严重影响公众生活例如2023年1月份美联航管理系统故障引发全美航班延误最终调查指出是运维人员错误删除系统文件导致。传统的变更监控方法存在诸多不足。命令日志无法表征运维人员的操作意图很多命令通过脚本与可执行文件完成从脚本名或程序名无法了解操作过程导致安全审计与故障根因定位依赖专家经验效率低且分析困难。而将命令拆解为系统调用的方式数据量庞大且解读困难如一条ls -al命令就会有280条系统调用。Agith的变更影响面则是上述方案的折中它只保留对系统产生影响的行为同时采用图结构展示关联关系能直观展示运维操作对系统产生的影响。Agith如何实现文件监控系统架构解析Agith的系统架构分为5个模块实现了对文件操作与权限变更的全面监控。Controller控制模块负责管理其他各个模块的声明周期。eBPF模块包含eBPF Probes、Traces、Targets三个部分是数据采集的核心。Consumer负责从Traces中读取数据。Repository负责处理Consumer读取的数据将trace记录整理为影响面的图结构数据。Monitor告警模块负责检查Repository图中是否包含危险行为。Agith采用数据流与控制流分离的策略。eBPF模块、Consumer、Repository和Monitor模块组成数据采集、整理、输出的数据流控制流以Controller模块为核心统一管理其他模块。核心技术eBPF动态目标监控Agith的变更影响面采集基于eBPF的动态目标变更监控技术。eBPF建立在Linux trace技术之上通过Tracepoint、Kprobe机制在内核中插入探针获取数据并提供Map机制方便内核态与用户态数据交互。Agith建立了两类maptarget map保存需要监控目标的标识符如进程的tgid。trace map存储探针获取的数据。对于需要监控的系统行为Agith选择特定系统调用编写探针程序eBPF Probe并挂载。程序触发时根据Target判断系统调用是否与监控目标相关相关则收集数据写入Trace并修改target。例如对于clone系统调用在sys_exit_clone处挂载探针程序当程序执行clone系统调用若进程tgid在target map中会将子程序pid写入trace并添加到target map从而将子程序纳入监控范围。Agith文件监控的实际效果变更影响面直观展示变更影响面以图的方式存储和展示能清晰呈现文件操作等变更行为。图中黄色节点表示进程紫色节点表示文件蓝色节点表示网络节点。通过进程节点的关联关系可看到脚本执行过程中调用的命令以及不同命令操作的文件。例如python test.py操作了文件test.txtcurl访问了特定域名和IP地址。性能表现优异在性能测试中Agith展现出低资源占用的特点。在手动变更场景下CPU利用率仅为0.4%内存用量5.8M生成文件大小95kb。即使在极限场景下执行5000条文件操作与网络访问命令平均58条/秒CPU利用率也仅为3.8%内存用量9.2M充分证明了Agith在实时文件监控过程中的高效性。如何使用Agith进行文件监控运行环境要求main分支推荐使用openEuler 20.03版本内核版本4.18~195.10分支推荐使用openEuler 22.03版本内核版本5.10其他Linux发行版未经测试。安装方式Agith支持通过源码自行编译安装和Docker打包执行使用。源码编译安装依赖库运行依赖库elfutils0.180、jsoncpp1.9.3、log4cplus2.0.5、libbpf0.1.1。编译依赖库cmake3.16.5、make4.3、clang10.0.1、llvm10.0.1、elfutils-devel0.180、jsoncpp-devel1.9.3、log4cplus-devel2.0.5、libbpf-devel0.1.1、gtest-devel1.8.1。编译方法在Agith项目第一层目录下执行./build.sh compile。默认不编译test相关程序若需编译在根目录下CMakeList.txt文件结尾取消注释相关测试代码。Docker运行镜像打包在Agith项目第一层目录下执行docker build -t agith .。镜像执行将your_path更改为宿主机映射目录XXXX更改为要监控的目标pid执行docker run -it -v /your_path:/Agith/build/output --privileged --pidhost --workdir/Agith/build/prod agith -p XXXX。启动参数说明启动参数含义-p初始目标进程的PID-c配置文件路径默认路径/etc/Agith.conf-q停止Agith配置文件关键配置项配置项说明默认值Repository.output_dir输出文件目录更改此项后若使用Docker运行方式请注意映射路径../outputRepository.concern_syscalls需要关注的系统调用用于筛除不重要的节点来简化图[write, clone, unlinkat, unlink, connect, sendto, recvfrom, mkdir, execve, finit_module, delete_module]Monitor.risk_syscalls风险系统调用[write, unlinkat, unlink, sendto]总结Agith作为一款强大的Linux文件监控工具通过创新的变更影响面技术实时追踪文件操作与权限变更为IT运维提供了直观、高效的变更监控方案。其基于eBPF的动态目标监控技术在保证监控全面性的同时实现了低资源占用是保障系统安全稳定运行的得力助手。无论是手动变更还是自动脚本执行Agith都能清晰记录文件操作轨迹帮助运维人员快速定位问题降低变更风险。如果你正在寻找一款专业的Linux文件监控工具Agith无疑是理想选择。项目源码可通过git clone https://gitcode.com/openeuler/Agith获取更多详细信息可参考项目中的README.md和doc目录下的文档资料。【免费下载链接】Agithlinux command influence analysis项目地址: https://gitcode.com/openeuler/Agith创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考