Select Page

NETWAYS Blog

Kommende Icinga Web-Funktion: Rememberme

Wir freuen uns immer über Feedback von euch, um Icinga noch besser zu machen. Viele Icinga-Benutzer haben die Meinung geäußert, dass sie gerne eine Rememberme-Checkbox auf der Login-Seite von Icinga Web hätten, damit sie sich nicht jedes Mal anmelden müssen, wenn sie Icinga Web besuchen.
Wir haben an diesem neuen Feature speziell während des Home-Office gearbeitet und planen, es in der nächsten Version von Icinga Web zu veröffentlichen.

Hier sind einige Schritte, wie dies funktioniert:

  • Wir führen ein neues “remember me” Cookie und ein “Stay logged in” checkbox auf der Login Seite ein.
  • Alle sensiblen Benutzerinformationen werden mit einem RSA-Schlüsselpaar verschlüsselt.
  • Das Cookie läuft nach 30 Tagen ab.
  • Die Erneuerung erfolgt automatisch nach einer erfolgreichen “remember me” Authentifizierung und beinhaltet die Neuerstellung des RSA-Schlüsselpaares und des Cookies mit 30 Tagen Ablaufdatum.
  • Die Authentifizierung über das “remember me” Cookie löst unseren normalen Authentifizierungsprozess aus, d. h. die Anmeldung mit dem Benutzernamen und dem Kennwort und die Erstellung eines neuen Sitzungs-Cookies bei erfolgreicher Authentifizierung.
  • Das Cookie wird gelöscht, wenn die Authentifizierung fehlschlägt oder ein Logout ausgelöst wird.

Um die Geheimnisse des Benutzers sicher zu speichern, erzeugen wir auf der Serverseite ein RSA-Schlüsselpaar bei der Erstellung des “remember me” Cookies. Das Schlüsselpaar wird in unserer Web-Datenbank gespeichert. Der Inhalt des Cookies sieht wie folgt aus:

  • Öffentlicher Schlüssel
  • Benutzername und Kennwort, verschlüsselt mit dem öffentlichen Schlüssel

Damit ist der öffentliche Schlüssel unser gemeinsames Geheimnis. Bei der Authentifizierung über das “remember me” Cookie suchen wir den öffentlichen Schlüssel in unserer Datenbank, entschlüsseln die Geheimnisse mit dem privaten Schlüssel und lösen unsere normale Authentifizierung mit dem entschlüsselten Benutzernamen und Passwort aus.

Warum lösen wir die normale Authentifizierung aus?

Die normale Authentifizierung beinhaltet bereits die Überprüfung der Kombination aus Benutzernamen und Passwort. Auf diese Weise prüfen wir, ob der Benutzer existiert oder das Passwort geändert wurde.
Wenn das Cookie bereits existiert und der Benutzer die Seite besucht, entschlüsseln wir die Benutzergeheimnisse und versuchen, uns damit anzumelden. Das funktioniert genauso, als ob der Benutzer diese Informationen manuell eingegeben und auf Login geklickt hätte.

Du kannst die Entwicklung dieser Funktion auf Github verfolgen. Wenn Du einen anderen Vorschlag oder einen neuen Feature Vorschlag hast, den Du gerne sehen würdest, kannst Du gerne ein Issue auf Issue auf Github öffnen.

 

Sukhwinder Dhillon
Sukhwinder Dhillon
Junior Developer

Sukhwinder ist seit Januar 2020 bei NETWAYS und macht bei uns seine Ausbildung als Fachinformatiker für Anwendungsentwicklung. In seiner Freizeit fährt er gerne Fahrrad, trifft sich mit Freunden, oder sitzt vorm Computer und lernt etwas Neues.

Daily business: der Editor vim

