Archive for January, 2010

Ich entwickle für meinen Arbeitsplatz am URZ ein kleines HTML-Interface für die Domain-Administration. Wir verwenden für die Authentifizierung LDAP/Kerberos, was prinzipiell mal toll ist. Da ich zuvor immer nur Name/Passwort Login gemacht habe, ist das ganze erstmals etwas neues, und ich stolpere immer wieder über neue Problemchen. Um anderen die Arbeit zu ersparen, schreibe ich hier ein paar Details aus, die ich dabei gefunden habe.

Dank mod_authnz_ldap ist ein einfaches Login problemlos möglich. Damit kann man einfach alle Domain-User einloggen lassen (require valid-user) oder ldap-typisch spezifische Gruppen.

Damit starten die Probleme aber erst. Die WebApp soll ja mit den User-Credentials auf andere Ressourcen zugreifen können (in meinem Falle den LDAP-Server). Dazu ist etwas Arbeit nötig. Erstmals müssen wir dem Apache erlauben, die User-Credentials für die dauer des Requests zwischenzuspeichern, was mit “KrbSaveCredentials on” in der Apache-Konfig gelingt. Der Apache speichert dann eine Kopie des Tickets in einer temporären Datei , und löscht diese am Ende des Requests wieder. Der Name dieser Datei wird einem Skript als CGI-Parameter KRB5CCNAME mitgegeben. Hier muss man sich darüber klar sein, dass diese Cache-Datei in /tmp steht, und für Server-Admins ziemlich einfach auslesbar sind. Also nur auf vertrauenswürdigen Hosts machen (die genauen Sicherheitsimplikationen werde ich später noch beschreiben)!

Damit kann man jetzt auf dem Hosts Kerberos-Programme wie klist aufrufen muss aber immer die Cache-Datei mit angeben. Vor allem GSSAPI-Zugriffe sind damit noch nicht möglich, da GSSAPI auf die Umgebungsvariablen guckt um den Ticket-Cache zu finden. Daher ist es Notwendig, vor einem GSSAPI-Zugriff die Environment-Variable KRB5CCNAME auf die CGI-Variable KRB5CCNAME zu setzen. Dann klappt es auch mit GSSAPI.

Hier ein kleines Beispielskript um sich mit einem LDAP-Server mit den UserCredentials zu verbinden:


import os
import ldap
import ldap.sasl
from mod_python import apache

#index file
def index(req):
    #we need load the cgi-vars first
    req.add_common_vars()

    req.write("<h1>LDAP-GSSAPI</h1>")
    req.write("<p>kerberos username is %s<br/>kerberos-ticket cache file is %s</p>" % (req.subprocess_env['REMOTE_USER'],req.subprocess_env['KRB5CCNAME']))

    #set environment so gssapi finds our ticket cache.
    os.environ['KRB5CCNAME'] = req.subprocess_env['KRB5CCNAME']

    try:
        conn = ldap.initialize('ldaps://ldap.example.org')
        # only works if environment is set correctly.
        auth_tokens=ldap.sasl.gssapi()
        if conn.sasl_interactive_bind_s('',auth_tokens) == 0:
            req.write( "<p>Successfully connected</p>")
        else:
            req.write("<p>Oopsy, somethign went wrong.</p>")
    except ldap.SERVER_DOWN:
        req.write(print "<p>ldap-server is sleeping. Dont disturb.</p>")
    return apache.OK

Flattr this!

Comments Comments Off on HTTP/Kerberos/Python

Ich wollte ja schon mehrmals an den Chaos Communication Congress fahren. Dieses Jahr hab ich endlich mal keine Ausrede gefunden und bin hin gefahren. Das hat mich ziemlich viel gekostet, aber das war es definitiv Wert.

Ich bin dabei Zweigleisig gefahren. Einerseits Kongress, andererseits Berliner Nachtleben mit meinen Freunden die ebenfalls dort waren. Sie haben das ganze etwas gelassener angegangen und sind meist erst spät Nachmittags am Kongress aufgetaucht, während ich auch nach einer durchzechten Nacht meist um 12h wieder vor Ort war. Daher bin ich wohl am Mate-Konsum-Rekord nicht ganz unschuldig.

Berlin ist nicht umsonst berühmt für sein Nachtleben. Irgendwo ist immer Party , auch um 5 Uhr am Morgen. Und Alkohol ist billig. Kein Vergleich zu Basel. Mein neuer Lieblingsdrink ist der “Mexicana”, ein dem Bloody Mary ähnelnden Drink.

Der Kongress war ein Feuerwerk an Ideen und Erfahrungen. Am meisten Beeindruckt hat mich eine  verblüffend einfache Sicherheitslücke in GSM und der MakerBot (der Replikator ist gar nicht so weit entfernt wie ich immer dachte).

Neben den Sensationen war aber auch Zeit mich weiter zu Bilden. Sehr interessiert habe ich mich da für die Hardwaresachen, speziell auch das ganze mobile Zeugs.

Die ganzen Zensur-Sachen interessieren mich nicht so sehr, ich sehe das ganze als ganze als Entwicklung die dieser Staat machen muss um die bestehende Ordnung zu erhalten. Um das Problem zu lösen hilft es nichts, wenn man versucht die Bürgerlichen Freiheiten auf biegen und brechen zu verteidigen, wir müssen das System viel Tiefer angreifen und verändern (Und genau hier finde ich die MakerBot-Idee absolut Genial. Sie versucht die Industrie zu dezentralisieren, was dann notwendigerweise auch die Eigentumsverhältnisse durcheinander würfelt)

Und das wurde am Kongress im Untergeschoss aka Hackzenter getan. Moral erstmal egal, gehackt wird was gehackt werden kann. Vorstellen kann man sich das ganze als einen Grossen Raum mit hunderten (?) Hackern die dicht gepackt an Tischen an ihren Laptops sitzen und irgendwelche Dinge machen. Setz dich hin, pack deinen PC aus, leg los.Gleich dahinter (etwas kleiner) die MusikLounge, wo man sich auf mit dem Laptop auf Sofas breit macht und rauchend/saufend/musizierend sein Ding dreht.

Dann gab es auch noch die kleinen Highligts die einfach Nett waren; Die singende Teslaspule, selbstgebaute Flugmaschienen und noch viele kleine Spielereien.

Ich kann mich daher dieser Twittermeldung anschliessen und Freue mich aufs nächste mal am 27c3.

Flattr this!

Comments Comments Off on 26c3 ein Versuch mich zu Erinnern