Jitsi Best Practice und Skalierung

Seit nun mehr als zwei Wochen wird dort wo es möglich ist von Zu Hause aus gearbeitet. Home-Office für ALLE! Naja mindest für die die es können.

Damit ist auch von einem Tag auf den anderen der Bedarf an Kommunikations-Werkzeugen vor allem für Video-Konferenzen gestiegen.
Hierfür gibt es einige Plattformen welche mittels Jitsi Video- und Audiokommunikation als Service anbieten. Darunter auch NETWAYS Web Services
Jitsi ist eine Freie Software welche auch selbst betrieben werden kann.
Beim Betrieb von Jitsi jedoch zeigt sich das Jitsi sehr schwierig in der Skalierung ist. Es benötigt die richtigen Ressourcen und die richtigen Clients für die Nutzung, um nicht ab einer zweistelligen Zahl von Nutzern in einen reinen Ton- und Bildsalat zu enden. Die technischen Dokumentationen jedoch sind nicht sehr ausgeprägt und durch ihre Zerstreuung sehr schwer zu einem ganzen zusammen zu fügen.

Daher werden wir uns folgend mit den Punkten Anforderungen, Skalierung und Nutzung auseinander setzen.

Empfehlung für einen eigenen Jitsi Server

Nach meinen Tests und der Güte an vorhandenen Quellen zur Hilfe und Dokumentation komme ich zu folgendem Ergebnis:

    • Betriebssystem: Debian 10 oder Ubuntu 18.04.4 LTS
    • Soviel CPU wie geht

(klingt komisch ist aber so)

  • Bandbreite
  • Die Unstable Version von Jitsi:


# install the key
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
# add the unstable repo
sh -c "echo 'deb https://download.jitsi.org unstable/' > /etc/apt/sources.list.d/jitsi-unstable.list"
apt update

Eine gute Installations-Anleitung dazu gibt es zum einen von Jan Doberstein auf seinem Blog jalogisch.de
oder auch sehr hilfreich und weiterführend auf der Seite lw1.at guides

Skalierung einer Jitsi Infrastruktur

Ausgangslage

Wir haben einen vollständig installierten Jitsi Server Namens jitsi.example.com auf Basis von Debian. Jetzt wollen wir mehr mehr Ressourcen bereit stellen, so müssen wir weitere jitsi-videobridge Instanzen aufsetzen.
In der vollständigen Installation eines Jitsi-Servers auf Basis von Debian 10 sind folgende Pakete installiert:

ii jitsi-meet 1.0.4314-1 all WebRTC JavaScript video conferences
ii jitsi-meet-prosody 1.0.3914-1 all Prosody configuration for Jitsi Meet
ii jitsi-meet-web 1.0.3914-1 all WebRTC JavaScript video conferences
ii jitsi-meet-web-config 1.0.3914-1 all Configuration for web serving of Jitsi Meet
ii jitsi-videobridge 1132-1 amd64 WebRTC compatible Selective Forwarding Unit (SFU)

Der Part jitsi-videobridge ist der Teil der den jtisi-meet mit der Video und Audio Übertragung versorgt. Er schließt sich an jitsi-meet und dem verwendeten prosody (XMPP-Server) an.

Anbindung einer Videobridge

Dazu binden wir die die Paketquellen auf dem zweiten Server vb1.example.com ein und installieren die Videobridge:

# install the key
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
# add the unstable repo
sh -c "echo 'deb https://download.jitsi.org unstable/' > /etc/apt/sources.list.d/jitsi-unstable.list"
apt update
apt install jitsi-videobridge

Sollte eine Firewall auf dem Server jitsi.example.com aktiviert sein so müssen wir den Port 5222 für eingehende Kommunikation öffnen.

Auf dem zweiten Server vb1.example.com passen wir jetzt die Datei “/etc/jitsi/videobridge/config” an:

# Jitsi Videobridge settings

# sets the XMPP domain (default: none)
JVB_HOSTNAME=jitsi.example.com

# sets the hostname of the XMPP server (default: domain if set, localhost otherwise)
JVB_HOST=jitsi.example.com
….

Dann kommen wir zu Datei für die SIP-Kommunikation. Diese sollte vom Hauptserver jitsi.example.com übernommen werden und die UUID sollte hierbei auf jedem Server unterschiedlich gesetzt sein.
Die Datei “/etc/jitsi/videobridge/sip-communicator.properties” wird wie folgt eingestellt:

