Wie kann man die Integrität der installierten Dateien auf einem Debiansystem leicht überprüfen?

Wenn man Monitoringtools wie tripwire oder rkhunter verwendet, um Veränderungen von installieren Dateien zu überwachen, hat man das Problem, dass die Tools nicht erkennen, ob die Dateien durch ein reguläres Paketupgrade verändert oder durch einen Unbefugten manipuliert wurden.

Wenn z.B. rkhunter meldet, dass die Datei /usr/bin/ldd verändert wurde, muss man manuell nachschauen, ob die Prüfsumme der Datei dem neusten Stand des Debianpaktes entspricht.

Es gibt ein Tool names debsums, der diese Aufgabe erleichtert. Die Installation erfolgt mit:

# apt-get install debsums

Nachdem das Tool installiert ist, kann man die Überprüfung auf Paket-Ebene durchführen:

# debsums file
/usr/bin/file OK
/usr/share/bug/file/control OK
/usr/share/bug/file/presubj OK
/usr/share/doc/file/README.Debian OK
/usr/share/doc/file/README.gz OK
/usr/share/doc/file/changelog.Debian.gz OK
/usr/share/doc/file/changelog.gz OK
/usr/share/doc/file/copyright OK
/usr/share/lintian/overrides/file OK
/usr/share/man/man1/file.1.gz OK

aber nicht auf Dateiebene:

# debsums /usr/bin/ldd
debsums: invalid package name ‘/usr/bin/ldd’

Man muss zuerst herausfinden, zu welchem Paket die Datei /usr/bin/ldd gehört.

# dpkg -S /usr/bin/ldd
libc-bin: /usr/bin/ldd

Damit man die Suche nicht jedes ausführen muss, hab ich ein kleines Shellscript geschrieben, der die diese Aufgabe übernimmt und mit den Ergebnissen debsums aufruft:

#!/bin/bash
EC=0
PKGS=$(dpkg -S “$@” | awk -F’:’ ‘{print $1}’ | sed -e ‘s/, /\n/g’ | sort | uniq)
for i in $PKGS; do
debsums “$i” | grep -v OK
dec=$PIPESTATUS
echo -n “=== Package ‘$i’ : ”
if [ $dec -eq 0 ]; then echo OK; else echo MODIFIED; EC=$dec; fi
done
exit $EC

In diesem Beispiel habe ich das Skipt check-inst.sh genannt. Die Nutzung ist einfach:

# ./check-inst.sh /usr/bin/ldd
=== Package ‘libc-bin’ : OK

Man kann das Skript mit mehreren Dateinamen aufrufen:

# ./check-inst.sh /usr/bin/file /usr/bin/ldd
=== Package ‘file’ : OK
=== Package ‘libc-bin’ : OK

Wenn man keinen absoluten Pfad verwendet bekommt man Suchergebnisse von installierten Paketen:

# ./check-inst.sh apache2
=== Package ‘apache2’ : OK
=== Package ‘apache2.2-bin’ : OK
=== Package ‘apache2.2-common’ : OK
=== Package ‘apache2-doc’ : OK
=== Package ‘apache2-mpm-prefork’ : OK
=== Package ‘apache2-suexec’ : OK
=== Package ‘apache2-utils’ : OK
=== Package ‘bash-completion’ : OK
=== Package ‘libapache2-mod-fcgid’ : OK
=== Package ‘libapache2-mod-php5’ : OK
=== Package ‘libapache2-mod-ruby’ : OK
=== Package ‘libapache2-mod-suphp’ : OK

Wenn die Ergebnisse OK sind, kann man mit ruhigem Gewissen sein Monitoringtool auf den neuen Stand bringen. Z.B. bei rkhunter:

# rkhunter –propupd –update

Hier ist eine Beispielausgabe, die die vom Benutzer modifizierten Dateien anzeigt:

# ./check-inst.sh /usr/bin/pear
/usr/bin/pear FAILED
/usr/bin/peardev FAILED
/usr/bin/pecl FAILED

/usr/share/php/pearcmd.php FAILED
/usr/share/php/peclcmd.php FAILED
=== Package ‘php-pear’ : MODIFIED

Das Skript gibt den ExitCode 0 zurück, wenn alle Überprüfungen erfolgreich waren, ansonsten den Fehlercode des erst fehlgeschlagener Überprüfung. Dies ist nützlich, wenn man zunächst nur an ExitCode interessiert ist und die Fehlergebnisse von einer Logdatei auslesen möchte.

Viel Spaß beim Ausprobieren
C.

E-Mails signieren und verschlüsseln mit Enigmail und Thunderbird

