PEAR Probleme mit Laconi.ca LDAP-Patch

Letzte Woche habe ich unser internes Laconi.ca System um eine rudimentäre LDAP-Integration erweitert. Der im Laconi.ca Ticket-System veröffentlichte LDAP-Patch basiert auf PEARs Net_LDAP. Der Patch führt mittels des Benutzernames beim Login eine LDAP-Suche durch und versucht sich mit dem gefundenen DN des Benutzers und dem angegebenen Passwort am LDAP-Server zu authentifizieren (binden):

// rebind to authenticate the password now we know the user exists
$entries = $search->entries();
$bind_result = $ldap->bind($entries[0]->dn(), $password);

Und genau hier gab es Probleme mit dem Code, zumindest auf unserer Standard Debian LAMP-Installation mit Apache 2.2 und PHP 5. Wenn der LDAP-Bind fehl schlägt, soll eigentlich der Fehlercode abgefragt und mittels einem “False-Return” der Anwendung mitgeteilt werden, dass die angegebenen Legitimationsdaten inkorrekt sind:

if ($ldap->getCode() == LDAP_INVALID_CREDENTIALS) {
return false;

Soweit kam die Anwendung jedoch nicht. Bei einem fehlgeschlagegen LDAP-Bind hat das PEAR LDAP-Modul die Anwendung einfach mit einem DB-Fehler und einem “die” beendet.

Die Lösung: Mittels folgender PEAR-Anweisung lässt sich die Standard-Fehlerbehandlung auf “PEAR_ERROR_RETURN” umstellen, so dass bei einem fehlgeschlagenen LDAP-Bind nicht mehr die Anwendung beendet, sondern nur einer Fehlercode zurückgegeben wird:

PEAR::setErrorHandling(PEAR_ERROR_RETURN);

Verschlüsseltes LVM vergrößern

Vorletzte Woche habe ich doch tatsächlich bei der Daten-Partition meines Fileservers die 90% Kapazitätsmarke erreicht. Nun stand eine Vergrößerung des Dateisystems an. Die Besonderheit dabei war, dass es sich um eine verschlüsselte Partition auf einer “Logical Volume” handelte. Dennoch ging die Vergrößerung mit nur wenigen Handgriffen ohne Probleme über die Bühne:

Partition unmounten und Verschlüsselung schließen:

# sudo umount /home/fileserver
# sudo cryptsetup luksClose fileserver

LVM vergrößern (hier um 512GB):

# sudo lvresize /dev/data/fs_crypt -L +512G

Verschlüsselung wieder aktiveren:

# sudo cryptsetup luksOpen /dev/data/fs_crypt fileserver

Dateisystemcheck durchführen (sonst beschwert sich resize2fs):

# sudo e2fsck -f /dev/mapper/fileserver

Schließlich Dateisystem auf dem verschlüsseltem Device vergrößern:

# sudo resize2fs /dev/mapper/fileserver

Mal sehen, wie lange das jetzt hält :)

Lüftersteuerung im Fileserver

Nach einer Blog-Sommerpause stelle ich heute eine kleine Verbesserungsarbeit an meinem Mini-ITX Fileserver vor. An dieser Stelle möchte ich mich für den Lob und die Danksagungen für meinem Blog-Artikel Mini-ITX Raid-Fileserver und dem dazugehörigen Wiki-Dokument UbuntuHomeserver bedanken. Es freut mich, wenn ich dem einen oder anderen mit ein paar nützlichen Tipps unterstützen konnte.

Nun aber zum Thema: Das Mini-ITX Gehäuse ES34069 von Chenbro, mit dem ich bisher sehr zufrieden bin, hat einen Schönheitsfehler: Der Geräuschpegel der beiden, hinteren 70cm Lüfter, die die vier vorderen SATA-Festplattenslot kühlen, ist recht hoch. Gerade in einer ruhigen Umgebung sind die Lüfter deutlich zu hören. Nach ein paar Tests mit niedrigeren Spannungen an den Lüftern (7-10V) stand fest, dass mit einer Lüftersteuerung der Geräuschpegel stark abgesenkt werden kann. Die Wahl fiel auf den T-Balancer MiniNG, eine 2-Kanal Lüftersteuerung, die im Chenbro-Gehäuse über dem ITX-Mainboard Platz findet. Einen der beiden zur Verfügung stehenden Temperatursensoren habe ich in einen der SATA-Wechselslot befestigt, um dort direkt die Temperatur der Festplatten zu ermitteln.

Das Ergebnis ist eine fast nicht mehr hörbare Kühlung bei normaler Umgebungstemperatur. Zudem gehen die Lüfter komplett aus, wenn die Festplatten in Standby fahren – ein großer Vorteil gegenüber einem festen Herabsetzen der Lüfterspannung (z.B. 7V) ohne Steuerungselektronik.

