Stoppt die Vorratsdatenspeicherung! Jetzt klicken &handeln! Willst du auch an der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien:

Letzte Blogeinträge

Reaktion auf DSA 1571-1 (Debian SSH-Keys neu erzeugen) (UPDATE)

Um nach dem Debian OpenSSL-Bug DSA 1571-1 die SSH-Hostkey neu zu generieren folgendes Tun (keine Garantie):

sudo mkdir /etc/ssh/compromised_keys
sudo mv /etc/ssh/ssh_host_* /etc/ssh/compromised_keys
sudo /usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ""
sudo /usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ""

Update 14.05.2008 12:19

Inzwischen bietet Ubuntu und Debian das Paket "openssh-blacklist" an welches die Host-Keys des System checkt und gegebenenfalls neue erzeugt.

Update 2

Hier gibt es schon den ersten Exploit zum testen und genauere Infos zum Bug. Unfassbar.

Posted by toke on Mai 13, 2008 | 0 comments

Schützen von Downloads mit Django und Nginx

Da ich heute gefragt wurde wie bei einem Apache (für dynamische Daten) mit Ngnix (als Frontendproxy und statische Daten) einzelne Downloads oder Dateizugriffe mit Django kontrolliert werden können beschreibe ich hier eine Möglichkeit.

Nginx konfigurieren

Der Nginx soll die Daten nur auf "Zuruf" senden. Somit muss er daran erinnert werden, das er die Daten nicht bei einem einfachen GET zurückliefert. Das macht "internal".


location /protected-downloads/ {
alias /var/protected/;
internal;
}

Der Django-View

Unser View soll dem Nginx, der ja als Proxy zwischen dem Apachen und dem Browser sitzt ein Zeichen geben eine bestimmte Datei auszuliefern. Nginx verwendet dazu den Header: X-Accel-Redirect. Es reicht diesen mit einem Pfad zu senden um den Sendevorgang anzustoßen.


@login_required
def download(request, file=None):
response = HttpResponse()
response['Content-Type'] = 'application/octet-stream'
response['X-Accel-Redirect'] = '/protected-downloads/' + file
return response

 

Anmerkungen

Wer will kann auch den Download bremsen in dem noch der Header "X-Accel-Limit-Rate" gesetzt wird z.B.response['X-Accel-Limit-Rate'] = '1024'

 

Um X-Accel-Redirect zu verwenden muss die location im Nginx nicht zwingend auf internal gestellt sein dieses verhindert nur das direkte ausliefern der Datei was ja ein Umgehen unserer Schutzmaßnahme wäre.

Die selbe Methode läßt sich auch verwenden um z.B. Downloadzähler oder selektives Ausliefern von Dateien zu implementieren.

Bei einem Apachen oder Lighttpd kann man statt X-Accel-Redirect X-Sendfile verwenden.

Weitere Infos

X-Sendfile/X-Accel-Redirect Nginx wiki

Posted by toke on Februar 28, 2008 | 2 comments

Kleine Hilfe beim DNS Hosting mit Django (update)

Sich häufig ändernde DNS-Zonefiles zu bearbeiten kann recht unangenehm werden vor allem wenn noch automatisiert von verschiedenen Systemen darauf zugegriffen werden muss. Aus diesem Grunde habe ich "DNS-Records at large" (Kampfname) gehackt. Weit davon entfernt tatsächlich fertig zu sein leistet es jedoch zusammen mit einem PowerDNS schon hervorragende Arbeit.

Das Werkzeug

Nach einem Serverumzug musste ich meine DNS-Server neu aufsetzen und ärgerte mich über die DNS-Zonefiles. So schön Textbasierte Konfigurationen sind so unangenehm können sie auch sein wenn man gewissen Dinge automatisieren möchte. Also setzte ich auf die schnelle Powerdnsd mit SQLite Backend ein. Für die Datenbank benötigte ich nun eine Benutzerschnitstelle mit der ich Domains und Records anlegen konnte. Dank Django war dies eine kurze Angelegenheit. Auch der spätere Umzug von SQLite auf eine PostgreSQL gestaltete sich schmerzfrei.

Inzwischen versorgt die Installation über 1000 Records verschiedenster Domains. Nach außen tritt der PowerDNS allerdings nicht überall auf.

Die Funktionen

Meine Anforderungen waren zu Beginn recht gering. Ich wollte Primäre DNS-Zonen anlegen und zu diesen Records verwalten. Eine Änderung in der Datenbank sollte sofort vom DNS-Server verwendet werden können. Die unterstützen Record-Typen sollten zumindest, A, AAAA, CNAME, TXT, PTR, SRV, NS, MX, und natürlich SOA umfassen. Ich wollte Domains Besitzern zuordnen können um einen Ansprechpartner zur Hand zu haben falls Fragen auftauchen. Der DNS-Server sollte auch als Hidden-NS laufen können also z.B. einen Bind mit Zonen versorgen können. Was später möglich sein sollte ist das Benutzer selbst ihre Zone bearbeiten können. Dies ist derzeit allerdings noch nicht möglich. Ich benutze das System auch als DynDNS-Dienst. Das Update geschieht via SSH.

Pläne

