Autorenarchiv: Jörg Kastning

E-Mail-Verschlüsselung mit Thunderbird

Als überzeugter Anwender von Google Mail, bin ich kein großer Freund von E-Mail Clients. Denn die Möglichkeit E-Mail, Kalender und Office-Funktionalitäten in einem Browser zu nutzen hat große Vorteile.

E-Mail-Verschlüsselung ohne Mailprogramm ist, wie im Artikel E-Mail-Verschlüsselung mit Ubuntu bereits beschrieben, a pain in the ass und für Otto-Normalanwender völlig unzumutbar. Daher widme ich mich in diesem Artikel der E-Mail-Verschlüsselung im Mail-Programm Thunderbird, welches neben Ubuntu auch für andere Linux Distributionen und Windows, kostenlos zur Verfügung steht.[1. Offizielle deutsche Projektseite]

Dieser Artikel setzt voraus, dass ihr Thunderbird auf eurem Betriebssystem erfolgreich installiert und euer E-Mail Postfach eingerichtet habt. Und an dieser Stelle gebe ich fauler Weise an den Artikel „PGP E-Mail Verschlüsselung mit Thunderbird und Enigmail“ von Thomas Leister weiter. ;-)

Nein im Ernst. Bei der Recherche nach Enigmail bin ich auf den Artikel von Thomas gestoßen und finde diesem ist nichts mehr hinzuzufügen.

Ich mag es immer noch nicht sonderlich ein lokal installiertes E-Mail Programm zu nutzen, aber es ist die einzig praktikable Möglichkeit zur verschlüsselten E-Mail-Kommunikation. :-/

In den Kommentaren zum genannten Artikel wird auch das Browser-Plugin Mailvelope erwähnt. Dieses ermöglicht die Nutzung von OpenPGP in Webmailern wie Gmail, GMX, Web.de, etc.

Ich sehe jedoch vom Einsatz dieses Addons ab, da ich ihm schlichtweg nicht traue. Wer sich näher damit beschäftigen möchte, dem empfehle ich die Lektüre Pentest-Report Mailvelope (RFA) 12.2012 – 02.2013 von Cure53, Dr.-Ing. Mario Heiderich / Krzysztof Kotowicz, Proof-Read by Paula Pustulka.

MyPhonebook wird Ende 2013 durch Sync-Plus abgelöst

Die Einstellung von MyPhonebook wurde mir von meinem Mobilfunkanbieter vor einigen Tagen mit folgender SMS mitgeteilt:

Lieber Telekom Kunde, der Service „MyPhonebook“ wird Ende 2013 eingestellt. Ihre Kontakte werden dann über MyPhonebook nicht mehr synchronisiert. Sie möchten weiterhin eine Synchronisierung? Dazu kostenlos Sync-Plus einrichten www.telekom.de/myphonebook unter „Sync-Plus einrichten“

Diese Nachricht hat mich ein zuerst ein wenig betrübt. Empfand ich diesen Dienst doch als äußerst hilfreich. Denn bereits zweimal, in den vergangenen zwei Jahren hat mein iPhone 4 alle darin gespeicherten Kontakte verloren. Wie dies passieren konnte, kann ich nicht sagen. Dank MyPhonebook war es aber auch nicht weiter schlimm, denn alle Kontakte waren in Sekundenschnelle wiederhergestellt.

Der Nachfolgedienst heißt Sync-Plus und steht Telekom Kunden kostenlos zur Verfügung. Es handelt sich dabei um eine Funktion der Telekom Cloud.

Auf den ersten Blick wirkt Sync-Plus interessant. Immerhin verspricht die Telekom, dass die Daten ausschließlich in Rechenzentren in Deutschland gespeichert werden, wo das Bundesdatenschutzgesetz (BDSG) gilt. Ein erster Test scheitert jedoch bereits an der Anmeldung. Die Webseite teilt mir mit, dass ein unerwarteter Anwendungsfehler aufgetreten ist und ich es später erneut versuchen soll.

Na toll. Der erste Start war ja nicht so erfolgreich. Ich werde es aber später nochmal versuchen und euch berichten, was der Dienst für einen zweiten Eindruck hinterlässt.

Update:(21.09.2013)
Der zweite Blick auf die neue App hat meine Hoffnungen vorerst zunichtegemacht. Ein Blick in den Google Play-Store[1. Google play] und in Apples iTunes[2. Sync-Plus bei iTunes] offenbart äußerst schlechte Bewertungen für die App.

Apps, die durchgängig so schlechte Bewertungen erhalten, kommen nicht auf meine Geräte. Sollte es bis zum Jahresende keine neue Version geben und sich die Bewertungen bessern, werde ich mir eine Alternative zur Telekom-Lösung suchen müssen.

E-Mail-Verschlüsselung mit Ubuntu