org.jitsi.videobridge.DISABLE_TCP_HARVESTER=true
org.jitsi.videobridge.ENABLE_STATISTICS=true
# Notwendig falls der Server hinter einem NAT steht.
org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=local-ip
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=public-ip
org.jitsi.videobridge.STATISTICS_TRANSPORT=muc
org.jitsi.videobridge.xmpp.user.shard.HOSTNAME=jitsi.example.com
org.jitsi.videobridge.xmpp.user.shard.DOMAIN=auth.jitsi.example.com
org.jitsi.videobridge.xmpp.user.shard.USERNAME=jvb
org.jitsi.videobridge.xmpp.user.shard.PASSWORD=
org.jitsi.videobridge.xmpp.user.shard.MUC_JIDS=JvbBrewery@internal.auth.jitsi.example.com
#UUID am besten mit "uuidgen" neu gernieren muss auf beiden Servern Einzigartig sein.
org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME=9a6187f0-6d3f-46df-b1ff-ce7d2d69513a
org.jitsi.videobridge.xmpp.user.shard.DISABLE_CERTIFICATE_VERIFICATION=true

Auf Debian 10 tritt mit Java 11 folgender Fehler auf:

VB 2020-03-21 19:29:23.687 SEVERE: [16] org.jitsi.utils.concurrent.RecurringRunnableExecutor.log() The invocation of the method org.jitsi.videobridge.stats.StatsManager$StatisticsPeriodicRunnable.run() threw an exception.
java.lang.reflect.InaccessibleObjectException: Unable to make public long com.sun.management.internal.OperatingSystemImpl.getTotalPhysicalMemorySize() accessible: module jdk.management does not "opens com.sun.management.internal" to unnamed module @54ca3634
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:340)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:280)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:198)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:192)
at org.jitsi.videobridge.stats.OsStatistics.getTotalMemory(OsStatistics.java:138)
at org.jitsi.videobridge.stats.VideobridgeStatistics.generate0(VideobridgeStatistics.java:703)
at org.jitsi.videobridge.stats.VideobridgeStatistics.generate(VideobridgeStatistics.java:450)
at org.jitsi.videobridge.stats.StatsManager$StatisticsPeriodicRunnable.doRun(StatsManager.java:321)
at org.jitsi.utils.concurrent.PeriodicRunnableWithObject.run(PeriodicRunnableWithObject.java:87)
at org.jitsi.utils.concurrent.RecurringRunnableExecutor.run(RecurringRunnableExecutor.java:216)
at org.jitsi.utils.concurrent.RecurringRunnableExecutor.runInThread(RecurringRunnableExecutor.java:292)
at org.jitsi.utils.concurrent.RecurringRunnableExecutor.access$000(RecurringRunnableExecutor.java:36)
at org.jitsi.utils.concurrent.RecurringRunnableExecutor$1.run(RecurringRunnableExecutor.java:328)

Dieser kann beseitigt werden mittels folgender Ergänzung am Ende der Java System Properties in der Datei “/etc/jitsi/videobridge/config”:

JAVA_SYS_PROPS="-Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/jitsi -Dnet.java.sip.communicator.SC_HOME_DIR_NAME=videobridge -Dnet.java.sip.communicator.SC_LOG_DIR_LOCATION=/var/log/jitsi -Djava.util.logging.config.file=/etc/jitsi/videobridge/logging.properties --add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED"

Nun können wir die Videobridge starten:

systemctl enable jitsi-videobridge && systemctl start jitsi-videobridge

An der Stelle geht auch ein Dank an Jan Doberstein der mich auf diese Spur gebracht hat und in seinem Blog-Folge Artikel zu Scaling Jitsi

Nutzung

Das Protkoll WebRTC, welches Jitsi nutzt, wird zur Zeit nur sauber von Google Chrome unterstützt. Somit sollte allen Nutzern dieser Browser, für die Anwendung am Notebook empfohlen werden. Für Androide und iOS Geräte gibt es Applikationen den jeweiligen App-Stores. Sehr schöne Zusammenfassung und eine ausführliche Benutzer-Anleitung hierzu gibt es auch auf der Seite des Freifunk München.

Sicherheit

Zum Thema Sicherheit empfiehlt es sich am Besten zuerst die Stunning-Server von Google in der Datei “/etc/jitsi/meet/jitsi.example.com-config.js zu ersetzen. Eine geeignete Stunning-Server Konfiguration kann wie folgt lauten:

stunServers: [
{ urls: 'stun:stun.schlund.de:3478' },
{ urls: 'stun:stun.t-online.de:3478' },
{ urls: 'stun:stun.1und1.de:3478' },
{ urls: 'stun:stun.einsundeins.de:3478' },
{ urls: 'stun:stun.gmx.de:3478' },
],

Zustätzlich wenn Ihr nicht eine gänzlich freie Plattform, sondern eine mit Moderaten oder sogennante Host per Raum gestützte Instanz betreiben wollt, empfiehlt es sich in prosody und jitsi-meet die Benutzerauthentifzierung für das erstellen von Räumen zu aktivieren.
In der Datei für die prosody-Konfiguration “/etc/prosody/conf.avail/jitsi.example.com.cfg.lua”, setzen wir den Wert für “authentication” auf “internal_plain” und fügen einen neuen VirtualHost darunter ein ein:

