Skip to content

Datenbankbackup mit MyDumper unter CentOS 7 ...

centos

Zum Backup meiner Datenbanken benutze ich schon seit Jahren MyDumper und das MyLoader-Tool. Der grosse Vorteil von MyDumper neben der Geschwindigkeit durch Parallelisierung ist, dass alle Datenbanktabellen in einzelnen Dateien vorliegen und so leicht modifiziert werden könnten.

Höhere Geschwindigkeit bedeutet auch, dass man öfter Backups machen kann (bei mir alle vier Stunden).

MyDumper muss selber übersetzt werden, wenn es nicht in der Distribution dabei ist. Den Anfang bildet dass Holen des Quelltextes:

$ git clone https://github.com/maxbube/mydumper.git mydumper.git

Danach setzen wir die Variablen für das Übersetzen des Quelltextes.

$ export CC=/home/dirk/workspace/sclgcc.bash
$ export CXX=/home/dirk/workspace/sclc++.bash
$ export MAKEFLAGS="-j $(lscpu | awk '/^CPU\(s\)/ {print $2}')"

Die ersten beiden Variablen habe ich im gestrigen Artikel erwähnt.

Die MAKEFLAGS sorgen dafür, dass make mit mehreren Threads arbeitet. Ich nehme dafür die Anzahl der CPUs, die mir das System meldet.

$ yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel

Nachdem wir neben dem C++ Compiler, Make und CMake die Vorbedingungen installiert haben, kann es auch schon losgehen.

$ cd /home/dirk/workspace/mydumper.git
$ git clean -dfx
$ cmake . -DMYSQL_LIBRARIES_mariadb:FILEPATH=/usr/lib64/libmariadbclient.a -DWITH_SSL=OFF -DBUILD_DOCS=off
$ make
$ sudo make install

Das "git clean" räumt unter anderem die Reste von alten Übersetzungsversuchen auf. Guckt Euch bitte die Parameter gut an, bevor Ihr das in Repos macht, in denen Ihr Schreibrechte besitzt.

Da auf meinen Servern die aktuelle stabile Version von MariaDB arbeitet und ich ebenfalls den MariaDB-Client installiert habe, muss cmake das auch mitteilen.

Der Backup-User benätigt in der Datenbank "nur" Select-, Reload und Lock Tables Berechtigungen.
CREATE USER 'b2'@'localhost' IDENTIFIED VIA mysql_native_password USING 'kryptisches Passwort';
GRANT SELECT, RELOAD, LOCK TABLES ON *.* TO 'backup'@'localhost' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

Nachdem jetzt alles fertig ist, kann das folgende Backupskript seinen Dienst tun.

#!/bin/bash
# db-backup.bash
set -o errexit

BACKUPDB_DIR="/srv/bak/dumps"
DB_USERNAME="backup"
DB_PASSWORD="kryptisches Passwort"
THREADS=$(lscpu | awk '/^CPU\(s\)/ {print $2}')

cd ${BACKUPDB_DIR}

/usr/local/bin/mydumper --user ${DB_USERNAME} --password ${DB_PASSWORD} --threads ${THREADS}

find ${BACKUPDB_DIR} -type d -name 'export*' -mtime +1 -exec xargs rm -r '{}' \+

WICHTIG: Am Ende des Skripts werden alle Backups gelöscht, die älter sind als ein Tag.

Aktueller C-Compiler auf CentOS 7 ...

centos

Spannend, ich hätte schwören können, dass ich das schon einmal im Blog hatte, kann einen entsprechenden Artikel aber leider nicht finden.

Ein Weg, einen aktuellen C-Compiler auf CentOS zu installieren sind die offiziell unterstützten SoftwareCollections, für unseren Fall insbesondere das Developer Toolset 7. Die achte Version gibt es schon für Red Hat Enterprise Linux 7, wird also in den nächsten Wochen auch in CentOS 7 verfügbar sein.

Zuerst werden die Software Collections aktiviert und aktualisiert

$ sudo yum install centos-release-scl
$ sudo yum update