Der steinige Weg zu verschlüsselter Kommunikation ist noch nicht zu Ende. Im Gegenteil, er hat gerade erst begonnen.

Dieser Artikel beschreibt den Weg über die Erstellung eines PGP-Schlüsselbunds bis hin zum Versand und Empfang der ersten verschlüsselten E-Mail. Ich beziehe mich dabei auf mein aktuelles Desktopbetriebssystem Ubuntu 13.04 Gnome Edition.

Ein wirklicher Segen bei diesem Unterfangen ist das gute Wiki von Ubuntuusers.de.[1. http://wiki.ubuntuusers.de] Es enthält für alle Teilbereiche unseres Vorhabens bereits ausführliche Artikel.

Wie ihr vielleicht schon ahnt liegt vor uns nun erst mal das Studium einiger dieser Artikel. Es gibt einen guten Artikel zu GnuPG selbst und einen zum technischen Hintergrund.[2. Artikel zu GnuPG][3. GnuPG – Technischer Hintergrund]

Das grafische Schlüsselverwaltungsprogramm unter Ubuntu Gnome/Unity heißt Seahorse. Wir folgen der Anleitung im Wikiartikel, um uns einen PGP-Schlüssel zu erzeugen.

Ist der Schlüssel erzeugt, erscheint er in der Übersicht der eigenen Schlüssel. Durch einen Rechtsklick auf den Schlüssel lassen sich dessen Eigenschaften öffnen. Hier können dem Schlüssel weitere E-Mail Adressen hinzugefügt werden. Damit ist die Schlüsselerstellung abgeschlossen.

Doch was nun? Nach langem Lesen von Wiki-Artikeln haben wir einen PGP-Schlüssel. Doch wie hilft uns das jetzt weiter? Im Ubuntuusers Wiki ist ein Abschnitt zu finden, der beschreibt, wie wir die E-Mail-Verschlüsselung testen können. Dazu müssen wir jedoch zuerst unseren öffentlichen Schlüssel in eine Datei exportieren. Dies geschieht, in dem wir in Seahorse unseren Schlüssel markieren und anschließend im Menü Datei den Punkt Exportieren auswählen. Wir speichern unseren öffentlichen Schlüssel, als *.asc Datei und schreiben mit der E-Mail-Anwendung unserer Wahl eine E-Mail an adele@gnupp.de. In den Betreff schreiben wir „mein öffentlicher Schlüssel“ und die Datei mit unserem öffentlichen Schlüssel hängen wir als Anhang dran.

Ich habe die Mail versendet und kurz darauf eine Antwort erhalten. Ergebnis: Hat nicht funktioniert. Adele schreibt mir, dass sie in meiner Mail keinen öffentlichen Schlüssel finden konnte. Also habe ich meine *.asc Datei mit einem Editor geöffnet und den darin enthaltenen Textblock in via Copy’n’Paste in die Mail kopiert und erneut an Adele geschickt. Diesmal hat es funktioniert und ich erhalte von Adele eine E-Mail zurück, die mit meinem öffentlichen Schlüssel verschlüsselt wurde.

Wenn ihr glaubt dies ist ein Grund zur Freude, habt ihr euch leider zu früh gefreut. Ich bin Gmail-Nutzer und verwende Gmail ausschließlich im Webbrowser, ohne separaten Mailclient. Und ich habe nun gerade eine verschlüsselte Mail an mich empfangen, die ich erst mal nicht lesen kann. Es stellt sich nun also die Frage, wie die empfangene Mail wieder zu entschlüsseln ist.

Möglichkeit 1 wäre die Nutzung eines E-Mail Clients zur Verwendung von GnuPG.[4. http://wiki.ubuntuusers.de/GnuPG#GnuPG-in-anderen-Programmen-nutzen] Dies kommt für mich jedoch nicht in Frage, da ich mich durch diese Programme zu sehr eingeschränkt fühle und meiner Meinung nach, mir das Webfrontend die beste Nutzung des E-Mail Dienstes ermöglicht.

Also bleibt mir nur Möglichkeit 2. Die Ver- und Entschlüsselung von Text in der Zwischenablage. And it’s a pain in the ass!

Die Scripts aus dem Ubuntuusers.de Artikel gefallen mir ihrer aktuellen Form nicht. Daher habe ich sie kurzer Hand etwas erweitert. Beim Script zur Verschlüsselung ist es nun möglich, die Empfänger E-Mail Adresse als Parameter mit anzugeben. Zusätzlich können nun bei den Scripts zur Verschlüsselung und zur Entschlüsselung die Ausgaben in eine Datei geschrieben werden.

Script zur Entschlüsselung:

#!/bin/bash

# Entschlüsseln von Text.
# Erforderliche Linux Pakete: gpg, xsel

# Quelle des Scripts: Ubuntuusers.de
# Ueberarbeitet von: Joerg Kastning

usage()
{
cat << EOF
usage: $0 options

Dieses Script entschlüsselt mit OpenPGP verschlüsselten Text
in der Zwischenablage und gibt ihn in eine Datei oder die
Standardausgabe aus.

Damit die Ausgabe zusätzlich in eine Datei ausgegeben wird,
muss das Script mit der Option -o aufgerufen werden.
EOF
}

while getopts .ho. OPTION
do
case $OPTION in
h)
usage
exit 1
;;
o)
Dateiausgabe="true"
;;
?)
usage
exit
;;
esac
done

