Disto X2

So alt wie heute kam ich mir selten vor: beim Umbau meines Distos wäre ich ohne Lupe und Daniels Fingerfertigkeit beim Umgang mit Lötkolben und vor allem auch den Flachbandkabeln nie fertig geworden. So war es eine Aktion von 2,5 Stunden … und jetzt stelle ich fest, dass mein Nexus 4 nicht richtig über TopoDroid unter Bluetooth mit dem Disto X2 reden will. Da wird hoffentlich ein Update von LOS helfen.

Auf Flo läuft alles wesentlich besser, so dass ich vermutlich mein Tablet für’s Kalibrieren nutzen werde.

Proxmox mit LXC bei Hetzner

Xen? KVM? LXC? Oder gar systemd-nspawn? In der Schule drehen wir uns bezüglich der Virtualisierungsbasis für unsere Cloud hübsch im Kreis. Aktuell neige ich LXC zu, musste aber bei meinen ersten Gehversuchen einige Schläge einstecken: Restricted Container zickten, Debian Jessie Container auf Ubuntu 16.04 als Wirt ebenfalls, das Netzwerk-Setup war fummelig und die Namensauflösung in den Containern selbst immer wieder „einfach weg“ …

Also das schlechte Wetter heute mal sinnvoll genutzt und einen ganz anderen Weg beschritten: nicht wie sonst per Shell gearbeitet, sondern heute mal per Oberfläche gefummelt und mir Proxmox näher angesehen. Geht flott und funktioniert zügig. Hier eine kurze Doku.

Im Hetzner installimage das aktuelle Debian auswählen – hier: Jessie. Setup durchführen, Updates installieren, neu booten und dann an die Arbeit.

Hinweis für die Partitionierung: Die LXC-VMs werden später unter /var – genauer: /var/lib/vz/images – liegen.

echo "deb http://download.proxmox.com/debian jessie pve-no-subscription" >> /etc/apt/sources.list
wget -O - http://download.proxmox.com/debian/key.asc | apt-key add -
apt-get update
apt-get upgrade
apt-get dist-upgrade
uname -a
reboot

Ich habe mir dann „die volle Packung Proxmox“ installiert:

apt-get install proxmox-ve ssh postfix ksm-control-daemon open-iscsi systemd-sysv mailutils

Nach einem erneuten Reboot zeigte ein uname -a nun

Linux hostname 4.4.59-1-pve #1 SMP PVE 4.4.59-87 (Tue, 25 Apr 2017 09:01:58 +0200) x86_64 GNU/Linux

Also frisch in Proxmox unter https://server.domain:8006 mit dem PAM Account für root angemeldet und dort eine neue VMBR0 angelegt, die erst einmal unkonfiguriert blieb.

Reboot. Proxmox übernimmt sonst die Änderungen nicht.

Dann das restlichen Netzwerk-Setup von Hand erledigt.

Die Basis-IP des Server war

78.78.78.82

Dazu kamen zwei über den Robot zusätzlich bestellte IPs

78.78.78.86
78.78.78.90

Es ergab sich damit für /etc/network/interfaces diese Konfiguration:

auto lo
iface lo inet loopback
iface lo inet6 loopback

# ETH0
auto eth0
iface eth0 inet static
  address 78.78.78.82 # Server Basis IP
  netmask 255.255.255.255 # Netzmaske neu gesetzt
  gateway  78.78.78.65 # wird von Hetzner mitgeteilt
  pointopoint 78.78.78.65 # PTP auf das Gateway

# VMBR0

auto vmbr0
iface vmbr0 inet static
  address 78.78.78.82 # Server Basis IP
  netmask 255.255.255.255 # Netzmaske neu gesetzt
  bridge_ports none
  bridge_stp off
  bridge_fd 0
    up ip route add 78.78.78.86/32 dev vmbr0 # erste VM mit erster Zusatz-IP
    up ip route add 78.78.78.90/32 dev vmbr0 # zweite VM mit zweiter Zusatz-IP

# IPv6 Config 

iface eth0 inet6 static
        address  121:121:121:121::2
        netmask  128
        gateway  fe80::1
        up ip -6 route add default via fe80::1 dev eth0
        up sysctl -p

iface vmbr0 inet6 static
        address 121:121:121:121::2
        netmask 64