Es ist unerfreulich lange her, dass ich das erste Mal mit vim in Berührung kam — anno 1997, um genau zu sein, während meiner ersten verzweifelten Gehversuche in Sachen S.u.S.E. Linux. Oder war das noch vi? So irgendwie habe ich das Tool über die Jahre dann hinter mir her geschleift wie eine altmodische Handtasche, mich aber viel zu spät erst ernsthafter damit befasst — ein blöder Fehler, vor dem ich einige von euch ja vielleicht bewahren kann. Denn was viele (und gerade auch Neueinsteiger) gar nicht zu ahnen scheinen: vim ist üblicherweise auf Systemen vorhanden, kann viel, ist ziemlich cool und in der Handhabung auch gar nicht so widerlich, wenn man sich erst leidlich eingearbeitet hat.

Die Konfiguration des Editors erfolgt in einer Textdatei namens .vimrc, welche im $HOME-Verzeichnis des jeweiligen Nutzers liegen muss. Beginnen wir diese Datei mit nocompatible: denn ein compatible vim ist lediglich noch ein vi, sprich alle nützlichen Erweiterungen und Errungenschaften der letzten 20 Jahre würden abgeschaltet — und wer will das schon?

set nocompatible " Using vim settings and not vi

Widmen wir uns also einigen kleinen Kniffen, die mir für die tägliche Arbeit inzwischen unverzichtbar geworden sind: naturgemäß (und da ich gerade einen Haufen müffelnden Puppet-Codes in Richtung Ansible transportieren darf) editiere ich aktuell häufig an YAML-Dateien herum, und da ist das Thema „Einrückungen“ beispielsweise sehr relevant: YAML kennt, plump gesagt, keine Tabs, und so bewährt es sich sehr in der persönlichen .vimrc bereits festzuhalten, dass ein Tab beispielsweise durch zwei Leerzeichen ersetzt wird und Einrückungen ebenfalls zwei Leerzeichen betragen sollen. Protipp: Lasst außerdem über existierende Dateien ein :retab laufen, so dass alle eventuell vorhandenen Tabs gemäß eurer Konfiguration in Leerzeichen umgesetzt werden — die Einstellungen greifen nicht automatisch bei bereits bestehendem Text. Und: möchtet ihr YAML anders einrücken als beispielsweise C oder PHP, so beschäftigt euch mit den Möglichkeiten, die autocmd bietet!

set autoindent " Guess what?
filetype plugin indent on " Enable indenting for files
set backspace=indent,eol,start " Allow backspacing over indention/ line breaks/ insertion start
set softtabstop=2 " Indent 2 spaces when hitting TAB
set shiftwidth=2 " Indend 2 spaces when autoindent
set tabstop=2 " Show existing tab with 2 spaces width
set expandtab " Convert tabs into spaces

Gerade bei YAML hilft es mir häufig sehr wenn ich sehe, an welcher Stelle im Dokument ich mich gerade befinde; deshalb lasse ich mir die Zeilen durchnummerieren und mittels Unterstreichung die aktuelle Position anzeigen. Syntax Highlighting ist natürlich großartig, das will ich unbedingt, und durch eine einfache Anweisung sorgt zukünftig für die visuelle Hervorhebung zusammengehörender Klammern. Protipp: während number die Zeilen aufsteigend durchnummeriert, stellt relativenumber die Zeilennummern relativ zur aktuellen Position dar.

set number " Enable line numbers
syntax on " Set syntax highlighting
set showmatch " Show matching brackets
set cursorline " Highlight line under cursor
set cursorcolumn " Highlight column

Was bei der täglichen Arbeit hilft: eine Statuszeile, die mit genau jenen Informationen aufwartet, die persönlich hilfreich sind. In meinem Fall sind das Angaben wie Dateiname, beispielsweise, Dateityp oder an welcher Stelle — prozentual gesehen — ich mich innerhalb meiner Datei gerade befinde. Für euch sind hier vielleicht ganz andere Informationen wichtig, weshalb ich euch die Lektüre der entsprechenden Dokumentation ans Herz legen möchte.

set laststatus=2 " Show status line
set statusline=%t " tail of filename
set statusline+=\ %{&ff} " File format
set statusline+=\ %y " Filetype
set statusline+=\ %c, " Cursor column
set statusline+=%l/%L " Cursor line/ total lines
set statusline+=\ %P " Percent through file

