
Exploit für CVE-2023-39361 in Cacti, einer Netzwerk-Grafiklösung, der eine SQL-Injection-Schwachstelle zu Bildungs- und Sicherheitstestzwecken demonstriert.
Änderungen an der Datenbank werden in der Datei cacti.sql festgehalten, die für neue
Installationen verwendet wird, und für bestehende Installationen in das Installationsprogramm für
Datenbank-Upgrades übernommen. Da sich die Versionsnummer im develop-Zweig erst bei der
Veröffentlichung ändert, was dazu führt, dass das Datenbank-Upgrade nicht ausgeführt wird, ist es
wichtig, entweder das Datenbank-Upgrade-Skript zu verwenden, um die aktuelle Version zu erzwingen,
oder die Version in der Datenbank zu aktualisieren.
Als Cacti vor fast 20 Jahren erstmals entwickelt wurde, war MySQL noch nicht so ausgereift wie heute. Als The Cacti Group mit der Entwicklung von Cacti 1.x begann, wurde die Entscheidung getroffen, Benutzer zu zwingen, die InnoDB-Speicher-Engine für viele der Tabellen zu verwenden. Dies geschah, da die InnoDB-Speicher-Engine eine bessere Benutzererfahrung bietet, wenn Ihre Website mehrere gleichzeitige Anmeldungen hat. Obwohl sie etwas langsamer ist, bietet sie den Entwicklern auch eine größere Widerstandsfähigkeit.
Abgesehen davon gibt es mehrere Änderungen, die Sie VOR dem Upgrade an MySQL/MariaDB vornehmen MÜSSEN, und ein Neustart des Dienstes ist erforderlich. Je nach Ihrer Version von MariaDB oder MySQL sind die folgenden Einstellungen entweder erforderlich oder bereits standardmäßig aktiviert:
[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
Die erforderlichen Einstellungen sind sehr wichtig. Andernfalls werden Sie Probleme beim Upgrade haben. Für die Einstellungen mit XXX wird Cacti zum Zeitpunkt des Upgrades eine Empfehlung aussprechen. Es ist nicht ungewöhnlich, dass MySQL/MariaDB während des Upgrades neu gestartet werden muss, um diese Einstellungen zu optimieren. Bitte beachten Sie dies besonders, bevor Sie mit Ihrem Upgrade beginnen.
Bevor Sie das Upgrade durchführen, sollten Sie diese erforderlichen Änderungen vornehmen und dann MySQL/MariaDB neu starten. Danach können Sie sich Zeit und potenzielle Fehler sparen, indem Sie die folgenden Skripte ausführen (vorausgesetzt, Sie verwenden 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
Dadurch werden alle Tabellen, die entweder InnoDB oder MyISAM sind, in das Barracuda-Dateiformat, das dynamische Zeilenformat und utf8mb4 konvertiert. Beachten Sie, dass es besser sein kann, Ihre Datenbank zu sichern, InnoDB durch Entfernen Ihrer ib*-Dateien im Verzeichnis /var/lib/mysql zurückzusetzen und danach Ihre Datenbank sowie die MySQL/MariaDB-Tabellen und -Berechtigungen wiederherzustellen, wenn Sie MySQL oder MariaDB ohne aktiviertes innodb_file_per_table verwendet haben. Bevor Sie einen solchen Schritt unternehmen, sollten Sie immer auf einem Testserver üben, bis Sie sich mit der Änderung wohlfühlen.
Viel Glück und viel Spaß mit Cacti!
sudo -u cacti php -q cli/upgrade_database.php --forcever=`cat include/cacti_version`
update version set cacti = '1.1.38';
Hinweis: Ändern Sie die obige Version in die korrekte Version, andernfalls riskieren Sie, dass das Installationsprogramm von einer früheren Version aus aktualisiert.
Cacti ist eine vollständige Netzwerk-Grafiklösung, die entwickelt wurde, um die Leistungsfähigkeit der Datenspeicherungs- und Grafikfunktionen von RRDtool zu nutzen und die folgenden Funktionen bereitzustellen:
Remote- und lokale Datensammler
Geräteerkennung
Automatisierung der Geräte- und Grafikerstellung
Grafik- und Gerätevorlagen
Benutzerdefinierte Datenerfassungsmethoden
Zugriffskontrollen für Benutzer, Gruppen und Domänen
All dies ist in einer intuitiven, benutzerfreundlichen Oberfläche verpackt, die sowohl für Installationen in LAN-Größe als auch für komplexe Netzwerke mit Tausenden von Geräten sinnvoll ist.
In den frühen 2000er Jahren von Ian Berry als Highschool-Projekt entwickelt, wurde es von Tausenden von Unternehmen und Enthusiasten genutzt, um ihre Unternehmensnetzwerke und Rechenzentren zu überwachen und zu verwalten.
Cacti sollte auf jedem Linux-, UNIX- oder Windows-basierten Betriebssystem mit den folgenden Anforderungen laufen können:
PHP 5.4+
MySQL 5.1+
RRDtool 1.3+, 1.5+ empfohlen
NET-SNMP 5.5+
Webserver mit PHP-Unterstützung
PHP muss außerdem als eigenständiges cgi- oder cli-Binary kompiliert sein. Dies ist für die Datenerfassung über cron erforderlich.
Wir markieren das php-snmp-Modul als optional. Solange Sie keine ipv6-Geräte verwenden oder keine snmpv3-Engine-IDs oder -Kontexte verwenden, sollte die Verwendung von php-snmp sicher sein. Andernfalls sollten Sie in Betracht ziehen, das php-snmp-Modul zu deinstallieren, da es Probleme verursachen wird. Wir sind uns des Problems mit php-snmp bewusst und bemühen uns, uns am php-Projekt zu beteiligen, um diese Probleme zu lösen.
RRDtool ist in mehreren Versionen verfügbar, und die meisten davon werden von Cacti unterstützt. Bitte denken Sie daran, Ihre Cacti-Einstellungen für die RRDtool-Version zu bestätigen, wenn Sie Probleme beim Rendern von Grafiken haben.
Die Dokumentation ist mit den Cacti-Versionen verfügbar und kann auch im Dokumentations-Repository eingesehen werden.
Besuchen Sie die Haupt-Website von Cacti für Downloads, Änderungsprotokolle, Versionshinweise und mehr!
Angesichts des großen Umfangs von Cacti erzeugen die Foren tendenziell ein beachtliches Verkehrsaufkommen. Ihren Teil zur Beantwortung grundlegender Fragen beizutragen, trägt viel dazu bei, da wir nicht überall gleichzeitig sein können. Tragen Sie zur Cacti-Community bei, indem Sie an den Cacti Community-Foren teilnehmen.
Beteiligen Sie sich an der Erstellung und Bearbeitung der Cacti-Dokumentation! Forken, ändern und reichen Sie einen Pull-Request ein, um die Dokumentation auf GitHub zu verbessern.
Beteiligen Sie sich an der Entwicklung von Cacti! Schließen Sie sich den Entwicklern und der Community auf GitHub an!
Cacti verwaltet die Datenerfassung über das Konzept der Datenquellen. Datenquellen nutzen Eingabemethoden, um Daten von Geräten, Hosts, Datenbanken, Skripten usw. zu sammeln. Die Möglichkeiten hinsichtlich der Art der Daten, die Sie sammeln können, sind endlos. Datenquellen sind die direkte Verbindung zu den zugrunde liegenden RRD-Dateien; wie Daten in RRD-Dateien gespeichert und wie Daten aus RRD-Dateien abgerufen werden.
Grafiken, das Herz und die Seele von Cacti, werden von RRDtool unter Verwendung der definierten Datenquellendefinitionen erstellt.
Um alles zusammenzuführen, verwendet Cacti ein umfangreiches Vorlagensystem, das die Erstellung und Nutzung portabler Vorlagen ermöglicht. Grafik-, Datenquellen- und RRA-Vorlagen ermöglichen die einfache Erstellung von Grafiken und Datenquellen direkt aus dem Paket. Zusammen mit der Unterstützung der Cacti-Community sind Vorlagen zum Standardweg geworden, um die Darstellung beliebig vieler Geräte in heutigen Rechen- und Netzwerkumgebungen zu unterstützen.
Unterstützung für lokale und Remote-Datenerfassung mit der Möglichkeit, Erfassungsintervalle festzulegen. Weitere Informationen finden Sie unter Datenquellenprofil in Cacti. Datenquellenprofile können beim Erstellen von Grafiken oder auf der Ebene der Datenvorlage angewendet werden.
Die Remote-Datenerfassung wurde durch die Replikation von Ressourcen auf Remote-Datensammler vereinfacht. Selbst wenn die Verbindung zur Haupt-Cacti-Installation vom Remote-Datensammler verloren geht, speichert dieser die gesammelten Daten, bis die Verbindung wiederhergestellt ist. Die Remote-Datenerfassung erfordert nur MySQL- und HTTP/HTTPS-Zugriff zurück zum Speicherort der Haupt-Cacti-Installation.
Cacti bietet Administratoren eine Reihe von Netzwerkautomatisierungsfunktionen, um den Zeit- und Arbeitsaufwand für die Einrichtung und Verwaltung von Geräten zu reduzieren.
Mehrere definierbare Netzwerkerkennungsregeln
Automatisierungsvorlagen, die festlegen, wie Geräte konfiguriert werden
Cacti ist mehr als ein Netzwerküberwachungssystem, es ist ein Betriebs-Framework, das die Erweiterung und Ergänzung der Cacti-Funktionalität ermöglicht. The Cacti Group pflegt weiterhin eine Reihe von Plugins. Wenn Sie Cacti um Funktionen erweitern möchten, gibt es auf GitHub eine ganze Reihe von Referenzmaterial zur Auswahl.
Cacti ermöglicht viele Laufzeit-Erweiterungen beim Anzeigen von Grafiken:
Dynamisch geladene Baum- und Grafikansicht
Suche nach Zeichenfolge, Grafik- und Vorlagentypen
Ansichtserweiterung
Einfache Zeitspannenanpassungen
Praktische Schieberegler für Zeitfenster
Echtzeit-Grafikoption mit einem Klick
Einfacher Grafikexport als csv
RRA-Ansicht mit nur einem Klick
Unterstützung für Berechtigungen pro Benutzer und pro Gruppe auf einer pro Bereich (Bereich von Cacti), pro Grafik, pro Grafikbaum, pro Gerät usw. Das Berechtigungsmodell in Cacti ist eine rollenbasierte Zugriffskontrolle (RBAC), die eine flexible Zuweisung von Berechtigungen ermöglicht. Unterstützung für die Durchsetzung von Passwortkomplexität, Passwortalter und das Ändern abgelaufener Passwörter.
Cacti unterstützt die meisten RRDtool-Grafikfunktionen, einschließlich:
Vollständige rechte Achse
Verschiebung
Strich und Strich-Offset
Alt y-Grid
Kein Grid-Fit
Einheitenlänge
Tab-Breite
Dynamische Beschriftungen
Regeln-Legende
Legendenposition
VDEFs
Gestapelte Linien
Benutzerdefinierbare Linienbreiten
Textausrichtung
Copyright (c) 2004-2023 - The Cacti Group, Inc.