Springe zum Hauptinhalt

Convert SVN-Repo directly to git or hg (no dump-files needed)

Origo, where I'm hosting my open-source software up to now, is closing end of this month. So I need to move these projects somewhere else. I take the chance for migrating the subversion repositories to git. Here is how.

If you are going to convert your repo to git or mercurial, you can use Eric S. Raymonds excellent `reposurgeon` tool. The current development version can read directly form subversion repositories. It's recommended to create a local mirror first. A tool called `svnpull` for pulling the SVN repo into a local mirror is provided.

Here is an example of a simple conversion of a simple repository:

PROJECT=ssl-audit
svnrepo=https://svn.origo.ethz.ch/$PROJECT
gitrepo=/tmp/$PROJECT-git

cd /tmp
repopuller $svnrepo

reposurgeon <<EOF
read /tmp/$PROJECT-mirror
prefer git
edit
references lift
rebuild $gitrepo
EOF

Schöne neue Info-Sec Domains

Vor ein paar Tagen habe ich festgestellt, dass ein paar sehr schöne Domains noch zu haben sind. Und natürlich gleich bestellt - im Dutzend billiger

Die Domains drehen sich alle um IT-Security Management. Damit möchte ich meinen Schwerpunkt Rent a CISO oder Freiberuflicher Information Security Officer leichter zugänglich machen.

Mich erstaunt wirklich, dass diese Domains alle noch frei waren:

Information Security Officer

Tatsächlich war Information Security Officer für ".de" noch frei, hätte ich nicht gedacht :-) Aber dafür gibt es ein paar Varianten von Info-Sec Officer.

Information Security Officer ist aber so sperrig, das passt auf keine Visitenkarte. Darum hab ich auch gleich noch den Info Sec Officer genommen.

Informations-Sicherheits-Beauftrager

Den Begriff ist in einem meiner letzten Projekte aufgekommen und ich habe dann entdeckt, dass er auch gelegentlich verwendet wird. Aber auch sehr, sehr sperrig ...

... darum gibt es auch gleich noch den Info Sec Beauftragten

Und weil ich schon dabei bin, auch noch den IS Officer und IS Beauftragten, wobei IS natürlich für Informationssicherheit bzw. Information Security steht.

2012-04: Compliance bringt keine Sicherheit

Meiner Meinung nach völlig zu unrecht. Es ist ist zu kurz gedacht. Compliance bedeutet erst einmal lediglich, Regeln zu erfüllen, die von der Industrie, von Verbänden, Banken, Versicherungen oder dem Gesetzgeber aufgestellt wurden – etwa der Sarbanes Oxley Act von der US-Regierung, PCI-DSS vom der Kreditkartenindustrie, Basel III von der Bank für Internationalen Zahlungsausgleich und so weiter. Ein Unternehmen, das „compliant“ ist, hat bisher genau ein einziges Risiko ausgeschlossen: Den Verstoß gegen diese Regeln.

Keine Frage, bestimmte Geschäftsmodelle sind zwangsläufig darauf angewiesen, Compliance-Anforderungen zu befolgen: Wenn etwa daran eine Zulassung hängt wie an PCI-DSS für Anbieter von Kreditkarten oder die Erfüllung von Basel III-Kriterien die Kreditwürdigkeit beeinflusst. Ich empfehle jedoch, genau zu prüfen, ob und in welchem Maße Ihr Unternehmen Compliance-Vorschriften nachkommen muss – oder aber, ob der Compliance-Vorwand nicht nur als Geschäftsführerschreck und Honorarmaschinerie für Unternehmensberater und Security-Anbieter angeführt wird.

Compliant sein, heißt noch lange nicht, sicher sein

Die meisten Unternehmen sind aber mit anderen Risiken konfrontiert, als „non-compliant“ zu sein: Sie haben Geschäftsgeheimnisse zu verlieren, sie müssen innovativ sein und sie müssen vor allem schnell auf Marktgegebenheiten reagieren können, um mitbewerbsfähig zu bleiben.