Für jede weitere IP, die im vorliegenden Fall noch kommen mag, muss man für die VMBR0 eine Zeile ergänzen. Ich denke, das Schema ist nachvollziehbar. Die restliche IP-Konfiguration läuft über Proxmox direkt (siehe unten).

Es folgt die Anpassung von /etc/sysctl.conf

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

# Uncomment the next line to enable packet forwarding for IPv6
net.ipv6.conf.all.forwarding=1

Reboot.

Und ab jetzt geht es klickend in Proxmox weiter. Zuerst zieht man sich die benötigten Templates (hier: für Ubuntu und Debian). Dann legt ein Klick auf das entsprechende Icon die erste VM als LXC an. Der erste Container erhält als IP im hier vorliegenden Fall

78.78.78.86/32

und für seine Gateway-Adresse die Basis-IP des Servers:

78.78.78.82

Der Rest – also die Ressourcenzuteilung usw – war für die Testmaschinen dann eine Geschmacksfrage.

Die Verwaltung (Softwareinstallation etc.) der einzelnen VMs nahm ich lieber direkt auf dem Wirt vor. Da reagiert die Shell einfach zügiger als jedes Frontend. Ein

lxc-attach -n 100

bindet den zuerst erzeugten LXC an die Rootshell.

Ein internes Netzwerk, über das die VMs untereinander sprechen können, ist auch schnell eingerichtet: Auf dem Host oder auch über Proxmox in die /etc/network/interfaces

auto vmbr1
iface vmbr1 inet static
        address  10.16.1.0
        netmask  255.255.0.0
        bridge_ports none
        bridge_stp off
        bridge_fd 0

Reboot und in Proxmox dann der jeweiligen Maschine eine neue Netzwerkkarte (eth1) geben, die an die vmbr1 gebunden wird, passende IP und Netzmaske setzen – voila.

Erste Messungen mit iperf geben so um die 55 Gbit/sec.

Erstes Ergebnis:

  • Netzwerksetup, Einrichtung, Verwaltung laufen rund und zügig ab
  • Die Templates für Proxmox kommen ziemlich „dick“ mit Software ausgestattet daher. So würde ich diese ungern als Basis für eigene VMs nutzen

HS Höhle und HS Kammer

Der Winter hat ziemlich gewütet in der Nähe meines Übungsobjektes bei der Nebelhöhle. Der Fels hat einen Geröllheimer stattlichen Ausmaßes verloren und ein weiteres Stück wird wohl im nächsten Winter nachfolgen, so instabil wie der Fels auf der rechten Seite im Bild inzwischen aussieht.

Tewje hat inzwischen recherchiert: Der Stein liegt da wohl schon ein paar Jahre. War mir vorher nicht aufgefallen.

Ich bin dann kurz in die HS-Höhle bis zum – vor ein paar Jahren von einer Höfo-Gruppe inklusive Tewje – ergrabenen Endpunkt gekrochen. Bei meinem ersten Besuch im letzten Herbst war ich hierfür nicht richtig angezogen. Hübsches Stück, das die Gruppe da erarbeitet hat. Ich schätze mal 10 Meter werden es auf jeden Fall sein. Überhaupt: ein hübsches Loch. Ein wenig Sinter ist ebenfalls vorhanden und auch die Hoffnung, dass erneutes Graben keine dumme Idee sein könnte.

Nicht weit davon ist mein Übungsobjekt zu finden – Arbeitsname „HS-Kammer“. Ein Kleinstloch mit 3 potentiellen Fortsetzungen, die alle in die ungefähr gleiche Richtung zu laufen scheinen. Ein Luftzug ist in allen drei zu spüren, in der mittleren aber am deutlichsten. Befahren habe ich diesen Schluf nicht: die Angst, stecken zu bleiben, war heute noch zu groß. Schließlich weiß kaum einer, wo das Objekt ist und die der Familie hinterlassenen Erklärungen wollte ich nicht gleich beim ersten Besuch testen.

Also lediglich eine erste Orientierung: Nur mit Papier, Bleistift und einem Maßband bewaffnet hab ich heute einige Notizen und Eindrücke gesammelt.

Nach einem kurzen Eingangsschluf gelangte ich in eine kleine Kammer, die an einer hangparallel verlaufenden Abrisskluft entlang gebildet scheint. Es geht etwa 1,7m nach oben. Platz zum Hocken war auf Grund der Form für mich jedoch nicht. Die Kluft selbst reicht bis zur Erdoberfläche und weist an zwei Stellen kleine (Kinderfaustgröße) Oberlichter rechts vom Eingang auf. Nach links geht es in einem sehr schmalen Schluf etwa einen Meter abwärts und danach vermutlich nach rechts. Schlufbar sah der für mich ebenso wenig aus wie der Schluf ganz rechts in der Kammer, der sich nach einem kurzen Stück ebenfalls bergwärts zu orientieren scheint.