echo "Clipboard Inhalt vor Entschlüsselung:"
echo "*************************************"
echo ""
xsel --clipboard

echo ""
echo ""
echo ""
echo "Mit GnuPG entschlüsseln ...:"
echo "****************************"
echo ""
xsel --clipboard | gpg --verbose --decrypt -a | xsel --clipboard

echo ""
echo ""
echo ""
echo "Clipboard Inhalt nach Entschlüsselung:"
echo "**************************************"
echo ""
xsel --clipboard
if [[ "$Dateiausgabe" == true ]]; then
xsel --clipboard > decrypted.txt
fi

# Only works with bash (and not sh):
echo ""
echo ""
echo ""
read -s -n 1 -p "Press any key to continue…"

Script zur Verschlüsselung:

#!/bin/bash

# Verschlüsseln von Text.
# Erforderliche Linux Pakete: gpg, xsel

# Quelle: Ubuntuusers.de
# Überarbeitet von: Jörg Kastning

usage()
{
cat << EOF
usage: $0 options

Dieses Script verschlüsselt mit OpenPGP Text
in der Zwischenablage und gibt ihn in eine Datei oder die
Standardausgabe aus.

Damit die Ausgabe zusätzlich in eine Datei ausgegeben wird,
muss das Script mit der Option -o aufgerufen werden.

-m Angabe der Empfänger E-Mailadresse
EOF
}

while getopts .hom:. OPTION
do
case $OPTION in
                h)
                        usage
                        exit 1
                        ;;
                o)
                        Dateiausgabe="true"
                        ;;
m)
Mail="${OPTARG}"
;;
                ?)
                        usage
                        exit
                        ;;
        esac
done

echo "Clipboard Inhalt vor Verschlüsselung:"
echo "*************************************"
echo ""
xsel --clipboard

echo ""
echo ""
echo ""
echo "Mit GnuPG verschlüsseln ...:"
echo "****************************"
echo ""
xsel --clipboard | gpg --verbose --encrypt -a --recipient $Mail | xsel --clipboard

echo ""
echo ""
echo ""
echo "Clipboard Inhalt nach Verschlüsselung:"
echo "**************************************"
echo ""
xsel --clipboard
if [[ "$Dateiausgabe" == true ]]; then
xsel --clipboard > encrypted.txt
fi

# Only works with bash (and not sh):
echo ""
echo ""
echo ""
read -s -n 1 -p "Press any key to continue…"

