Sicherheit und Schutz#
Die IT-Dokumentation ist das Gedächtnis deiner Organisation — sie enthält Netzwerkpläne, Zugangsdaten, Vertragsdetails und Infrastrukturwissen. Ein Angreifer, der Zugriff auf deine CMDB bekommt, hat damit einen Bauplan deiner gesamten IT. Deshalb verdient i-doit denselben Schutz wie jedes andere kritische System.
Dieser Artikel orientiert sich an den klassischen Schutzzielen: Vertraulichkeit, Integrität, Verfügbarkeit, Authentizität und Autorisierung. Die Maßnahmen sind nach dem Zeitpunkt gegliedert — vor der Installation, danach und im laufenden Betrieb.
Ideensammlung, keine Pflichtliste
Nicht jede Maßnahme passt in jede Umgebung. Ein internes Testsystem braucht weniger Härtung als eine produktive CMDB mit 50.000 Objekten. Prüfe jede Empfehlung mit gesundem Menschenverstand — und dokumentiere bewusste Ausnahmen.
Vor der Installation#
Bevor du i-doit installierst, solltest du das zugrundeliegende System härten. Die Beispiele beziehen sich auf Debian GNU/Linux bzw. Ubuntu, lassen sich aber auf andere Distributionen übertragen.
Minimales Betriebssystem#
Installiere nur, was für den Betrieb nötig ist: Apache, PHP und MariaDB. Je weniger Software läuft, desto kleiner ist die Angriffsfläche.
1 2 3 4 5 | |
Deaktiviere und entferne nicht benötigte Dienste:
1 2 3 | |
Das Minimalprinzip gilt auch für Apache und PHP — deaktiviere nicht benötigte Module:
1 2 | |
phpMyAdmin
Installiere phpMyAdmin nicht auf Produktivsystemen. Es macht die Datenbank über den Browser erreichbar und war in der Vergangenheit wiederholt von Sicherheitslücken betroffen. Nutze stattdessen die Kommandozeile (mysql) oder ein lokales Tool wie DBeaver über einen SSH-Tunnel.
Weniger Rechte ist mehr#
Arbeite niemals dauerhaft als Superuser (root). Verwende sudo für Befehle, die Root-Rechte benötigen. Dienste wie Apache laufen unter eigenen Benutzern (z.B. www-data) — das begrenzt den Schaden, falls ein Dienst kompromittiert wird.
SSH absichern#
SSH ist neben Apache oft der einzige von außen erreichbare Dienst. Die Konfiguration liegt unter /etc/ssh/sshd_config.
Root-Login verbieten:
1 | |
Public-Key-Authentifizierung einrichten:
1 2 | |
Passwort-Login deaktivieren (erst nachdem der Key-Login funktioniert!):
1 2 | |
Danach den SSH-Dienst neu starten:
1 | |
Updates, Updates, Updates#
Halte das gesamte System aktuell — das betrifft i-doit selbst, das Betriebssystem und alle angebundenen Drittsysteme. Sicherheitslücken in veralteter Software sind einer der häufigsten Angriffsvektoren.
Für automatische Sicherheitsupdates unter Debian/Ubuntu bieten sich Unattended Upgrades an:
1 2 | |
MariaDB absichern#
Führe als Erstes mysql_secure_installation aus — das entfernt Testdatenbanken, anonyme Benutzer und setzt ein Root-Passwort.
Prüfe anschließend die hinterlegten Benutzer:
1 | |
Lösche unerwünschte Einträge (z.B. Wildcards % oder externe Adressen). Erlaubt sind nur localhost, 127.0.0.1 und ::1. Stelle sicher, dass der Standard-Port 3306 nicht von außen erreichbar ist.
PHP absichern#
Halte PHP immer auf dem neuesten Patch-Stand. Die für i-doit erforderlichen Einstellungen stehen in den Systemeinstellungen. Zusätzliche Härtung erreichst du über eine eigene Konfigurationsdatei:
1 | |
1 2 3 4 5 6 7 8 | |
Aktivieren:
1 2 | |
PHP-Version anpassen
Ersetze 8.2 durch die PHP-Version, die du im Einsatz hast. Welche Versionen i-doit unterstützt, findest du in den Systemvoraussetzungen.
Backup und Restore#
Backups sind deine letzte Verteidigungslinie — gegen Angriffe, Fehlbedienung und Hardwareausfälle. Lies den Artikel zum Sichern und Wiederherstellen.
Ebenso wichtig: Teste den Restore regelmäßig. Ein Backup, das sich nicht wiederherstellen lässt, ist wertlos.
Backups verschlüsseln: Wenn Backups auf externe Medien oder in die Cloud wandern, verschlüssele sie — z.B. mit gpg:
1 | |
Für den Notfall empfiehlt sich eine zweite, unabhängige Instanz — z.B. eine exportierte VM im OVF-Format auf einem USB-Stick im feuerfesten Safe.
Transportverschlüsselung (TLS)#
Sichere die Kommunikation zwischen Browser und Server mit TLS, damit Zugangsdaten und CMDB-Daten nicht im Klartext über das Netzwerk gehen.
Let's Encrypt (empfohlen)#
Der einfachste Weg zu einem vertrauenswürdigen Zertifikat ist Let's Encrypt mit dem ACME-Client Certbot:
1 2 | |
Certbot konfiguriert Apache automatisch und richtet die Zertifikatserneuerung per Cronjob ein. Teste die Erneuerung:
1 | |
Apache TLS-Konfiguration#
Falls du eigene Zertifikate verwendest, nutze eine moderne TLS-Konfiguration. Den Mozilla SSL Configuration Generator für eine aktuelle, an deine Apache-Version angepasste Konfiguration.
Beispiel für Apache mit Security-Headern:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | |
Prüfe deine Konfiguration mit:
- SSL Labs von Qualys — TLS-Konfiguration bewerten
- securityheaders.io — Security-Header prüfen
Client-Zertifikate#
Einen Schritt weiter geht die Absicherung über Client-Zertifikate: Dabei prüft nicht nur der Browser das Server-Zertifikat, sondern auch der Webserver verifiziert den Client. Das ist eine starke zusätzliche Authentifizierungsschicht, erfordert aber die Verteilung und Verwaltung der Client-Zertifikate.
Datenverschlüsselung#
Festplattenverschlüsselung schützt bei Diebstahl. Unter GNU/Linux ist dm-crypt/LUKS weit verbreitet — viele Distributionen bieten dies bereits bei der Installation an. Unter Windows stehen BitLocker und VeraCrypt zur Verfügung.
Besonders relevant, wenn die Hardware nicht im eigenen Rechenzentrum steht oder i-doit auf einem Notebook läuft.
Nach der Installation#
Berechtigungen im Dateisystem#
Setze restriktive Dateiberechtigungen:
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Vor einem Update die Einschränkungen temporär aufheben:
1 2 3 | |
Sichere Passwörter#
Setze von Anfang an sichere Passwörter für alle Konten. Die Standardpasswörter nach der Installation sind öffentlich bekannt — ändere sie sofort.
Standard-Benutzer in i-doit#
Die Benutzer admin, reader, author und editor haben standardmäßig das Passwort gleich dem Benutzernamen. Das ist der wichtigste Punkt nach der Installation:
- Ändere alle Standardpasswörter
- Lege für jeden realen Benutzer ein eigenes Personenobjekt an
- Archiviere die Standard-Benutzer nach der Einrichtung
Admin-Center-Passwort#
Das Passwort kannst du im Admin-Center unter Config ändern oder direkt in der Datei src/config.inc.php.
MySQL-Benutzer#
1 | |
Das neue Passwort auch in der Systemdatenbank hinterlegen:
1 2 3 | |
Zusätzlich in src/config.inc.php oder im Admin-Center unter Config anpassen.
Linux-Benutzer#
1 | |
CSRF-Schutz aktivieren#
Cross-Site Request Forgery (CSRF) ist ein Angriff, bei dem ein Benutzer unbemerkt Aktionen in i-doit ausführt, weil er auf einen manipulierten Link klickt. Aktiviere den Schutz im Admin-Center unter:
System Settings → Security → CSRF-Token → Ja
Zwei-Faktor-Authentifizierung#
i-doit bietet eine integrierte Zwei-Faktor-Authentifizierung (2FA). Damit benötigen Benutzer neben dem Passwort einen zusätzlichen Code aus einer Authenticator-App. Besonders empfehlenswert für Admin-Konten und Benutzer mit Schreibzugriff.
Zusätzliche Authentifizierungsmechanismen lassen sich über den Apache Webserver einrichten, z.B. via Single Sign-On (SSO).
Session-Timeout konfigurieren#
Standardmäßig bleiben Sitzungen in i-doit sehr lange aktiv. Für sicherheitskritische Umgebungen solltest du den Session-Timeout verkürzen, damit vergessene Browserfenster nicht dauerhaft offen bleiben.
Die Einstellung findest du in den Experteneinstellungen unter session.time — der Wert ist in Sekunden angegeben. Ein sinnvoller Wert für Produktivumgebungen liegt bei 3600 (1 Stunde).
API absichern#
Die JSON-RPC API ist ein mächtiges Werkzeug — und ein attraktives Angriffsziel. Wenn du die API nutzt, solltest du sie gezielt absichern:
- API-Key geheim halten — der Key gewährt vollen Zugriff. Behandle ihn wie ein Passwort.
- Zugriff per IP einschränken — erlaube API-Zugriffe nur von bekannten Systemen. Das kannst du über die Apache-Konfiguration oder eine Firewall-Regel lösen:
1 2 3 4 | |
- Eigenen API-Benutzer anlegen — verwende nicht den Admin-Account für API-Zugriffe. Lege einen dedizierten Benutzer mit minimalen Rechten an.
- API deaktivieren wenn sie nicht gebraucht wird — das Add-on kann in der Verwaltung deaktiviert werden.
Firewall und Netzwerk#
Offene Ports minimieren#
Jeder geschlossene Port verkleinert die Angriffsfläche. Für i-doit reichen in der Regel:
| Port | Dienst | Bemerkung |
|---|---|---|
| 443 | HTTPS | i-doit Web-Oberfläche |
| 22 | SSH | Administration (idealerweise nur aus dem Admin-Netz) |
MariaDB (3306) sollte niemals von außen erreichbar sein.
Eine einfache Firewall mit ufw:
1 2 3 4 5 6 | |
Security by Obscurity
Nicht-Standard-Ports (z.B. 8080, 8022) bieten keinen echten Schutz. Port-Scanner wie nmap finden offene Ports in Sekunden.
Für Apache gibt es zusätzlich die Web Application Firewall mod_security, die Angriffsmuster in HTTP-Anfragen erkennt und blockiert.
Firewall-Freigaben für i-doit#
Damit i-doit Updates herunterladen, Lizenzen prüfen und Online-Repositories nutzen kann, müssen folgende Ziele erreichbar sein:
| Host | Protokoll | Port | Zweck |
|---|---|---|---|
| login.i-doit.com | HTTPS | 443 | Updates für i-doit und Add-ons |
| center.i-doit.com | HTTPS | 443 | Add-on & Subscription Center IPs: 159.69.103.121, 78.46.236.49, 35.158.127.51, 35.158.127.52, 35.158.127.53IPv6: 2a01:4f8:c01f:289a::, 2a01:4f8:1c17:a07c:: |
| crm-gateway.i-doit.com | HTTPS | 443 | Downloads über Lizenz-Token |
| lizenzen.i-doit.com | HTTPS | 443 | Lizenzen über Token abrufen |
| reports-ng.i-doit.org | HTTPS | 443 | Online-Repository für Reports |
| r.i-doit.com | HTTPS | 443 | Online-Repository für Vorlagen |
| i-doit.com | HTTPS | 443 | Update-Check |
Schnittstellen zu Dritt-Applikationen#
| Schnittstelle | Protokoll | Standard-Port |
|---|---|---|
| E-Mails senden | SMTP | 25 / 465 / 587 |
| LDAP/AD | LDAP / LDAPS | 389 / 636 |
| JDisc Discovery | PostgreSQL | 25321 |
| JDisc Discovery | HTTP | 9000 |
| JDisc Discovery GraphQL | HTTPS | 443 |
| Livestatus | Livestatus | 6557 |
| Znuny Help Desk, Request Tracker | HTTP/HTTPS | 80 / 443 |
Vertrauenswürdiges Netzwerk#
- Kein direkter Internetzugang — stelle i-doit hinter einen Reverse Proxy oder in ein internes Netz. Für Updates nutze einen HTTP-Proxy.
- Dediziertes Admin-Netz — erlaube SSH nur aus dem Verwaltungsnetz, damit nur die Kernfunktion (HTTPS) aus dem Büronetz erreichbar ist.
IPv4 vs. IPv6#
Wenn IPv6 in deinem Netzwerk nicht verwendet wird, deaktiviere es auf dem Server. Wird es genutzt, müssen Firewall-Regeln und Dienstkonfigurationen beide Protokolle berücksichtigen — eine Firewall, die nur IPv4-Regeln hat, schützt nicht vor IPv6-Zugriffen.
Sicherheits-Frameworks#
Unter GNU/Linux schützen SELinux und AppArmor zusätzlich vor unberechtigten Aktionen. Damit kannst du Apache so einsperren, dass er nur auf bestimmte Verzeichnisse zugreifen darf — selbst wenn ein Angreifer eine Schwachstelle in PHP ausnutzt.
Angriffe automatisch abwehren#
fail2ban analysiert Log-Dateien und sperrt automatisch IP-Adressen nach wiederholten fehlgeschlagenen Login-Versuchen:
1 | |
Vorkonfigurierte Regeln gibt es für SSH, Apache und MariaDB. Für i-doit selbst kannst du eine eigene Regel erstellen, die fehlgeschlagene Logins in den Apache-Logs erkennt.
Monitoring und Logs#
System überwachen#
Überwache das System mit einem Network Monitoring wie Checkmk oder Nagios. Wichtige Metriken:
- CPU- und Speicherauslastung
- Verfügbarer Festplattenspeicher
- Apache- und MariaDB-Prozesse
- Zertifikatsgültigkeit (TLS)
- Backup-Erfolg
Logs auswerten#
Die i-doit-eigenen Log-Dateien liegen im Verzeichnis log/ der Installation. Werte sie regelmäßig aus — insbesondere nach Updates und bei unerwartetem Verhalten.
Für die automatische Log-Überwachung eignet sich Logwatch:
1 | |
Logwatch analysiert Logs von Apache, SSH und weiteren Diensten und verschickt täglich einen Report per E-Mail.
Falls das System E-Mails versenden soll, richte einen SMTP-Relay ein — z.B. mit msmtp.
Regelmäßige Sicherheitsprüfung#
Sicherheit ist kein einmaliges Projekt, sondern ein fortlaufender Prozess. Führe regelmäßig (z.B. quartalsweise) eine Prüfung durch:
| Prüfpunkt | Wie |
|---|---|
| Betriebssystem aktuell? | apt update && apt list --upgradable |
| PHP-Version noch unterstützt? | Systemvoraussetzungen prüfen |
| i-doit auf aktuellem Stand? | Release Notes prüfen |
| Standard-Passwörter geändert? | Login mit admin/admin testen |
| Backup funktionsfähig? | Restore auf Testsystem durchführen |
| TLS-Konfiguration aktuell? | SSL Labs |
| Ungenutzte Benutzer vorhanden? | Benutzerliste in i-doit prüfen |
| Offene Ports minimal? | sudo ss -tulpen |
| API-Zugriff eingeschränkt? | Apache-Logs auf unbekannte IPs prüfen |
| Dateiberechtigungen korrekt? | find /var/www/html -perm -o+w |
Hochverfügbarkeit#
Wirklich nötig?
In den meisten Fällen ist ein einzelnes, gut gewartetes System ausreichend. Die Systemanforderungen von i-doit sind moderat. Bevor du ein redundantes Setup planst, investiere lieber in ein durchdachtes Backup-Konzept und schnelle Wiederherstellbarkeit.
Für erhöhte Verfügbarkeit kannst du die Dienste auf dedizierten Systemen betreiben: Apache hinter einem Load Balancer, MariaDB in einem Cluster (z.B. mit MaxScale), Dateien in einem verteilten Storage.
Im Kleinen helfen: RAID, ECC-RAM und redundante Netzteile an unterschiedlichen Stromphasen (idealerweise mit USV).
Weiterführende Links#
- IT-Grundschutz des BSI — Systematische IT-Sicherheit
- Mozilla SSL Configuration Generator — TLS-Konfiguration generieren
- CIS Benchmarks — Härtungsrichtlinien für Betriebssysteme und Dienste