Eine regelgerechte Compliance hilft dabei aber nicht. Im Gegenteil, sie kann sogar Sicherheitsstrukturen im Wege stehen, die flexibel neue Situationen berücksichtigen sollen. Compliant sein, bedeutet nämlich auch Schwerfälligkeit und Langsamkeit, denn jeder Prozess und jede Veränderung muss daraufhin geprüft werden, ob alle Regeln einhalten werden. Und der Hype um Compliance führt dazu, dass komplette Security-Budgets in teure Compliance-Maßnahmen gesteckt werden, die der Sicherheit des Unternehmens wenig dienlich sind. Hauptsache ist, der Wirtschaftsprüfer bescheinigt beim Jahresabschluss, dass Ihr Unternehmen compliant ist. Haken dahinter. Ob alle Sicherheitsrisiken damit berücksichtigt sind, ist leider häufig egal.

Wer klug ist, der achtet weniger auf seine Compliance, sondern darauf, dass er ein Sicherheitskonzept erhält, das wirklich passgenau auf seine Ansprüche zugeschnitten ist. Nicht mehr und nicht weniger.

Was tun, wenn der Audit "droht"?

Dieser Tage habe ich folgende Anfrage bekommen:

Wir betreiben einen Server, über den man auf verschiedene Systeme bei sensiblen, öffentlichen Kunden zugreifen kann. Zu dem Server existiert eine technische Beschreibung, aber es gibt keine Beschreibung der zugehörigen Prozesse. Es sein kann, dass unser Kunde einen Audit nach dem IT-Grundschutzhandbuch bzw. nach der ISO 27001 fordert. Darauf wollen wir vorbereitet sein.

Wie können Sie uns helfen?

Trifft genau mein Tätigkeitsfeld :-) Meine Vorgehensweise wäre folgende:

Sowohl das Grundschutzhandbuch (GSHB) als auch die ISO 27001 legen viel Wert auf Verantwortung, Nachvollziehbarkeit und Kontrolle/Überprüfung. In diesem Fall würde ich daher folgendes tun:

die bestehenden Prozesse rund um den Server auf die technische Umsetzung und auf die drei genannten Punkte hin überprüfen und dokumentieren

  • Benutzerverwaltung

  • Security-Patches und Software-Updates

  • Admin-Berechtigungen

  • Abschottung vom restlichen Netzwerk (falls relevant)

  • ...

Punkte im Prozess festlegen, an denen festgestellt werden kann, ob es Abweichungen vom Regelprozess gibt und ob der Prozess funktioniert oder verbessert werden muss (sog. Controls).

Die einen Server mit Benutzerverwaltung wäre eine typische "Control", regelmäßig zu prüfen, ob die berechtigten User noch Zugang haben dürfen. Dies dient gleichzeitig dazu, die nicht mehr berechtigten Accounts zu sperren, und dazu, zu erkennen, ob nicht mehr Berechtigte zeitnah gesperrt wurde. Beispiel: Wenn nach einem Jahr 20% der Benutzer nicht mehr berechtigt sind, funktioniert der Prozess nicht. Oder wenn über längere Zeit immer ein paar "durchrutschen".

die Verantwortlichkeiten festlegen

Ergänzend würde würde ich auch eine paar Kennzahlen entwickeln, um das Funktionieren der Prozesse "managebar" zu machen. Beispielsweise die Fehlerrate für die genannten Controls, oder statistische Auffälligkeiten: Benutzer die sich sehr häufig oder sehr selten anmelden (natürlich anonymisiert, da es sonst unerlaubte Leistungsüberwachung sein könnte).

Am Ende hätte der Auftraggeber ein Handbuch, mir dem er einen Audit überstehen sollte.

Sündenfall: Habe Piwik installiert

Jetzt ist der Sündenfall passiert: Ich habe eine Webanalyse-Software in meine Website integriert. Ich möchte damit ermitteln, woher und ggf. mit welchen Suchbegriffen Besucher auf meine Seiten gelangen, was sie dort suchen und ob sie es finden.

Mal sehen, ob es das bringt. Wenn nicht -- oder falls ich das gar nicht auswerten sollte -- kommt es wieder weg. Versprochen!

Damit hat meine Website jetzt doch auch ein Datenschutzerklärung.

decompyle is still alive

I just got a call from somebody who tried to get an ancient version of decompyle running. Some words about he status of decompyle.

Yes, decompyle, the Python byte-code decompiler, is still alive and functioning. It simply is not longer available for download and ancient versions are not able to decompile recent Python byte-code.

Still alive: My Decompyle Service

