OSSIM主要数据库表结构

OSSIM主要数据库表结构


对于从事OSSIM开发的技术人员,最主要的需要知道OSSIM库里的多种表结构,下面举几个典型事例:

/* ======== config表 ======== */

DROP TABLE IF EXISTS conf;

CREATE TABLE conf (

    recovery        int NOT NULL,

    threshold       int NOT NULL,

    graph_threshold int NOT NULL,

    bar_length_left int NOT NULL,

    bar_length_right int NOT NULL,

    PRIMARY KEY (recovery, threshold, graph_threshold, 

                 bar_length_left, bar_length_right)

);



/* ======== hosts & nets表 ======== */

DROP TABLE IF EXISTS host;

CREATE TABLE host (

  ip                varchar(15) UNIQUE NOT NULL,

  hostname          varchar(128) NOT NULL,

  asset             smallint(6) NOT NULL,

  threshold_c       int NOT NULL,

  threshold_a       int NOT NULL,

  alert             int NOT NULL,

  persistence       int NOT NULL,

  nat               varchar(15),

  descr             varchar(255),

  PRIMARY KEY       (ip)

);


DROP TABLE IF EXISTS scan;

CREATE TABLE scan (

    ip              varchar(15) UNIQUE NOT NULL,

    active          int NOT NULL,

    PRIMARY KEY     (ip)

);


DROP TABLE IF EXISTS net;

CREATE TABLE net (

  name              varchar(128) UNIQUE NOT NULL,

  ips               varchar(255) NOT NULL,

  priority          int NOT NULL,

  threshold_c       int NOT NULL,

  threshold_a       int NOT NULL,

  alert             int NOT NULL,

  persistence       int NOT NULL,

  descr             varchar(255),

  PRIMARY KEY       (name)

);



DROP TABLE IF EXISTS net_host_reference;

CREATE TABLE net_host_reference (

  net_name          varchar(128) NOT NULL,

  host_ip           varchar(15) NOT NULL,

  PRIMARY KEY       (net_name,host_ip)

);




/* ======== signatures表 ======== */

DROP TABLE IF EXISTS signature_group;

CREATE TABLE signature_group (

  name              varchar(64) NOT NULL,

  descr             varchar(255),

  PRIMARY KEY       (name)

);


DROP TABLE IF EXISTS signature;

CREATE TABLE signature (

  name              varchar(64) NOT NULL,

  PRIMARY KEY       (name)

);


DROP TABLE IF EXISTS signature_group_reference;

CREATE TABLE signature_group_reference (

    sig_group_name    varchar(64) NOT NULL,

    sig_name          varchar(64) NOT NULL,

    PRIMARY KEY      (sig_group_name, sig_name)

);


/* ======== ports表 ======== */

DROP TABLE IF EXISTS port_group;

CREATE TABLE port_group (

    name            varchar(64) NOT NULL,

    descr           varchar(255),

    PRIMARY KEY     (name)

);


DROP TABLE IF EXISTS port;

CREATE TABLE port (

  port_number       int NOT NULL,

  protocol_name     varchar(12) NOT NULL,

  service           varchar(64),

  descr             varchar(255),

  PRIMARY KEY       (port_number,protocol_name)

);



DROP TABLE IF EXISTS port_group_reference;

CREATE TABLE port_group_reference (

    port_group_name varchar(64) NOT NULL,

    port_number     int NOT NULL,

    protocol_name   varchar(12) NOT NULL,

    PRIMARY KEY     (port_group_name, port_number, protocol_name)

);



DROP TABLE IF EXISTS protocol;

CREATE TABLE protocol (

  id                int NOT NULL,

  name              varchar(24) NOT NULL,

  alias             varchar(24),

  descr             varchar(255) NOT NULL,

  PRIMARY KEY       (id)

);



/* ======== sensors表 ======== */

DROP TABLE IF EXISTS sensor;