Was ich wirklich zu lieben lernte: undo und redo. Die Basics kennen noch die meisten: u macht die letzte Änderung rückgängig, uuu die letzten drei und 5u die letzten fünf. Wirklich interessant wird das allerdings, wenn man es mit Zeiträumen verbindet: so macht earlier 2m (alternativ: ea 2m) die Änderungen der letzten zwei Minuten rückgängig, wohingegen later 5m (alternativ: lat 5m) alle Änderungen der letzten fünf Minuten wiederherstellt. Die Sache hat nur einen Haken: wie fast überall sind diese Statements nur innerhalb der laufenden Sitzung möglich; wird der Editor beendet und die gleiche Datei später erneut editiert, ist keine History der bisherigen Änderungen verfügbar.
Wenig überraschend lässt sich auch das anpassen: über set undofile weisen wir vim an, die Änderungen jeder Datei zu persistieren; vim tut das dann jeweils in Form eines hidden file an gleicher Stelle, was auf Dauer etwas unübersichtlich werden könnte. Erstellen wir mittels mkdir ~/.vim/undo ein eigenes Verzeichnis für Dateien dieser Art, können wir vim aber auch instruieren all diese Änderunsdateien dort vorzuhalten. Das erlaubt dann auch umfangreiche Zeitsprünge: ea 3d wird die Änderungen der letzten drei Tage rückgängig machen.

set undofile " Undo history even between sessions
set undodir=~/.vim/undo " All undo files in one directory

Zuguterletzt verpassen wir unserem vim ein hübsches colorscheme — eine Auswahl solch vordefinierter Farbschemata findet sich, in Abhängigkeit verwendeter Version und Distribution, üblicherweise in /usr/share/vim/vim$VERSION/colors/ in Form von .txt-Dateien. Ich entscheide mich für desert, ihr könnt euch aussuchen was euch am besten gefällt und versiertere Nutzer erstellen sich ihre colorschemes später dann ohnehin selber… Und wenn wir ohnehin gerade mit Farbgebungen spielen lassen wir uns die Zeilennummer spaßeshalber rot hinterlegen, während die Hervorhebung der Spalte in einem aufdringlichen hellen Magenta erfolgen soll. Einschub: eine Liste verfügbarer Farben lässt sich aus vim heraus unkompliziert mit dem Kommando :h cterm-color abrufen.

colorscheme desert " Setting nice colors
highlight CursorLineNR ctermbg=red
highlight CursorColumn ctermbg=LightMagenta

Es gäbe noch So! Viel! Mehr! Belassen wir es für heute mal dabei. Eine einsatzbereite exemplarische vimrc-demo findet ihr auf GitHub; sie ist nicht als „finale Fassung“ zu verstehen sondern vielmehr als Ausgangspunkt für die Erarbeitung einer persönlichen und über die Zeit immer perfekteren Version. Und vielleicht wollt ihr über die Kommentare verraten, ob Artikel dieser Art hilfreich für euch sind — und welche Einstellung, welches Plugin, welcher Kniff für euch unverzichtbar ist?

Marianne Spiller
Marianne Spiller
Senior Consultant

Nachdem sie über Jahre immer wieder für eine NETWAYS Mitarbeiterin gehalten wurde, hat sie im März 2020 ernst gemacht und wurde eine. Als Senior Consultant unterstützt sie fortan Professional Services. Ihre Freizeit widmet sie in weiten Teilen dem Schreiben, man findet sie aber auch häufig mit Kamera und Stativ auf unwegsamem Gelände.

Gitlab Johnyj12345 Hack

Yesterday we received the information that there is a new Gitlab “hack” which could affect older versions of Gitlab. If affected it will behave like this:

The publicly visible procedure is always the same: Johny creates one or more issues that are linked with each other and at the end of the link cascade there’s either an attached file or a link to a file which holds Gitlab’s secrets.yml.

Source: https://blog.philipp-trommler.me/posts/2020/07/13/security-possible-gitlab-hack-johnyj12345/

It seems like the vulnerability was fixed with these security release:
https://about.gitlab.com/releases/2020/03/26/security-release-12-dot-9-dot-1-released/

The NWS team wrote some scripts to see if any of the Gitlab CE / Gitlab EE apps are affected, which was not the case, also because NWS apps are running on the latest version of Gitlab.