Interessanter ist der mittlere Schluf am rechten Ende der Kammer. Man kann ca. 5 bis 6 Meter weit in den Berg blicken. Es geht relativ eben weiter, am Ende des sichtbaren Bereichs scheint der Schluf nach Unten und rechts zu laufen. Ein Luftzug ist, wie bereits geschrieben, ebenfalls zu spüren. Eng ist der Schluf. Ziemlich eng. Aber der Boden ist nicht aus Kalk, sondern zu großen Teilen aus losem Erdmaterial, so dass man sich evtl. etwas zusätzlichen Raum verschaffen kann, ohne gleich professionell graben zu müssen.

Der Anfang wäre gemacht.

CODE versus OO

Die Installation von Collabora (CODE) in nextCloud hinter einem HTTPS-Apache-Proxy verläuft ohne Zicken. Einfach die Anleitung nachturnen und es funktioniert. Aber es funktioniert zäh und das auch bei 32GB RAM auf einem (etwas in die Jahre geratenen aber durchaus noch webtauglichen) Dell Poweredge T710 mit zwei Xeon Prozessoren. Zumindest im Vergleich zu einem OnlyOffice (OO).

OnlyOffice bringt viel mehr Funktionen mit, lässt sich flutschiger bedienen und sieht darüber hinaus auch noch schicker aus. Im Vergleich dazu fällt Collabora sehr weit zurück: zähe, zickige und schnarchige Bedienung und gerade mal ein paar Basisfunktionen an Bord. Hat man einmal mit OO gespielt, will man nicht mehr zu CODE zurück. Dafür würde ich sogar hinnehmen, dass OO alles ins OOXML Format konvertieren will.

Jedoch: OnlyOffice in ownCloud hinter einem HTTPS-Apache-Proxy warf sich mir mit weitaus mehr Problemen bei der Installation in den Weg als CODE. Aktuell habe ich noch nicht alle im Griff – es funktioniert erst im Prinzip. Und zwar hiermit:

docker pull onlyoffice/documentserver

Die Virtualhost für den Apache anpassen:

<VirtualHost *:443>
     ServerName onlyoffice.domain.tld:443

     SSLEngine on
     ServerSignature On
     SSLHonorCipherOrder on

     SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS

     SSLCertificateFile /etc/letsencrypt/live/onlyoffice.domain.tld/fullchain.pem
     SSLCertificateKeyFile /etc/letsencrypt/live/onlyoffice.domain.tld/privkey.pem

     LogLevel warn
     CustomLog ${APACHE_LOG_DIR}/access.log combined
     ErrorLog ${APACHE_LOG_DIR}/error.log

# Just in case - see below
SSLProxyEngine On
SSLProxyVerify None
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerName Off

# contra mixed content warnings
RequestHeader set X-Forwarded-Proto "https"

# basic proxy settings
ProxyRequests off

        ProxyPass / http://127.0.0.3:9090/
        <Location />
                ProxyPassReverse /
        </Location>
</VirtualHost>

Den OO Container starten:

docker run -i -t -d -p 127.0.0.3:9090:80 --restart always  onlyoffice/documentserver

die ownCloud App für OO installieren und die Kiste läuft. Im Prinzip.

Textverarbeitung funktioniert.

Präsentationssoftware funktioniert.

Tabellenkalkulation funktioniert.

Aber: Es funktioniert eben nur im Prinzip.

Denn man muss damit leben, dass einem der Firefox weiterhin in der Debug-Console Meldungen entgegen wirft:

Firefox kann keine Verbindung zu dem Server unter wss://onlyoffice.domain.tld/2017-02-17-15-53/doc/271488117372/c/493/1niaepga/websocket aufbauen.  sockjs.min.js:3:4835

Ich fummel mir hier nun seit Tagen einen ab, um diese Meldungen los zu werden. In der VHost Konfiguration des Apachen oben sind ja noch Reste davon zu sehen.

Für diese Versuche startete ich den docker container so, dass dessen Port 443 zum Wirt auf Port 9091 weiter gereicht wird

