Entfernte CheckMK-Agents überwachen (ssh/tls)

UPDATE 09.01.2021: Fix für „curl: Argument list too long“
Details: https://git.ichalsroot.de/erdo/Check_MK/commit/4640354834f6db445a9ec150e49ec1bdeb8fc268


CheckMK-Agents sind auf Pull ausgelegt, sprich der CheckMK-Server baut eine Verbindung zum Client auf und fragt die Daten ab. Dies geschieht unter Linux traditionell per xinetd oder ssh.

Das Verfahren funktioniert aber nicht, wenn der Agent nicht im Intranet hängt und keine SSH-Verbindung hergestellt werden kann/soll. (oftmals. aus Security-Gründen).

check_mk_remote

Hierfür wurde die Community-Erweiterung „check_mk_remote“ entwickelt, welche den Agent-Output in eine Datei umleitet und diese per scp auf den CheckMK Server überträgt. Die Auswertung erfolgt dann durch einen Host-spezifischen Datasource.

https://github.com/FlorianHeigl/nagios/tree/master/check_mk/check_mk_remote

Für das Verfahren von check_mk_remote ist eine passwortlose Authentifizierung, sowie ein öffentlich zugängiger SSH-Server erforderlich. Beides kann sicher betrieben werden, jedoch ist der Konfigurationsaufwand nicht zu unterschätzen und sicherheitstechnisch bedenklich, vor allem weil es 100 Kleinigkeiten zu bedenken gibt.

check_mk_push

Als Alternative habe ich eine Methode entwickelt, um den Agent-Output per https statt ssh zu übertragen.
Das Prinzip ist identisch, nur der Übertragungsweg ein ganz anderer.

Vorteile gegenüber check_mk_remote

  1. Keine aufwendige SSH-Konfiguration.
  2. keine spezielle Firewall-Freischaltung (es wird nur Port 443 benötigt, ssh ist oftmals gesperrt)
  3. Firmeninterner Web-Proxy kann benutzt werden (inkl. Authentifizierung)

Weiterlesen »

Google Drive als Backup-Lösung

Ich suche seit einiger Zeit einen günstigen Web-Storage um externe Backups meiner zahlosen Projekte  anzulegen. Hat mich selbst überrascht, aber Google ist hier mit ABSTAND! der billigste Anbieter, bei 3$/Monat für 100GB kann man echt nicht meckern ..

Ich bin bei weitem kein Freund von der Datenkrake Google, trotzdem ist google.de meine Standart-Suchmaschine und Android mein Pflicht-OS für’s Smartphone …

Trotzdem schaufel ich meine Backups nur PGP-verschlüsselt in die Google-Cloud!

Installation unter Debian 8

Zum synchronisieren mit google-drive benutze ich „drive“ von twodopeshaggy.
https://launchpad.net/~twodopeshaggy

Weiterlesen »

[Proxmox] V4 – Befehl in jedem LXC-Container ausführen

Ich habe einen Quick-and-Dirty Weg gefunden, einen Befehl in sämtlichen (laufenden!) LXC-Container auszuführen.

Auf dem Proxmox-Host-System:

cd /etc/pve/lxc
for host in $(ls | cut -d "." -f 1); do echo -n "$host : "; pct exec $host MEINBEFEHL; done

Beispiel: (in einer Zeile, zur lesbarkeit untereinander)
for host in $(ls | cut -d "." -f 1); do\
    echo -n "$host : "; \
    pct exec $host mv /usr/lib/check_mk_agent/plugins/apt /usr/lib/check_mk_agent/plugins/14400/;\
done

In meinem Beispiel würde das check-mk Plugin apt auf in allen Containern in das (bestehende) Unterverzeichnis 14400 verschoben werden.

Tipp: Falls ihr einen Befehl mit Parametern ausführen wollt müsst ihr das mitteilen!

for host in $(ls | cut -d "." -f 1); do echo -n "$host : "; pct exec $host -- MEINBEFEHL; done

Beachtet das „–„

[Tomcat] Applikation als Startseite