Installation des entsprechenden Pakets mit allen Abhängigkeiten

$ sudo yum install devtoolset-7-gcc-c++
Welche Software Collections installiert sind, bekommt man übrigens mit dem Kommando scl --list heraus.

Eine Shell mit aktivierter Software Collection starten

$ gcc --version | head -1
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16)

$ scl --list
devtoolset-7

$ scl enable devtoolset-7 bash

$ gcc --version | head -1
gcc (GCC) 7.2.1 20170829 (Red Hat 7.2.1-1)

Neuen Compiler per Default aktivieren

Da man nicht jedes Mal eine neue Shell nutzen möchte, hilft der folgende Weg, das zu verwirklichen.

Wrapper Skripte für GCC und C++

#!/bin/bash
# sclgcc.bash

COMMAND="gcc $@"
scl enable devtoolset-7 "$COMMAND"
#!/bin/bash
# sclc++.bash
COMMAND="c++ $@"
scl enable devtoolset-7 "$COMMAND"

Setzen der Environment-Variablen, die cmake und make benutzen

$ export CC=/home/dirk/bin/sclgcc.bash
$ export CXX=/home/dirk/bin/sclc++.bash

Wie ich Taskwarrior nutze ...

taskwarrior

Wie in den Kommentaren eines anderen Blogartikels angeregt, schreibe ich hier gerne einmal zusammen, wie ich Taskwarrior benutze.

Meinen Workflow habe ich auf den Seiten von Taskwarrior beschrieben.

Hier ist eine aktualisierte Fassung:

Wo nutzt Du Taskwarrior?

Taskwarrior benutze ich nicht auf der Arbeit, weil ich dort hinter sehr strikten Proxies bin, die den Zugriff auf meinen Taskserver nicht erlauben.

Allerdings nutze ich meine privaten Taskwarrior Instanzen auch, um Aufgaben aus dem Job zu verwalten, weil ich damit alles in einer zentralen Lösung habe.

In den letzten Jahren habe ich fast alles Features von Taskwarrior einmal ausprobiert, bin aber jetzt zu einem sehr rudimentären Rumpf an Einstellungen geschrumpft.

Ich nutze immer die aktuelle Entwicklerversion.

Für welche Art Arbeit nutzt Du Taskwarrior?

Tatsächlich überwiegend für längerfristige Aufgaben, die nicht vergessen werden dürfen. Ich schreibe nicht alle Aufgaben in Taskwarrior.

Wie synchronisiert Du die Aufgaben, welche Geräte benutzt Du?

Da Taskwarrior für Android (kein offizielles Tool) oder Taskwarrior in Termux nicht die aktuelle Entwicklerversion als Basis haben, nutze ich Taskwarrior ausschliesslich auf Linux-Systemen mit einer Internetverbindung, die nicht Proxies benutzen müssen. Ich kompiliere Taskwarrior aus den Quellen selber.

Alle (meine) Taskwarrior-Instanzen synchronisieren gegen einen selbstgehosteten Taskserver. Alle Instanzen haben die gleiche Konfiguration, mit einem Unterschied, dass nur auf meinem Notebook der Eintrag "recurrence=no" fehlt.

Welchen Standard-Report benutzt Du?

Den "next"-Report ohne weitere Modifikationen.

Benutzt Du eine Standard-Methode oder auf Dich angepasst Methodik?

Aufgabenverwaltung ist sehr individuell, ich benutze einen Mix aus Methoden. Ein paar Informationen dazu finden sich in einem Vortrag, den ich vor zwei Jahren zum letzten Mal gehalten habe.

Nutzt Du irgendwelche Erweiterungen oder Hook-Scripts?

Nein.

Auf welches Feature vertraust Du am meisten?

Nahezu alle meine Aufgaben haben Zieldatum, auch wenn manche davon künstlich sind oder auch nicht von mir in der Zeit erledigt werden können.

Ich nutze das "wait"-Feature sehr häufig, um meine Aufgabenliste zu bereinigen.

Um meine Aufgaben zu organisieren, nutze ich Projekte und Subprojekte. Das hilft, mir den Überblick zu behalten und Aufgaben danach zu filtern.