CREATE TABLE sensor (

    name            varchar(64) NOT NULL,

    ip              varchar(15) NOT NULL,

    priority        smallint NOT NULL,

    port            int NOT NULL,

    connect         smallint NOT NULL,

/*    sig_group_id    int  NOT NULL, */

    descr           varchar(255) NOT NULL,

    PRIMARY KEY     (name)

);


DROP TABLE IF EXISTS host_sensor_reference;

CREATE TABLE host_sensor_reference (

    host_ip         varchar(15) NOT NULL,

    sensor_name     varchar(64) NOT NULL,

    PRIMARY KEY     (host_ip, sensor_name)

);


DROP TABLE IF EXISTS net_sensor_reference;

CREATE TABLE net_sensor_reference (

    net_name        varchar(15) NOT NULL,

    sensor_name     varchar(64) NOT NULL,

    PRIMARY KEY     (net_name, sensor_name)

);



/* ======== policy 表======== */

DROP TABLE IF EXISTS policy;

CREATE TABLE policy (

    id              int NOT NULL auto_increment,

    priority        smallint NOT NULL,

    descr           varchar(255),

    PRIMARY KEY     (id)

);


DROP TABLE IF EXISTS policy_port_reference;

CREATE TABLE policy_port_reference (

    policy_id       int NOT NULL,

    port_group_name varchar(64) NOT NULL,

    PRIMARY KEY     (policy_id, port_group_name)

);


DROP TABLE IF EXISTS policy_host_reference;

CREATE TABLE policy_host_reference (

    policy_id       int NOT NULL,

    host_ip         varchar(15) NOT NULL,

    direction       enum ('source', 'dest') NOT NULL,

    PRIMARY KEY (policy_id, host_ip, direction)

);


DROP TABLE IF EXISTS policy_net_reference;

CREATE TABLE policy_net_reference (

    policy_id       int NOT NULL,

    net_name        varchar(64) NOT NULL,

    direction       enum ('source', 'dest') NOT NULL,

    PRIMARY KEY (policy_id, net_name, direction)

);


DROP TABLE IF EXISTS policy_sensor_reference;

CREATE TABLE policy_sensor_reference (

    policy_id       int NOT NULL,

    sensor_name     varchar(64) NOT NULL,

    PRIMARY KEY     (policy_id, sensor_name)

);


DROP TABLE IF EXISTS policy_sig_reference;

CREATE TABLE policy_sig_reference (

    policy_id       int NOT NULL,

    sig_group_name  varchar(64) NOT NULL,

    PRIMARY KEY     (policy_id, sig_group_name)

);


DROP TABLE IF EXISTS policy_time;

CREATE TABLE policy_time (

    policy_id       int NOT NULL,

    begin_hour      smallint NOT NULL,

    end_hour        smallint NOT NULL,

    begin_day       smallint NOT NULL,

    end_day         smallint NOT NULL,

    PRIMARY KEY     (policy_id)

);



/* ======== qualification表 ======== */

DROP TABLE IF EXISTS host_qualification;

CREATE TABLE host_qualification (

    host_ip         varchar(15) NOT NULL,

    compromise      int NOT NULL DEFAULT 1,

    attack          int NOT NULL DEFAULT 1,

    PRIMARY KEY     (host_ip)

);


DROP TABLE IF EXISTS net_qualification;

CREATE TABLE net_qualification (

    net_name        varchar(64) NOT NULL,

    compromise      int NOT NULL DEFAULT 1,

    attack          int NOT NULL DEFAULT 1,

    PRIMARY KEY     (net_name)

);


DROP TABLE IF EXISTS host_vulnerability;

CREATE TABLE host_vulnerability (

    ip              varchar(15) NOT NULL,

    vulnerability   int NOT NULL DEFAULT 1,

    PRIMARY KEY     (ip)

);


DROP TABLE IF EXISTS net_vulnerability;