This issue is very critical since the secrets.yml can be found with a simple web search and contains informations like:

  • secret_key_base
  • db_key_base
  • otp_key_base

 

If you are affected, you should

  • take down your Gitlab instance
  • remove the user
  • remove the issues
  • update your instance.

Best would be to also reset the “secrets.yml”, but as far as i know, there is currently no way to do so.

 

Here is a short script to check quick if the user exists (if you don’t want to check via web interface):

#!/bin/bash

echo "User.all" | gitlab-rails console | grep "Johny12345" 2>&1
response=`echo $?`

if [ $response == "0" ]; then
echo "[ALERT] Johny was here ... "
else
echo "[OK] No Johny found ..."
fi

Marius Gebert
Marius Gebert
Systems Engineer

Marius ist seit 2013 bei NETWAYS. Er hat 2016 seine Ausbildung zum Fachinformatiker für Systemintegration absolviert und ist nun im Web Services Team tätig. Hier kümmert er sich mit seinen Kollegen um die NWS Plattform und alles was hiermit zusammen hängt. 2017 hat Marius die Prüfung zum Ausbilder abgelegt und kümmert sich in seiner Abteilung um die Ausbildung unserer jungen Kollegen. Seine Freizeit verbringt Marius gerne an der frischen Luft und ist für jeden Spaß zu...

Die Out of the Box Experience

Hallo!

Ich würde gern ein aktuelles Thema aufgreifen, das in letzter Zeit viele Leute beschäftigt. Da aus aktuellem Anlass viele Leute ins Homeoffice gehen mussten und nun von dort ihre Arbeit verrichten, haben viele neue Monitore, Rechner, Mikros und Software erhalten, um dies zu bewältigen.

Nun gibt es aber die schon oben beschriebene Erfahrung, die aus rein subjektiver Sicht entscheidet, ob man mit dem neuen Produkt zufrieden ist oder es gleich wieder einpacken und zurückschicken will.

Das Feld ‘Videokonferenzen’ will ich hier gar nicht betreten. Da hat jeder andere Präferenzen.

Mir geht es in dem Blogpost eher um die “Experience”, ein tolles Marketing-Buzzword, bei dem sich am liebsten jeder unter der Couch verstecken möchte. Die Erfahrung, die man mit dem jeweiligen Produkt direkt nach dem Auspacken macht, ist sehr variabel.

Nehmen wir mal als Beispiel einen neuen Firmenlaptop. Wir haben ihn aus der Verpackung gepult und drücken auf den Powerknopf und unsere neue Kiste mit SSD und mehr Speicher & CPU Kraft aller Großrechner in den 80zigern dümpelt 5 Minuten in einem Regenbogenfarbenen Waiting Screen von Windows umher in dem uns mitgeteilt wird das wir uns freuen dürfen das ‘now’ etwas für uns passiert.

NOT!!!! Jemanden warten zu lassen ist keine ‘Gute’ Out of the Box Erfahrung. Auch 4-5 Sicherheitsfragen welche sowas lustiges wissen wollen wie “Was war ihr erstes Haustier” … sind eher Anti Security .. Rein statistisch hat man hier schon in den USA mit sowas wie ‘Spot’ einen Treffer um in einen Benutzeraccount rein zu kommen.

Idealerweise sollte man nicht warten müssen . NEVER make your Customer wait.

Das wussten selbst Betriebssysteme aus der prähistorischen Ära. Einschalten, Loslegen. C64 => Einschalten und READY.
Selbst die Amiga Workbench war nach dem Starten direkt verfügbar und auch Atari TOS auf dem ST. Nun sind wir im Jahr 2020 AD.

Aus Sicht eines Endbenutzers ist das keine gute Erfahrung (Warten, abgreifen personenbezogener Daten für Marketing-Zwecke, Sicherheitsexploit-Fragen) und zum goldenen Abschluss, nachdem man die ganze Prozedur hinter sich hat, kommt noch ein haufen Autoupdates, die noch installiert werden müssen, bevor man effektiv anfangen kann zu arbeiten.

