Skip to content

1 需求分析

okokme edited this page May 17, 2019 · 3 revisions

背景

运行环境

  • deepin Linux x86_64 系统

条件与限制

  • 编译时,g++版本有限制(请使用最新版本)
  • 区分服务端与客户端,一般运行在不同的机器上
  • 正式的运行环境是N(N>=2)台计算机节点,通过有线或者无线互联,且运行服务端机器有客户端机器能直连的IP地址

业务功能需求

  • 监视和记录指定目录文件下文件事件(包括打开和关闭),当打开和关闭事件发生时,client向server发送一个文件事件信息(包括文件路径、文件句柄、和操作方式等等)
  • 用户在配置了指定的监视服务器后,必须等待server对该文件进行指令后,才可根据规则执行操作(操作包括:读取、删除、重写等)
  • 当监视服务器关闭或网络不通时,client拒绝任何操作,不允许任何人打开文件
  • 当没有配置监视服务器时,根据默认权限执行操作

业务功能注意事项

  • 关于多进程同时对多文件执行不同操作的情况
  • 关于服务端同时接受多个客户端请求执行的情况

系统功能需求

  • 客户端服务端进行通信,包括客户端使用(XX协议)进行事件信息上传和服务端进行下发指令
  • 文件系统监听、审计

客户端实现方案

  • 在对某目录或文件进行监测的时候,使用hook技术在ring0层来拦截系统调用(包括open close 以及读写操作),执行我们自己的代码模块。在这个过程中,通过服务器的反馈来决定是否同意被监视进程对该文件的所有操作。

性能及运行需求

  • 7*24小时不间断操作,如果崩掉能做到及时重启。

hook方案的调研

  • 系统调用属于一种软中断机制,它有操作系统提供的功能入口(sys_call),将本来的系统调用位置改成自己的系统调用位置,然后执行相应的操作。
Clone this wiki locally