docker run -i -t -d -p 127.0.0.3:9090:80 -p 127.0.0.3:9091:443 onlyoffice/documentserver

und stellte dann Versuche in der VHost Config des Apachen nach dem Schema (!)

ProxyPassMatch "/(.*)/websocket"  wss://127.0.0.3:9091/$1/websocket

an. Erfolglos. Auch meine Versuche mit ProxyPass, ProxyPassReverse oder ReWrite Regeln scheiterten bisher.

Ich glaube, ich habe nun alle Anleitungen und Tutorials rund um Websockets mit HTTPs und Apache Proxy durch – ich fahr da noch immer vor die Wand. Und vor allem: Ich hab keine blassen Dunst, was ich eigentlich genau verzocke.

Drängen tut das Problem nicht. Ich roll weder OO noch CODE zum aktuellen Zeitpunkt aus. Denn ich vertraue weder dem auf einer eigenen Subdomain laufende OO Documentserver noch dem CODE Container. Zwar können Besucher theoretisch nur in den docker container reinfummeln und wohl nicht aus diesem oder dem Apache Proxy ausbrechen, aber schon dass finde ich irritierend.

Schlimmer ist vielmehr, dass ich den Websocket nicht an den Apache HTTPS Proxy so dran bekomme, dass der Firefox endlich Ruhe gibt. Falls da einer ne Idee hat … ich hab ein offenes Ohr. Vielleicht ist ja was dabei, was ich noch nicht probiert habe.

DOCX

Wir haben am LFB gerade das unschöne Problem, dass wir beim Öffnen von DOCX Dokumenten Bilder sehen, die MS Word nicht anzeigt und nicht druckt.

Packt man die DOCX mit unzip aus und durchsucht dann die Verzeichnisstruktur sieht man das Bild ebenfalls. Es ist eindeutig da. Das Problem ist demnach, dass MS Word Bilder beim Löschen durch den Anwender nicht immer löscht … sondern stellenweise und aus für uns nicht nachvollziehbaren Gründen im Dokument belässt. Pech gehabt.

LibreOffice z.B. bringt das dann an den Tag – oder, wie wir feststellen konnten, die Webansicht von MS Word.

Die potentiellen Katastrophen, die sich aus diesem Verhalten von MS Word ergeben, sind Legion: Von Abmahnungen bei Internetveröffentlichungen angefangen über die Weitergabe von geheim zu haltenden Informationen bis hin zu persönlichen Peinlichkeiten … MS macht’s möglich.

Das ist professionelle Software.

Ihre Meinung zur Digitalisierung

Ja wenn das Ländle doch schon eine tolle Bürgerbeteiligungsplattform hat, dann will man da ja auch … sich beteiligen. Nur blöd, wenn der eigene, mühsam und möglichst auch sachlich verfasste Post dann vor die Wand läuft.

Ich hab dann gleich die technische Elite meines Bundeslandes, die Damen und Herren im Innenministerium, per Mail angeschrieben und diesen das Folgende mitgeteilt:

Sehr geehrte Damen und Herren,

ich habe es mir ja schon fast gedacht, als ich meinen Kommentar zur
Digitalisierungsstrategie verfasste und hab diesen deswegen vor meinem
Klick auf den roten Button kopiert. Denn: Klick ich den roten Button an,
dann bekomme ich das hier zu sehen:

We're sorry, but something went wrong.

Das ist nicht schwäbisch. Das ist auch nicht sehr erhellend auf
Englisch. "Something"?

Ich fühle mich in meinem Beitrag damit inhaltlich voll bestätigt:
Zentrale Dienste in einem freien Land - ein Widerspruch in sich selbst.

Hier der Kommentar, den ich eigentlich absetzen wollte:

<comment>

Subsidiarität muss Vorrang haben

Es gibt sicherlich Institutionen, die auf eine zentral zur Verfügung
gestellte Infrastruktur des Landes bei der Bereitstellung von
innovativen Dienstleistungen (wie auch immer das von wem auch immer dann
definiert sein mag) angewiesen sind. Aber es gibt eben auch
Institutionen, die es selbst besser können - schneller auf die bei ihnen
entstandenen Bedürfnisse reagieren und Lösungen bereitstellen, die der
Kultur der Institution und den Wünschen der Menschen in dieser besser
entsprechen, als "Einheitsbrei von oben".  Dazu kommt, dass in der
Vielfalt und auch Konkurrenz innovative Ideen wachsen - und nicht im
Kontext zentraler staatlicher Planung. Und: Vielfalt, lokale Lösungen
ohne zentrale Datenbevorratung ist auch ein Element des
Grundrechteschutzes im Kontext des Rechts auf informationelle
Selbstbestimmung!