Das dritte Script wurde noch nicht überarbeitet. Ihr findet die aktuelle Version der Scripts immer auf GitHub.[5. https://github.com/Tronde/Schriftrolle]

Die Anwendung der Scripts habe ich mit Hilfe eines Kommilitonen getestet. Ver- und Entschlüsselung sind damit möglich. Komfortabel ist es sicherlich nicht, doch bin ich so in der Lage vertrauliche Nachrichten zu versenden und zu empfangen. Mit kompatiblen E-Mail Clients lässt sich der Komfort sicher noch deutlich steigern.

Ich selbst suche noch nach einer Firefox-Erweiterung, die mir dies auch im Browser ermöglicht. Wenn jemand eine Erweiterung kennt, immer her damit.

Damit ist das Ziel dieses Kapitels erreicht. In einem weiteren Artikel werde ich mich dann an die Dateiverschlüsselung unter Ubuntu wagen.

Der steinige Weg zu verschlüsselter Kommunikation

Nach dem in den Medien fast täglich eine neue Schlagzeile rund um die NSA Affäre auftaucht, habe ich beschlossen mich näher mit dem Thema „Vertrauliche Kommunikation“ zu befassen.

Dieser Artikel fasst meine Überlegungen zusammen und grenzt das Thema ein. Dabei gehe ich kurz auf meine Motivation ein, nenne gängige Verfahren zur vertraulichen Kommunikation und kommentiere diese. Dabei führe ich einige Links zu Quellen auf, die weiterführende Informationen zu den einzelnen Verfahren und Programmen bieten. Ich plane in folgenden Artikeln detaillierte Beschreibungen zu einzelnen Lösungen zu geben. Bei diesem Artikel handelt es sich damit sozusagen, um den Grundlagenartikel zum Thema.

Mein Ziel ist es eine Lösung zu finden, mit der eine möglichst sichere (denn 100%-ige Sicherheit gibt es nicht) und vertrauliche Kommunikation über das Internet machbar ist.

Vertrauliche Kommunikation

Vertraulich ist eine Nachricht dann, wenn nur der Absender und der oder die Empfänger von ihrem Inhalt Kenntnis haben. Überbringern bzw. Übermittlern dieser Nachricht ist ihr Inhalt entgegen nicht bekannt.

Dies ist z.B. beim klassischen Brief der Fall. Der Absender schreibt ihn, packt ihn in einen Umschlag, verschließt diesen und übergibt ihn der Post zur Zustellung. Die Post bzw. der Postbote, als Überbringer des Briefs, kann den Brief nicht lesen, ohne den Umschlag zu öffnen. Nur der Empfänger kann die enthaltene Nachricht nach Erhalt lesen. Erhält der Empfänger jedoch einen geöffneten Umschlag, so weiß er, dass die Authentizität und Integrität nicht mehr gewährleistet sind.

Im Gegensatz dazu gleicht eine E-Mail eher eine Postkarte. Jeder, der sie in die Hand bekommt, bzw. jeder Server der die E-Mail weiterreicht, kann den Inhalt im Klartext lesen, kopieren und ggf. verändern.

Möchte ich nun in bestimmten Fällen vermeiden, dass meine Nachricht für unbekannte Dritte lesbar ist, muss ich mir Maßnahmen überlegen, wie ich die Vertraulichkeit sicherstellen kann.

Bekannte Probleme

Vertraulicher Kommunikation im Internet stehen vor allem drei bekannte Probleme entgegen.

  • Die Verfahren sind für den Anwender meist extrem unkomfortabel in der Anwendung.
  • Die Verfahren sind so komplex, dass technisch wenig versierte Anwender sie nicht verstehen bzw. nachvollziehen können.
  • Ob die Verfahren wirklich ein hohes Maß an Sicherheit bieten lässt sich meist nur schwer einschätzen.

Alle drei Punkte sorgen dafür, dass auf eine digitale Signatur bzw. Verschlüsselung meist verzichtet wird.

Ich will es dennoch versuchen und schaue mir dazu die folgenden Lösungen an.

Mögliche Lösungen

Auf den ersten Blick bieten sich fünf Möglichkeiten, um das gesteckte Ziel zu erreichen:

  • DE-Mail,
  • E-Postbrief,
  • E-Mail „Made in Germany“,
  • Einsatz von GnuPG oder
  • S/MIME

Rufen wir uns nochmal kurz das Ziel in Erinnerung. Ich möchte, dass die Kommunikation zwischen dem Sender und dem Empfänger der Nachricht vertraulich bleibt. Dabei möchte ich so nah wie möglich an die Vertraulichkeit des klassischen Briefs herankommen.

Dabei bin ich mir bewusst, dass es Geheimdiensten unter Umständen trotzdem möglich ist an den Inhalt meiner Nachricht zu gelangen. Dieses Problem stellt sich jedoch auch beim klassischen Brief. Wie gesagt, 100%-ige Sicherheit gibt es nicht. Aber ich möchte versuchen es ihnen so schwer wie möglich zu machen. Wenn es mir dabei jedoch gelingt alle anderen Freunde von Big Data auszusperren, ist dies schon als Sieg zu werten.

Kommen wir zu den oben genannten Lösungen im Einzelnen.

DE-Mail und E-Postbrief

Meine Kritik an diesen beiden Produkten habe ich bereits in meinem Artikel „DE-Mail und E-Postbrief – Zwei echte Rohrkrepierer“ geäußert.

Beide Produkte bieten aktuell keine Ende-zu-Ende-Verschlüsselung. Während der Übertragung wird die Nachricht auf den Servern der Anbieter entschlüsselt, verarbeitet, wieder verschlüsselt und weitergeleitet. Nach Angaben der Anbieter wird die Nachricht entschlüsselt, um sie auf enthaltene Schadsoftware zu überprüfen. Der kritische Punkt ist jedoch, dass sie überhaupt entschlüsselt wird. Damit ist der Inhalt der Nachricht nicht mehr vertraulich. Aus diesem Grund kommen beide Produkte für mich nicht in Frage. Weder für den privaten Gebrauch, noch für die Kommunikation mit Ärzten, Versicherungen oder Behörden.

E-Mail „Made in Germany“

Die E-Mail „Made in Germany“ hat das gleiche Problem wie die DE-Mail und der E-Postbrief.

Zitat:

Entgegen zunächst anders lautender Angaben wird bei „E-Mail made in Germany“ genau wie bei De-Mail die Mail auf den Servern der beteiligten Unternehmen mit einem Virenscanner auf Virenfreiheit geprüft. Wer dies nicht wünscht, muss den Inhalt der Mail und etwaige Attachments verschlüsseln.

Die einzige „Neuerung“ im Vergleich zur bisherigen E-Mail Kommunikation besteht darin, dass die E-Mails beim Transport von Server zu Server nun endlich verschlüsselt übertragen werden und nicht an jedem Router, den sie passieren, mitgelesen oder verändert werden können. Dies ist jedoch keine echte Innovation, da die Technik zur Transportverschlüsselung bereits seit Ende der 90’er Jahre vorhanden ist.

Offen bleibt lediglich die Frage, ob man deutschen Providern mehr Vertrauen entgegen bringen kann, als anderen, oder eben nicht. Da ich auch mit Personen außerhalb Deutschlands oder Europas kommuniziere geht der Nutzen dieser Lösung für mich gegen Null.

GnuPG und S/MIME

GnuPG und S/MIME sind zwei verbreitete Möglichkeiten um Daten digital zu signieren und verschlüsseln zu können.

GnuPG wurde in RFC4880 definiert. Die Spezifikationen zu S/MIME finden sich in RFC1847, RFC2633, RFC3851 und RFC5751.

Zuerst die schlechte Nachricht. Beide Verfahren sind nicht kompatibel zueinander. Daher stellt sich als erstes die Frage, auf welches Verfahren man setzen sollte. Im Internet bin ich auf den Artikel „S/MIME vs. OpenPGP: Eine Entscheidungshilfe“ gestoßen. Dieser Artikel war mir bei der Entscheidungsfindung sehr hilfreich. Meine Entscheidung gegen S/MIME fiel unter anderem wegen des folgenden Zitats:

X.509 verwendet ein streng hierarchisches System zur Zertifizierung von öffentlichen Schlüsseln. Eine Certificate Authority (CA) steht an der Spitze der Zertifizierungs-Hierarchie und signiert entweder direkt oder über Sub-CAs die Schlüssel aller Teilnehmer innerhalb der Public Key Infrastruktur (PKI). Die einzelnen Benutzer sind im Besitz ihres eigenen Schlüssels und des öffentlichen CA-Schlüssels und können dadurch die Gültigkeit unbekannter Zertifikate überprüfen.

Dadurch ergibt sich ein Sicherheitsrisiko, welches bei Wikipedia wie folgt beschrieben wird:

Für die Nutzung von S/MIME-Zertifikaten zur Verschlüsselung und Signierung wird aufgrund des Public-Key-Verschlüsselungsverfahrens ein Schlüsselpaar aus öffentlichem und privatem Schlüssel benötigt. Im Gegensatz zum Zertifikat können und sollten diese Schlüssel lokal beim Anwender erzeugt und mit den Zertifikaten verbunden werden. Oft werden die Schlüssel aber gleich von der Zertifizierungsstelle zusammen mit dem Zertifikat generiert und an den Anwender übermittelt. Dadurch ist der Zertifizierungsstelle der private Schlüssel bekannt, was unbedingt im Rahmen der Sicherheit vermieden werden sollte, da der Schlüssel in falsche Hände gelangen kann. Es gibt aber auch Verfahren, bei denen die Schlüssel durch den Webbrowser des Anwenders erzeugt werden. Dabei verlässt der private Schlüssel den PC des Benutzers nicht.

Nach den Enthüllungen rund um die NSA Affäre stehe ich zentralen Zertifizierungsstellen skeptisch gegenüber. Die meisten dieser Zertifizierungsstellen haben ihren Sitz in den USA und es liegt der Verdacht nahe, dass die Geheimdienste durch Hintertüren oder eingebaute Schwachstellen, die mittels dieser Zertifikate geschützte Kommunikation mitlesen können. Auf gut Deutsch: Mein Vertrauen in diese Zertifizierungsstellen wurde schwer in Mitleidenschaft gezogen.

Aus diesem Grund, und aufgrund der Tatsache, dass ich privat vorwiegend auf die Betriebssysteme Linux und Android setze, fiel meine Entscheidung auf GnuPG, welches für alle gängigen Betriebssysteme frei verfügbar ist.

Fazit: Bisher haben wir nur ein paar Überlegungen zu vertraulicher Kommunikation und möglichen Lösungen getroffen. Ihr seht wie lang dieser Artikel geworden ist. Dabei haben wir noch nicht ein Programm installiert, keine Nachricht signiert und auch noch keine Nachricht verschlüsselt.

In einem der nächsten Artikel werde ich mich daran wagen, mit Hilfe von GnuPG ein Schlüsselpaar zu erzeugen und eine erste verschlüsselte Nachricht zu versenden.

Glossar und Abkürzungsverzeichnis in LaTeX erstellen

In diesem Artikel möchte ich kurz beschreiben, wie man in LaTeX ein Glossar und ein Abkürzungsverzeichnis erstellt.

Dazu verwende ich das Paket glossaries. Falls dieses nicht in eurer TeX-Distribution enthalten ist, könnt ihr es bei CTAN herunterladen. Dort findet ihr ebenfalls die vollständige Dokumentation zum Paket.

Ich hatte bei der Verwendung einige Probleme mittels

\makeglossaries

die benötigen Verzeichnisse zu erstellen. Zwar konnte ich dieses Perl-Script auf der Konsole ausführen, es brachte jedoch weder eine Fehlermeldung, noch das gewünschte Ergebnis.

Mit Hilfe eines Kommilitionen konnte ich mir jedoch ein kleines Bash-Script schreiben, welches die benötigten Dateien mittels makeindex erstellt.

#!/bin/bash
# makeindex Aufruf zur Erstellung des Glossar:
## makeindex -s minimalbsp.ist -t minimalbsp.glg -o minimalbsp.gls minimalbsp.glo
# makeindex Aufruf zur Erstellung des Abkürzungsverzeichnis
## makeindex -s minimalbsp.ist -t minimalbsp.alg -o minimalbsp.acr minimalbsp.acn

# Variablen #####################################################################
Quelldatei=""

# Funktionen ####################################################################

usage()
{
cat << EOF
usage: $0 options

Dieses Script fuehrt die makeindex Laeufe fuer LaTeX aus, welche zur
Erstellung von Glossar und Abkuerzungsverzeichnis benoetigt werden.

Folgende Variablen muessen angegeben werden:
Quelldatei

Die Variablen koennen durch Bearbeitung des Scripts oder durch die folgenden
Optionen belegt werden.

OPTIONS:
-h Zeig diesen Hilfetext
-Q Name der LaTeX-Quelldatei
EOF
}

# Programmstart ################################################################

while getopts .hQ:. OPTION
do
case $OPTION in
h)
usage
exit 1
;;
Q)
Quelldatei="${OPTARG}"
;;
?)
usage
exit
;;
esac
done