Als nächstes soll Unterstützung von anderen DNS-Servern hinzugefügt werden. So soll es möglich sein Bind-Zonefiles bei Änderung zu erzeugen. Diese sollen vor dem aktivieren geprüft werden und danach dem Bind zur Verfügung gestellt werden und ein Reload angestoßen. Eine Anbindung von Domain-Brokern ist denkbar um direkt aus der Oberfläche sowohl das Domainhandling als auch die Bearbeitung der DNS-Records durchzuführen.

Die Administrationsoberfläche soll vereinfacht werden und ein Kommandozeilen-Tool soll die Arbeit auf der Shell erleichtern.

Code

Hier gibts den ersten Code: http://github.com/toke/records-at-large
git://github.com/toke/records-at-large.git

Dokumentation etwas lau. Die Lizenz wird eine BSD-Lizenz sein.

Update 29.02.2008: GIT-Link hinzugefügt

Posted by toke on Februar 15, 2008 | 0 comments

Coole Projekte

Zwei coole Projekte,

das schon seit längerem in vieler Munde: CouchDB
und darauf aufbauend: Ajatus

CouchDB ist eine Dokumentenbasierte Datenbank mit flachem Addressraum und REST-JSON-API.
Ajatus ist ein darauf aufbauendes dezentrales CRM.

Beide sind noch recht Experimentell aber die Aussichten sind sehr gut.
Vor allem die einzigartigen Konzepte. Gerade an der Dezentralität der CRM-Lösung zeigen sich einige Möglichkeiten welche meines Wissens bisher nicht zu finden waren.

Vision:
Mir schweben da noch andere Dezentrale Dienste vor. Auch Wikis können davon Profitieren. Jeder erstellt seine eigenen Daten auf seiner dezentralen Datenbank. Die Eigenschaften sind anpassbar und erweiterbar. Jederzeit ist es dann möglich einzelne oder auch alle Daten zu replizieren und abzugleichen. Man stelle sich Wikipedia mit so einem Dienst vor. Andere Wikis könnten einzelne Daten übernehmen und trotzdem synchronisierbar halten. Die Daten können frei gemischt werden also z.B: ein Addressbuch angelegt werden das dann ebenfalls synchronisiert wird. Mein Blog pflege ich in meiner lokalen Instanz und synchronisiere das mit dem Live-Server, dabei erhalte ich auch automatisch die Kommentare zurück. Ein Planet könnte ebenfalls auch ohne RSS an die Daten kommen. Auch E-Mails und andere Dokumente ließen sich damit prima Archivieren und entweder mit einem Webmailer oder mit einem IMAP-Connector abrufen.
Etwas weiter gesponnen lassen sich ganze "Soziale Netzwerke" spinnen, MySpace, StudiVZ etc. Durch digitale Signaturen könnte man die Authentizität nachweisen, Public-Key-Verschlüsselung lässt einen die Ursprungsdaten behalten. Man erhält eine Social-Networking-Plattform ohne Zentralität und zumindest etwas Privatsphäre.

Da Couchdb sich um die Replizierung, Konfliktauflösung und Versionierung kümmert ist die Entwicklung recht einfach. Derzeit arbeitet CouchDB über HTTP, eine Erweiterung z.B: für XMPP wäre denkbar.

Damien, der Projektleiter von CouchDB arbeitet seit kurzem für IBM in Vollzeit an CouchDB, die Entwicklung wird also Sprünge machen. Ich freue mich.

Posted by toke on Januar 8, 2008 | 0 comments

Häufige PHP-Fehler #1


<?php
if ($_GET['page_id'] == 100) {
    print $_GET['page_id'];
}
?>

Sieht richtig aus erlaubt aber u.U. einen XSS oder gar einen SQL-Injection-Angriff. Schuld ist die automatische Typenkonvertierung von PHP. Dies ist einer der Gründe, weshalb man nicht mit ungeprüften Variablen arbeiten sollte. Im obigen Beispiel ist das eine ungeprüfte Variable zumindest als String.

Posted by toke on Januar 7, 2008 | 1 comment

Wie das mit Münchhausen wirklich war

Man sagt ihm ja nach er habe Lügengeschichten erzählt. In Wirklichkeit war alles anders.

Der Baron war leicht vergesslich und wollte seine Reise- und Erlebnissberichte nicht vergessen. Da er aber kein Papier und Bleistift bei sich hatte drohte alles in Vergessenheit zu geraten. Auf dem Heimweg kam ihm eine blendende Idee. Er schrie seine Geschichte in die Berge, lief Heim, holte Papier und Stift, kehrte zurück und ließ sich alles vom Echo erzählen.

Das dabei einiges auf der Strecke blieb ist klar. Ich habe so das Gefühl, das so manches Gesetz unserer Legislative ähnlich zu Papier gebracht wurde….

Posted by toke on September 18, 2007 | 0 comments

Pretty Pictures


Jim graphed some interesting Pictures out of posted Flickr Photos.

Posted by toke on September 18, 2007 | 0 comments

Mobile Video Encoding

Owning a Nokia E61i and want to transcode a video for it?

Easy… get ffmpeg:

ffmpeg -i INPUT-FILENAME -f mp4 -vcodec mpeg4 -b 2500000 \
-r 15 -s 320x240 -acodec aac -ar 24000 -ab 64 \
-ac 2 OUTPUT-FILENAME.mp4

If you write this on one line dont use “\”.

Posted by toke on Juli 29, 2007 | 0 comments

Wir speichern nicht - Weitere Informationen hier...