Wenn man bei Tomcat eine .war deployt (zB. mysite.war), heißt der im Verzeichnis /webapps erstellte Order – und somit auch die URL – entsprechend dem Dateinamen der .war Datei (in diesem Beispiel also /mysite/).

Es gibt nun mehrere Möglichkeiten, dieses anzupassen:

  • Apache Proxy vorschalten, in meinen Augen die schönste Variante. Wird von professionellen Webhostern bevorzugt eingesetzt.
  • die mysite.war vor dem deployen umbennen in ROOT.war (groß/kleinschreibung beachten!)
    • ACHTUNG! Einige (schlecht programmierte) Anwendungen arbeiten mit absoluten Pfaden und benötigen die URL /mysite/ …
  • eine HTML-Weiterleitung von / auf /mysite/, für mich eine durchaus aktzeptable Lösung, welche auch gerne von professionellen Anwendungen eingesetzt wird.
    • Hier eine Beispielsdatei für die Weitereitung:
<html>
  <head>
    <meta http-equiv="refresh" content="0;url=/mysite">
  </head>
  <body>
  </body>
</html>

Neue ssh-Session immer im Screen öffnen

Jeder (Informatiker) kennt das Problem von Verbindungsabrüche, ob VNC, Telnet, SSH, …

Zumindest bei der Linux-Administration per SSH gibt es die Möglichkeit eine screen-Session zu erstellen um bei Verbindungsabruch dort weitermachen zu können wo man aufgehört hat.

Hier eine Lösung um JEDE neue (ssh-)Verbindung in einem Screen zu starten:

Achtung! Alle Einstellungen sind Server-seitig durchzuführen!

aptitude show screen

ACHTUNG! Anmeldung nicht mehr möglich falls screen nicht installiert wurde!
-bash: /usr/bin/screen: Datei oder Verzeichnis nicht gefunden
Connection to www.ichalsroot.de closed.
test -s /etc/profile.screen && . /etc/profile.screen
localtty=`tty 2> /dev/null`
if test -O "$localtty" -a -n "$PS1"; then
  if [ "$USER" != "root" -a ! -f ~/.noscreen ]; then
        if [ "$TERM" = "screen.linux" ]; then
         export TERM=screen
        fi

        if [ "$TERM" != "screen" ]; then
          exec /usr/bin/screen -x  -R
        fi
  fi
fi
########################################################################
#
# ~/.screenrc
# Konfigurationsdatei fuer screen
#
########################################################################

########################################################################
# Variabeln
#setenv FOO bar

########################################################################
# Allgemein
startup_message  off   # Keine Willkommensnachricht
vbell            off   # Kein visuelles Blinken
msgwait          1     # Nachrichten für 1 Sekunden anzeigen
defutf8          on    # utf8 bei neuen fenstern
autodetach       on    # on = default
#shelltitle   '] | bash'    # Fenstertitel
hardcopydir      $HOME      # Screenshots ins Homeverzeichnis
defscrollback     10000    # Buffer
defmonitor        off         # Aktivitäten nicht in Fenstertitel schreiben