if [[ -z $Quelldatei ]]; then
usage
exit 1
fi

makeindex -s $Quelldatei.ist -t $Quelldatei.glg -o $Quelldatei.gls $Quelldatei.glo
makeindex -s $Quelldatei.ist -t $Quelldatei.alg -o $Quelldatei.acr $Quelldatei.acn

Die aktuellste Version des Scripts gibt es stehts auf GitHub.
Ich habe ein Minimalbeispiel angehängt, an dem ihr euch das Ergebnis ansehen könnt.
Minimalbeispiel

Also dann, viel Spaß mit LaTeX.

Kommentar zum NSA Überwachungsskandal

Der NSA-Überwachungsskandal war ein, wenn nicht das Thema für das diesjährige Sommerloch.

Zwischen den Enthüllungen von Edward Snowden und den Beschwichtigungsversuchen von Innenminister Friedrich, brachte uns die deutsche Wirtschaft auch noch „E-Mail Made in Germany“.

Doch ist die ganze Aufregung überhaupt gerechtfertigt? Surfte man die letzten zwei Jahrzehnte nicht mit Scheuklappen durchs Internet, dürfte einen der NSA-Skandal nicht mehr, als ein müdes Lächeln abringen. Das die Industrienationen dieser Welt untereinander Wirtschaftsspionage betreiben, dürfte nicht verwundern. Das sie dies nicht an die große Glocke hängen ebenfalls nicht.