Sie kennen die Argumentationsstruktur: Es ist die gleiche, wie sie die
Gemeinden gegenüber dem Land und die Bundesländer gegenüber dem Bund
vertreten - oder der Bund gegenüber der EU. Es ist ein Prinzip aus der
katholischen Soziallehre: Subsidiarität!

Aus meiner Sicht: Es ist unbedingt darauf zu achten, dass dieses Prinzip
bewahrt, geschützt und gefördert wird.

Bei technischen Dienstleistungen kommt noch ein der Biologie
entstammendes Argument hinzu, das ebenfalls spontan einsichtig sein
dürfte: Die Monokultur aus MS Windows im Land macht Angriffe leichter
und erzeugt Abhängigkeiten. Die vielfältigen proprietären "Lösungen" auf
den Rechnern des Landes (z.B. viel zu viel Pirobase auf den Servern -
viel zu viel MS Windows in allen Verwaltungen auf den Clients) sind aus
prinzipiellen Gründen intransparent, unkontrollierbar und vor allem
auch: auf Dauer viel teurer.

Zentrale Regeln zum WIE (im Sinne eines Qualitätsmanagements oder
Festlegung auf Protokolle, Datenschutzsstandards etc. pp.) schaden
nicht, sofern diese reflektiert gesetzt werden (z.B. keine proprietären
Ansätze) - aber eine zentrale Behörde für
Datenverarbeitungsdienstleistungen (wie im Ansatz BitBW) darf nicht der
richtige Weg sein. Er gefährdet zentrale Werte einer freien Gesellschaft!

D.h. nicht, dass BitBW überflüssig wäre - keineswegs! Es gibt bestimmt
mehr Institutionen, denen es an eigenem Know How fehlt, als
Institutionen, die technisch qualifiziert genug sind, um eigene Wege
gehen zu können. Für die zuerst Genannten sollte ein Angebot des Landes
unbedingt bereit stehen.

Aber genau darum geht es ja bei Subsidiarität: Die jeweils übergeordnete
Ebene greift erst ein, wenn es die Betroffenen nicht mehr selbst
hinbekommen - und vor allem auch erst dann, wenn diese den Wunsch
äußern, dass ihnen geholfen wird. Alles andere ist Paternalismus.

tldr: Für die Institutionen im Land - freie Wahl der technischen
Lösungen in freien Netzen!

</comment>

Ich bin diesen nun los. Aber: Keiner kann ihn lesen. Keiner kann darauf
reagieren. Ich kann Ihnen kaum sagen, wie begeistert ich von Ihrer
Plattform bin. Dann blogge ich eben meinen Beitrag - weil ich diesen
dann selbst unter Kontrolle habe. Weil ich es kann. Und vor allem: Weil
meine Dienste funktionieren!

Mit freundlichen Grüßen
Dirk Weller

… und auch gleich umgesetzt.

Update StM

Na hallo! Da bin ich doch noch am gleichen Tag direkt vom StM angeschrieben worden. Sie hatten wohl technischen Probleme heute. Jetzt ist der Comment doch an die „richtige“ Stelle gekommen.

Chromium 56

Chromium hat sich unterwegs die Option eingespart, auf einfach Art und Weise an die Zertifikatsansicht zu kommen. Ein Klick auf das grüne Schlosssymbol führt zu allen möglichen Angaben – aber nicht mehr zum Zertifikat selbst. Dazu benötigt man nun F12, um die Entwickleroptionen aufzurufen, und dort dann den Tab Security.

Sicherheit ist wichtig, also packen wir die Möglichkeit, die Sicherheit zu prüfen, möglichst weit weg, damit keiner der normalen User da auf einfache Art und Weise dran kommt? Ich versteh’s nicht.

Release upgrade auf Ubuntu 16.04.1

Eine Sammlung an Notizen zum release upgrade von 14.04 LTS auf 16.04.1 LTS oder: Was alles zerbrach, wie es zu heilen war und was noch ungelöst verbleibt.

phpMyAdmin