To be frank: I recommend using the my Python decompyle service at crazy-compilers.com. It's cheap, its fast, it's reliable. Don't waste your time with ancient versions, see below for reasons.

The future of decompyle

At the very moment I'm working on a complete rewrite of the decompyle-engine as the currently used spark parser got to it's limits. This will allow support for Python 2.7 and 3.x soon. The first bucket of test-patterns for 2.7 just passed an hour ago.

Ancient Versions floating around the Internet

When searching the Internet, you may find old tarball or even Subversion-Repos of decompyle at approx. version 2.3. You may get it work on your recent system, but you may need to spend quite some time, as it contains C extension modules. But I do not recommend wasting your time trying to get this run: it will not be able to decompile recent Python byte-code.

You may even find some sources saying to have a patched or enhanced or further developed version of decompyle. You may have tough luck and one of these variants may really decompile our file. But chances are very low (I do not bother trying it). From Python version to version there have been too many changes to the byte-code: Starting with simple stuff lik

  • changing the "magic number" written into each byte-code file,

  • code-optimizations which make the (old) parser fail,

  • new features like generator-expressions, decorators, conditional expression or the `with`-statement, up to

  • changed and new byte-codes.

Summary

Don't wast your time, but simply use thedecompyle service.

Neues aus meiner Toolbox: Webseiten "wie sie sind" als PDF speichern

Alle, die einen "Screenshot" der Webseite als PDF machen wollen, können das brauchen.

Wer schon einmal versucht hat, Webseiten als PDF zu speichern -- und zwar so, wie sie am Bildschirm erscheinen --, kennt das Problem: es geht nicht. Entweder kann der Browser gar kein PDF erzeugen, oder man kann nur "als PDF drucken". Beim Drucken bekommt man aber die Druck-Ansicht, und nicht das, was am Bildschirm steht (zum Hintergrund unten mehr).

Meine Software erzeugt ein PDF, das den Bildschirminhalt wiedergibt (so wie links zu sehen).

Screenshot einer Webseite

Gleiche Webseite ausgedruckt

So sieht die Webseite am Bildschirm aus

Und so der Ausdruck

Das kann die Software:

Erzeugt ein PDF einer beliebigen, öffentlichen Webseite

Das PDF ist durchsuchbar, enthält also noch den "Text" (und nicht nur ein Bild vom Text)

Fast alle Webseiten lassen sich gut darstellen, denn als Render Engine wird die gleicher verwendet, die auch in Safari steckt (Webkit)

Die Webseite wird automatisch auf die Seitenbreite skaliert

wenn die Webseite zu lang für ein Blatt ist, werden mehrere Seiten erzeugt

Seitenformat, -ränder und -orientierung können angegeben werden

Firefox-Addon: 1 Klick und das PDF wird geliefert

In zwei Varianten nutzbar:
  • kleiner HTTP-Server, der die Umwandlung übernimmt (den verwendet das Addon)

  • Kommandozeilen-Tool

kann leicht an die Bedürfnisse der Kunden angepasst werden, beispielsweise

  • andere Seitenaufteilungen, andere Dateiformate

  • Integration in komplexere Tools (siehe Successtory unten)

Die Software ist plattformunabhängig (Linux, Windows, Mac), benutzt Qt und Python.

Vergleich mit Alternativen

Alternative 1: Für Firefox (und wohl auch andere Browser) gibt es Add-ons, die die komplette Seite in ein Bild packen. Sie greifen dabei auf der "Bild" zurück, das der Browser intern von der Seite erstellt hat. Vorteil: es wird das ausgegeben, was momentan im Browser angezeigt wird, also auch private Seiten.

Nachteile diese Alternative

  1. Ein Bild lässt sich schlecht auf mehrere Blätter aufteilen,

b) man bekommt ein Bild, also eine Ansammlung von Bildpunkten. Das Bildschirmfoto ist nicht durchsuchbar.

  1. Je nach Addon muss man viel klicken

Alternative 2: "Drucken als PDF" scheidet aus, da die Druckansicht gewählt wird.

Alternative 3: Bestehende Online-Dienste, davon gibt es einige, ein paar habe ich ausprobiert, die haben nicht überzeugt. Teilweise nicht zuverlässig erreichbar, teilweise muss man zu oft klicken. Oft ist das Papierformat fest auf "Letter" eingestellt. Das druckt sich gar nicht gut auf A4. Und man muss Dritten vertrauen (ggf. Auftragsdatenverarbeitung, BDSG ist zu beachten).