Auch, dass die Amerikaner sich nicht viel um Datenschutz scheren leuchtet schnell ein. Fällt starke Verschlüsselung in den U.S.A. doch unter das Waffengesetz. Erlaubt sind dort nur schwache (und teils veraltete) Verschlüsselungsalgorithmen, welche einfach zu brechen sind. Starke Verschlüsselung ist genehmigungspflichtig und geht oft mit dem Einbau einer Hintertür für die Geheimdienste und Ermittlungsbehörden einher.

Wer sich angesichts dieser Tatsachen wundert oder gar beschwert, dass die eigenen E-Mails bei GMail, Microsoft oder der Telekom von den Ermittlungsbehörden gescannt, gefiltert und ausgewertet werden, hat das Internet nicht verstanden. So ist eine E-Mail doch nicht mehr, als eine elektronische Postkarte. Auf jedem Server, den sie passiert, kann sie von jedem mit Zugriff auf den Datenstrom gelesen, kopiert und sogar verändert werden. Gegenüber der Postkarte hat die E-Mail sogar noch einen weiteren Nachteil. Während die Postkarte nur noch der Empfänger lesen kann, wenn sie am Kühlschrank hängt, kann die E-Mail auf dem Server des Providers immer noch von jedem gelesen und kopiert werden.

Da hilft auch das neue Wunderprodukt „E-Mail Made in Germany“ nicht viel, welches von der Telekom und United Internet ins Leben gerufen wurde. Die durchgängige Transportverschlüsselung ist eine wirksame Marketingstrategie. Ob sich dadurch auch das Sicherheitsgefühl steigern lässt, hängt vor allem davon ab, wie sehr man den deutschen Behörden vertraut. Dies muss jeder für sich selbst entscheiden.