# buffer emulator enables scrollback with PAGE-UP/DOWN (with some drawbacks, all windows share the same buffer)
termcapinfo xterm|xterms|xs|rxvt ti@:te=\E[2J

########################################################################
# Meine Fenster
screen -t bash
screen -t bash
screen -t bash
# screen -t irssi irssi
# screen -t syslog sudo tail -f /var/log/everything.log
# screen -t ncmpcpp ncmpcpp
select 1
select 0

########################################################################
# Statuszeile
#caption always "%{= wk} %-w%{= KW} [%n %t] %{-}%+w %= | @%H | %l | %Y-%m-%d %c "
caption always "%{rw} * %H * | $LOGNAME | %{= wk} %-w%{= KW} [%n %t] %{-}%+w %= | %l | %Y-%m-%d %c "

# EOF

screenshot-window-2015-09-03-144806

[Bash] Codeschnippsel

Eine Sammlung von hilfreichen Bash-Codeschnippseln

#!/bin/bash
dirname $(readlink -f ${0})

#Beispiel:
#/tmp

 

 

 

Amazon Instant Video auf Android Tablet

Viele kennen Amazon Instant Video (teilweise kostenfreie Serien über Prime)…

Es gibt dafür (schlechte) Player im Browser, gute Addons für XBMC/Kodi und extrem schlechte Apps für Android.

Hier eine Aufstellung aller Amazon Apps, die IRGENDWIE mit Amazon Instant Video zusammenhängen.

Weiterlesen »

[fail2ban] Datum in Mails korrigieren

Leider funktioniert das Datum in fail2ban-Mails nicht von Haus aus vernünftig, viele Mail-Clients (zB. Roundcubemail) kommen nicht damit klar.

0.4 INVALID_DATE Datumskopfzeile nicht standardkonform zu RFC 2822

Als Ergebniss fehlt die Datums-/Uhrzeitanzeige im Mailclient.
Ich habe einen billigen Fix gefunden:

In Linux Debian:
You can edit /etc/init.d/fail2ban and add at the beginning of the file, before definition ‚PATH‘ variable:
export LC_TIME=C

Klappt bei mir 1A

Quelle: https://github.com/fail2ban/fail2ban/issues/70

Youtube-Channel als RSS-Feed

Seit der Abschaltung der Youtube v2 API sind ca 90% aller Tipps zum generieren von YouTube-Feeds veraltet.

Ich habe nach einer umfangreichen Google-Suche in einem Gast-Kommentar tatsächlich noch eine brauchbare Lösung gefunden.

https://www.youtube.com/feeds/videos.xml?channel_id=CHANNELID
https://www.youtube.com/feeds/videos.xml?user=USERNAME

Hinweis: Der Feed funktioniert (im ownCloud-RSS-Reader) ist jedoch laut dem RSS-Validator von W3C extrem Mangelhaft (nett ausgedrückt …) Beispielweise kann der Mozilla/Firefox interne Feed-Reader das Datum der einzelnen Posts überhaupt nicht auslesen, bei user=3Dudelsack3 zB. sind alle Posts von <heute>, nur die Uhrzeit variiert … Zum Glück pflegen die meisten Feed-Reader eigene (interne) DBs!

[Howto] Authentifizierung über SSH-Keys

Die Vorteile von SSH-Keys sind (in der Reihenfolge) Sicherheit und Bequemlichkeit.

Sicherheit

Es gibt keine 100% sicheren Kennwörter …
Kennwörter können erraten werden, ausspioniert oder stur durch Bruteforce ausgetestet werden.

Die Umstellung auf das Public-Key-Verfahren stellt sicher, das derjenige welcher sich anmeldet zumindest über ein speziellen privat-Key verfügt. Dieser liegt im Allgemeinen in Form einer Datei vor und sollte UNDBEDINGT mit einem Kennwort abgesichert werden. Also sichern wir nicht mehr unseren Server mit Kennwörter, sondern unser privat-Key.

Bequemlichleit

Admins und andere Büro-Insassen kennen das Problem, am Tag x-mal das Kennwort eintippen zu müssen. Zumindest bei Linux-Administration kann man sich hier eine Menge Frust ersparen, wenn man mit dem Public-Key-Verfahren arbeitet. Im Prinzip entsperrt man einmalig den privat-Key und authentifiziert sichanschließend nur noch über seinen Public-Key.

Grundlagen

Um dieses Verfahren zu verstehen benötigen wir einige Grundlagen.
Es gibt 2 Sorten von Keys, welche folgende Merkmale besitzen:

  • privat-Key
    • nur lokal speichern!
    • nicht weitergeben!
    • mit Kennwort schützen (Ausnahme automatisierung, zB. Backups)
  • public-Key
    • wird Serverseitig in die ~/.ssh/authorized_keys eingetragen
    • kann beliebig weitergegeben werden

Tipp: Schlüsseldateien generell sprechend benennen! zB. meinkey.pub.key, und meinkey.priv.key … Nicht das man public und privat key verwechselt

 

SSH-Keys generieren

Windows

Eine recht schöne Anleitung findet man auf der Webseite von winscp.
Lasst euch nicht vom Tool irritieren, auch winscp kann sich über SSH-Keys authentifizieren….