VirtualHost "jitsi.yourdomain.example"
-- enabled = false -- Remove this line to enable this host
authentication = "internal_plain"
-- Properties below are modified by jitsi-meet-tokens package config
-- and authentication above is switched to "token"
--app_id="example_app_id"
--app_secret="example_app_secret"
-- Assign this host a certificate for TLS, otherwise it would use the one
-- set in the global section (if any).
-- Note that old-style SSL on port 5223 only supports one certificate, and will always
-- use the global one.
ssl = {
key = "/etc/prosody/certs/jitsi.yourdomain.example.key";
certificate = "/etc/prosody/certs/jitsi.yourdomain.example.crt";
}
-- we need bosh
modules_enabled = {
"bosh";
"pubsub";
"ping"; -- Enable mod_ping
}

c2s_require_encryption = false

VirtualHost "guest.jitsi.example.com"
authentication = "anonymous"
c2s_require_encryption = false

In der Datei “/etc/jitsi/meet/jitsi.example.com-config.js” geben wir nun den neuen VirtualHost an:

var config = {
hosts: {
// XMPP domain.
domain: 'jitsi.yourdomain.example',

// When using authentication, domain for guest users.
anonymousdomain: 'guest.jitsi.yourdomain.example',
[...]
}
}

Nun müssen wir noch jifico dazu veranlassen auch eine Authentifizierung durch zu führen und die Klasse in der “/etc/jitsi/jicofo/sip-communicator.properties” laden:

org.jitsi.jicofo.auth.URL=XMPP:jitsi.example.com

Danach müssen die Dienste neu gestartet werden:

sudo systemctl restart prosody.service
sudo systemctl restart jicofo.service

Für die Anbindung einer Authentifizierung in Prosody gibt es auch Enterprise fähige Funktionen für LDAP und Co. Die obige Lösung beschreibt es für ein überschaubares Setup, denn die Benutzer hier müssen dann im Anschluss mit der prosodctl generiert werden:

prosodyctl register jitsi-meet.example.com

Abschließend bleibt zusagen…

Es ist nicht leicht gute Dokumentationen zu Jitsi und dessen Betrieb zu finden, eben so wie für das Scalling. Eine einheitliche Dokumentation gibt es nicht und somit macht es einen Gesamtüberblick nicht sehr leicht.
Neben der Jitis-Community und der Docs auf GitHub gibt es eine paar bereits schon erwähnte Artikel aber auch die sind rah. Daher die Bitte wenn jemand verbesserungen hat, meldet euch gerne!

Wenn Ihr eine Instanz dringend benötigt und euch nicht mit dem Betrieb ausseinandersetzen könnt oder naja vielleicht nicht wollt, dann schaut doch einfach bei unseren Kollengen von NWS vorbei. Dort bekommt Ihr aktuell mit dem Code #StayAtHome eine kostenlose Jitsi-Instanz für drei Monate und das ganz ohne Abo-Falle!

Also bleibt Zuhause und fragt euch gerade in diesen Tagen doch mindestens einmal am Tag:

1. Ist es wahr?
2. Ist es fair für alle Beteiligten?
3. Wird es Freundschaft und guten Willen fördern?
4. Wird es dem Wohl aller Beteiligten dienen?”

(Das sollten wir uns bei allem Fragen, was wir denken, sagen oder tun IMHO!)

Daniel Neuberger
Daniel Neuberger
Senior Consultant

Nach seiner Ausbildung zum Fachinformatiker für Systemintegration und Tätigkeit als Systemadministrator kam er 2012 zum Consulting. Nach nun mehr als 4 Jahren Linux und Open Source Backup Consulting zieht es ihn in die Welt des Monitorings und System Management. Seit April 2017 verstärkt er das NETWAYS Professional Services Team im Consulting rund um die Themen Elastic, Icinga und Bareos. Wenn er gerade mal nicht um anderen zu Helfen durch die Welt tingelt geht er seiner...

Icinga for Windows 1.0 – Eine neue Ära

Seit heute ist der erste offizielle, stabile Release des Icinga für Windows Pakets in Version 1.0 verfügbar. Das Paket besteht aus drei individuellen Komponenten – dem Icinga PowerShell Framework, dem Icinga PowerShell Service und den Icinga PowerShell Plugins. In Kombination bilden sie den Grundbaustein für die künftige Überwachung von Windows Systemen – inklusive Software, Hardware und alles was dazugehört.

Neben der klassischen Überwachung der Windows Systeme geht das Framework aber noch einen Schritt weiter: Mit über 200 Cmdlets wird nicht nur das Monitoring an sich sichergestellt, sondern auch das Deployment der einzelnen Komponenten inklusive Icinga 2 Agent. Darüber hinaus wird die Verwaltung des Agents, die Konfiguration, aber auch das Troubleshooting auf Windows System deutlich vereinfacht: Für die gängigsten Befehle wurden Wrapper-Cmdlets entwickelt, mit denen neben dem Logfile-Tracing auch Features aktiviert und deaktiviert werden können, Icinga 2 Objects auslesbar und durchsuchbar gemacht wurden oder die Funktionsfähigkeit der Icinga 2 Installation auf dem lokalen System überprüft werden kann.

