148 lines
7.7 KiB
SQL
148 lines
7.7 KiB
SQL
-- Plugin SIEM-Wazuh - Installation script
|
|
|
|
-- Table des serveurs Wazuh
|
|
CREATE TABLE IF NOT EXISTS `glpi_plugin_siem_wazuh_servers` (
|
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
|
`name` VARCHAR(255) NOT NULL COMMENT 'Nom de la connexion',
|
|
`wazuh_url` VARCHAR(255) NOT NULL COMMENT 'URL du serveur Wazuh',
|
|
`wazuh_port` INT(11) DEFAULT 55000 COMMENT 'Port API Wazuh',
|
|
`wazuh_login` VARCHAR(255) NOT NULL COMMENT 'Login API Wazuh',
|
|
`wazuh_password` TEXT NOT NULL COMMENT 'Mot de passe API Wazuh (crypté)',
|
|
`indexer_url` VARCHAR(255) DEFAULT NULL COMMENT 'URL du serveur Indexer',
|
|
`indexer_port` INT(11) DEFAULT 9200 COMMENT 'Port API Indexer',
|
|
`indexer_login` VARCHAR(255) DEFAULT NULL COMMENT 'Login API Indexer',
|
|
`indexer_password` TEXT DEFAULT NULL COMMENT 'Mot de passe API Indexer (crypté)',
|
|
`sync_interval` INT(11) DEFAULT 300 COMMENT 'Intervalle de synchronisation en secondes',
|
|
`is_active` TINYINT(1) DEFAULT 1 COMMENT 'Serveur actif',
|
|
`last_sync` DATETIME DEFAULT NULL COMMENT 'Dernière synchronisation',
|
|
`ticket_type` INT(11) DEFAULT 1 COMMENT 'Type de ticket par défaut',
|
|
`ticket_category` INT(11) DEFAULT NULL COMMENT 'Catégorie de ticket par défaut',
|
|
`date_creation` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
`date_mod` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
INDEX `is_active` (`is_active`),
|
|
INDEX `last_sync` (`last_sync`),
|
|
INDEX `name` (`name`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Table des alertes Wazuh
|
|
CREATE TABLE IF NOT EXISTS `glpi_plugin_siem_wazuh_alerts` (
|
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
|
`wazuh_server_id` INT(11) NOT NULL COMMENT 'ID du serveur Wazuh',
|
|
`alert_id` VARCHAR(255) NOT NULL COMMENT 'ID unique de l\'alerte Wazuh',
|
|
`rule_id` INT(11) DEFAULT NULL COMMENT 'ID de la règle Wazuh',
|
|
`rule_level` INT(11) DEFAULT NULL COMMENT 'Niveau de la règle',
|
|
`rule_description` TEXT DEFAULT NULL COMMENT 'Description de la règle',
|
|
`agent_id` VARCHAR(255) DEFAULT NULL COMMENT 'ID de l\'agent Wazuh',
|
|
`agent_name` VARCHAR(255) DEFAULT NULL COMMENT 'Nom de l\'agent Wazuh',
|
|
`agent_ip` VARCHAR(45) DEFAULT NULL COMMENT 'IP de l\'agent',
|
|
`timestamp` DATETIME NOT NULL COMMENT 'Timestamp de l\'alerte',
|
|
`raw_data` LONGTEXT DEFAULT NULL COMMENT 'Données brutes de l\'alerte (JSON)',
|
|
`computer_id` INT(11) DEFAULT NULL COMMENT 'ID de l\'ordinateur GLPI associé',
|
|
`networkequipment_id` INT(11) DEFAULT NULL COMMENT 'ID de l\'équipement réseau GLPI associé',
|
|
`peripheral_id` INT(11) DEFAULT NULL COMMENT 'ID du périphérique GLPI associé',
|
|
`phone_id` INT(11) DEFAULT NULL COMMENT 'ID du téléphone GLPI associé',
|
|
`printer_id` INT(11) DEFAULT NULL COMMENT 'ID de l\'imprimante GLPI associée',
|
|
`ticket_id` INT(11) DEFAULT NULL COMMENT 'ID du ticket GLPI créé',
|
|
`status` ENUM('new', 'processed', 'ignored', 'ticket_created') DEFAULT 'new',
|
|
`severity` ENUM('low', 'medium', 'high', 'critical') DEFAULT 'medium',
|
|
`date_creation` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
`date_mod` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `unique_alert` (`wazuh_server_id`, `alert_id`),
|
|
INDEX `agent_name` (`agent_name`),
|
|
INDEX `agent_ip` (`agent_ip`),
|
|
INDEX `status` (`status`),
|
|
INDEX `severity` (`severity`),
|
|
INDEX `timestamp` (`timestamp`),
|
|
INDEX `rule_level` (`rule_level`),
|
|
INDEX `computer_id` (`computer_id`),
|
|
INDEX `networkequipment_id` (`networkequipment_id`),
|
|
INDEX `peripheral_id` (`peripheral_id`),
|
|
INDEX `phone_id` (`phone_id`),
|
|
INDEX `printer_id` (`printer_id`),
|
|
INDEX `ticket_id` (`ticket_id`),
|
|
FOREIGN KEY (`wazuh_server_id`) REFERENCES `glpi_plugin_siem_wazuh_servers` (`id`) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Table de configuration
|
|
CREATE TABLE IF NOT EXISTS `glpi_plugin_siem_wazuh_config` (
|
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
|
`name` VARCHAR(255) NOT NULL COMMENT 'Nom du paramètre',
|
|
`value` TEXT DEFAULT NULL COMMENT 'Valeur du paramètre',
|
|
`context` VARCHAR(100) DEFAULT 'global' COMMENT 'Contexte du paramètre',
|
|
`date_creation` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
`date_mod` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `name_context` (`name`, `context`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Table des profils/droits
|
|
CREATE TABLE IF NOT EXISTS `glpi_plugin_siem_wazuh_profiles` (
|
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
|
`profiles_id` INT(11) NOT NULL COMMENT 'ID du profil GLPI',
|
|
`wazuh_config` CHAR(1) DEFAULT NULL COMMENT 'Droit configuration Wazuh',
|
|
`wazuh_server` CHAR(1) DEFAULT NULL COMMENT 'Droit serveur Wazuh',
|
|
`wazuh_alert` CHAR(1) DEFAULT NULL COMMENT 'Droit alerte Wazuh',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `profiles_id` (`profiles_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Table de logs
|
|
CREATE TABLE IF NOT EXISTS `glpi_plugin_siem_wazuh_logs` (
|
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
|
`wazuh_server_id` INT(11) DEFAULT NULL COMMENT 'ID du serveur Wazuh',
|
|
`level` ENUM('debug', 'info', 'warning', 'error', 'critical') DEFAULT 'info',
|
|
`message` TEXT NOT NULL,
|
|
`context` JSON DEFAULT NULL COMMENT 'Contexte supplémentaire',
|
|
`date_creation` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
INDEX `level` (`level`),
|
|
INDEX `wazuh_server_id` (`wazuh_server_id`),
|
|
INDEX `date_creation` (`date_creation`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Table des règles de correspondance
|
|
CREATE TABLE IF NOT EXISTS `glpi_plugin_siem_wazuh_rules` (
|
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
|
`name` VARCHAR(255) NOT NULL COMMENT 'Nom de la règle',
|
|
`wazuh_rule_id` INT(11) DEFAULT NULL COMMENT 'ID de la règle Wazuh',
|
|
`wazuh_rule_level` INT(11) DEFAULT NULL COMMENT 'Niveau de la règle Wazuh',
|
|
`pattern_agent_name` VARCHAR(255) DEFAULT NULL COMMENT 'Pattern nom agent',
|
|
`pattern_agent_ip` VARCHAR(255) DEFAULT NULL COMMENT 'Pattern IP agent',
|
|
`ticket_type` INT(11) DEFAULT 1 COMMENT 'Type de ticket à créer',
|
|
`ticket_category` INT(11) DEFAULT NULL COMMENT 'Catégorie de ticket',
|
|
`ticket_priority` INT(11) DEFAULT 3 COMMENT 'Priorité du ticket',
|
|
`ticket_urgency` INT(11) DEFAULT 3 COMMENT 'Urgence du ticket',
|
|
`ticket_impact` INT(11) DEFAULT 3 COMMENT 'Impact du ticket',
|
|
`auto_assign` TINYINT(1) DEFAULT 0 COMMENT 'Assignment automatique',
|
|
`assigned_to` INT(11) DEFAULT NULL COMMENT 'Utilisateur assigné',
|
|
`assigned_group` INT(11) DEFAULT NULL COMMENT 'Groupe assigné',
|
|
`is_active` TINYINT(1) DEFAULT 1,
|
|
`date_creation` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
`date_mod` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
INDEX `wazuh_rule_id` (`wazuh_rule_id`),
|
|
INDEX `wazuh_rule_level` (`wazuh_rule_level`),
|
|
INDEX `is_active` (`is_active`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Insertion des données par défaut
|
|
INSERT INTO `glpi_plugin_siem_wazuh_config` (`name`, `value`, `context`) VALUES
|
|
('auto_create_ticket', '1', 'global'),
|
|
('default_ticket_priority', '3', 'global'),
|
|
('default_ticket_urgency', '3', 'global'),
|
|
('default_ticket_impact', '3', 'global'),
|
|
('alert_retention_days', '90', 'global'),
|
|
('sync_enabled', '1', 'global'),
|
|
('max_alerts_per_sync', '100', 'global'),
|
|
('notification_enabled', '1', 'global'),
|
|
('min_rule_level', '5', 'global'),
|
|
('debug_mode', '0', 'global');
|
|
|
|
-- Insertion des règles par défaut
|
|
INSERT INTO `glpi_plugin_siem_wazuh_rules` (`name`, `wazuh_rule_level`, `ticket_type`, `ticket_priority`, `is_active`) VALUES
|
|
('Alertes critiques (niveau 12+)', 12, 1, 5, 1),
|
|
('Alertes élevées (niveau 10-11)', 10, 1, 4, 1),
|
|
('Alertes moyennes (niveau 7-9)', 7, 1, 3, 1),
|
|
('Alertes faibles (niveau 5-6)', 5, 1, 2, 0); |