Schon während des Upgrades konnte das Paket phpmyadmin für Xenial nicht konfiguriert werden. Die angezeigten Fehlermeldungen verwiesen auf dieses Problem, das sich allerdings im Zuge des Upgrades nicht rund umsetzen ließen. Also blieb phpmyadmin unkonfiguriert.

Unter Xenial habe ich mir mit apt-get purge phpmyadmin ; apt-get install phpmyadmin das Paket frisch an Bord geholt.

Begrüßt wurde ich dann von einer schier unendlichen Anzahl von Deprecation Notices nach dem Muster

Deprecation Notice in ./../php/php-gettext/streams.php#48
Methods with the same name as their class will not be constructors in a future version of PHP; StringReader has a deprecated constructor

Backtrace

./../php/php-gettext/gettext.inc#41: require()
./libraries/select_lang.lib.php#477: require_once(./../php/php-gettext/gettext.inc)
./libraries/common.inc.php#569: require(./libraries/select_lang.lib.php)
./phpmyadmin.css.php#14: require_once(./libraries/common.inc.php)

Weder gettext noch mbstring (wie in einigen Threads zum Problem behauptet) lösten das Problem. Dieser Hinweis war für mich der richtige:

error_reporting = E_ALL & ~E_DEPRECATED

Pydio

Pydio meinte, es hätte unter Xenial keine MySQL Verbindung mehr. Das Problem ist wohl bekannt, die Lösung sieht bei mir so in der $PYDIOINSTALLDIR/data/plugins/boot.conf/bootstrap.json aus:

    "DIBI_PRECONFIGURATION":{
      "mysql_username":"pydiodbuser",
      "mysql_password":"pydiodbpasswort",
      "mysql_host":"localhost",
      "mysql_driver":"mysql",
      "mysql_database":"pydiodbname",
      "group_switch_value":"mysql",
      "mysql_use_mysqli":"true"
    }

Danach läuft auch ein Update auf die nächste Pydio-Version reibungslos durch.

ownCloud

ownCloud startete nicht mehr, weil einerseits memcache nicht funktionierte (unter php7 eigentlich nicht verwunderlich) und weil die PHP Module php-zip, php-memcached, php-redis und php-curl fehlten. Die waren zwar unter Trusty schon einmal an Bord, aber gingen im Laufe des Upgrades wohl verloren. Ich sollte an dieser Stelle wohl eh umsteigen auf APCu.

DokuWiki

Viele Plugins von Dokuwiki werfen mit Fehlermeldungen im Muster

PHP Warning:  Declaration of syntax_plugin_gcalendar::render($mode, &$renderer, $indata) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /pfad/zu/dokuwiki/lib/plugins/gcalendar/syntax.php on line 0
PHP Warning:  Declaration of syntax_plugin_include_div::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /pfad/zu/dokuwiki/lib/plugins/include/syntax/div.php on line 0, referer: https://www.domain.tld

nach dem Apachen. Hier half es, alle Plugins neu zu installieren, auch wenn diese nicht als mögliches Update von DokuWiki angezeigt wurden.

opendkim

Die Rechte auf /etc/postfix/dkim.key lagen bei root.root und verhinderten den Start von opendkim. Ein chown opendkim dkim.key stellt das richtig.

fail2ban

Die jail.local musste ich komplett überarbeiten. Der Hintergrund scheint zu sein, dass die Pfade für die Logs der einzelnen Dienste aus der jail.local bei Trusty unter Xenial nicht mehr stimmten: Einige nutzen jetzt systemd, andere schreiben weiterhin in ihren herkömmlichen Logpfad.

Außerdem zeigten sich die von mir aktivierten Apache jails extrem empfindlich gegenüber Arbeiten im Backend von DokuWiki, so lange dieses Fehlermeldungen rund um PHP7 wirft. Nach nur wenigen Klicks sperrte mich mein Server komplett aus und am Ende des Tages (und auf Grund einer von mir einst hoch festgelegten bantime) half nur der Boot mit einem über die Hetznerkonsole gestarteten Notfalllinux.

 

OMD auf Ubuntu 16.04 quick setup

Mein hausinterner Monitoring- und Nameserver wollte sich nicht ohne Zicken von 14.04 auf 16.04 schubsen lassen. Also setzte ich diesen neu auf und durfte dann OMD neu installieren. Meine Notizen:

wget https://mathias-kettner.de/support/1.2.8p15/check-mk-raw-1.2.8p15_0.xenial_amd64.deb
dpkg -i check-mk-raw-1.2.8p15_0.xenial_amd64.deb
apt-get install -f
service apache2 restart
omd create bdjlhome
su - bdjlhome