CREATE TABLE net_vulnerability (

    net             varchar(15) NOT NULL,

    vulnerability   int NOT NULL DEFAULT 1,

    PRIMARY KEY     (net)

);


DROP TABLE IF EXISTS control_panel_host;

CREATE TABLE control_panel_host (

    host_ip         varchar(15) NOT NULL,

    time_range      varchar(5) NOT NULL DEFAULT 'day',

    max_c           int NOT NULL,

    max_a           int NOT NULL,

    max_c_date      datetime,

    max_a_date      datetime,

    avg_c           int NOT NULL,

    avg_a           int NOT NULL,

    PRIMARY KEY     (host_ip, time_range)

);


DROP TABLE IF EXISTS control_panel_net;

CREATE TABLE control_panel_net (

    net_name        varchar(15) NOT NULL,

    time_range      varchar(5) NOT NULL DEFAULT 'day',

    max_c           int NOT NULL,

    max_a           int NOT NULL,

    max_c_date      datetime,

    max_a_date      datetime,

    avg_c           int NOT NULL,

    avg_a           int NOT NULL,

    PRIMARY KEY     (net_name, time_range)

);


DROP TABLE IF EXISTS host_mac;

CREATE TABLE host_mac (

  ip                        varchar(15) UNIQUE NOT NULL,

  mac                    varchar(255) NOT NULL,

  previous                varchar(255) NOT NULL,

  anom                      int NOT NULL,

  mac_time                 varchar(100) NOT NULL,

  PRIMARY KEY       (ip)

);


DROP TABLE IF EXISTS host_os;

CREATE TABLE host_os (

  ip                        varchar(15) UNIQUE NOT NULL,

  os                    varchar(255) NOT NULL,

  previous                varchar(255) NOT NULL,

  anom                      int NOT NULL,

  os_time                 varchar(100) NOT NULL,

  PRIMARY KEY       (ip)

);


DROP TABLE IF EXISTS host_services;

CREATE TABLE host_services (

    ip      varchar(15) NOT NULL,

    service varchar(128) NOT NULL,

    version varchar(255) NOT NULL,

    PRIMARY KEY (ip, service, version)

);


DROP TABLE IF EXISTS host_netbios;

CREATE TABLE host_netbios (

    ip      varchar(15) NOT NULL,

    name    varchar(128) NOT NULL,

    wgroup  varchar(128),

    PRIMARY KEY (ip)

);


DROP TABLE IF EXISTS rrd_conf;

CREATE TABLE rrd_conf (

  ip                        varchar(15) UNIQUE NOT NULL,

  pkt_sent                varchar(60) NOT NULL,

  pkt_rcvd               varchar(60) NOT NULL,

  bytes_sent            varchar(60) NOT NULL,

  bytes_rcvd            varchar(60) NOT NULL,

  tot_contacted_sent_peersvarchar(60) NOT NULL,

  tot_contacted_rcvd_peersvarchar(60) NOT NULL,

  ip_dns_sent_bytes        varchar(60) NOT NULL,

  ip_dns_rcvd_bytes        varchar(60) NOT NULL,

  ip_nbios_ip_sent_bytesvarchar(60) NOT NULL,

  ip_nbios_ip_rcvd_bytesvarchar(60) NOT NULL,

  ip_mail_sent_bytes    varchar(60) NOT NULL,

  ip_mail_rcvd_bytes    varchar(60) NOT NULL,

  mrtg_a                varchar(60) NOT NULL,

  mrtg_c                varchar(60) NOT NULL,

  PRIMARY KEY       (ip)

);


DROP TABLE IF EXISTS rrd_anomalies;

CREATE TABLE rrd_anomalies (

    ip                      varchar(15) NOT NULL,

    what                    varchar(100) NOT NULL,

    count                   int NOT NULL,

    anomaly_time            varchar(40) NOT NULL,

    range                   varchar(30) NOT NULL,

    over                    int NOT NULL,

    acked                   int DEFAULT 0

);