Ausser "Virtual Tags" nutze ich keine weiteren Tags.

Für mich sind "Annotations" eines der wesentlichen Features, das nutze ich sehr häufig. Für angehängte URLs oder Pfade zu Dateien benutze ich Taskopen.

Ich benutze Anmerkungen auch, um meine privaten und beruflichen Ziele für einen Monat, ein Jahr und fünf Jahre zu verwalten. Die Ziele werden jeden Monat überprüft.

Welche Features nutzt Du bewusst nicht?

Ich benutze ganz selten nur Abhängigkeiten, zumeist benutze ich ein Datum, um zu steuern. Die eine Aufgabe hat ein Fälligkeitsdatum Ende der Woche und die nachfolgende Aufgabe ein Wartedatum Anfang nächster Woche.

Unglaublich, aber wahr, ich nutze Prioritäten überhaupt nicht.

Wie schaust Du Deine Aufgaben durch?

Dazu benutze ich das Review-Kommando der Taskshell.

Weitere Punkte

Ich benutze ein sehr rudimentäre Konfiguration bestehend aus einem Farbschema, Montag als Wochenstart, calendar.details=full und calendar.holidays=sparse.

Auch, wenn es keinen Sinn ergibt, nutze ich manchmal "wait:someday", um Aufgaben komplett aus dem Weg zu räumen. Man kann sie ja mit "task waiting" immer noch sehen.

Ich schreibe nicht alles in Taskwarrior. Ich habe ein Gehirn und bin gewillt es zu benutzen.

Fragen per Mail

Per Mail sind mir Fragen gestellt worden, deren Antworten ich hier gerne auch nenne.

Im Rahmen meiner Arbeit für Taskwarrior habe ich einen ganzen Haufen an Artikeln geschrieben und Vorträgen gehalten.

Beispielsweise Aufgabenverwaltung auf der Kommandozeile oder den Workshop bei Pro-Linux.

Weitere Vorträge finden sich auf meinem Speakerdeck-Account.

Verwendest du TW für private und geschäftliche Aufgaben?

Ja, allerdings auf privaten Geräten.

Setzt du bei allen Aufgaben einen Termin?

Ja, das mache ich.

Sortierst du die Aufgaben in Kategorien und/oder Projekte ein?

Ich benutze sehr intensiv Projekte und Unterprojekte, dafür aber keine Tags.

Wie priorisierst du in TW deine Aufgaben, damit diese ganz oben in deiner Liste stehen?

Da löse ich alles über das Fälligkeitsdatum. Ich blende Aufgaben auf, die nicht in den nächsten Wochen anstehen. Das führt dazu, dass ich selten mehr als eine Bildschirmseite benutzen muss.

Alternativ nutze ich "+next", um die Dringlichkeit (Urgency) zu erhöhen.

Recurring-Termine

Bei den Recurring-Terminen hatte ich in TW Problem, die Übersicht zu behalten bzw. viel Arbeit, diese ständig neu zu terminieren, wenn mal ein Termin nicht eingehalten wurde (passiert mir leider viel zu oft).

Taskwarrior ist keine Terminverwaltung ...

Hast Du Dir für den Fall einmal Dependencies angeschaut?

Wie klappt das bei dir?

Bei mir klappt es ganz gut. Ich vermisse ein paar Features, die mit Taskwarrior 3.0.0 kommen werden, da wird die Recurrence komplett überarbeitet.

Apps für das Smartphone ...

android

Angestiftet von Thomas folgt hier eine Liste der Apps, die auf meinem Smartphone installiert sind und von mir auch genutzt werden.

Ich habe einmal nachgeschaut, die Android-Kategorie meines Blogs ist relativ verwaist, die letzte App-Übersicht ist von 2011 und für das Tablet von 2017.

Vielleicht fange ich einmal damit an, dass ich neben dem vorinstallierten Playstore von Google auch noch F-Droid verwende. Wenn ich eine neue App brauche, schaue ich zuerst dort bevor ich auf den Google Playstore zugreife. Bei vergleichbarer Funktionalität greife ich lieber zu FLOSS (Free/Libre Open Source Software).