Zum Glück ist das Sommerloch bald vorbei. Dann hören die Berichte über Verstöße gegen den Datenschutz und ausufernde Überwachung wieder auf. Die Aufregung verklingt und man richtet das Augenmerk wieder auf die wichtigen Themen, wie „Germany’s next Top Model“ oder „Fang dir einen Millionär“.

Und an die Geheimdienste dieser Welt:

Spart euch doch das viele Geld, für teure Überwachungssysteme. Steht doch eh fast alles in öffentlich zugänglichen Facebookprofilen.

Auf den Pi gekommen

Der anfängliche Hype ging noch spurlos an mir vorüber, doch letztlich bin ich doch noch auf den Pi gekommen. Natürlich geht es hier nicht um Kuchen, sondern um den Raspberry Pi.

Ein Gespräch mit meinem Arbeitskollegen hat mein Interesse an diesem Einplatinencomputer geweckt und ich habe mich entschlossen in Zukunft ein wenig damit zu experimentieren.

Doch wo fängt man an? Im Internet finden sich unzählige Quellen, die sich mit Projekten um und dem Pi selbst beschäftigen. Doch war es mir für den Einstieg zu mühsam mich durchs Internet zu wühlen. Ich wollte lieber etwas in der Hand haben. Darum bestellte ich mir zum Einstieg das eBook „Raspberry Pi: Einstieg – Optimierung – Projekte“ von Maik Schmidt. Wie der Buchtitel schon verrät bekommt man hier einen guten Einstieg in die Thematik. So wird z.B. schnell und einfach erklärt, was man braucht um den Pi zum ersten Mal mit einem Betriebssystem zu booten.

Angefixt und voller neuer Ideen habe ich also erstmal eine Bestellung beim IT-Versandhaus meines Vertrauens aufgegeben und

  • einen Raspberrry Pi,
  • zwei 8GB SDHC Cards und
  • ein Gehäuse für den Pi

bestellt.

Auf den folgenden Bildern seht ihr, was man alles braucht, um einen kompletten Rechner zusammenzusetzen. Dabei ist das Gehäuse sogar noch optional. :-)

Heute habe ich nun endlich gelegenheit die SD Card für den Pi vorzubereiten. Für den Pi gibt es bereits mehrere Betriebssysteme. Für den Anfang habe ich mich für Raspbian „wheezy“ entschieden, welches man auf der offiziellen Downloadseite herunterladen kann. Nach dem Download wird das Zip-Archiv entpackt und das Image mit dem folgenden Befehl auf die SD-Card kopiert.

sudo dd bs=1M if=2013-05-25-wheezy-raspbian.img of=/dev/mmcblk0

Bitte beachtet, dass der Name des Images und der eures Kartenlesers von obigem Befehl abweichen können. Der Kopiervorgang dauert einige Minuten, aber wenn alles klappt, erhalten wir eine bootfähige SD-Card, die Debian auf unseren Pi bringt.

Damit ist meine SD-Card nun bereit, um den Pi das erste Mal von ihr zu booten. Beim ersten Start nimmt man mittels Raspi-config noch einige Einstellungen vor. Ich möchte das entpsrechende Kapitel aus dem oben erwähnten Buch hier nicht zitieren. Daher empfehle ich euch eine Suchmaschine eurer Wahl zu bemühen oder auf einschlägige Literatur zurückzugreifen. Ich gehe nun erstmal mit meinem Pi spielen. ;-)

MySQL Relay log read failure beheben

Vor nicht allzu langer Zeit habe ich, mit Hilfe dieses Artikels, eine MySQL Master-/Slave-Replikation aufgebaut.

Heute ist es dann passiert. Nach einem Absturz des MySQL-Slave Servers funktionierte die Replikation nicht mehr. Die Ausgabe von

mysql> SHOW SLAVE STATUS\G

offenbarte folgende Fehlermeldung:

Relay log read failure: Could not parse relay log event entry. The possible reasons are:
the master's binary log is corrupted (you can check this by running 'mysqlbinlog' on
the binary log), the slave's relay log is corrupted (you can check this by running
'mysqlbinlog' on the relay log), a network problem, or a bug in the master's or slave's
MySQL code. If you want to check the master's binary log or slave's relay log, you will
be able to know their names by issuing 'SHOW SLAVE STATUS' on this slave.

In diesem Fall konnte die Replikation mit den folgenden Schritten repariert werden.

  1. STOP SLAVE;
  2. SHOW SLAVE STATUS\G
  3. Notiert die Einträge für ‚Relay_Master_Log_File‘ und ‚Exec_Master_Log_Pos‘
  4. RESET SLAVE;
  5. CHANGE MASTER TO MASTER_LOG_FILE=’Name_des_Master_Logfiles aus Schritt 3′, MASTER_LOG_POS=exec_master_log_pos aus Schritt 3;
  6. START SLAVE

