-- 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);