Sie sind hier: Startseite / Blog

Blog

Preferring git over mercurial

Being a Python programmer, my favorite distributed version control system (DVCS) was Mercurial (hg) -- was until a few days ago. Here are some reasons why I now prefer git.

Mercurial was my favorite since it is written in Python, which is my preferred programming language (more precise: the only Programming language I use unsolicited).

Until now, I had bad experiences with git: I'm urged to use git on other projects and I often stumble over things that do not work as I expect or are described in a way I do not understand or is much to complicated. Whenever I try to learn how to select revisions from `man gitrevisions` I get enervated.

As you may know, I'm involved in the development of PyInstaller where we are currently migrating from Subversion to git. The project's founder, Giovanni Bajo, made me looking deeper into git. I'm still fighting with some of it's rough edges, but I'm really impressed: It has much more power-features than mercurial has.

gitk

At the beginning  was missing `hg serve`. But then I discovered `gitk` -- a GUI front-end for history browsing. Meanwhile I'm used to it and prefer it over the web-based `hg serve`. One can search messages, authors, commiters, focus on one or several branches, easily jump to tags, directly display the changes in several diff-formats, and a lot more. And all commits are on a single page, no need to browse through page over pages.

git gui

The next killer app is `git gui`, a tool for preparing your commits.

I often find myself committing to large changes, since I did several smaller changes until I mind to commit. With `git gui` these is solved elegantly: One can select which part of the current changes are to be used in the commit, even include or exclude single lines. At the very moment, I'm splitting my hacked version of reposurgeon into small commits so somebody else can reproduce what I've done. You can see the result at https://github.com/htgoebel/reposurgeon: All commits until today midday have been created this way.

And another plus: Commit message entered within `git gui` are spell-checked. The language can be selected either globally or per project.

Summary

So for new projects, or when migrating my existing projects to DVCS, I'll choose git. It has the far superior tools.

28.12.2011 11:50

Website des (ISC)² Chapter Germany e.V. ist online

Seit ca. April 2011 haben sich CISSPs und anderen (ISC)²-Mitglieder in Deutschland zu einem Chapter, also einer regionalen Verband, zusammengeschlossen. Das Ziel des (ISC)² Chapter Germany e.V. ist es, das Verständnis und die Bedeutung der Informationssicherheit zu fördern.

Mehr dazu direkt auf der Website des Vereins.

Die Website wird übrigens von mir gesponsert.

10.10.2011 00:00

Write error with twisted plugin cache

I'm just toying around with some Python program which uses twisted and twisted plug-ins. I hot errors since twisted wants to write a cache file into /usr/lib/python2.6/site-packages/, which a normal ...

If twisted is not installed properly by you distribution, you will get errors like

exceptions.IOError: [Errno 13] Permission denied: '/usr/lib/python2.6/site-packages/twisted/plugins/dropin.cache.new'

In this case you need to (re-) build the twisted plugin cache by running as root:

python -c 'import twisted.plugin as P; list(P.getPlugins(P.IPlugin))'
19.06.2011 14:07

Ein Mini-Webserver für die linuxrc

Für das bereits erwähnte NAS möchte ich natürlich auch die Root-Partition verschlüsseln. Nur: wie geben ich beim Booten den Schlüssel ein? Ein Mini-Webserver muss her!

Falls das NAS neu gestartet werden muss -- beispielsweise nach einem Stromausfall -- darf das Eingeben den Filesystem-Passworts nicht an mir hängen. Vielleicht bin ich ja unterwegs. Also muss eine Lösung her, die einfach zu bedienen ist.

Das NAS hat keine serielle Schnittstelle, also scheidet Alles in diese Richtung aus. Den Schlüssel auf einem USB-Stick zu speichern geht nicht, denn der USB-Stick könnte in falsche Hände gelangen. Ein winziger Webserver, der das Passwort abfragt, scheint mir die sinnvollste Lösung.

Eine schöne Lösung hierzu hat das Projekt CryptoNAS (ehemals Cryptobox) entwickelt. Für meinen Einsatzzweck ist das leider (noch) nicht geeignet, da es a) noch keinen RAID unterstützt und b) den Server erst startet, wenn das System schon gebootet hat.

Da bei mir auch die Root-Partition verschlüsselt werden soll, muss das "Entsperren" geschehen, ehe diese eingebunden wird. Also muss der Webserver in der linuxrc gestartet werden, was wiederum bedeutet, dass der Webserver in die initrd muss. Und die möchte ich möglichst klein halten.