Vereinfachte Installation

Folgt man der Installationsanleitung, dann stellt man fest, dass die meisten Schritte vereinfacht über einen Installations-Wizard durchgeführt werden können. Der große Vorteil dabei ist, dass die Grundinstallation nur auf einem System vollständig manuell durchgeführt werden muss. Ist der Wizard erst einmal durchgeklickt, erhält man einen Konfigurations-String, der auf einem anderen System einfach ausgeführt werden kann, nachdem dort das Framework über den Kickstart installiert worden ist. Somit ist der künftige Rollout der Systeme einfacher denn je.

Standardisiertes Monitoring

Plugins bieten die Möglichkeit, schnell und effizient einzelne Komponenten zu überwachen. Die Schwierigkeit liegt darin, den Output der Plugins richtig zusammen zu bauen und Performance-Metriken sauber zu kapseln. Zum Schluss bleibt dann nur noch das Einpassen in das standardisierte Threshold-Verhalten der Icinga Plugins sowie die Ausführung der bekannten Prüfung, ob ein Wert nun Ok, Warning, Critical oder vielleicht doch Unknown ist.

All das wird mit dem Icinga PowerShell Framework deutlich vereinfacht, denn es werden einige Funktionen bereitgestellt, die sich genau um diese Tasks kümmern. Am Ende des Tages holt man sich einfache seine Daten über PowerShell Cmdlets und packt diese in ein Icinga Check-Objekt. Mit den Informationen, die das Objekt erhält, kann anschließend geprüft werden, welchen Status das Objekt hat und mittels einem Check-Result Objekt in ein gültiges Icinga 2 Format gebracht werden. Der Output ist anschließend für alle Plugins standardisiert.

Zeitintervall-Metriken

In der Vergangenheit lag der große Vorteil von Lösungen wie NSClient++ darin, dass diese als Dienst gestartet werden konnten und dabei Metriken gesammelt haben. Hierdurch konnte man auch auf Windows beispielsweise die CPU-Load in Intervallen von 1, 3, 5 und 15 Minuten in den Performance-Daten abbilden. Installiert man das PowerShell Framework als Dienst, ist dieser Zustand für jedes Plugin ebenfalls abbildbar. Hierfür ist lediglich der Background-Daemon für den Service Check mittels

Register-IcingaBackgroundDaemon -Command ‘Start-IcingaServiceCheckDaemon’

zu registrieren. Anschließend können einzelne Service-Checks für die regelmäßige Ausführung konfiguriert werden. Möchte man für die CPU-Load alle 30 Sekunden Metriken für die Intervalle 1, 3, 5 und 15 Minuten sammeln, registriert man den Service-Check entsprechend

Register-IcingaServiceCheck -CheckCommand ‘Invoke-IcingaCheckCPU’ -Interval 30 -TimeIndexes 1, 3, 5, 15;

Anschließend startet man den PowerShell Dienst neu und erhält alle Metriken in den gewünschten Intervallen:

Administrationsunterstützung

Wer den Icinga 2 Agent auf Windows administriert, muss auch hier öfter einmal die Konsole zur Hand nehmen und das Icinga 2 Binary mit diversen Befehlen starten. Das PowerShell Framework bietet auch hierfür einige Lösungen, da – wie bereits erwähnt – gängige Befehle in einem Wrapper-Cmdlet hinterlegt sind. Ein einfaches Parsen und stetiges Lesen der Logfiles erfolgt damit über einen einzigen Befehl – ohne am Ende in das Icinga Verzeichnis navigieren oder die Logdatei suchen zu müssen:

PS> Use-Icinga; Read-IcingaAgentLogFile
[2020-02-19 14:40:31 +0100] information/RemoteCheckQueue: items: 0, rate: 0/s (6/min 30/5min 90/15min);
[2020-02-19 14:40:41 +0100] information/RemoteCheckQueue: items: 0, rate: 0/s (12/min 60/5min 180/15min);

Sucht man mittels icinga2 object list nach bestimmten Check-Commands oder generellen Einträgen, gibt es auch hierfür eine elegante Lösung:

PS> Use-Icinga; Find-IcingaAgentObjects -Find ‘*CheckMemory*’
Line #4948 => “Object ‘Invoke-IcingaCheckMemory’ of type ‘CheckCommand’:”
Line #4950 => ” * __name = “Invoke-IcingaCheckMemory””
Line #4955 => ” * value = “Use-Icinga; exit Invoke-IcingaCheckMemory””
Line #4958 => ” * value = “$IcingaCheckMemory_String_CriticalBytes$””
Line #4961 => ” * value = “$IcingaCheckMemory_Object_CriticalPercent$””
Line #4964 => ” * set_if = “$IcingaCheckMemory_Switchparameter_NoPerfData$””
Line #4967 => ” * value = “$IcingaCheckMemory_Int32_Verbosity$””
Line #4970 => ” * value = “$IcingaCheckMemory_String_WarningBytes$””
Line #4973 => ” * value = “$IcingaCheckMemory_Object_WarningPercent$””
Line #4986 => ” * name = “Invoke-IcingaCheckMemory””
Line #4994 => ” * templates = [ “Invoke-IcingaCheckMemory”, “plugin-check-command”, “PowerShell Base”, “plugin-check-command”, “plugin-check-command” ]”

Damit wird die generelle Administration nicht nur einfacher, sondern mittels PowerShell Remote-Execution können auch mehrere Systeme gleichzeitg abgefragt und Statusinformationen eingesammelt werden.

Um sicherzustellen, dass der Agent korrekt ausgeführt wird, der Dienst gestartet werden kann und alle notwendigen Komponenten vefügbar sind, gibt es einen simplen Test, der alle Funktionalitäten überprüft:

Einfache Erweiterbarkeit

Alles in allem ist das Framework so gebaut, dass es eine solide Basis für weitere Entwicklungen bietet – sei es direkt von Seiten Icinga, NETWAYS oder aus der Community. Der Developer Guide bietet schon jetzt grundlegende Erklärungen und Erläuterungen und wird in den nächsten Wochen noch erweitert. Wer sein eigenes PowerShell Modul entwickeln möchte, um Plugins für die Überwachung oder eigene Background-Daemons bereitzustellen, der findet mit diesem Framework das nötige Werkzeug.

Live Webinar

Wer sich einen eigenen Eindruck über das Icinga PowerShell Framework und dessen zahlreiche Möglichkeiten machen möchte, der sei herzlich zu unserem Icinga for Windows – Einstieg” Webinar am 11. März 2020 um 10:30 Uhr eingeladen. Wir freuen uns wie immer auf eine rege Teilnahme.

Wer Unterstützung bei der Installation und Konfiguration oder bei der Entwicklung eigener Plugins benötigt, kann natürlich gerne Kontakt mit uns aufnehmen. Ansonsten freuen wir uns natürlich über Feedback und breite Unterstützung aus der Community!

Christian Stein
Christian Stein
Lead Senior Account Manager

Christian kommt ursprünglich aus der Personalberatungsbranche, wo er aber schon immer auf den IT Bereich spezialisiert war. Bei NETWAYS arbeitet er als Senior Sales Engineer und berät unsere Kunden in der vertrieblichen Phase rund um das Thema Monitoring. Gemeinsam mit Georg hat er sich Mitte 2012 auch an unserem Hardware-Shop "vergangen".

Graylog 3.2 – Jetzt verfügbar

Mit Graylog 3.2 haben die Kollegen von Graylog einen neuen Release bereitgestellt. Die größte Neuheit ist hierbei die Erweiterte Suche, die es erlaubt, bereits durchgeführte Suchen leichter zu wiederholen und Such-Worflows zu definieren. Sowohl für Nutzer der OpenSource als auch der Enterprise Variante gibt es einige Neuheiten. In unseren vergangenen Graylog Webinaren auf unserem YouTube Kanal sind wir bereits grob auf einige Neuerungen eingegangen. Der Downlod erfolgt entweder direkt über die Graylog-Webseite oder die bereitgestellten Pakete. Eine Migrationsanleitung von 3.1 auf 3.2 ist selbstverständlich verfügbar, als Graylog Partner unterstützen wir aber natürlich gerne bei einem Update.

Optimierte Suche

Mit der neuen Such-Funktion von Graylog können mehrere Suchen sehr einfach in eine einzelne Aktion kombiniert werden und liefern das Ergebnis in einer Ansicht aus. Ab hier können diese gelisteten Informationen nun genauer analysiert und gefiltert werden, um potentielle Angriffe, Fehler, Report-Informationen oder andere Daten zu erhalten. Darüber hinaus können Suchabfragen direkt innerhalb der Widgets von Dashboards angepasst und geändert werden, um schnell ein Feintuning vorzunehmen oder gänzlich neue Widgets mit erweiterten Suchkriteieren für eine noch bessere Übersicht anzulegen .

Widget-Daten bearbeiten

Optimierte Such-Konfiguration (ENTERPRISE)

Neben den bereits erwähnten Änderungen wurden auch Kontext-Menüeinträge, Ansichten und Menüpunkte optimiert, erweitert oder gänzlich neu implementiert. Hierdurch gibt es nun die Möglichkeit, schnell einzelne Einträge auszublenden, zur Ansicht hinzuzufügen oder in die Anfrage zu integrieren.