Mit den oben beschriebenen Schritten werden alle Relay-Logs vom Slave-Server entfernt. Damit werden auch die evtl. korrupten Logs entfernt. Die Replikation beginnt anschließend genau an dem Punkt, an dem sie zuvor abgerissen ist, indem ein neues Binärlog vom Master-Server angefordert wird.

Und siehe da, ich hatte meine Replikation wieder am Fliegen.

MySQL Datenbanken auf neuen Server übertragen

Mit diesem Artikel möchte ich euch ein Tutorial bieten, dass erklärt wie Datenbanken von einem MySQL Server auf einen anderen übertragen werden können. Es kann euch damit bei der Konsolidierung oder Migration von MySQL-Servern gute Dienste leisten.

Um Inkonsistenzen zu vermeiden empfehle ich den MySQL-Quell-Server in den Read-Only Modus zu schalten. Dazu ist zuerst eine Anmeldung am MySQL Server erforderlich.

mysql -u root -p

Einschalten des Read-Only Modus:

mysql> set GLOBAL read_only = true;

Möchte man den Read-Only Modus später wieder abschalten, so meldet man sich wieder am Server an und führt den folgenden Befehl aus.

mysql> set GLOBAL read_only = false;

Es gibt im Prinzip mehrere Möglichkeiten die Datenbanken auf den neuen Server zu transferieren. Ich entscheide mich hier für den Weg der in meisten Fällen zum Ziel führen sollte. Wir können die gewünschten Datenbanken nun mit dem folgenden Befehl sichern. Um die Zeit für den Transfer über das Netzwerk zu reduzieren wird der Dump noch mit gzip gepackt.

shell> mysqldump -u root -p --databases db_name1 [db_name2 ...] >my_databases.sql
shell> gzip my_databases.sql
shell> scp my_databases.sql.gz user@zielserver:/zielverzeichnis/

Auf dem Zielsystem können die Datenbanken nun mit gunzip entpackt und in die Datenbank eingespielt werden.

shell> gunzip my_databases.sql.gz
shell> mysql -u root -p < my_databases.sql

Jetzt müssen wir noch dafür sorgen, dass auf dem neuen MySQL-Server die gleichen Benutzer wie auf dem Quellserver hinzugefügt werden und diese die gleichen Berechtigungen auf die Datenbanken erhalten wie sie sie auf dem Quellsystem besaßen. Ich habe mich dafür entschieden die benötigten Benutzer und Berechtigungszuordnungen mit dem folgenden Abfragemuster aus der mysql-Datenbank des Quellservers in eine Textdatei zu schreiben. Dazu muss ich die Tabellen user und db abfragen.

SELECT someColumn FROM `table`
WHERE foo LIKE '%foo%'
INTO OUTFILE '/tmp/dbdump.txt'

Wie genau obige Abfrage aussieht ist von Fall zu Fall unterschiedlich. In meinem Fall habe ich in zwei Abfragen die Dateien mysql_user.txt und mysql_db.txt erstellt. Diese sind nun auf den Zielserver zu übertragen.

Auf dem Zielserver müssen die Inhalte dieser Dateien nun wieder in die Tabellen user und db der Datenbank mysql eingespielt werden. Wer auf Nummer sicher gehen möchte testet den Import mit der Datenbank test, welche auf jedem MySQL Server vorhanden sein sollte. Das Einlesen der Dateien erledigt man mit dem LOAD DATA INFILE Kommando.

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [FIELDS
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number LINES]
    [(col_name_or_user_var,...)]
    [SET col_name = expr,...)]

Bei einigen Ubuntusystemen, auf denen AppArmor läuft kann es zu einem Fehler beim Einlesen der Datei kommen. Wer von diesem Problem betroffen ist, kann hier eine Lösung finden.

Damit ist es geschafft. Unsere Datenbanken sind nun auf dem neuen Server angekommen und wir können den alten im besten Fall abschalten.

Linux – Systemauslastung mit top analysieren

top – ist eines der wichtigsten Tools für den Linux Systemadministrator, wenn es darum geht die Systemauslastung eines Systems zu analysieren.

Sicherlich bin ich nicht der einzige, dem es nicht ganz leicht fällt alle Angaben von top auf Anhieb richtig zu interpretieren, wenn man es lange nicht mehr benutzt hat. Zum Glück habe ich jetzt im Web einen schönen Artikel gefunden, der die Systemanalyse mit top erläutert.

Auf www.pc-erfahrung.de habe ich den Artikel Linux – Systemauslastung analysieren, Schwachstellen finden entdeckt, welcher eine umfangreiche Beschreibung von top und eine Erläuterung der wichtigsten Optionen bietet.

An dieser Stelle vielen Dank an den Autor.