Die folgende Liste habe mit Hilfe von List My Apps erstellt. Apps von Google gebe ich nur an, wenn ich sie auch wirklich benutze.

Die Liste ist richtig lang geworden.

Medienkonsum

  • Pocket Casts ist mein Hauptmedienprogramm, es bietet gegenüber anderen Lösungen die Möglichkeit der Synchronisation des Hörstatus, um auf der Sonos, iOS oder dem Webplayer weiterhören zu können.
  • Audible, ja, Hören spielt eine grosse Rolle auf dem Handy, ich mag Hörbücher.
  • Spotify löst Audible immer stärker ab, ich höre kaum Musik, dafür viele Wortbeiträge.
  • EasyRSS synchronisiert sich gegen eine selbstgehostete FreshRSS-Instanz.
  • wallabag ist die passende App zum selbstgehosteten Wallabag-Dienst.
  • MuPDF viewer zum Anschauen von PDFs.
  • Netflix, Smart TV und Sonos nutze ich auf dem Handy sehr selten.

Internet

Zu den folgenden Tools schreibe ich nichts, die sind eindeutig.

Chat und Messaging

Ich chatte sehr wenig, was dazu führt, dass ich pro Toll gerade einmal ein oder zwei Personen habe, mit denen ich mich austausche, SMS wird übrigens auch noch genutzt.

  • Riot.im wird immer mehr zu meinem Haupt-Messenger. Ende-zu-Ende-Verschüsselung und verschiedene Brücken, unter anderem zum IRC, machen Matrix zu einer echten Empfehlung.
  • Telegram nutze ich am zweithäufigsten, würde ich aber gerne einstellen.
  • Nextcloud Talk wird hoffentlich bald auch Benachrichtigungen können.
  • Threema und Threema QR Code Plugin
  • WhatsApp brauche ich nur für eine oder zwei handvoll Gruppenchats, vielleicht schaffe ich das mal in eine VM auszulagern und dann via Matrix zu verbinden.

Organisation

  • Bring! zur "Verwaltung" der Einkäufe.
  • Bitwarden ist mein Passwortmanager.
  • Business Calendar ist für mich der beste Kalender.
  • DAVdroid synchronisiert die Kalender und Kontakte meiner Nextcloud-Instanz mit dem Handy.
  • ICSdroid tut das gleiche für ICS-Kalender (da habe ich zwei).
  • Joplin für Notizen und kurzfristige Aufgaben, synchronisiert mit der Nextcloud.
  • Nextcloud synchronisiert meine Photos mit der eigenen Nextcloud-Instanz und verwaltet einen grossen Haufen an PDFs und E-Books. E-Books lese ich nicht mit dem Handy.

Verkehr und Karten

Social Media

Ich nutze alle drei sehr selten.

Sonstiges

  • ALDI TALK - mein Handy kann zwei SIM-Karten verwalten, Aldi-Talk nutze ich in Deutschland.
  • Authenticator zur Erzeugung des zweiten Faktors.
  • Bose Connect für Firmware-Updates meiner Kopfhörer.
  • Clash Royale ist eines der zwei Spiele, das ich ab und an spiele.
  • Gadgetbridge stellt die Verbindung zu meiner Amazfit Bip ("not so smart Watch") her.
  • MeteoSwiss für den Wetter bericht in der Schweiz.
  • PostFinance - Kontostand und Bezahlen per NFC.
  • Reise & Waren enthält die Zollbestimmungen der Schweiz.
  • SecureLogin gibt den zweiten Faktor für die Firma.
  • Stocard benutze ich für Boarding Passes und eine Kundenkarte.
  • Supercard, selten genutzte Kundenkarte.
  • WeatherPro für Wetterberichte ausserhalb der Schweiz.
  • Wetter notification für Wetter auf der Amazfit Bip, spielt mit Gadgetbridge zusammen.
  • ti5x, Taschenrechner und das erste programmierbare Gerät, das ich hatte.
  • Yafi ist das zweite Spiel, ich habe einen FICS-Account seit 1996.
  • Nutze ich sehr selten: Barcode Scanner, GoPro