Dadurch können gesammelte Daten noch einfacher und schneller zielgerichtet aufbereitet und dargestellt werden. Ein kompliziertes Arbeiten über mehrere Browser-Tabs gehören somit der Vergangenheit an. Mit den neuen Views ist ebenfalls eine leichtere Bedienung möglich.

Such-Views

Mit den neuen Views können Suchkritieren nun einfach in einen View hinzugefügt und für eine spätere, weitere Verwendung gespeichert werden. Das Speichern der Suchen ist jedoch nur mit Graylog ENTERPRISE möglich. Mit diesem neuen Feature werden Such-Dashboards überflüssig, da die Darstellung der Inhalte direkt in der Suchmaske erfolgt. Neben klassischen Countern sind hier alle Ansichten wie Diagramme, Averages und Daten Tabellen vorhanden. Wird die Such-Query geändert, aktualisieren sich automatisch alle hinterlegten View-Widgets und liefern exakte Informationen basierend auf der Widget-Konfiguration zurück. Gerade für Fehleranalysen oder bei potentiellen Angriffen sind hier schnelle Auswertungen möglich, um potenzielle Ursachen herauszufinden und den Impact so gering wie möglich zu halten.

Neue Alerts (ENTERPRISE)

Mit den neuen Alerts können nun endlich dynamische Inhaltslisten genutzt und gegen mehrere Konditionen auf einmal geprüft werden. Die dynamischen Listen sind dabei eine Kombination aus Alarmierungs-Parametern und Datentabellen. Dies erlaubt es beispielsweise, Alarmierungskriterieren dynamisch anzupassen, je nachdem welche Informationen innerhalb einer Datentabelle vorhanden sind. Hierdurch steigt nicht nur die Flexibilität für die Alarmierung, sondern vereinfacht in vielen Fällen auch die Konfiguration.

Ein Beispiel ist die Alarmierung an Personen innerhalb einer AD-Gruppe. Wird die Liste der Benutzer im AD direkt geändert, werden diese umgehend berücksichtigt. Wenn neue Kollegen in das Team aufgenommen werden, wird dadurch eine Anpassung der Nachrichtenempfänger in Graylog überflüssig . Sobald der Benutzer im AD hinzugefügt wird, wird dieser automatisch bei künftigen Alarmen berücksichtigt.

Um Alarmierungen noch gezielter gestalten zu können, bietet Graylog 3.2 nun die Möglichkeiten mehrere Konditionen für einen Alarm zu definieren. Ein Beispiel wären hierfür fehlerhafte Logins innerhalb eines bestimmten Zeitraums. Möchte man prüfen, ob sich ein Benutzer 20 mal innerhalb eines Zeitraums von beispielsweise 5 Minuten falsch anmeldet, erfolgt dies über zwei Konditionen. Die erste würde prüfen, wie viele fehlerhafte Logins insgesamt stattfinden. Die zweite Konditionen würde dies auf den Zeitraum von 5 Minuten einschränken. Sobald beide Konditionen eintreffen, also 20 fehlerhafte Loginversuche in einem Zeitraum von 5 Minuten erfolgen, wird alarmiert.

Vollbild Dashboards

Mit Graylog 3.2 ist ein lang erwartetes Feature endlich verfügbar. Ein Vollbild Dashboard.

Nutzt man Graylog auf einem Dashboard Fernseher ist dies nun nativ in einem Vollbild-Modus möglich, ohne hierfür spezielle Browser-Funktionen oder Erweiterungen installieren zu müssen.

 

Neugierig auf die neue Graylog Version geworden? Dann am besten gleich direkt ausprobieren! Alternativ stellen wir die neuen Features bei Interesse gerne vor oder unterstützen bei der Installation, Konfiguration oder grundlegenden Einrichtung. Wir freuen uns über eine Kontaktaufnahme!

 

 

Christian Stein
Christian Stein
Lead Senior Account Manager

Christian kommt ursprünglich aus der Personalberatungsbranche, wo er aber schon immer auf den IT Bereich spezialisiert war. Bei NETWAYS arbeitet er als Senior Sales Engineer und berät unsere Kunden in der vertrieblichen Phase rund um das Thema Monitoring. Gemeinsam mit Georg hat er sich Mitte 2012 auch an unserem Hardware-Shop "vergangen".

Je suis #nginx! | Я/Мы #nginx!

Der Autor mit einem russischen Plakat: “Je suis Nginx”

Stellt Dir vor, Du hast um 2004 herum als Programmierer für ein Unternehmen gearbeitet. Nach und nach hast Du Dir eine Nebentätigkeit aufgebaut, die Du schließlich hauptberuflich als Unternehmer betreibst. Und jetzt kommt aus heiterem Himmel Dein ehemaliger Arbeitgeber und fordert nichts geringeres, als ihm Dein schönes neues Unternehmen zu überlassen.

Ich weiß, das klingt unvorstellbar – zumindest für ein Land wie Deutschland. Aber genau das ist dem Nginx-Gründer Igor Sysoev so passiert.