Bilder und weitere Details zur Konfiguration der Lüftersteuerung finden sich im Abschnitt Geräuscharme Kühlung im HomeServer-Wiki-Artikel.

Meine Top35 Firefox Plugins

Nach dem Blick auf die Statusleiste meines Firefox-Browsers haben mich in letzter Zeit einige nach meinen installierten Plugins gefragt. Hier die Liste meiner Firefox 3.0 Plugins unter Mac OS X (die unterschrichenen Plugins sind meine meist genutzten):

Datenschutz / Sicherheit / Privatsphäre:

  • Adblock Plus blockt Werbeeinblendungen jeglicher Form auf Webseiten.
  • CookieSafe managt den Umgang mit Cookies: temporäres oder dauerhaftes Erlauben bzw. Sperren von Cookies.
  • Counterpixel sucht versteckte Image-Pixel von Webanalyse-Diensten wie Google Analytics, Sitecatalyst, IVW.
  • FormFox zeigt per mouse-over das Ziel eines HTML-Formulars an, um z.B. zu sehen an welche Adresse ein eingegebenes Passwort geschickt würde.
  • FoxyProxy ist ein Proxy-Management-Werkzeug, welches die begrenzten Proxy-Einstellungen von Firefox erweitert.
  • Ghostery zeigt versteckte Skripte von Webanalyse-Diensten wie Google Analytics, Omniture, Quantcast, usw. an.
  • Mark Unsecured Password Elements markiert Passwort-Felder rot, die unverschlüsselt verschickt würden.
  • NoScript sperrt und erlaubt JavaScript-Code auf Webseiten temporär oder dauerhaft pro Domain.
  • Download / Bedienung:

  • Download Statusbar zeigt Downloads statt in einem Download-Fenster in einer platzsparenden, zusätzlichen Download-Statusleiste an.
  • DownThemAll! ist ein Download-Manager und -Beschleuniger (unterstützt mehrere Verbindungen pro Download).
  • FaviconizeTab minimiert die Größe eines Tabs in Firefox auf das Favicon, konfigurierbar auch automatisch für bestimmte Webseiten.
  • FireGestures etabliert Mouse-Gesten in Firefox, mit dem verschiedene Kommandos oder Benutzerskripte ausgeführt werden können.
  • Tab Mix Plus erweitert die Tabbed-Browsing-Funktionen von Firefox (z.B. mehrspaltige Tableiste).
  • Erweiterungen / Tools:

  • 1Password ist ein Passwort-Manager für Mac OS X, welches mit einem entsprechendem Firefox Plugin ausgeliefert wird.
  • Abduction erstellt Screenshots kompletter Webseiten oder Ausschnitte davon.
  • Cooliris stellt Bilder und Videos von Webseiten (z.B. YouTube, Flickr, Facebook)  auf einer 3D-animierten Wand dar.
  • GooglePreview setzt auf den Google- und Yahoo-Suchergebnisseiten Vorschaubilder der gefundenen Webseiten ein.
  • Greasemonkey und Stylish passen die Anzeige von Webseiten mittels Javascript-Code und CSS an (Snippet-Sammlung: userscripts.org).
  • It’s All Text! kann den Inhalt von Textfeldern (textareas) auf Webseiten in externen Editoren bearbeiten.
  • Linkification konvertiert Text-Links in “klickbare” URLs.
  • Nagios Checker zeigt in der Firefox Statusbar Ereignisse des Netzwerkmonitoring-Dienstes Nagios an (z.B. Up, Warning, Critical, Down).
  • Web-Entwicklung:

  • ColorZilla ist ein Set aus ColorPicker, Page Zoomer und DOM Color Analyzer.
  • Firebug ist ein Entwicklungswerkzeug zum Editieren, Debuggen und Überwachen von CSS, HTML und Javascript.
  • FireCookie verwaltet und zeigt Cookies von Webseiten in der Firebug Konsole an.
  • FirePHP protokolliert PHP-Anwendungen und -Frameworks in der Firebug Konsole.
  • Javascript Deobfuscator zeigt welcher Javascript Code auf der Webseite ausgeführt wird, auch wenn dieser “obfuscated” ist.
  • Live HTTP Headers zeigt den HTTP-Header beim Aufruf von Webseiten an.
  • Page Speed testet die Performance von Webseiten und gibt Vorschläge zur Verbesserung dieser.
  • Web Developer erweitert Firefox um diverse Webentwickler-Werkzeuge.
  • YSlow analysiert die Geschwindigkeit von Webseiten nach Yahoos Performance-Kriterien.
  • Web Security / Penetration:

  • HackBar bietet eine erweiterte Adressleiste für einfache Web Security- und Penetrationstests.
  • SQL Inject Me testet Webseiten auf “SQL-injection” Schwachstellen.
  • Tamper Data zeigt HTTP/HTTPS Header- und Post-Parameter an und kann diese live modifizieren.
  • XSS Me testet Webseiten auf “reflected Cross-Site Scripting (XSS)” Schwachstellen.
  • X-Forwarded-For Spoofer fälscht den Header-Parameter “X-Forwarded-For”.
  • Fehlen noch unschlagbare Plugins, die umbedingt erwähnt werden sollten? Über Ergänzungen der Liste per Kommentar würde ich mich freuen.

    LinuxTag 09: Websicherheit

    Einen schönen Überblick über Websicherheit gab Dirk Wetter in seinem gestrigen LinuxTag-Vortrag. Nach ein paar einfachen Beispielen und Erläuterungen zu XSS, CSRF und Injections, ging er detaillierter auf Web Application Firewalls (WAF) und anschließend auf kommerzielle und Open-Source Audit-Werkzeuge ein. Hier der direkte Link zu den Folien (PDF): Webunsicherheit 2.0

    LinuxTag 09: Clustered CIFS

    Im Anschluss an den Vortrag über das Clusterdateisystem GPFS von IBM hat gestern Michael Adam vom Samba Team eine geclustertes CIFS-Lösung mit Samba vorgestellt. Für jeden, der Hochverfügbarkeit und Lastverteilung für sein NAS benötigt, ein spannendes Projekt. Meine Aufzeichnungen vom Vortrag habe ich gerade in das Wiki gestellt. Tieferführende Details kann man dem Samba-Paper entnehmen.

    LinuxTag 09: OpenLDAP Sync mit Active Directory

    Wir sitzen gerade in der Kantine des LinuxTags und reden über den eben gehaltenen Vortrag über das LSC Projekt, mit dem eine Synchronisierung zwischen OpenLDAP und Active Directory realisiert werden kann. Neben den Standardattributen aus dem LDAP werden dabei auch spezielle Werte im Active Directory, wie das Sperren von Konten oder das Ablaufdatum eines Benutzerpassworts, synchronisiert. Vor allem für heterogene IT-Landschaften mit Linux und Windows sehr nützlich. Die Aufzeichnungen des Vortrags stehen wieder im Wiki bereit.

    LinuxTag 09: Nagios Addons

    Ein weiterer interessanter Vortrag wurde heute über “Nagios in größeren IT-Umgebungen” gehalten. Neben einer kurzen Einführung in Nagios, wurde auf die erweiterten Nagios-Funktionen, empfehlenswerte Addons und weitere Integrationsmöglichkeiten mit anderen Webapplikationen eingegangen. Dabei wurde wieder mal deutlich wie groß mittlerweile die Community rund um Nagios geworden und wieviele nützliche Programme zur sinnvollen Erweiterung von Nagios entstanden sind. Auch wir setzen natürlich Nagios für sämtliche Serverüberwachungen erfolgreich bei uns ein. Eine Liste aller genannten Addons und Anwendungen mit einer groben Beschreibung findet sich im LinuxTag2009Nagios-Wikidokument.

    LinuxTag 09: GPFS für Cluster

    linuxtaglogoSeit gestern Abend bin ich mit zwei Kollegen in Berlin, um den diesjährigen LinuxTag 2009 zu besuchen. Im Verlauf der Woche (bis einschließlich Samstag) versuche ich dabei hier im Blog über interessante Vorträge und Gespräche auf der Messe zu berichten.

    Der erste Vortrag heute handelte über das Clusterdateisystem GPFS von IBM. Da wir selbst eher weniger gute Erfahrungen mit dem Clusterdateisystem von Oracle (OCFS2) gemacht haben, waren wir von dem alternativen Cluster-Produkt von IBM und den Erfahrungen, die die vortragende Firma damit in Kundenprojekten sammeln konnte, recht angetan. Alle wichtigen Notizen aus dem Vortrag sind unterhalb des LinuxTag 2009-Wiki-Dokuments zufinden.

    Festplatten in Standby fahren

    Um Strom zu sparen, lassen sich Festplatten nach einer bestimmten Zeit der Inaktivität automatisch herunterfahren. Das kann vor allem bei Heim-Servern, die mit mehreren (vielleicht noch älteren, nicht stromsparenden) Festplatten ausgestattet sind und auf die nur bei Bedarf zugegriffen werden, einiges an Strom und Geld sparen. Bisherige Festplatten (IDE, aber auch SATA) haben hierfür den “IDE idle timer” unterstützt, den man mit hdparm wie folgt setzen kann:

    hdparm -S Zeitangabe /dev/sdX

    Nach Ablauf der Zeitangabe (siehe Manpage, je nach Höhe ein Vielfaches von Sekunden oder Minuten) wird die Festplatte, wenn in dieser Zeit kein Zugriff erfolgt ist, heruntergefahren und automatisch wieder hochgefahren, wenn wieder darauf zugegriffen wird.

    Leider unterstützten diese Funktion einige, neuere Festplatten nicht mehr. Daher muss der Inaktivitäts-Timer als Software realisiert und die Festplatte nach Ablauf der Zeit manuell heruntergefahren werden. Eine solche Implementierung ist hd-idle, die sich unter Ubuntu/Debian recht einfach einrichten lässt. Der Ubuntu-Homeserver-Artikel wurde hierfür um ein neues Kapitel erweitert, welches die Einrichtung von hd-idle kurz erläutert.

    Undervolting mit Ubuntu

    Mit Hilfe von Undervolting, dem gezielten Herabsetzen der Core-Spannung der CPU, lässt sich der Stromverbrauch und die Erwärmung der CPU senken. Im Gegensatz zum Underclocking, bei dem der CPU-Takt heruntergesetzt wird, bleibt beim Undervolting der CPU-Takt und damit die volle CPU-Leistung erhalten, sprich weniger Stromverbrauch und Abwärme bei gleicher Leistung. Da bei diesem Verfahren ähnlich wie beim Overclocking Fertigungstoleranzen der CPU ausgenutzt werden, lassen sich CPUs unterschiedlich “gut” undervolten.

    Die CPU-Spannung lässt sich zum einen im BIOS einiger Mainboardhersteller herabsetzen oder auch per Software während des Betriebs. Unter Linux existiert das Linux-PHC Projekt.

    Für Ubuntu steht in einem externen Repository der aktuelle Ubuntu-Linux-Kernel 2.6.28.11 mit den entsprechenden Linux-PHC-Patches zur Verfügung. Die Installation und die Verwendung mit einem Intel E5200 Dual-Core CPU und dem Intel DG45FC Mainboard ist im Wiki beschrieben.

    Mit Hilfe von Undervolting konnte bei 100%iger CPU-Auslastung der erwähnten Systemkonfiguration 11 Watt eingespart werden. Leider limitiert das Intel DG45FC Mainboard das Undervolting. Bei anderen Mainboards sind weitere Einsparungen und diese auch im Idle möglich.

    Bei dieser Gelegenheit habe ich den Stromverbrauch meines Mini-ITX-Systems in verschiedenen Konfigurationen getestet. Hier die interessantesten Ergebnisse:

    • Ausgeschaltet mit GBe Link: 1.4W
    • Idle nur mit 2.5″ Systemplatte: 35W
    • Volllast nur mit 2.5″ Systemplatte: 51W (ohne Undervolting: 62W)
    • 4x 1TB WD10EADS Idle im IntelliPark: +10W
    • 4x 1TB WD10EADS Idle ohne IntelliPark: +16W
    • 2×2GB statt 1×2GB RAM: +1.5W
    • Idle ohne GBe Link: -1.2W

    Der Idle-Wert von 35W schlägt sich im Vergleich zu aktuellen Dual-Core Atom-Systemen mit 25W (bis 35W je nach Ausstattung) recht gut. Dabei steht bei Bedarf wesentlich mehr CPU-Leistung als mit einem Atom-CPU zur Verfügung. Möchte man z.B. hohe IO-Raten mit Verschlüsselung erreichen kann es mit einem Atom-System eng werden (siehe dazu Performance-Einbrüche beim Zugriff auf verschlüsselte Daten auf NAS-Geräte mit Atom-CPUs).

    Weitere Ergebnisse und Stromkostenberechnungen finden sich im Wiki.

    Media-Streaming-Server firefly

    Möchte man von mehreren Systemen auf eine zentrale Musik-Bibliothek zugreifen, bietet sich der Betrieb eines Media-Streaming-Servers an. Alle Musikdateien liegen dabei zentral auf dem Server und werden per Netzwerk an beliebige Clients gestreamt. Clients können dabei PCs mit Windows- oder Linux, Macs aber auch Hardware-Geräte sein. Firefly ist solch ein Open-Source Media-Server, der viele Streaming-Clients, u.a. auch ITunes unterstützt. Er ist unter Ubuntu schnell installiert und eingerichtet, macht jedoch unter der aktuellen Ubuntu 64Bit Version 9.04 Probleme. Wie man eine angepasste Version von Firefly installiert und einrichtet, ist im UbuntuHomeserver-Wikidokument beschrieben.