In der initrd ist bereits busybox installiert, alleine, um das Shell-Script linuxrc abzuarbeiten. Da wäre doch ein Webserver cool, der einfach als Shell-Script implementiert ist. Einen davon hat Morty Abzug geschrieben. Der macht einen guten Eindruck, ich müsste dem Server nur noch beibringen, CGI-Scripte zu verarbeiten, um das Webformular auszuwerten.

Bei der Suche, was genau die busybox shell kann, habe ich dann entdeckt: Die busybox hat einen Webserver eingebaut! Der kann auch CGI-Scripte. Sehr schön, das spart mir einen Haufen Arbeit! Und wie gesagt: busybox ist in der initrd sowieso enthalten. Jetzt muss ich "nur noch" die nötigen CGI-Scripte schreiben -- aber das sollte nicht recht aufwändig sein.

BTW: Die Anleitung für den busybox htpd findet sich im Quelltext.

15.05.2011 14:21

Warum man die Performance von /dev/urandom kaum erhöhen kann

Ich baue momentan ein kleines NAS zum Server um. Mein Ziel ist, ein stromsparender kleinen Server für unserer Bürogemeinschaft. Natürlich müssen die Daten darauf verschlüsselt werden. Die Platte ...

Dummerweise habe ich mir ein NAS empfehlen lassen, dass nicht von Haus aus verschlüsseln kann. Habe ich nicht aufgepasst. Dazu und zu anderen Unzulänglichkeiten des NAS ein andermal mehr. Ich hatte auch kurz die Idee, mir ein anderes zu kaufen, statt viel zeit hinein zu stecken. Aber wer weiß, ob ich da nicht vom Regen in die Traufe käme.

Das NAS ist gerootet, Debian ist installiert. Nun baue ich nach dieser Anleitung das verschlüsselte RAID. Die Anleitung ist kurz und gut, und die nötigen Befehle sind in zirka einer halben Stunde eingegeben.

Aber: Ein Schritt ist, die Platte mit Zufallsdaten zu beschreiben. Und das dauert ...
... und dauert ...
... und dauert ...
... und ich werde ungeduldig. Das muss man doch beschleunigen können?!

Zusammengefasst: Schneller geht nur mit schnellem Rechner.

Das Kommando

dd if=/dev/urandom of=/dev/md127 bs=10M

liefert auf dem NAS 1,8 MB/s, bei 2 TB macht das gute 300 Stunden also über 12 Tage. Urgs.

Also Platte ausgebaut, und per USB an den Desktop angeschlossen. Hier die Ergebnisse verschiedener Versuche (alle Messungen am Desktop):

of=/dev/md.. (also über RAID-Schicht)
3,8 MB/s 135 Stunden
5 1/2 Tage
of=/dev/md.. + Runlevel 0
4,0 MB/s 135 Stunden 5 1/2 Tage
of=/dev/md.. + timer_entropyd
3,7 MB/s
135 Stunden 5 1/2 Tage
of=/dev/sd.. (also ohne RAIS-Schicht)
3,8 MB/s
135 Stunden
5 1/2 Tage
if=/dev/zero ca. 66 MB/s 8 Stunden 1/3 Tag


Meine Erkenntnisse daraus:

  • urandom ist der begrenzende Faktor, nicht der USB-Anschluss.
  • Die Blockgröße ist fast egal: Auch größere und kleinere Input-Blocks (ibs=...) ändern nichts Nennenswertes.
  • Mehr Entropie bringt keinen Speed: Ich dachte, dass urandom schneller wird, wenn das System mehr Entropie hat. Dazu habe ich timer_entropyd eingesetzt, um die Entropie zu bekommen. Hat nichts gebracht, ja eher geschadet: Die Performance ist leicht gesunken.
  • Nachdenken hilft: urandom liefert Psuedozufallszahlen, rechnet also und braucht dazu CPU-Power. Mehr Entropie macht die Zufallszahlen zwar "zufälliger", aber deren Erzeugen nicht schneller.

Ich habe nun also ein paar Stunden Zeit, zu entscheiden, ob es das Risiko einer Krypto-Attacke gegen meine Platte wert ist, sie vorher 5 1/2 Tage mit Zufallszahlen zu beschreiben.

11.05.2011 17:40

Ps(i)²'s Liebling

 

Das freut den Programmierer: Auch die Kollegen schätzen offensichtlich meinen CVSS-Calculator:

Sebastian Klipper, Buchautor, Blogger (psi2.de) und ebenfalls CISSP, lobt in seinem Werk"Information Security Risk Management" (Wiesbaden, 2011. Seite 205): "Mein Favorit ist der Plattform-unabhängige CVSS-Calculator von Goebel Consult. [...] und er kann CVSS-Vektoren mit cut-and-paste verarbeiten."

 

03.05.2011 18:30

Informatikkunst

Die Rhäthische Bahn in der Schweiz UNESCO Kulturerbe. Wohl wegen Ihrer kühnen Trassenführung und Konstruktionen. Wenn ich unter einer der Brücken dort stehe (siehe Bild) und mir vorstelle, dass die schon 100 Jahre alt sind und mit viel, viel Körpereinsatz gebaut wurden, bekomme ich Hochachtung. Hochachtung vor den Ingenieuren, die das geplant und berechnet haben. Hochachtung vor Handwerkern und Arbeitern, die diese Konstrukte ausgeführt haben.

Das geht wohl Vielen so, sonst hätte es nicht für das Weltkulturerbe gereicht.

Ingenieurskunst zeigt sich an vielen Stellen, und auch der Nicht-Ingenieur läßt sich davon beeindrucken. Angefangen von einem sauber funktionierendem Taschenmesser bis zum Eiffelturm.

Schade, dass Informatikkunst nicht so offensichtlich ist. Die Kunstwerke meiner Zunft sieht man selten: Wer liest schon Quellcode und kann sich an dessen Eleganz erfreuen? Wer weiß schon einen schönen Algorithmus, ein gutes Protokoll oder eine saubere Implementierung zu schätzen.

Ein Trost bleibt (naja): Dieses Schicksal teilen wir mit der Mathematik: Deren Fourier-Transformationen sind in der Ingenieurskunst elementar, aber die Mathematik sieht man eben nicht.

03.05.2011 18:27

Interview mit Hartmut Goebel im IT Freelancer Magazin

Unternehmen sollten IT Security wichtiger nehmen

IT-Security ist in den Unternehmen nach wie vor eine Disziplin mit zu geringem Stellenwert, moniert CISSP und Sicherheitsexperte Hartmut Goebel in einem Interview im IT Freelancer Magazin, Ausgabe April/Mai. Im Gespräch mit dem Magazin gibt er den Lesern eine Einschätzung, wie es über die technischen Sicherheitsvorkehrungen bei kleine, mittleren und großen Unternehmenskunden bestellt ist. Ein guter Sicherheitsberater kann und muss maßgeblich dazu beitragen, den Kunden ein Sicherheitsniveau zu vermitteln, auf das sie bauen können.

21.03.2011 13:02

Datenschützer geben Goebel Consult Recht

Letztes Jahr im Mai hatte ich in meiner monatlichen Kolumne CISSP-Geflüster unter dem Titel Finger weg von Google Analytics auf die Probleme mit Googel Analytics hingewiesen und Alternativen vorgestellt. Eine davon ist piwik. Wie heute auf heise online zu lesen ist, schließt sich das Unabhängige Landeszentrum für Datenschutz Schleswig-Holstein (ULD) in Sachen Google Analytics meiner Meinung an und empfiehlt ebenfalls Piwik für die Webanalyse.

Allerdings nicht uneingeschränkt: In dem Prüfbericht werden einige Maßnahmen genannt, um piwik auch wirklich datenschutzkonform einsetzen zu können: So muss beispielsweise das Plugin „AnonymizeIP“ verwendet und eine Möglichkeit zum Widerspruch angeboten werden. Vorgeschrieben ist hierbei sogar detailliert, welcher der englischen Texte für den Einsatz im deutschsprachigen Raum in die Landessprache übersetzt werden muss. Die Beschreibung der Maßnahmen geht bis ins Detail der Konfiguration, etwa wie sich die Gültigkeitsdauer des piwik-Cookies steuern lässt.

15.03.2011 00:00

bash-completion ergänzt remote Pfade bei scp

Eben hatte ich ein Erlebnis der dritten Art: Ich wollte mit scp eine Datei von meinem Server kopieren, tippe also

scp myserver:/tmp/abst

und drücke aus Gewohnheit und ohne nachzudenken <Tab>. Und schon steht dort:

scp myserver:/tmp/abstract_tool.pyc

Ich brauchte einen Moment, um zu realisieren: Die bash-completion hat sich tatsächlich im Hintergrund auf myserver eingeloggt, das Verzeichnis aufgelistet und meine Kommandozeile ergänzt!

Was das Paket bash-completion alles aus der bash herausholt, begeistert mich schon lange. Doch jetzt bin ich total von den Socken!

24.02.2011 22:05