Mit Enigmail kann man ohne großen Aufwand seine Mails signieren und/oder verschlüsseln (auch Attachments). Enigmail ist als Plug-In allerdings nur für Thunderbird und Seamonkey erhältlich und erfordert die Installation von GnuPG (http://www.gnupg.org/) bzw. Gpg4Win (http://www.gpg4win.org/). Hier ein kleines How-To wie man die Verschlüsselung in 5 Minuten einrichtet.

Bevor es los geht: in diesem Tutorial gehe ich davon aus, dass Sie bereits eine funktionierende Version von Thunderbird (mindestens Version 2) installiert haben. Auch behandelt dieses Tutorial nur die Einrichtung auf Windows (selbst nur mit Win7 Ultimate getestet). Für andere Plattformen sind die Besonderheiten allerdings größtenteils in Bezug auf die Installation von GnuPG/Gpg4Win beschränkt, daher sollte es nicht schwierig sein, diese Anleitung für MacOS X oder Linux zu nutzen. Die englischsprachige Dokumentation finden Sie hier: http://enigmail.mozdev.org/documentation/quickstart-ch1.php.html#id2487302. Obwohl in der offiziellen Dokumentation empfohlen wird GnuPG zu installieren, befasst sich diese Anletung mit der Nutzung von Gpg4Win.

  • Schritt 1: Gpg4Win installieren.
    Zuerst also die Software Gpg4Win runterladen und installieren. Beim Installieren, einfach die vorgegebenen Optionen und Pfade übernehmen. Ein Neustart des Rechners ist anschließend erforderlich.
  • Schritt 2: Mit Kleopatra ein Schlüsselpaar erzeugen.
    Gpg4Win bringt einige Tools mit, um zahlreiche individuelle Anpassungen zu ermöglichen. Sie starten jetzt Kleopatra – sollte in der Startleiste von Windows erscheinen, sonst unter “Alle Programme” > “Gpg4Win” > “Kleopatra” auffindbar.
    Zum Erstellen eines Schlüsselpaares klicken Sie zunächst auf “Datei” > “Neues Zertifikat”, und danach auf “Persönliches Open-PGP Schlüsselpaar erzeugen”. Wenn Sie selbst aussuchen wollen welches Verschlüsselungsverfahren genutzt werden soll, klicken Sie auf “Erweiterte Einstellungen”.

    • Schritt 2a: Erweiterte Einstellungen. Legen Sie die Verschlüsselungsmethode, die Nutzung des Zertifikates und die Gültigkeitsdauer fest. Beide Verfahren angebotene RSA und DSA (+Elgamal) sind gut,allgemein empfohlen wird doch offenbar häufiger DSA. Die Haken lassen Sie wie vorgeschlagen gesetzt, also zum Signieren und Verschlüsseln. Als Laufzeit sind 2 Jahre wie vorgeschlagen eine gute Auswahl.

    Sie klicken nun auf “weiter” und schließlich auf “Schlüssel erzeugen”. Jetzt müssen Sie eine Passphrase eingeben, was nichts anderes als ein Passwort ist. Suchen Sie sich etwas kompliziertes aus, jedoch, woran Sie sich erinnern können… Am Besten sind Kombinationen aus Klein- und Großbuchstaben, Zahlen und Sonderzeichen. Die Länge Ihrer Passphrase sollte nicht weniger als 8 Zeichen betragen.

    • Schritt 2b: Öffentliche Schlüssel auf keys.gnupg.net ablegen. Sie können nur Ihren öffentlichen Schlüssel auf dem Community Server ablegen, wichtig für Kommunikationspartner, die so Ihre Identität prüfen können. Dort sind ggf. auch Informationen darüber zu finden, wie die Vertrauenskette um die gewünschte Identität aufgebaut ist.
  • Wenn Sie möchten können Sie nun auch eine Sicherung des kompletten Schlüsselpaares vornehmen (auf USB-Stick beispielsweise) oder den öffentlichen Schlüssel an Bekannte schicken.

  • Schritt 3: Enigmail Add-On installieren.
    Über “Extras” > “Add-Ons” gelangen Sie zu der Add-On Verwaltungsseite von Thunderbird. In dem Suchfeld oben geben Sie “Enigmail” ein, wählen Sie das passende Suchergebnis aus und folgen dann den Instruktionen zum Installieren.
    • Schritt 3a: Enigmail konfigurieren. Die Standard-Einstellungen sind im Prinzip in Ordnung. Wenn Sie den Experten-Modus einschalten erscheinen alle verfügbaren Optionen, in verschiedenen Reitern angeordnet. Dort können Sie beispielsweise die Cachezeit der Passphrase definieren, uvm..

    Ein Neustart von Thunderbird ist zum Abschließen der Installation bzw. für die Inbetriebnahme von Enigmail erforderlich.

  • Schritt 4: E-Mails signieren und/oder verschlüsseln.
    Im Fenster zum Verfassen von neuen E-Mails einfach können Sie Auswählen, ob Sie signieren wollen oder verschlüsseln. Dazu selektieren Sie einfach die entsprechende Zeile im “OpenPGP” Menue. Sonst ist alles wie gehabt. Das Add-On zeigt nun fortan an, wenn diese signiert oder verschlüsselt wurde, ob die Identität echt ist oder nicht. Auch lassen sich Informationen zu dem öffentlichen Schlüssel anzeigen.

Es ist jederzeit möglich nachträglich Anpassungen durchzuführen. In Thunderbird finden gibt es ein Menue “OpenPGP” unter dem zahlreiche Optionen zur Verfügung stehen.

Wichtige Anmerkung: Enigmail hat noch einige Problemchen mit E-Mails, die in HTML geschrieben werden. Es wird geraten, das Verfassen der E-Mails in Thunderbird auf plain text zu ändern. Dazu gehen Sie einfach unter “Extras” > “Konteneinstellungen” > “Verfassen und Adressieren” und entfernen den Haken bei “Nachrichten im HTML-Format verfassen”.

Mozilla Projekt Homepage: https://addons.mozilla.org/de/thunderbird/addon/enigmail/
Englischsprachige Dokumentation zu Gpg4Win: http://www.gpg4win.org/doc/en/gpg4win-compendium_11.html

PHP 5.4.0 released


Neben vielen kleinen Fixes und Verbesserungen, wurden folgende wesentliche Funktionen hinzugefügt:

  • Traits: Methode zur Wiederverwendung von Code

    Erläuterung: Traits ist ein Mechanismus zur Wiederverwendung von Code, der in Programmiersprachen mit einfacher Vererbung wie PHP verwendet wird. Ein Trait kann verwendet werden die Beschränkungen der einfachen Vererbung aufzuweichen indem er erlaubt, dass Mengen von Methoden frei in mehreren unabhängigen Klassen die in verschiedenen Klassenhierarchien stecken wiederzuverwenden. Die Semantik der Kombination von Traits und Klassen ist so definiert, dass die Komplexität reduziert wird und die üblichen Probleme vermeidet, die mit Mehrfachvererbung und Mixins in Verbindung gebracht werden.
    Ein Trait hat Ähnlichkeit mit einer Klasse ist aber nur dafür vorgesehen Funktionalität in einer feingranularen und konsistenten Art und Weise zu bündeln. Es ist nicht möglich einen Trait aleinstehend zu instantiieren. Es handelt sich um einn Zusatz zur traditionellen Vererbung und erlaubt horizolntale Komposition von Verhaltensweisen, d.h. die Verwendung von Klassenmethoden ohne Vererbung vorauszusetzen.

  • Built-in webserver für CLI (Command Line Interpreter)
  • Code wurde von alten “deprecated” Funktionen gesäubert

Darüber hinaus soll PHP 5.4 deutlich leistungsfähiger sein, vor allem dank der verbesserten Zend Engine.

Es wurde auch einige Funktionen entfernt, die sich ggf. beim Upgrade durch mangelnde Kompatibilität bemerkbar machen könnten.

  • Register globals, magic quotes und safe mode wurden entfernt
  • break/continue $var Syntax wurde abgeschafft
  • allow_call_time_pass_reference wurde aus der php.in entfernt
  • default_charset ist jetzt UTF-8

Apache Webserver rules, Nginx rocks

Eine kürzlich veröffentlichte Statistik von Netcraft bescheinigt Apache den absoluten Spitzenplatz bei den Webservern weltweit. Mit knapp 58% im Januar 2012 ist er mehr als 4mal so verbreitet als die Nummer zwei der Liste.

Nginx, ein weiterer Open Source Webserver (BSD Lizenz), hat nach dieser aktuellen Studie gerade Microsoft IIS überholt und ist mit 12,18% (MS IIS 12,14%) Marktanteil auf Platz 2.

Es ist allerdings zu bemerken, dass die Anzahl Webserver mit Apache schlagartig im Mai-Juni 2011 zunimmt (fast eine Verdoppelung). Dieser “Sprung” lässt sich wahrscheinlich nicht (nur) mit einer spontanen Zunahme an Apache-Webservern erklären. Vermutlich ist eine veränderte Messmethode der Grund..? Jedenfalls wäre der Vorsprung immernoch doppelt so hoch, wenn die Zunahme “linear” verlaufen würde. Immer noch beachtlich!