Docker-Hilfe ist hilfreich ...

docker Prinzipiell finde ich es ja super, dass die Docker-Kommandos eine eingebaute Hilfsfunktion haben, aber manchmal ist die Hilfe schon anders als erwartet.

Ich war mir nicht sicher, ob ich zuerst den Quell- oder Zieltag angeben muss beim Docker-Tag-Kommando:

$ docker tag --help

Usage:  docker tag IMAGE[:TAG] IMAGE[:TAG]

Tag an image into a repository

Options:
      --help   Print usage

Hotel-WLAN ...

linux Am vergangenen Wochenende durfte ich einmal mehr in einem Hotel zu Gast sein, das ein kaputt konfiguriertes WLAN hatte. Manchmal frage ich, was die Dienstleister befürchten, wenn sie den Zugang so kastrieren.

Für mich ist elementar, dass ich via SSH auf meine Server zugreifen kann, aber Port 22 ausgehend war geblockt. Das habe ich relativ schnell in den Griff bekommen, in dem ich via "Remote Console" auf einem meiner Server sslh installiert habe. sslh nimmt Verbindungen auf Port 443 (https) an und entscheidet mit dem Handshake an welchen Dienst die Verbindung "übergeben wird". Das klappt problemlos und ziemlich gut, wenn der WLAN-Administrator nicht auf Protokollebene blockt.

Zugriff geht dann via:

ssh -p 443 user@sslh-server.example.net


Die Weiterverbindung auf andere Server lässt sich dann mittels folgendem Befehl realisieren (das geht auch transparent mit der unten aufgeführten Lösung):

ssh -o ProxyJump=user@sslh-server.example.net user@ziel.example.com


Für reine SSH-Verbindungen ist das prima, aber es gibt ja zum einen noch andere Dienste (unter anderem Usenet, Protokoll nntp, Port 119), die ich auch noch nutzen möchte.

Da kommt dann das Tool sshuttle zum Einsatz. sshuttle benutzt SSH, um darüber alle tcp-Verbindungen plus DNS mittels Paketfilterregeln weiter zu leiten. Um die lokalen Regeln anzupassen wird sudo-Zugriff auf den root-Account benötigt.

sshuttle --dns --remote=user@sslh-server.example.net:443 0/0


Für mich funktioniert das und es macht "falsch" konfigurierte Netzwerke benutzbar.

Powerline ...

linux Ich habe jetzt einmal meinen Prompt von Liquid Prompt auf Powerline umgestellt, weil es damit ein wenig konsistenter ist, da sowohl die Shell wie auch Vim und tmux unterstützt werden.

Bei Fedora 27 ist Powerline direkt dabei, bei CentOS muss man Powerline "von Hand" installieren, das Verfahren wird auch bei anderen Distributionen funktionieren.

Fedora 27:
dnf install powerline tmux-powerline vim-powerline
systemctl enable powerline
systemctl start powerline


CentOS 7:
yum install python-pip
pip install powerline-status

cd /usr/share/fonts
curl -LO https://github.com/powerline/powerline/raw/develop/font/PowerlineSymbols.otf
fc-cache -vf /usr/share/fonts/

cd /etc/fonts/conf.d/
curl -LO https://github.com/powerline/powerline/raw/develop/font/10-powerline-symbols.conf


.bashrc
export POWERLINE_BASH_CONTINUATION=1
export POWERLINE_BASH_SELECT=1

# Fedora 27:
source /usr/share/powerline/bash/powerline.sh

# CentOS 7:
source /usr/lib/python2.7/site-packages/powerline/bindings/bash/powerline.sh


.vimrc
# Nur CentOS 7:
set rtp+=/usr/lib/python2.7/site-packages/powerline/bindings/vim/

# Fedora 27 und CentOS 7:
set laststatus=2


.tmux.conf
# Fedora 27:
source /usr/share/tmux/powerline.conf