DROP TABLE IF EXISTS rrd_conf_global;

CREATE TABLE rrd_conf_global (

active_host_senders_num VARCHAR(60) NOT NULL,

arp_rarp_bytes    VARCHAR(60) NOT NULL,

broadcast_pkts    VARCHAR(60) NOT NULL,

ethernet_bytes    VARCHAR(60) NOT NULL, 

ethernet_pkts     VARCHAR(60) NOT NULL, 

icmp_bytes        VARCHAR(60) NOT NULL, 

igmp_bytes        VARCHAR(60) NOT NULL, 

ip_bytes          VARCHAR(60) NOT NULL, 

ip_dhcp_bootp_bytes VARCHAR(60) NOT NULL, 

ip_dns_bytes      VARCHAR(60) NOT NULL,

ip_edonkey_bytes  VARCHAR(60) NOT NULL, 

ip_ftp_bytes      VARCHAR(60) NOT NULL, 

ip_gnutella_bytes VARCHAR(60) NOT NULL, 

ip_http_bytes     VARCHAR(60) NOT NULL, 

ip_kazaa_bytes    VARCHAR(60) NOT NULL, 

ip_mail_bytes     VARCHAR(60) NOT NULL, 

ip_messenger_bytes VARCHAR(60) NOT NULL,

ip_nbios_ip_bytes VARCHAR(60) NOT NULL, 

ip_nfs_bytes      VARCHAR(60) NOT NULL, 

ip_nttp_bytes     VARCHAR(60) NOT NULL, 

ip_snmp_bytes     VARCHAR(60) NOT NULL, 

ip_ssh_bytes      VARCHAR(60) NOT NULL, 

ip_telnet_bytes   VARCHAR(60) NOT NULL, 

ip_winmx_bytes    VARCHAR(60) NOT NULL, 

ip_x11_bytes      VARCHAR(60) NOT NULL, 

ipx_bytes         VARCHAR(60) NOT NULL,

known_hosts_num   VARCHAR(60) NOT NULL,

multicast_pkts    VARCHAR(60) NOT NULL,

ospf_bytes        VARCHAR(60) NOT NULL,

other_bytes       VARCHAR(60) NOT NULL,

tcp_bytes         VARCHAR(60) NOT NULL,

udp_bytes         VARCHAR(60) NOT NULL,

up_to_1024_pkts   VARCHAR(60) NOT NULL,

up_to_128_pkts    VARCHAR(60) NOT NULL,

up_to_1518_pkts   VARCHAR(60) NOT NULL,

up_to_512_pkts    VARCHAR(60) NOT NULL,

up_to_64_pkts     VARCHAR(60) NOT NULL

);


DROP TABLE IF EXISTS rrd_anomalies_global;

CREATE TABLE rrd_anomalies_global (

    what                    varchar(100) NOT NULL,

    count                   int NOT NULL,

    anomaly_time            varchar(40) NOT NULL,

    range                   varchar(30) NOT NULL,

    over                    int NOT NULL,

    acked                   int DEFAULT 0

);


--

-- Table: Category表

--

DROP TABLE IF EXISTS category;

CREATE TABLE category (

idINTEGER NOT NULL,

nameVARCHAR (100) NOT NULL,

PRIMARY KEY (id)

);


--

-- Table: Classification表

--

DROP TABLE IF EXISTS classification;

CREATE TABLE classification (

idINTEGER NOT NULL,

nameVARCHAR (100) NOT NULL,

descriptionTEXT,

priorityINTEGER,

PRIMARY KEY (id)

);


--

-- Table: Plugin表

--

DROP TABLE IF EXISTS plugin;

CREATE TABLE plugin (

idINTEGER NOT NULL,

typeSMALLINT NOT NULL,

nameVARCHAR (100) NOT NULL,

descriptionTEXT,

PRIMARY KEY (id)

);


