2021SC@SDUSC
os-sim/mysql源码分析之db
一、模块简述:
由db和debian两个文件夹构成,其中db是存放了若干sql文件,即创建数据库的代码。
而debian存储的是服务器的指令文件。
下面贴出ossim-mysql/db文件夹的结构
二、代码分析:
2.1、结构性功能分析
文件名 | 主要功能 |
---|---|
00-create_alienvault_api_tbls_mysql.sql | 程序接口 |
00-create_alienvault_asec_tbls_mysql.sql | 创建处理事件的相关表 |
00-create_alienvault_siem_tbls_mysql.sql | 安全信息和事件管理表 |
00-create_alienvault_tbls_mysql.sql | acl相关(猜测) |
00-create_datawarehouse_tbls_mysql.sql | 数据仓库 |
00-create_ossim_acl_tbls_mysql.sql | 又一个数据仓库 |
01-create_alienvault_api_data.sql | 空 |
01-create_alienvault_asec_data.sql | asec的数据仓库 |
01-create_alienvault_data_config.sql | 配置信息和数据仓库 |
01-create_alienvault_data_data.sql | 同数据仓库 |
01-create_alienvault_siem_data.sql | 数据仓库 |
02-create_alienvault_data_data.sql | 数据仓库 |
03-create_alienvault_data_croscor_snort_nessus.sql | 数据仓库 |
05-create_post_correlation.sql | 创建和删除一些过程 |
06-create_alienvault_data_kb_taxonomy.sql | 数据仓库 |
其中前几个是对一些表的创建和约束,后面大部分是一些replace和Insert语句,存储了大量的数据,可以称之为“数据仓库”,其中05有一些过程和事件的调用,这里的内容看不太懂。
2.2 、源码解析
1.表“现状”;
属性有:id,消息id,组件id,组件类型,创建时间,终止时间等。
主键是id用于标志现状,同时创建了多个索引目录。
-- -----------------------------------------------------
-- Table `current_status`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `current_status` (
`id` BINARY(16) NOT NULL,
`message_id` BINARY(16) NOT NULL,
`component_id` BINARY(16) NULL,
`component_type` ENUM('net', 'host', 'user', 'sensor', 'server','system','external') NOT NULL,
`creation_time` TIMESTAMP NOT NULL COMMENT '(CURRENT_TIMESTAMP | on create CURRENT_TIMESTAMP )\n',
`viewed` TINYINT(1) NULL DEFAULT 0,
`suppressed` TINYINT(1) NULL DEFAULT 0 COMMENT 'True or False. Indicates that this kind of message over this component id is disabled.',
`suppressed_time` TIMESTAMP NULL,
`additional_info` TEXT NULL,
PRIMARY KEY (`id`),
INDEX `message` (`message_id` ASC),
INDEX `component` (`component_id` ASC),
INDEX `viewed` (`viewed` ASC))
ENGINE = InnoDB;
2.表“记录的行动”
属性有:id(主键),登陆用户,日期,行动描述
-- -----------------------------------------------------
-- Table `logged_actions`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logged_actions` (
`id` INT NOT NULL AUTO_INCREMENT,
`logged_user` VARCHAR(45) NULL,
`datetime` TIMESTAMP NULL,
`action_description` VARCHAR(255) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
3.表“监测数据”
属性有:组件id,时间戳,监视器id,数据,组件类型
-- -----------------------------------------------------
-- Table `monitor_data`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `monitor_data` (
`component_id` BINARY(16) NOT NULL,
`timestamp` TIMESTAMP NOT NULL,
`monitor_id` INT NOT NULL,
`data` TEXT NULL,
`component_type` VARCHAR(55) NULL COMMENT 'Component type. (net, host, …)',
PRIMARY KEY (`component_id`, `timestamp`, `monitor_id`))
ENGINE = InnoDB;
总结:
大部分sql文件都是以创建表为主,有部分sql文件是对表的数据进行插入和约束。内容复杂繁多,需要以一种统筹观点去看待。