# CentOS 7:
source /usr/lib/python2.7/site-packages/powerline/bindings/tmux/powerline.conf

Fedora 27 ...

fedora Normalerweise aktualisiere ich mein Client-Betriebssystem dadurch, dass ich - grob zusammengefasst - ein Backup mache, den Rechner neu installiere und dann die Daten zurück sichere (siehe auch Neuinstallation Fedora 26 und Update auf eine neue Ubuntu-Version).

Dieses Mal war ich "abenteuerlustig" 8-) und habe mit den Bordmittel ein Backup gemacht, so wie es hier beschrieben wird.

Es hat wahnsinnig gut funktioniert.

Ich musste im Vorfeld den Citrix Receiver deinstallieren, weil es kein "webkitgtk" mehr gibt und habe stattdessen den Webreceiver installiert, der die Abhängkeit nicht hat. VirtualBox hat noch kein Repo für Fedora 27, die bereits installierte Version funktioniert aber bestens weiter.

Klasse. Allerdings werde ich das - obwohl es so gut funktioniert hat - nicht bei jedem Release so machen, weil das Entmüllen auch etwas wert ist.

Ich habe schon einige Linux-Distributionen durchprobiert und muss gestehen, dass mir Fedora am Besten gefällt. Allerdings haben sich natürlich alle anderen Distros auch weiterentwickelt und da kenne ich den aktuellen Stand nicht mehr.

Kein Linkdump 34/2017 wegen Swiss Perl Workshop 2017 ...

perl Für heute muss ich Euch leider enttäuschen, ich habe keinen Linkdump vorbereiten können.

Gerade jetzt bin ich in Villars-sur-Ollons und freue mich darauf, dass der Swiss Perl Workshop 2017 in einigen Stunden startet.

Lee, Roman und ich haben in den letzten Wochen und Monaten diesen Workshop vorbereitet und Sponsoren gesucht (und glücklicherweise auch gefunden). Wir freuen uns sehr, dass Damian Conway bei uns ist und einige Vorträge hält.

Die Location - Hotel du Golf - ist super und mit sehr viel Ausblick :-)

Interessanterweise bin ich das erste Mal in der Welschschweiz, obwohl ich jetzt schon fast zehn Jahre in der Eidgenossenschaft lebe.

SSD tauschen ...

Ich habe nicht bereut, mich bei meinem aktuellen Notebook im Februar letzten Jahres für ein Dell Latitude E7450 entschieden zu haben. Am Sonntag habe ich innerhalb von ein paar Minuten die neue SSD eingebaut und Fedora installiert. Arbeitsbereit war ich in deutlich unter zwei Stunden ... (selbst Windows 10 wäre da noch dabei gewesen, die Updates zu installieren und Anwendungen wären auch noch nicht drauf).

Neuinstallation Fedora 26 ...

fedora Durch die verschiedenen sozialen Netzwerke, in denen ich mich bewege, schwappen gerade Anleitungen wie man von Fedora 25 auf Fedora 26 aktualisiert, hier ein Beispiel.

Ich werde es so halten "wie schon immer" (Ubuntu) und mit jedem Linux, das ich bis jetzt benutzt habe, ich werde meinen Rechner neu installieren.

Der Grund ist schon seit Jahren der gleiche, nämlich Datenhygiene: Da ich viel mit Software experimentiere und viele Programme ausprobiere, nutze ich die Neuinstallation, um mich von nicht mehr benötigten Altlasten und nicht mehr gebrauchten Konfigurationsdateien zu trennen.

Die Installation ist für das kommende Wochenende geplant.

Wannacry?

Leider muss ich jetzt doch etwas längeres dazu schreiben, weil mich die polemisierenden Nachrichten nerven.

Kurz zusammengefasst:

Ich habe kein Mitleid mit Firmen, die von Wannacry betroffen sind. Mein Mitleid geht an die Menschen, die nichts damit zu tun hattem wie beispielsweise Patienten von Krankenhäusern.

