Rss

  • youtube
  • google

Archives for : November2014

Scripting: Das sichere Speichern von Passwörtern

Um seine privaten Passwörter zu speichern gibt es ja mittlerweile viele Tools wie z.B. PasswortDepot, Keepass, oder Lastpass die ein verschlüsseltes speichern ermöglichen.
Im Firmenumfeld gibt es aber unter Umständen einige Gründe in denen man Passwörter in Powershell oder Batch Scripten ablegen muss.

Jetzt gibt es verschiedene Wege ein Passwort zu speichern und zu nutzen:

1. Im Klartext
Leider ist es immer noch viel zu oft gängige Praxis, das Passwort aufgrund von Faulheit einfach im Klartext in einer Textdatei abzuspeichern.

2. Verschlüsselt via MD5/SHA-1
Die Verschlüsselung des Passwortes sollte auf jeden Fall im Umgang mit Kundendaten oder zum Beispiel für Logindaten erfolgen.
Wenn man ein automatischen Cronjob erzeugt der Remote Daten abgreift, bringt dies allerdings nichts, da ja immer noch das Kennwort (zum Entschlüsseln) irgendwo gespeichert bzw. eingegeben werden muss.
Weitere Infos zum Hashen von Passwörter findet ihr hier sehr schön beschrieben.

3. Verwendung des PSCredential (unter Windows)
Mit der Powershell wurde das PSCredential-Objekt eingeführt – ein Objekt in dem Username + Passwort verschlüsselt abgelegt werden.
Diese Funktion basiert auf der Windows Data Protection Api (DPAPI) wie auch alle anderen Windows-Anwendungen wie z.B. Internet Explorer usw.

Das erzeugen eines PSCredentials funktioniert zum Beispiel so:

Wie man sieht besteht das Objekt aus Benutzernamen und dem Passwort welches als „System.Security.SecureString“ gespeichert wird:

Um das Passwort jetzt abspeichern zu können muss es in einen String konvertiert werden. Dieser String ist bereits verschlüsselt und sieht ungefähr so aus:

Zum Speichern in einer Datei kann man die Ausgabe per Pipe umleiten:

Wie liest man ein gespeichertes Passwort aus einer Datei wieder ein ?

Hier sollte beachtet werden, dass man den Usernamen explizit nochmal von Hand angeben muss, das Kennwort aber aus der Datei importiert wird.
Die $credential Variable ist nun wieder unser PSCredential-Objekt und kann normal weiter verwendet werden.

Wenn man nur das Passwort als SecureString über die Konsole einlesen möchte geht dies alternativ auch so:

Seit Powershell 3.0 gibt es auch die Möglichkeit vollständige Objekte als XML-Datei zu exportieren. Dies kann unter Umständen einfacher sein, da dass Passwort automatisch konvertiert wird und das Objekt auch den Usernamen enthält.

Der Import funktioniert ebenso simple:

Die XML Datei ist wie folgt aufgebaut:

Wichtig: Das PSCredential bzw. der SecureString den man erzeugt wird auf Basis von der PC-Hardware aber auch von Werten des aktuellen Benutzers erzeugt. Das heißt, dass dieser String nicht unter einem anderem User funktioniert.

Das hat zudem den Vorteil, dass man ohne Zugangsdaten des Users nichts mit dem gespeichertem Passwort anfangen kann.
Eine Nutzung zum Beispiel über den Task Scheduler wäre dennoch möglich, denn man kann dort sein Script unter einem anderem Benutzer ausführen lassen. Dafür müssen bei der Erstellung des Tasks die Zugangsdaten des Benutzers einmalig angegeben werden. Diese werden dann wiederum verschlüsselt von Windows’s Credential Manager gespeichert.

Abschließend gilt zu sagen, dass Sicherheit natürlich auch viel mit Bequemlichkeit zu tun hat – dennoch sollte man im Firmenumfeld seine Kennwörter nicht im Klartext in irgendwelchen Dateien abspeichern, jedenfalls sofern es nicht anders möglich ist.
Falls man dennoch mal mit unsicheren Programmen wie Net-Use, FTP etc. arbeiten muss, die keine -Credential Objekte unterstützen gibt es noch das Tool „Get-PSCredential“ von Thomas Franke, welche auch den Umgang mit solchen Programmen zumindest so Sicher wie möglich macht.

WordPress – Browser Caching einschalten

browser-cachingIch hatte ja schon vor längerer Zeit mal was zu dem Speedtest Verfahren von Google erzählt, welches die Geschwindigkeit eurer Webseite/Blog etc. misst.
Neuerdings wurde bei mir angekreidet, dass ich doch Browser Caching einschalten sollte – hier kurz erklärt wie das funktioniert.

Voraussetzung ist allerdings dass ihr als Webserver den Apache verwendet und das Plugin „mod_expires“ installiert ist.
Man kann das Browsercaching für verschiedene Dateitypen einstellen, sowie mit verschiedenen Ablaufzeiten. Die ausführliche Dokumentation findet ihr hier, ich habe mich mal auf das nötigste beschränkt:

Den obigen Text müsst ihr in die .htaccess Datei in eurem Stammverzeichnis des Webservers platzieren. Wenn sie nicht vorhanden ist, dann müsst ihr sie anlegen.

Und siehe da jetzt können statische Inhalte wie Bilder, CSS Dateien und Javascripte vom Browser gecacht werden, was zu einer schnelleren Ladezeit führt….. (und Google ist auch glücklich ;-))