
Exploit pour CVE-2023-39361 dans Cacti, une solution de graphiques réseau, démontrant une vulnérabilité d'injection SQL à des fins éducatives et de tests de sécurité.
developLorsque vous utilisez les sources ou que vous téléchargez le code directement depuis le dépôt, il est important d'exécuter le script de mise à niveau de la base de données si vous rencontrez des erreurs faisant référence à des tables ou des colonnes manquantes dans la base de données.
Les modifications apportées à la base de données sont validées dans le fichier cacti.sql qui est utilisé pour
les nouvelles installations et validées dans la mise à niveau de la base de données de l'installateur pour les installations
existantes. Étant donné que le numéro de version ne change pas avant la publication dans la
branche develop, ce qui empêchera la mise à niveau de la base de données de s'exécuter, il est
important soit d'utiliser le script de mise à niveau de la base de données pour forcer la version actuelle,
soit de mettre à jour la version dans la base de données.
Lorsque Cacti a été développé pour la première fois il y a près de 20 ans, MySQL n'était pas aussi mature qu'il l'est aujourd'hui. Lorsque The Cacti Group a entrepris de concevoir Cacti 1.x, une décision a été prise pour obliger les utilisateurs à utiliser le moteur de stockage InnoDB pour de nombreuses tables. Cela a été fait car le moteur de stockage InnoDB offre une meilleure expérience utilisateur lorsque votre site web compte plusieurs connexions simultanées. Bien qu'un peu plus lent, il offre également une plus grande résilience pour les développeurs.
Cela dit, plusieurs modifications doivent être apportées à MySQL/MariaDB avant la mise à niveau, et un redémarrage du service est requis. Selon votre version de MariaDB ou de MySQL, les paramètres suivants seront soit requis, soit déjà activés par défaut :
[mysqld]
# required for multiple language support
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# Memory tunables - Cacti provides recommendations at upgrade time
max_heap_table_size = XXX
max_allowed_packet = 500M
tmp_table_size = XXX
join_buffer_size = XXX
sort_buffer_size = XXX
# important for compatibility
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
# innodb settings - Cacti provides recommendations at upgrade time
innodb_buffer_pool_instances = XXX
innodb_flush_log_at_trx_commit = 2
innodb_buffer_pool_size = XXX
innodb_sort_buffer_size = XXX
innodb_doublewrite = ON
# required
innodb_file_per_table = ON
innodb_file_format = Barracuda
innodb_large_prefix = 1
# not all version support
innodb_flush_log_at_timeout = 3
# for SSD's/NVMe
innodb_read_io_threads = 32
innodb_write_io_threads = 16
innodb_io_capacity = 10000
innodb_io_capacity_max = 20000
innodb_flush_method = O_DIRECT
Les paramètres requis sont très importants. Sinon, vous rencontrerez des problèmes lors de la mise à niveau. Pour les paramètres avec XXX, Cacti fournira une recommandation au moment de la mise à niveau. Il n'est pas rare de devoir redémarrer MySQL/MariaDB pendant la mise à niveau pour ajuster ces paramètres. Veuillez en prendre spécialement note avant de commencer votre mise à niveau.
Avant la mise à niveau, vous devez apporter ces modifications requises, puis redémarrer MySQL/MariaDB. Ensuite, vous pouvez vous épargner du temps et des erreurs potentielles en exécutant les scripts suivants (en supposant que vous utilisez bash) :
for table in `mysql -e "SELECT TABLE_NAME FROM information_schema.TABLES WHERE table_schema='cacti' AND engine!='MEMORY'" cacti | grep -v TABLE_NAME`;
do
echo "Converting $table";
mysql -e "ALTER TABLE $table ENGINE=InnoDB ROW_FORMAT=Dynamic CHARSET=utf8mb4" cacti;
done
Cela convertira toutes les tables InnoDB ou MyISAM au format de fichier Barracuda, au format de ligne dynamique et à utf8mb4. Notez que si vous avez utilisé MySQL ou MariaDB sans innodb_file_per_table activé, il serait peut-être préférable de sauvegarder votre base de données, de réinitialiser InnoDB en supprimant vos fichiers ib* dans le répertoire /var/lib/mysql, puis de restaurer votre base de données ainsi que les tables et permissions MySQL/MariaDB. Avant de prendre une telle mesure, vous devriez toujours vous entraîner sur un serveur de test jusqu'à ce que vous soyez à l'aise avec le changement.
Bonne chance, et profitez de Cacti !
sudo -u cacti php -q cli/upgrade_database.php --forcever=`cat include/cacti_version`
update version set cacti = '1.1.38';
Note : Remplacez la version ci-dessus par la version correcte, sinon l'installateur risque de mettre à niveau depuis une version précédente.
Cacti est une solution complète de graphiques réseau conçue pour exploiter la puissance du stockage de données et des fonctionnalités de graphiques de RRDtool, offrant les fonctionnalités suivantes :
Collecteurs de données distants et locaux
Découverte de périphériques
Automatisation de la création de périphériques et de graphiques
Modèles de graphiques et de périphériques
Méthodes de collecte de données personnalisées
Contrôles d'accès par utilisateur, groupe et domaine
Tout cela est enveloppé dans une interface intuitive et facile à utiliser qui convient aussi bien aux installations de taille LAN qu'aux réseaux complexes comptant des milliers de périphériques.
Développé au début des années 2000 par Ian Berry comme projet de lycée, il a été utilisé par des milliers d'entreprises et de passionnés pour surveiller et gérer leurs réseaux d'entreprise et centres de données.
Cacti devrait pouvoir fonctionner sur tout système d'exploitation Linux, UNIX ou Windows avec les exigences suivantes :
PHP 5.4+
MySQL 5.1+
RRDtool 1.3+, 1.5+ recommandé
NET-SNMP 5.5+
Serveur web avec support PHP
PHP doit également être compilé comme binaire cgi ou cli autonome. Cela est requis pour la collecte de données via cron.
Nous marquons le module php-snmp comme optionnel. Tant que vous n'utilisez pas de périphériques ipv6, ou que vous n'utilisez pas d'ID de moteur ou de contextes snmpv3, l'utilisation de php-snmp devrait être sûre. Sinon, vous devriez envisager de désinstaller le module php-snmp car il créera des problèmes. Nous sommes conscients du problème avec php-snmp et cherchons à nous impliquer dans le projet php pour résoudre ces problèmes.
RRDtool est disponible en plusieurs versions et la majorité d'entre elles sont prises en charge par Cacti. N'oubliez pas de confirmer vos paramètres Cacti pour la version de RRDtool si vous rencontrez des problèmes de rendu des graphiques.
La documentation est disponible avec les versions de Cacti et également consultable sur le Dépôt de documentation.
Consultez le site web principal de Cacti pour les téléchargements, les journaux de modifications, les notes de version et plus encore !
Compte tenu de la grande portée de Cacti, les forums ont tendance à générer un volume de trafic respectable. Faire votre part en répondant aux questions de base aide énormément puisque nous ne pouvons pas être partout à la fois. Contribuez à la communauté Cacti en participant aux Forums communautaires Cacti.
Participez à la création et à l'édition de la documentation Cacti ! Forkez, modifiez et soumettez une pull request pour aider à améliorer la documentation sur GitHub.
Participez au développement de Cacti ! Rejoignez les développeurs et la communauté sur GitHub !
Cacti gère la collecte de données grâce au concept de sources de données. Les sources de données utilisent des méthodes d'entrée pour collecter des données à partir de périphériques, d'hôtes, de bases de données, de scripts, etc... Les possibilités sont infinies quant à la nature des données que vous pouvez collecter. Les sources de données sont le lien direct avec les fichiers RRD sous-jacents ; comment les données sont stockées dans les fichiers RRD et comment les données sont récupérées depuis les fichiers RRD.
Les graphiques, le cœur et l'âme de Cacti, sont créés par RRDtool en utilisant la définition des sources de données définies.
Pour tout rassembler, Cacti utilise un système de modèles étendu qui permet la création et l'utilisation de modèles portables. Les modèles de graphiques, de sources de données et de RRA permettent la création facile de graphiques et de sources de données prêts à l'emploi. Avec le support de la communauté Cacti, les modèles sont devenus le moyen standard de prendre en charge les graphiques de tout nombre de périphériques utilisés dans les environnements informatiques et réseau actuels.
Support de collecte de données locale et distante avec la possibilité de définir des intervalles de collecte. Consultez Profil de source de données dans Cacti pour plus d'informations. Les profils de sources de données peuvent être appliqués aux graphiques lors de la création ou au niveau du modèle de données.
La collecte de données distante a été simplifiée grâce à la réplication des ressources vers les collecteurs de données distants. Même si la connectivité à l'installation principale de Cacti est perdue depuis le collecteur de données distant, celui-ci stockera les données collectées jusqu'à ce que la connectivité soit rétablie. La collecte de données distante ne nécessite que l'accès MySQL et HTTP/HTTPS vers l'emplacement de l'installation principale de Cacti.
Cacti fournit aux administrateurs une série de fonctionnalités d'automatisation du réseau afin de réduire le temps et l'effort nécessaires pour configurer et gérer les périphériques.
Plusieurs règles de découverte réseau définissables
Modèles d'automatisation qui spécifient comment les périphériques sont configurés
Cacti est plus qu'un système de surveillance réseau, c'est un cadre opérationnel qui permet l'extension et l'augmentation des fonctionnalités de Cacti. The Cacti Group continue de maintenir un assortiment de plugins. Si vous cherchez à ajouter des fonctionnalités à Cacti, il existe pas mal de matériel de référence parmi lequel choisir sur GitHub.
Cacti permet de nombreuses augmentations à l'exécution lors de la visualisation des graphiques :
Vue arborescente et graphique chargée dynamiquement
Recherche par chaîne, types de graphiques et de modèles
Augmentation de la visualisation
Ajustements simples de la période
Boutons pratiques de fenêtre temporelle coulissante
Option de graphique en temps réel en un seul clic
Exportation facile des graphiques en csv
Vue RRA en un seul clic
Support des permissions par utilisateur et par groupe au niveau de chaque domaine (zone de Cacti), par graphique, par arborescence de graphiques, par périphérique, etc... Le modèle de permissions dans Cacti est un contrôle d'accès basé sur les rôles (RBAC) pour permettre une attribution flexible des permissions. Support de l'application de la complexité des mots de passe, de l'âge des mots de passe et du changement des mots de passe expirés.
Cacti prend en charge la plupart des capacités de graphiques RRDtool, notamment :
Axe droit complet
Décalage
Tirets et décalage de tirets
Grille y alternative
Ajustement de grille désactivé
Longueur des unités
Largeur des onglets
Étiquettes dynamiques
Légende des règles
Position de la légende
VDEFs
Lignes empilées
Largeurs de lignes définissables par l'utilisateur
Alignement du texte
Copyright (c) 2004-2023 - The Cacti Group, Inc.