Ich selbst weiß noch genau wie mein Ausbilder mir den Übernahmevertrag erläutert hat. Beim Punkt, dass ich dem Betrieb automatisch die Rechte am von mir geschriebenen Code übergebe, wurde ich hellhörig. Ich fragte nach, ob dass denn nur für den auf der Arbeit geschriebenen Code gelte und wo das im Vertrag stehe. Darauf antwortete der Ausbilder, dass es nirgendwo explizit stehen müsste, da es sich aus dem Kontext ergebe.

Zahlen, Daten, Fakten

Igor Sysoev war seit Ende 2000 Chef-Admin der russischen Suchmaschine Rambler. Nebenbei entwickelte er 2004 die Webserver-Software Nginx. 2011 gründete er Nginx Inc. als kommerziellen Verwerter der Software.

Rambler ist gegen diese Tätigkeit nie vorgegangen… bis vor Kurzem, als die Strafverfolger vor Nginx’ Tür standen. Diese nahmen Sysoev vorübergehend fest und werfen ihm als ehemaligen Rambler-Mitarbeiter Urheberrechtsverletzung gegenüber dem Arbeitgeber vor. Und als ob das nicht schon genug wäre: Die Beschuldigungen fußen wohl auf einem Gesetz aus 2006 – sprich, zwei Jahre nach der “Tat”.

Und jetzt?

Gerüchten zufolge hat der russische Geheimdienst FSB es auf den Löwenanteil des russischen Internets abgesehen – dieser läuft auf Nginx. Wenn das stimmt, haben die ihre Rechnung ohne Nginx Inc. gemacht. Diese speichert nämlich Ihren Code im Ausland – und hat jetzt zusätzliche Sicherheits-Maßnahmen ergriffen. Außerdem installieren nicht alle Nutzer Nginx from-Source – viele bedienen sich der Paket-Quellen des Betriebssystems. Deren Maintainer werden jetzt noch ein bisschen genauer hinschauen. Die Docker-Images fußen zwar auf einem GitHub-Repository der Organisation NGINX, Inc., aber alle Mitglieder geben (Stand 16.12.19) einen ausländischen Wohnort an.

Ich selbst habe privat nach Kenntnis der Meldung zwei neue Nginx-Instanzen in Betrieb genommen und kann angesichts meiner Erkenntnisse aus dem letzten Absatz allen Sysadmins Entwarnung geben – und ein Lob zugunsten von Nginx Inc. aussprechen.

Fazit

Dieser Fall zeigt, wie wichtig Open Source und freie Software heutzutage sind. Gerade in Zeiten politischer Unsicherheit ist allen Beteiligten Transparenz wichtiger denn je. Gerade deshalb liegt uns Open Source so am Herzen. Das heißt aber nicht, dass wir ITler uns erdreisten sollten, jetzt die Füße hochzulegen. Im Gegenteil:

Der Autor auf Twitter: “Je suis #Nginx!”

Quellen

Alexander Klimov
Alexander Klimov
Developer

Alexander hat 2017 seine Ausbildung zum Developer bei NETWAYS erfolgreich abgeschlossen. Als leidenschaftlicher Programmierer und begeisterter Anhänger der Idee freier Software, hat er sich dabei innerhalb kürzester Zeit in die Herzen seiner Kollegen im Development geschlichen. Wäre nicht ausgerechnet Gandhi sein Vorbild, würde er von dort aus daran arbeiten, seinen geheimen Plan, erst die Abteilung und dann die Weltherrschaft an sich zu reißen, zu realisieren - tut er aber nicht. Stattdessen beschreitet er mit der...
Windows Passwort mit Linux zurücksetzen

Windows Passwort mit Linux zurücksetzen

Falls ihr mal euer Windows Passwort vergessen habt, ein Freund euch fragt, Zugriff auf eine Dubiose Festplatte zu erhalten aber das System mit einem User und einem Passwort geschützt ist, dann wird euch das Tool chntpw sicherlich nützlich sein. Mit diesem Tool ist es möglich, über eine Live-Distribution von Linux (Lubuntu, Sabayon Linux, Peppermint OS, Fuduntu, Linux Mint usw.) Informationen der Benutzer zu bearbeiten, löschen oder zurückzusetzen. Ich werde für den Vorgang ein Live-Ubuntu verwenden um euch zu zeigen, wie einfach das ist.

Bootet Ubuntu vom USB-Stick und wählt “Try Ubuntu” aus. Im Desktop angekommen, müssen wir noch eine Einstellung aktivieren um Aktualisierungen der Anwendungen zu erhalten.


Wir setzen einen Haken bei “Von der Ubuntu-Gemeinschaft betreute freie und quelloffenne Programme (universe)”, schließen das Fenster und wählen Neu laden.
Nun gehen wir ins Terminal und aktualisieren.