Selbst bei Konsolen ist die Out of the Box Erfahrung … inzwischen hundsmiserabel.
Früher: SNES Spiel in die Konsole stecken und läuft. Heute: Mindestens 2 Anmeldungen. Einmal Hersteller spezifisch XBox Account/STEAM Account/PSX Account und dann gegebenenfalls nochmal die des Spieleherstellers und dessen Plattform inkl. Werbung.

Das künstliche Gold der Marketing/Wertschöpfungskette von Daten, die nur um deren Selbstwillen für User Tracking generiert werden, ist bis in das einfachste Produkt vorgedrungen. Selbst meine Bose Wireless Kopfhörer wollen meinen Alex Account Zugriff um mir ‘Mehr Info’ liefern zu können.

Da ich nun sehr abgedriftet bin von der Thematik: Die “Auspack und sofort Loslegen Erfahrung” ist sehr “Simplismus” geprägt, man findet die “Out of the Box” Erfahrung am idealsten, wenn man direkt loslegen kann.
Kein wenn und kein aber.
Zu einem späteren Zeitpunkt können die Settings des Produktes verfeinert werden. Also ggf. einen Account anlegen, höhere Security Settings setzen und andere Einstellungen vornehmen.

Aber die Defaults sollten IMMER zu einem produktiven Ergebnis führen.

Software ist auch ein Werkzeug wie ein Schraubenzieher. Der will auch nicht, dass ich bei ‘Binford’ einen Account anlege. bevor ich die erste Schraube in das Holzbrett drehe. Software & Betriebssysteme sollten allgemein wieder auf Funktionalität ausgelegt werden anstelle von Subscription ‘featureitis’ …

Das baut nur unnötige Hürden und Fehlerquellen auf und dient nur dem Selbstzweck.
Einstecken, Einschalten & Loslegen war mal die Devise – ich hoffe, dass nach all den bitteren Erfahrungen der letzten Zeit wieder auf diese Out of the Box Erfahrung Wert gelegt wird.

In dem Sinne ‘Good Luck and Good Night’

Bis zum nächsten Mal

David

Das Nette Katzenfoto wurde bereitgestellt von

Photo by DNK.PHOTO on Unsplash.

David Okon
David Okon
Support Engineer

Weltenbummler David hat aus Berlin fast den direkten Weg zu uns nach Nürnberg genommen. Bevor er hier anheuerte, gab es einen kleinen Schlenker nach Irland, England, Frankreich und in die Niederlande. Alles nur, damit er sein Know How als IHK Geprüfter DOSenöffner so sehr vertiefen konnte, dass er vom Apple Consultant den Sprung in unser Professional Services-Team wagen konnte. Er ist stolzer Papa eines Sohnemanns und bei uns mit der Mission unterwegs, unsere Kunden zu...

Neue Icinga Web Themes verfügbar! – Bayerisch, Fränkisch, Österreichisch

Zum Abschluss der Woche möchte ich noch unseren April-Scherz auflösen. Solltet ihr ernsthaft gedacht haben, dass wir diese Themes wirklich bauen…

 

Dann habt ihr genau richtig gelegen!

 

Bayerisch

Github: https://github.com/NETWAYS/icingaweb2-theme-bayerisch

 

 

 

 

Fränkisch

Github: https://github.com/NETWAYS/icingaweb2-theme-fraenkisch

 

 

 

 

Österreichisch

Github: https://github.com/NETWAYS/icingaweb2-theme-oesterreichisch

 

 

 

 

 

 

Viel Spaß damit!

 

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.

Veranstaltungen

Wed 20

Icinga 2 Advanced Training (englisch class) | Online

January 19 @ 09:00 - January 21 @ 17:00
Feb 02

Elastic Stack Training | Online

February 2 @ 09:00 - February 4 @ 17:00
Feb 10

GitLab Fundamentals Training | Online

February 10 @ 09:00 - February 11 @ 17:00
Feb 23

Terraform mit OpenStack Training | Online

February 23 @ 09:00 - February 24 @ 17:00
Feb 23

Fundamentals for Puppet | Online

February 23 @ 09:00 - February 25 @ 17:00