Successtory ;-)

Mein Kunde setzt das Tool seit einem halben Jahre bei der Medienbeobachtung ein, auf zwei Arten:

  1. Findet ein Mitarbeiter eine interessante Webseite im Netz, wird diese mit einem Klick als PDF gespeichert.

  2. Ein Ausschnittdienste schickt interessante Links per Mail. Diese Mail werden automatisch ausgewertet und die PDFs an die Mitarbeiter geschickt -- zusammen mit einem Vorschaubild und den Infos aus der Mail. (Das Ganze ist eine Erweiterung des Kommandozeilen-Tools.)

  3. [Nachtrag] Die Mail-Schnittstelle kann inzwischen auch Mails auswerten, die nur Links enthalten. Die nötigen Meta-Informationen (für welchen Kunden, etc.) werden dem Betreff entnommen. Letzterer muss dafür natürlich einem bestimmten Format entsprechen.

Hintergrund

Das Phänomen kennt Ihr: Ihr wollt eine Webseite ausdrucken, und das Ergebnis sieht völlig anders aus, als das am Bildschirm. Diese Mail erklärt, weshalb das so ist und zeigt, was man dagegen tun kann, ohne fünf Bildschirmphotos zusammenkleben zu müssen.  Und sie zeigt eine Lösung als PDF, das man dann durchsuchen kann?

Die Ursache ist: Für den Ausdruck verwendet der Browser eine eigene "Formatvorlage" (ein sogenanntes Cascading Style Sheet, CSS). Idee Idee dahinter ist: Wer die Siete ausdruckt, will keine Navigation, keine Werbung, etc. Also werden solche Elemente in der Formatvorlage für den Ausdruck auf "nicht anzeigen" gestellt.

Dabei ist es egal, ob Ihr auf einen physikalischen Drucker druckt, oder mit FreePDF, PDF Creator oder ähnlichem ein PDF erzeugt. Für den Browser ist das alles "drucken", als verwendet er die Formarvorlage für "Drucken".

Früher hatten Webseiten dafür eine Link "Druckansicht". Der ist heute ziemlich ausgestorben, weil die Browser die Formatvorlagen für den Ausdruck verwenden, und da sich Content Management Systeme verbereitet haben, die solche Vorlagen schon mitbringen.

Wer dennoch ein "Bild" der Webseite haben möchte, muss ein Bildschirmphoto machen. Mit den Bordmitteln der Betriebssysteme bekommt man damit aber immer nur einen Teil der der Seite auf ein Bild -- soviel der Browser halt auf einem Bildschirm anzeigen kann. Blöd, wenn der Inhalt der Seite über drei Bildschirme geht.

Interesse?

Wenn Sie das Produkt für Ihren eigenen Bedarfs nutzen wollen, mache ich Ihnen gerne ein Angebot. Setzen Sie sich dazu bitte mit mir in Verbindung.

2012-02: Bring Your Own Life (Glosse)

Also riskieren die CEOs und Chef-Personaler lieber nichts – es wäre ja auch angesichts des latent drohend Fachkräftemangels fahrlässig. So versorgt man lieber die kontraproduktiven und larmoyanten Security-Spezialisten mit extra-breitem Leukoplast, um sie ruhig zu stellen und entwickelt sogar fleißig weitere „Bring-Your-Own-x“-Angebote, um die kostbaren Fachkräfte zu binden. Spannende White Paper, die kürzlich aus den Personalabteilungen großer Konzerne an die Öffentlichkeit gelangt sind, lassen bahnbrechende Innovationssprünge in Sachen „BYOx“ erwarten.

Einem hessischer Mittelständler beispielsweise setzte bei einer Einrichtung an, die bisher ständig für Klagen sorgte – der Firmenkantine. Mit BYOF (Bring Your Own Food) wurde aus dem Stein des Anstoßes ein Erfolgskonzept. Das langweilige Kantinenessen wurde abgeschafft, die Mitarbeiter bringen nun abhängig von den individuellen Geschmacksvorlieben und gesundheitlicher Vorgeschichte ihre Verpflegung selbst mit ins Büro. Das Unternehmen unterstützt das Projekt, indem es formschöne Henkelmänner in den Saisonfarben Hellgrün und Orange zum Kauf anbietet, die individuell mit den Lieblingsspeisen befüllt werden können.