--

-- Table: Plugin Sid表

--

DROP TABLE IF EXISTS plugin_sid;

CREATE TABLE plugin_sid (

plugin_idINTEGER NOT NULL,

sidINTEGER NOT NULL,

category_idINTEGER,

class_idINTEGER,

reliabilityINTEGER DEFAULT 1,

priorityINTEGER DEFAULT 1,

nameVARCHAR (255) NOT NULL,

PRIMARY KEY (plugin_id, sid)

);


--

-- Table: Alert表

--

DROP TABLE IF EXISTS alert;

CREATE TABLE alert (

idBIGINT NOT NULL AUTO_INCREMENT,

timestampTIMESTAMP,

sensorTEXT NOT NULL,

interfaceTEXT NOT NULL,

typeINTEGER NOT NULL,

plugin_idINTEGER NOT NULL,

plugin_sidINTEGER,

protocolINTEGER,

src_ipINTEGER UNSIGNED,

dst_ipINTEGER UNSIGNED,

src_portINTEGER,

dst_portINTEGER,

conditionINTEGER,

valueTEXT,

time_intervalINTEGER,

absoluteTINYINT,

priorityINTEGER DEFAULT 1,

reliabilityINTEGER DEFAULT 1,

asset_srcINTEGER DEFAULT 1,

asset_dstINTEGER DEFAULT 1,

risk_aINTEGER DEFAULT 1,

risk_cINTEGER DEFAULT 1,

alarm           TINYINT DEFAULT 1,

PRIMARY KEY (id)

);


--

-- Table: Backlog表

--

DROP TABLE IF EXISTS backlog;

CREATE TABLE backlog (

utimeBIGINT NOT NULL,

idINTEGER NOT NULL,

nameTEXT,

rule_levelINTEGER,

rule_typeTINYINT,

rule_nameTEXT,

occurrence      INTEGER,

time_outINTEGER,

matchedTINYINT,

plugin_idINTEGER,

plugin_sidINTEGER,

src_ipINTEGER UNSIGNED,

dst_ipINTEGER UNSIGNED,

src_portINTEGER,

dst_portINTEGER,

condition       INTEGER,

valueTEXT,

time_intervalINTEGER,

absoluteTINYINT,

priorityINTEGER,

reliability     INTEGER,

PRIMARY KEY (utime, id)

);


--

-- Table: plugin_reference表

--

DROP TABLE IF EXISTS plugin_reference;

CREATE TABLE plugin_reference (

plugin_idINTEGER NOT NULL,

plugin_sidINTEGER NOT NULL,

reference_idINTEGER NOT NULL,

reference_sidINTEGER NOT NULL,

PRIMARY KEY (plugin_id, plugin_sid, reference_id, reference_sid)

);


--

-- Table: Host plugin sid表

--

DROP TABLE IF EXISTS host_plugin_sid;

CREATE TABLE host_plugin_sid (

host_ip         INTEGER UNSIGNED NOT NULL,

plugin_idINTEGER NOT NULL,

plugin_sidINTEGER NOT NULL,

PRIMARY KEY (host_ip, plugin_id, plugin_sid)

);


--

-- Table: Host scan表

--

DROP TABLE IF EXISTS host_scan;

CREATE TABLE host_scan (

host_ip         INTEGER UNSIGNED NOT NULL,

plugin_idINTEGER NOT NULL,

plugin_sidINTEGER NOT NULL,

PRIMARY KEY (host_ip, plugin_id, plugin_sid)


);



有关OSSIM更多内容请参阅《开源安全运维平台-OSSIM最佳实践》一书。



 本文转自 李晨光 51CTO博客,原文链接:http://blog.51cto.com/chenguang/1747935,如需转载请自行联系原作者


上一篇:SaltStack数据系统之Grains、Pillar


下一篇:如何实现发送带附件的邮件? | 带你读《SpringBoot实战教程》之二十六