In /omd/sites/bdjlhome ist dessen Homeverzeichnis gelandet. Dort dann ausführen:

omd config
omd start
exit

Das OMD Config stellte ich auf Web GUI sowie Multisite und übernahm dort im Wesentlichen die vorhandenen Einstellungen:

Um den Monitoring-Server ebenfalls überwachen zu können folgte die Installation und Konfiguration (die dann auf allen zu überwachenden Clients ebenfalls durchgeführt werden muss):

apt-get install check-mk-agent xinetd nagios-plugins-basic
apt-get install -f

Die /etc/xinetd.d/check_mk sieht nach den nötigen Anpassungen wie folgt aus:

service check_mk
{
        type           = UNLISTED
        port           = 6556
        socket_type    = stream
        protocol       = tcp
        wait           = no
        user           = root
        server         = /usr/bin/check_mk_agent

        # If you use fully redundant monitoring and poll the client
        # from more then one monitoring servers in parallel you might
        # want to use the agent cache wrapper:
        # server         = /usr/bin/check_mk_caching_agent

        # configure the IP address(es) of your Nagios server here:
        only_from      = 127.0.0.1

        # Don't be too verbose. Don't log every check. This might be
        # commented out for debugging. If this option is commented out
        # the default options will be used for this service.
        log_on_success =

        disable        = no
}

Für die Clients muss dann bei only_from die IP des Monitoring-Servers eingetragen werden.

Weiter geht es für die mrpe.cfg:

mkdir /etc/check_mk
vi /etc/check_mk/mrpe.cfg

Hier schaltete ich APT und SSH Checks frei:

# APT Check
APT_CHECK /usr/lib/nagios/plugins/check_apt
# SSH Check
SSH_CHECK /usr/lib/nagios/plugins/check_ssh localhost

Fail2ban soll ebenfalls überwacht werden:

vi /opt/omd/sites/bdjlhome/local/share/check_mk/agents/plugins/fail2ban

In der Config für diesen Agent steht

#!/bin/sh
echo '<<<fail2ban>>>'
if [ -x /usr/bin/fail2ban-client ]; then
JAILS=`/usr/bin/fail2ban-client status | grep "Jail list" | tr -s [:blank:] | cut -f2- -d':' | sed -e 's/,/ /g'`
        echo "Detected jails: $JAILS"
        for jail in $JAILS
        do
                /usr/bin/fail2ban-client status $jail
        done
fi

und dann muss diese noch ausführbar sein:

chmod 755 /opt/omd/sites/bdjlhome/local/share/check_mk/agents/plugins/fail2ban

755 ist etwas arg dick aufgetragen, tut es aber für’s Heimnetz.

Dann den xinetd und den Apache neu starten:

service xinetd restart
service apache2 restart

Ob überhaupt Daten ankommen ist zu prüfen:

telnet localhost 6556

Die Anmeldung an OMD erfolgt im Browser an der lokalen IP (bei mir an dieser Stelle noch ohne Namensauflösung: https://10.16.X.X/bdjlhome) als omdadmin mit omd als Passwort, das nach dem ersten erfolgreichen Login geändert wird.

Im Main Menü unter Hosts wird dann der lokale Monitoring-Server eingerichtet. Rechts oben gibt es den Schalter New host. Diesem einen Namen und die passende IP (in diesem Fall 127.0.01) geben und über Save & go to Services speichern. Wenn alles klappt lässt sich hier gleich eine Service discovery durchführen und für diesen Host abspeichern.

Zurück im Main Menu: Wie üblich bei OMD müssen die Änderungen durch eine Reihe von Klicks auf farblich hervorgehobene Schalterchen erst aktiviert werden.

Ein Klick auf Hosts zeigt die Liste der schon eingetragenen Server an. Zur nachträglichen Service Discovery folgt der Klick auf das Icon „Notizbrett mit grünem Haken“ das im Overlay „Edit the services of this hosts, do a service discovery“ anzeigt.

… und nach ein wenig mehr Geklicke sind die lokalen Hosts eingetragen. Praktisch ist die Notification Funktion. Die warnt mich per Mail, wenn auf einem der Rechner etwas aus dem Lot gerät. In Ermangelung einer statischen IP verwende ich hierzu einen Postfix als Satellitensystem – aber das ist eine andere Geschichte.