Schon seit einigen Jahren bieten wir Betriebspakete für Redmine an. Mit denen sorgen wir durch regelmäßige, proaktive Pflege dafür, dass Dein Redmine und das darunter liegende System auch stets mit aktueller Software sicher betrieben werden kann. Um die Gefahr des digitalen Einbruchs auf ein Minimum zu reduzieren.
Basierend auf unsere langjährige Erfahrung haben wir hierfür ein bewährtes, automatisiertes Vorgehen entwickelt. Dieses ermöglicht uns zeitnah Updates einzuspielen und kritische Sicherheitslücken (sowohl in der Redmine-Anwendung als auch in den genutzten Plugins) schnell zu schließen.
In diesem Artikel möchten wir auf die Sicherheitsmaßnahmen für die Anwendung Redmine eingehen. Die übrigens genauso, wenn nicht sogar viel wichtiger sind, als lediglich die hermetische Abriegelung der darunter liegenden Systemebene.
Jedes System ist immer nur so sicher, wie sein schwächstes Glied. Einmalige Sicherheitsmaßnahmen ändern daran nichts. Ein Server ist mit zahlreichen Methoden zwar leicht abzusichern. Die darauf laufende Redmine-Anwendung (oft mit unzähligen Funktionserweiterungen bestückt) jedoch umso schwerer.
Sicherheitsbereiche
In diesem Abschnitt klären wir über die verschiedenen Bereiche auf, die es sowohl auf System- als auch Anwendungsebene abzusichern gilt.
System-Ebene
Die Firewall sollte beispielsweise nur Zugriff auf Port 80 und 443 erlauben.
Zur Verwaltung der Umgebung kommt meist SSH für die Verbindung zum Einsatz.
- SSH ist bereits auf Sicherheit optimiert
- in jeweils aktueller Version und einer restriktiven Konfiguration ist es eine sichere Möglichkeit für externe Zugriffe
Als Secure Shell oder SSH bezeichnet man sowohl ein Netzwerkprotokoll als auch entsprechende Programme, mit deren Hilfe auf eine sichere Art und Weise eine verschlüsselte Netzwerkverbindung mit einem entfernten Gerät hergestellt werden kann.
Weiterhin sehr wichtig ist permanentes Monitoring der Systemumgebung inklusive sicherheisrelevanter Maßnahmen.
Man sollte sich immer vor Augen halten: “Sicherheit ist kein Zustand, sondern ein Prozess.”
Redmine Ebene
Auf Anwendungsebene haben sich folgende Sicherheitsmaßnahmen bewährt um sensible Inhalte so sicher wie möglich zu verwalten.
Redmine Core
Was vielen offenbar nicht bewusst ist: Die Anwendung Redmine kann Sicherheitslücken haben. Da Redmine selbst jedoch durch die Community gut betreut wird, werden diese in der Regel schnell entdeckt und behoben und der Quellcode ist auch in ständiger Überwachung.
Redmine Core Gem Pakete
Jedes Gem Paket, was Redmine benutzt, kann eine Sicherheitslücke ermöglichen.
RubyGems (Gems) ist ein offizielles Paketsystem für die Programmiersprache Ruby. Mit ihm können Anwender mehrere Versionen eines Programmes nach Bedarf einrichten, verwalten oder entfernen.
Redmine Plugins
Das jedoch größte Sicherheitsproblem beim Einsatz von Redmine stellen die zahlreichen Funktionserweiterungen dar. Sogenannte Plugins, die nicht mit der Basisinstallation kommen. Diese Tatsache wird von Unternehmen die Redmine nutzen gerne zu Gunsten der Funktionalität, die sie unbedingt brauchen, übersehen.
Liebe Leserinnen, liebe Leser. Überlegt euch genau welche Funktionen ihr wirklich braucht und ob es das ist, was Ihr wollt. Ihr wisst offenbar nicht was Euch im Ernstfall erwartet und könnt mögliche Gefahren in der Regel nicht abschätzen. Wenn sie plötzlich vor der Tür stehen, euch in Zeiten produktiver Hochphasen überrumpeln und aus der geschäftlichen Bahn werfen ist es zu spät darüber nachzudenken.
Für Teams jeder Größe ist der Ausfall eines Tools wie Redmine mindestens ärgerlich, wenn nicht sogar ein kleiner (oder großer) Katastrophenfall.
Wir haben uns dieser Problematik schon vor Jahren angenommen. Weisen unsere Kunden immer wieder darauf hin und bieten unsere Fachkunde zu diesem Problem auch gerne an. Unser Credo lautet:
“Jedes installierte Plugin kann Redmine unsicher machen!”
Hier gilt es folgendes zu beachten:
Viele Plugins entstehen aus der Not heraus oder um mal etwas auszuprobieren. Oft aus der Feder eines Entwicklers mit wenig Kenntnissen (sogenannte Hobby-Entwickler) oder mit wenig(er) Ruby Erfahrung. Natürlich: Jeder hat mal angefangen bevor er zum Profi wurde. Allerdings gilt es in der Entwicklung sicherer Anwendung, sich an gewisse Standards zu halten, Wert auf das Schreiben von Tests zu legen und vieles mehr. Instabiler, riskanter oder unsicherer Code ist für den reinen Anwender nicht erkennbar.
Tipp: Brakeman nutzen. Ein kostenloser Schwachstellenscanner speziell für Ruby on Rails-Anwendungen. Er hilft bei der Analyse von Sicherheitsproblemen.
- Plugins können externe URL aufrufen, welches zur Auslesung von Daten verwendet werden kann - diese Plugins sollten nicht verwendet werden
- Plugins werden von niemanden reviewed!!!
- Es gibt keine Sicherheitsmechanismen in Redmine, welche Plugins daran hindern, Sicherheitsprobleme zu erzeugen.
- Plugins können weitere Gem Pakete einbinden. Jedes dieser zusätzlichen Gem Pakete kann ein Risko bedeuten.
Daher ist es wichtig:
- nur Plugins von Entwicklern und Unternehmen einsetzen, welchen man vertrauen kann und die regelmäßig gepflegt werden.
- die Anzahl der Plugins minimal zu halten. Beziehungsweise sehr wenige bis gar keine Plugins einzusetzen, wenn Sicherheit ein wichtiges Thema im Unternehmen ist.
Fazit
Die Systemebene kann man im Vergleich zu Redmine relativ einfach “sicher” machen. Durch Firewall-Regeln können Ports abgeriegelt werden.
Das sicherste System macht aber die Anwendung selbst nicht sicherer.
Eine 2-Faktor Authentifzierung für SSH Logins einzuführen und parallel x-Redmine Plugins mit allen möglichen Features nutzen zu wollen ist aus oben genannten Gründen absolut widersprüchlich, wenn einem die Daten in seinem Redmine wichtig sind.
Empfohlene Maßnahmen
Für einen abgesicherten und Datenschutz-orientierten Redmine-Betrieb empfehlen wir folgende Maßnahmen.
- Die Anzahl der Personen mit Systemzugriff minimieren.
- Die Systemumgebung auf dem aktuellen Stand halten - und zwar täglich (Stichwort: Zero-Day-Exploit)
- Redmine auf den aktuelle Stand halten. Verfügbare Updates zeitnah einspielen.
- Alle Plugins auf den aktuellen Stand halten. Verfügbare Updates zeitnah einspielen. -> Anmerkung: dies ist meist recht schwierig, da bei jedem Plugin-Update die Kompatibilität zu anderen Plugins gewährleistet sein muss. Es können plötzlich Anwendungsfehler auftreten. Hier muss geklärt werden, welches Plugin die verursacht und ob und wie man diese beheben kann.
- Monitoring der Systemumgebung ist sehr wichtig und wird oft vernachlässigt. Relevant sind: Log-files, Performance, sicherheitsrelevante Einstellungen, etc.
- Gehärtete Sicherheitskonfiguration der Systemumgebung.
- Redmine Einstellungen bzw. Datenschutz und Zugriffe optimieren.