Loggt euch gleich als root user ein um gewissen Berechtigungen aus dem Weg zu gehen. Mit chntpw ist es nicht möglich, bestehende Passwörter auszulesen.

$ sudo apt update && apt upgrade

Nun installieren wir das Tool chntpw:

$ sudo apt install chntpw

Jetzt suchen wir noch unsere Windows-Partition die wir mounten möchten (Partition auf der unsere Benutzer verwaltet werden).

$ sfdisk -l

Wir können daraus schließen, dass unsere Windows Festplatte als /dev/sda angegeben wird und die Partition die wir suchen /dev/sda2 ist. Um die Partition zu mounten, erstellen wir dazu noch ein Verzeichnis namens /Microsoft. Dann mounten wir unsere Festplatte, und wechseln in das eben erstellte Verzeichnis. Hier können wir die Ordnerstruktur einer Windows-Installation erkennen.

Falls die Partition nicht gemountet werden kann, weil unser Windows den Status “hibernate” besitzt, müssen wir erst in den abgesicherten Modus und von dort aus sauber herunterfahren.

Jetzt wechseln wir in das Verzeichnis Windows//System32/config/ und sehen uns die Einträge der Security Account Manager (SAM) Datenbank an. Uns werden alle Benutzer und deren Gruppe angezeigt in der sie sich befinden, ob ein Passwort gesetzt ist und das Konto eventuell gesperrt wurde.

$ sudo chntpw -l SAM

Nun kommt das Tool chntpw zum Einsatz, indem wir das Kommando $ sudo chntpw -i SAM ausführen. Wir landen im Main Interactive Menu, wo wir nun auswählen was genau wir anstellen möchten.
Edit user data and passwords (1) ist der Reiter den wir brauchen werden um die Benutzerdaten zu ändern.

Wir werden aufgefordert eine RID (Relative ID) einzugeben. Ich habe schon etwas vorbereitet und einen chntpw-Benutzer erstellt, dessen Passwort niemals verfällt und der Gruppe Administratoren angehört.
In meinem Falle ist die RID 3ea.

Uns wird angezeigt, wie viele fehlerhafte Logins wir hatten, wie oft wir uns bereits mit unserem Konto angemeldet haben und unsere Benutzereigentschaften. Das User Edit Menu ploppt weiter unten auf und wir können zwischen 5 Optionen wählen, was wir denn gerne mit unseren credentials anstellen möchten. Ich werde mein vorhandenes Passwort löschen und den Status blank wählen. (Option Nr. 1). Danach landen wir wieder in der Übersicht unserer Benutzerkonten.

Wie man schwer erkennen kann, ist in dem Reiter Lock nun *BLANK* gesetzt und es exisitiert für dieses Konto kein Passwort mehr. Wir verlassen das User Edit Menu mit der Eingabe von “q” und kehren zum Main Interactive Menu zurück, bei dem wir noch einmal “q” eingeben und gefragt werden, ob wir speichern möchten. Selbstverständlich bestätigen wir und speichern unsere Änderungen mit “y”.

Geschafft!
Bei der nächsten Anmeldung mit dem bearbeiteten Konto, werden wir nicht mehr nach einem Passwort gefragt. Wir können nun ein neues Passwort setzen.

 

Aleksander Arsenovic
Aleksander Arsenovic
Junior Consultant

Aleksander macht eine Ausbildung zum Fachinformatiker für Systemintegration in unserem Professional Service. Wenn er nicht bei NETWAYS ist, schraubt er an seinem Desktop-PC rum und übertaktet seine Hardware. Er ist immer für eine gute Konversation zu haben.

Data Is Beautiful – Daten hübsch visualisiert

Ich beschäftige mich in letzter Zeit etwas mit “Data Analytics” und bin dadurch auf einen YouTube Channel gestoßen den ich euch nicht vorenthalten möchte. Hinter dem Channel Data Is Beautiful steckt ein Student und nach eigenen Angaben “Data Geek” der historische Daten und Verläufe grafisch aufbereitet.

Es werden konstant neue Statistik-Videos hochgeladen und aktuell findet man dort Statistiken wie:

Die Themen sind völlig “random” und Vorschläge für neue Statistiken werden gerne angenommen. Neben der hübschen, grafischen Aufbereitung (Analytics output) sind bei “Data Analytics” natürlich die Quellen (Analytics input) das eigentlich Wertvolle.

Stichprobenartig habe ich die Quellen einiger Videos zurückverfolgt und war davon überrascht wie viele Daten öffentlich verfügbar sind. Bei Organisationen wie z. B. der WHO oder IHME sind Daten öffentlich einsehbar, stehen aber auch zur eigenen Weiterverarbeitung und Analyse in RAW-Formaten zum Download bereit.

Ein wahrer Datenschatz der sich für die ersten Analysen perfekt eignet.

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker, arbeitet an seiner dritten Millionen Euro (aus den ersten beiden ist nix geworden) und versucht die Weltherrschaft an sich zu reißen.