Spannend auch das Konzept BYOC, das im Ingolstädter Stammhaus von Audi seit Januar diesen Jahres praktiziert wird. Die Idee zu „Bring Your Own Car“ lag insofern nahe, da zumindest bei den deutschen Arbeitnehmern das Auto noch wichtiger als sein iPhone ist. Sie erspart dem Mitarbeiter den doch eher lästigen Umstieg in den unpersönlichen Firmenwagen: In Ingolstadt müssen sich die Mitarbeiter nicht mehr an die firmeneigenen Audi A4 und A5 umgewöhnen, sondern dürfen ohne Druck seitens der Firmenleitung im eigenen Toyota oder Fiat zur Arbeit kommen.

Auch Anbieter werden aktiv. Das Möbelhaus Ikea hat bereits eine ganze Abteilung in seinem Showroom auf den neusten BYOC-Trend (Bring Your Own Chair) abgestimmt. Ergänzt wurde – synonym zur Family Card – eine Office-Karte, mit der Mitarbeiter bestimmter Firmen ihre eigenen Büroausstattung zu günstigen Preise einkaufen und dann ihr Büro damit möblieren können.

Einige Modelle enthalten jedoch gehörigen Sprengstoff. So der neuste Ansatz von IBM, die erst kürzlich mit provokanten Personalstrategien von sich reden machte. Mit seinen Konzepten IBM-BYOW (Bring Your Own Work) und IBM-BYOM (Bring Your Own Money) – beide noch „Non Disclosure“ – könnte das Unternehmen allerdings für Uweiter Schlagzeilen sorgen: Sie gewähren in einer klassischen win-win-Situation einerseits dem Mitarbeiter alle nur vorstellbare Individualität und Freiheit, andererseits dem Arbeitgeberunternehmen eine Toprendite: BYOW stellt dem Mitarbeiter frei, die eigenen Arbeit mitzubringen und erspart IBM damit unter anderem die Vertriebsabteilung. Mit BYOM endet sogar die finanzielle Abhängigkeit der Mitarbeiter, indem er sein Gehalt selbst übernimmt. So können die Arbeitgeber entlastet werden und neue Arbeitsplätze schaffen, die sich wiederum mit BYOM selbst finanzieren. Das perfekte Perpetuum-Mobile, bei dem jedoch unsere Arbeits- und Wirtschaftsministerien noch ein Wörtchen mitzureden haben werden.

rsync "protocol incompatibility" caused by --dry-run

I just spend approx. one hour to track down a nasty problem, caused by using ssh with authorized keys and forced command. This is for the records and hopefully will help others to solve the problem quicker.

When trying to move a working script to a different machine and a different user-account, my rsync-script failed with this message:

rsync error: protocol incompatibility (code 2) at io.c(1332) [sender=3.0.8]
rsync: connection unexpectedly closed (2668 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(601) [receiver=3.0.7]
rsync: connection unexpectedly closed (70 bytes received so far) [generator]
rsync error: error in rsync protocol data stream (code 12) at io.c(601) [generator=3.0.7]

Now in this special constellation, there are many possible reasons, since the machines are quite different:

Server: Fedora 13, x86_64, openssh 5.4p1, rsync  version 3.0.8  protocol version 30

Old client: Mageia 1, i686, openssh 5.8p1, rsync  version 3.0.8 protocol version 30

New Client: Debian Squeeze, armv5tel, openssh 5.5p1, rsync  version 3.0.7  protocol version 30

To make a long story short: The error message is absolutely misleading. The error is not caused by a protocol incompatibility, but simply by my forced command. And the error is simply triggered by using --dry-run.

Explanation

When running rsync with --dry-run, obviously the command, which is send to the server, differs. Now the SSH-Server drops the connection, since the received command does not match the forced command. rsync get communication errors which it is misinterpreting and talking about "protocol incompatibility".

Portrait von Hartmut Goebel
Hartmut Goebel
Diplom-Informatiker, CISSP, CSSLP, ISO 27001 Lead Implementer

Haben Sie noch Fragen?
Anruf oder Mail genügt:
Telefon:   +49 871 6606-318
Mobil:   +49 175 29 78 072
E-Mail:   h.goebel@goebel-consult.de