Wannacry hat mit Admins zu tun, die ihre Hausaufgaben nicht gemacht haben; mit Entscheidern, die kein Geld für ein Update bewilligen und mit Anwendern, die auf alles klicken, was klickbar ist und Warnhinweise ignorieren. Es hat nichts mit Windows vs. Linux zu tun. Ein ungepatchtes und nicht supportetes Linuxsystem ist auch ein Sicherheitsproblem.

Längere Version:

Soweit ich verstehe und aus diesem Link mitnehme, läuft die initiale Verbreitung folgendermassen:

Ein Benutzer bekommt per Mail eine Passwort geschützte ZIP-Datei in der ein Dokument ist. Wenn das Dokument geöffnet wird, wird eine unsignierte ausführbare Datei nachgeladen und diese ausführbare Datei enthält alles, was der Wurm braucht, Code zur Infizierung, Vervielfältigung und Verseuchung der Zielsysteme, wobei eine Schwachstelle in SMB ausgenutzt wird. Durch den User erreichbare Dateien (insbesondere Netzwerkshares) werden verschlüsselt.

Der Benutzer muss mehrfach bestätigen, dass er Dinge "wirklich" tun will (Ungeschützte Datei öffnen, Makros ausführen, Datei aus unsicherer Quelle ausführen).

Erste Möglichkeit, es gar nicht erst zu solchem einem Eklat kommen zu lassen, wäre beispielsweise die Schulung der Nutzer.

Für noch im Support befindliche Betriebssysteme, also nicht Windows XP, hat Microsoft bereits Mitte März dieses Jahres einen Patch veröffentlicht.

Zweite Möglichkeit, kritische Patches kurz nach Erscheinen einspielen.

Das hilft nicht, wenn man nur Windows XP hat und die Entscheider kein Geld für neue Lizenzen ausgeben wollen. Hier ist die dreckige Wahrheit: Der Unterhalt einer IT-Infrastruktur kostet Geld für Hardware, Softwarelizenzen und Support-Personal. Es liegen vier aktuell supportete Versionen zwischen XP und heute (Windows Vista, Windows 7, Windows 8 und Windows 10). Selbst, wenn man sich entscheiden würde, nur jede zweite oder dritte Inkarnation von Windows einzusetzen, hätte es mit dem rechtzeitig veröffentlichten Patch keine Probleme gegeben.

Es geht nicht um "XP ist Mist", es geht in diesem Fall um abgelaufenen Herstellersupport.

Von einem Oldtimer würde man auch nicht erwarten, dass er einen Airbag hat ...

Um in der Analogie zu bleiben: Windows XP hat 2001 das Licht der Welt erblickt, das ist vor 16 Jahren. Wie viele Geschäftsführer fahren 16 Jahre alte Autos? Ich kenne keinen. Geld für ein neues Auto wäre also da, aber nicht für Softwarelizenzen. Das passt nicht.

Dazu gibt es noch mehrere Möglichkeiten, technisch dem Problem beizukommen, gekapseltes E-Mail-System, Paketfilter, ... aber die sind meiner Meinung nach nicht mit vertretbarem Aufwand handhabbar.

Fazit:

Es führt nichts, gar nichts daran vorbei Anwender zu schulen. Selbst, wenn das zu Grunde liegende System von Windows auf irgendetwas anderes wechselt, hilft die Schulung, dass die gleichen Fehler nicht auf den neuen Systemen gemacht werden.

Ebenfalls ist es nötig, zeitnah kritische Patches einzuspielen. Selbst Unternehmen mit sehr konservativen Patchzyklen (ein Mal pro Jahr) kennen "Emergency-Patching".

Egal, welches System eingesetzt wird, es muss durch den Hersteller oder die Community unterstützt sein (ich kenne reichlich Menschen, die ein lange nicht mehr gewartetes Debian einsetzen).
  • Wem die Supportzyklen zu kurz sind, muss auf etwas mit längeren Supportzyklen wechseln.
  • Wer lizenzpflichtige Betriebssysteme (oder auch andere Software) einsetzt, muss diesen Kostenpunkt dringend in seinem Budget einplanen.