Archiv für die Kategorie ‘Geek Stuff’

Rootservermissbrauch

von Khark am 28. Juni 2007 um 22:59 Uhr

Vorschläge wofür man 1.000GB Traffic einsetzen könnte?

Vorhanden sind:
– 2x 160GB im RAID 1
– 1GB DDR400 RAM
– AMD Athlon 64 3700+
– Debian Etch (amd64)
sowie 6 IP-Adressen.

Torserver fällt leider flach, da ich den Server auch Privat einsetze.

Mein Lieblingsautor über Vista

von Khark am 28. Juni 2007 um 15:02 Uhr

Andreas Eschbach gehört ja zu den Autoren, die ich sehr gerne lese.
Nun war ich mal wieder auf seiner Homepage und lass in seinem Newsletter folgende interessante Meldung:

Pause wg. Systemwechsel
Einen herzlichen Dank muß ich an die Firma Microsoft richten dafür, das neue PC-Betriebssystem Vista so abschreckend gestaltet zu haben, daß ich nicht anders konnte, als mich nach Alternativen umzusehen: So kommt es, daß ich in diesen Tagen meinen PC einmotte, weil es künftig auf einem Mac weitergeht. Dort läuft alles schöner, schneller und einfacher, eingespielte bisherige Routinen allerdings müssen doch neu eingerichtet werden – zum Beispiel alles, was mit der Pflege meiner Website zu tun hat. Da ein paar andere Dinge vordringlicher sind, wird bis zum nächsten Update möglicherweise einige Zeit vergehen. Ich bitte um Verständnis.

Quelle: http://andreaseschbach.com/

HTML-ettercaties :-)

von Khark am 21. Juni 2007 um 21:52 Uhr

Lolcats in right-align :D

Wird wie immer bei Klick … Ach ihr wisst schon. Seid ja erwachsen.

Jabber.com downtime?

von Khark am 29. Mai 2007 um 11:11 Uhr

Weiß jemand, was mit Jabber.com los ist?

Seit 2 Tagen ist weder der Jabber-Server noch der Webauftritt erreichbar.

Narf, Grml, Argh und so – Teil 2

von Khark am 28. Mai 2007 um 17:54 Uhr

Out of Memory: Kill process 30836 (sshd) score 2258 and children.
Out of memory: Killed process 30838 (bash).

Wie gesagt. Ich hasse vServer.

Die Firewall-Schulung oder: Sicherheit und ihre praktische Umsetzung

von Khark am 27. Mai 2007 um 15:03 Uhr

Letzte Woche war ich auf einer Firewall-Schulung.
Keine direkte Cisco-Schulung, auch wenn der Referent Certified Internet Engineer, Certified Network Security Engineer, Certified Checkpoint System Administrator und Certified Checkpoint System Engineer ist.
Es ging halt mehr um die theoretischen Grundlagen und die Problematiken bei der Erstellung eines Firewalldesigns. Also Sicherheitskonzept, Sicherheitsanalyse, etc.

Nun hatte ich vorher schon 4 Schulungen bei diesem Referenten und bin immer noch sehr angetan von ihm. Seine Einstellungen vielen Dingen gegenüber deckt sich mit meinen und so Sprüche wie: “Egal wie sicher die Daten sind. Sobald ich eine Pistole an der Schläfe habe, gebe ich jedes Passwort raus.” zeigten dann für mich auch, das er das ganze auch real betrachten konnte.

Allerdings war ich dann doch leicht schockiert, als jener Referent uns etwas im Internet zeigen wollte. Also Powerpoint minimieren, den Internet Explorer aufmachen und – Strike!
Der IE zeigte eine in HTML selbstgestaltete Seite mit allen seinen Bookmarks. Inklusive dem jeweiligen Benutzernamen und Passwort in Klartext.
Sein Benutzername war auf jeder Seite (die 30 die ich sehen konnte) identisch, Passwörter gab es 1-2 verschiedene. Diese waren aber höchstens 8 Zeichen lang und beinhalteten nur kleine Buchstaben und Zahlen. Also etwa so: aw65tzu78
Und unter den angezeigten Daten waren so Sachen wie seine privaten/beruflichen Mailaccounts, etc.
Irgendwie Zweifel ich jetzt doch daran, das dieser jemand fähig ist, das was er anderen vermittelt in die Realität umzusetzen..

Meine durchschnittlichen Passwörter sehen so aus: hz(T6hu}\3tr#er4aj
Aus diesem Grund hasse ich Systeme, die Passwörter nach 8 Zeichen abschneiden (SuSE bis 9.x) oder viele Zeichen nicht zulassen.

Es wirkt

von MichiK am 27. Mai 2007 um 02:31 Uhr

Mein Stasi-2.0-Shirt zeigt Wirkung. Heute hat mich immerhin jemand darauf angesprochen. Er teilt auch meine Meinungen, was mögliche Aktivitäten gegen den immer weiter um sich greifenden Schnüffelstaat angeht. Mal sehen, was sich da noch entwickelt.

Beim Towel Day ist auch immerhin ein einziger auf mein Handtuch aufmerksam geworden…

Narf, Grml, Argh und so

von Khark am 22. Mai 2007 um 20:54 Uhr

Virtuelle Server sind Mist.

Jetzt verstehe ich diesen Satz mehr als mir lieb ist. Spätestens im Juni gibt es einen dedicated Rootserver.

What the google!?

von Khark am 7. Mai 2007 um 23:59 Uhr

Hat sowas schonmal jemand von euch geschafft?
Google hat meine Suchanfrage abgewiesen wegen angeblich böse aussehender Requests.

Google 403 Fehlermeldung - Spyware/Virus verdacht
Bild wird bei Klick größer.

O’Reilly Safari Library

von Khark am 7. Mai 2007 um 21:37 Uhr

Da ist man mal 3 1/2 Wochen nicht im Betrieb und liest sich deswegen heute so durch das Support-Postfach und was findet man da?

Eine E-Mail die uns beglückwünscht, das wir uns bei O’Reillys Safari Library angemeldet haben.
– Vor einem Monat. Muss ich vorher irgendwie übersehen haben.

Also habe ich auf Arbeit erstmal genug zu lesen :-)

Jetzt weiß ich auch endlich wie das mit der Mehrwertsteuer für europ. Kunden gemeint ist. Es fallen noch 16% Steuern auf den monatlichen Beitrag von ca. 40 US-$ an und wenn man zusätzliche Kapitel-Downloadtoken kauft (5 Stück kosten 10 Dollar) zahlt man auch nochmal 16% extra.
– Wenn man sich für den Library-Tarif entscheidet, kann man pro Monat 5 Kapitel ohne Aufpreis downloaden. Diese verfallen aber am Ende des Monats.
Ergo bedeutet das, was wir bei uns eine Liste führen was wir gerne hätten und dann kurz vor Monatsende diese Liste abarbeiten :-)

Damit ist dies hier /blog/oreilly-safari-bookshelf/ jetzt überflüssig :-)

Perfectes Timing

von Khark am 5. Mai 2007 um 11:39 Uhr

Dieses WE wollte ich endlich mal meinen Mailserver zum laufen bringen. (Courier für IMAP, POP3 und SMTP).

Und was reicht mir mein Papa eben auf dem Frühstückstisch? Die akutelle Ausgabe des Linux-Magazins. Als Hauptaufmacher: Alles über IMAP (u.a. Courier, Dovecot, Cyrus, UW IMAP im Härtetest).

Nein wie praktisch :-)

[Heise] Deutsche DVDs mit neuer Kopiersperre

von Khark am 4. Mai 2007 um 23:28 Uhr

Die Kopiersperre DVD-Movie-Protect von X-Protect ist in Deutschland auf Titeln von vier Herstellern zu finden. Die Studios beteuern jedoch, die Kopiersperre behindere nur eine verschwindend geringe Anzahl an Kunden.

[...]

Weiterhin gesperrt bleibt aber die Wiedergabe über den beliebten Media-Client VLC Media Player. Auch andere Programme aus dem Open-Source-Sektor wie Mplayer und MythTV können die von X-Protect behandelten Scheiben nicht wiedergeben. Der Hersteller zeigt auch kein Interesse daran, dies zu ermöglichen – zu groß erscheint das Risiko, damit auch DVD-Kopierwerkzeugen den Weg zum geschützten Inhalt aufzuschließen.

Quelle: http://www.heise.de

Die sind mittlerweile so dreist geworden und geben sogar öffentlich zu, das ihre Techniken Kundenunfreundlich sind?

Nee halt.. Was ist daran eigentlich so verwunderlich?

Screen Tipps & Cheatsheet

von Khark am 2. Mai 2007 um 21:17 Uhr

Vorwort:
Schreibe ich mal, wenn ich Lust habe :-)

Allgemeines:
In der vi-Manpage sind die Tastenkürzel abgekürzt. “C-a a” steht so z.B. für “Ctrl+a a” bzw. “Strg+a a” (Strg und a gleichzeitig, danach wieder ein a). Die Schreibweise “C-a” für Ctrl+a ist historisch und kommt u.a. vom Editor emacs.

Zeichen in [] dienen nur zur Erklärung! (Als Gedankenstütze für die Schalter..)

Startparameter: (Beim starten von Screen angeben.)
<sessionname> ist ein Platzhalter für den Namen der Screensession. (Kann mit -S beim erstellen des Screens vergeben werden.)
screen -r[esume] <sessionname>: Verbindet sich zur angegebenen Screensession
screen -S[essionname] <sessionname>: Gibt der Screensession einen Namen, den man dann mit -r verwenden kann
screen -D -RR <sessionname>: Detache die aktuelle Screensession und versuche alles was möglich ist um sie wieder zu attachten. (Wichtig, wenn die Verbindung zusammengebrochen ist).
screen -d/-D[etach] <sessionname>: Die Screensession detachen/verlassen.
screen -r[esume] <sessionname>: Verbinde dich zur aktuellen Screensession
screen -t <title>: Setzt den Titel für das aktuelle Programm/Window (siehe: Strg+a :title “titel”)
screen -ls/-list: Zeigt alle aktuellen Screensessions mit Namen/Pfad und Status (Attached, Detached)
screen -X <command>: Sende <command> an den angegebenen Screen. Achtung! Hierüber kann man in die Screens anderer Benutzer gucken! Daher seine Screensession unbedingt mit einem Passwort schützen! (Siehe weiter unten.)
screen -x <sessionname>
screen -c </pfad/zur/datei>: Eine alternative Konfigurationsdatei für screen angeben.
* Default ist .screenrc im /home des Benutzers.

Tastenkombinationen: (Im laufenden Screen..)
Strg+a c[reate]: Erschafft ein neues Window innerhalb eines Screens und wechselt in dieses Window
Strg+a n[ext]: Springe zum nächsten Window
Strg+a p[revious]: Spring zum vorherigen Window
Strg+a 0-9: Spring zu Screen 0-9 (Nr. des Screen anzeigen durch Strg+a “)
Strg+a N (Shift+n): Nummer und Title des aktuellen Windows zeigen.
Strg+a d[etach]: Verlasse den screen (detachen)
Strg+a h[ardcopy]: Legt einen ASCII Screenshot unter dem Namen hardcopy.n im Home-Verzeichniss des Benutzers ab
Strg+a : (Shift+.): Gehe in den Kommandomodus
Strg+a ” (Shift+2): Zeige eine Liste aller Windows im aktiven Screen mit Nummer, Namen und gesetzten Flags
Strg+a A (Shift+a): Einen Namen (title) für das aktuelle Window festlegen
Strg+a * (Shift+’+’): Zeigt eine Liste aller attachten Sceens an
Strg+a ? (Shift+ß): Hilfe anzeigen

Sicherheit & Komfort:
Strg+a x: Sperre den aktuellen Screen. Wenn man den Screen wieder reattached ohne ihn verlassen zu haben muss man erst das User-Passwort und dann das Screen-Passwort angeben. Wenn man die Screensession detached hat, muss man bei reattchen nur das Screen-Passwort angeben.
Strg+a ] (AltGr+9): Inhalte der Zwischenablage in STDIN des aktuellen Window einfügen
Strg+a Esc[ape]: In Kopier-/Scrollmodus wechseln. Kopiermodus verlassen durch drücken von Esc[ape] oder Strg+C.

Im Kopiermodus kann man mit Page-Up/-Down im aktuellen Window hoch- und runterscrollen, bekommt aber nur den Inhalt des aktuellen Windows. Im Scrollmodus würde man die zuletzt angezeigten Inhalte der anderen Windows sehen! Oder man bekommt ein Tilde “~” eingefügt (Man scrollt also nicht).
Die Erklärung hierfür ist, dass das Terminal wohl den alternativen screen buffer anzeigt. Um dies zu ändern, kann man folgende Zeile in seine .screenrc einfügen:

termcapinfo xterm|xterms|xs|rxvt ti@:te@

Arbeiten mit mehreren Regionen in einem Window:
Strg+a S (Shift+s): Splittet das aktuelle Window in 2 Regionen

Kleine Warnung: Strg+s sendet das Stop-Signal an die Shell (zumindest in der Bash), alle Anwendungen werden angehalten. Ein Strg+q sendet das Start-Signal. Alle Anwendungen werden wieder ausgeführt.
Diese Befehle sind Shellintern und haben nichts mit Screen zu tun!

Strg+a X (Shift+x): Zerstöre die aktuelle Region. (Auch: Strg+a :remove). Kein Effekt wenn nur eine Region vorhanden.
Strg+a Q (Shift+q): Zerstört alle Regionen bis auf die aktuell ausgewählte
Strg+a Tabulator: Zur nächsten (Eingabe-)Region wechseln

Screen-Befehle:
Strg+a :number (Shift+.): Aktuelles Window an Position n verschieben
Strg+a :source <Pfad zur konfigdatei>: Konfigurationsdatei neu einlesen, Session bleibt erhalten!
Strg+a :hstatus “titel”: Ändert den Namen des aktuellen Window in der Titelleiste
Strg+a :password <password>: Legt ein Password für den aktuellen Screen fest. Wenn die “password”-Direktive in der .screenrc leer ist, fragt screen nach dem neuen Passwort und speichert dieses im Buffer ab. (Zum einfügen siehe: Strg+a ])
Strg+a :remove : Zerstöre die aktuelle Region im Screen
Strg+a :only : Zerstöre alle Regionen bis auf die aktuelle Region

Screen und seine Session-Prozesse:
Wenn auch ein screen -D -RR <sessionname> nicht hilft um in die Screensession zu kommen, dann ist wohl etwas anderes im argen.
Wenn man nicht die Lust/Zeit und/oder Kenntnisse hat diesem nachzugehen, dann hilft meist folgendes:

Man sucht nach allen aktiven screen-Verbindungen und merkt sich die Prozess-ID (PID):
ps -ef|grep screen

Ein grep nach screen (Klein geschrieben!) listet einem dabei nur die Verbindungen auf. Nicht die Screensessions!
# In diesem Beispiel wäre die PID der Screenverbindung: 26727
# Auch erkennbar daran, das bei screen der Parameter -r verwendet wird und auf dem Terminal ttyp9 läuft,
# während bei SCREEN die Schalter -S und -c verwendet werden und diese kein Terminal hat.
#
user@hostname:~$ ps -ef |grep screen
user 8331 1 0 00:14 ? 00:00:08 SCREEN -S scr -c .screenrc
user 26727 26720 0 13:07 ttyp9 00:00:00 screen -r scr
user 27073 10855 0 13:10 ttyp7 00:00:00 grep screen

Nun sucht man nach der PID der gewünschten Verbindung und macht:
kill -9 PID

Die Screenverbindung wird beendet. Die Screensession bleibt aber aktiv und wird nicht beendet. Alle Programme im Screen laufen weiterhin!
Nun verbindet sich wieder auf die Session mit:
screen -D -RR <sessionname>

Wenn man die Screensession beenden will, tut man folgendes (SCREEN –> Groß geschrieben!):
ps -ef|grep SCREEN

Und schießt dann den entsprechenden Screen mit “kill -9 PID” ab. Auf das obige Beispiel bezogen, müsste man hier die PID 8331 einsetzen.

Teil 2: Meine .screenrc

Meine .screenrc

von Khark am 2. Mai 2007 um 21:14 Uhr

Gibt auch als Textdatei: https://83.246.72.33/screenrc.txt
Die neuere Version der .screenrc von ssc gibt es hier: http://unixgu.ru/doku.php?id=configfiles
– Jetzt mit integriertem Download-Manager und MP3-Player :-)

# .screenrc – Written (w) 2003-2005 by Stephan Schmieder
# Modified by me :-)
# “activity in window #%n title: %t~”
activity “%C -> %n%f %t activity!”
# pass on the “beep” (CTRL-G) by adding a ‘~’:
bell “%C -> %n%f %t bell!~”
# set colors for “messages” and “text marking”
sorendition kG
# console-screensave, (!)doesn’t lock(!)
# idle 180 eval “screen cmatrix” “idle 0″
# [hostname ][windowlist][month and day][time]
caption always “%{WB}%H %{kG}%?%-Lw%?%{bw}%n*%f %t%?(%u)%?%{kG}%?%+Lw%? %88=%{YR}%M%d %94=%{RY}%c%=”
password xxxxxxx
# todo: dynamisch machen :-)
defhstatus “[user@hostname] screen”

# key bindings
bind t screen -t top 0 top
bind c screen -t bash 1 bash -l
bind n screen -t netstat 2 sudo watch netstat -pan
bind l screen -t lsof 3 sudo watch lsof -i
bind i screen -t icq 4 centericq
bind r screen -t irc 5 irssi
bind s screen -t silc 6 silc

# Automated Screensessionconfiguration:
# What programs are started where, if a new screensession is started.
screen -t bash 0 bash
screen -t bash 1 bash
screen -t top 2 top

# use F7 and F8 to cycle trough the windows
bindkey -k k7 prev
bindkey -k k8 next

# unbind some keys
bind .
bind ^\
bind \\
bind K

# mouse support in screen
# see: http://arcknowledge.com/gnu.screen.user/2004-09/msg00022.html
# If it doesn’t work, try -T rxvt as argument (for example: screen -S scr -c .screenrc2 -T rxvt)
term rxvt

# termcap stuff
termcapinfo xterm ti@:te@
# make the cursor show up in red:
termcapinfo linux “ve=\E[?25h\E[?17;0;64c”
# this makes screen work within rxvt on cygwin:
#termcapinfo rxvt-cygwin-native ti@:te@
# scrollback buffer in lines
defscrollback 1000
# my shell
shell /bin/bash
# no copyright message
startup_message off
# show messages for 2 seconds
msgwait 2
# visual bell
vbell on
vbell_msg ” *beep* ”
# don’t remember what these do
deflogin off
silencewait 15

Windows ist doch sowas von dreckig!

von Khark am 29. April 2007 um 18:24 Uhr

Irgendwie ist mein DirectX 9.0c unter Windows XP kaputt. Wann immer ein Programm ein Fenster öffnen will, was etwas mit 3D zu tun hat (Spiele) schließt es sich sofort wieder und die Applikation verschwindet heimlich, still und leise im Datennirvana.

Ein paar Infos bekommt man, wenn man in C:\WINDOWS\system32\directx.log nachguckt.
So, DirectInput ist irgendwie kaputt. Einige DLLs meinen sie wären sonstwas (nicht da, fehlerhaft, etc.).

Aber DirectX deinstallieren? Nee.. Das geht nicht. “Diese Option ist von Microsoft nicht vorgesehen / wird nicht benötigt.” heißt es überall.
Also sucht man sich viele obskure Skripte zusammen die alles aus der Registry kloppen was irgendwie DirectX im Namen trägt und löscht alle DLLs. Anschließend setzt man dazu die DirectX-Version auf 0.000.000…

Hilft das? Nein. Neuinstallieren kann man das immer noch nicht. Der Installer ist immer noch der Meinung die akutelle Version wäre installiert.
– Man kann diese aber auch noch nicht einmal reparieren, geschweige denn einfach nochmal drüber installieren.

Tolle Wurst Microsoft wirklich. Natürlich sind MS-Applikationen so fehlerresistent das man niemals überhaupt auch nur den Gedanken fassen würde sie deinstallieren zu wollen.

Ubuntu 7.04 (Feisty Fawn)

von Khark am 29. April 2007 um 18:15 Uhr

Also dieses Ubuntu ist ja schon toll. Ein direkt benutzbares System nach der Installation und so Dinge wie die Windows-Codecs, libdvdcss2 und Beryl (Howto gibts im Ubuntu Guide) lassen sich ohne Probleme nachinstallieren.
– Bei Debian ist sowas irgendwie immer in eine Repository-Sucherei ausgeartet.

Die ext. USB-Festplatte wurde gleich erkannt und eingerichtet. Zugriff auf die Windows-NTFS-Partition ist ebenfalls möglich und der Grafikkartentreiber (ATi Mobility Radeon 7500) wurde auch korrekt installiert. ACPI ging auch ohne das ich etwas tun musste.
– Bei Debian musste man da häufig etwas frickeln, bzw. Konfigdateien editieren.

Nur der Monitor mode bei meiner Orinoco und der VMware-Server will noch nicht so ganz. Aber ansonsten bin ich zufrieden.

EDIT: Der ext. USB CD-/DVD-RW/DVD-RAM-Brenner wurde auch sofort erkannt und brennt ohne Probleme :-)
EDIT 2: VMware geht nun auch nachdem ich das hier gelsen habe http://ubuntuguide.org/wiki/Ubuntu:Feisty#How_to_install_Windows_Applications_.28VMWare_Server_or_Workstation.29

Endlich mal eine klare Ansage

von Khark am 27. April 2007 um 18:43 Uhr

Khark sitzt im IT-Unterricht (Java) und redet mit seinem IT-Lehrer (Dipl.-Inf.):
[...]
Khark: Also mit dem Programmierunterricht an der BBS 3 in B****schweig war ich ja total unzufrieden. Jede Stunde gabs das C-Programm vorab ausgedruckt auf Papier in die Hand.
Fertig war man nach 5 Minuten. Man konnte das Programm von letzter Stunde nehmen und musste 3 Zeilen ändern. Dass war es dann.
Man hat dort nicht wirklich etwas dabei gelernt. Und bei Fragen konnte einem der Lehrer auch nicht wirklich helfen.
IT-Lehrer: Welchen Lehrer hattest du den?
Khark: Herrn B***dt, mit dt.
IT-Lehrer: Ach der.. Ja der kann auch nichts. Der wurde dazu verpflichtet. Hatte da vorher kein Interesse dran und danach auch nicht.

Also ich hätte nach dem “Wen hattest du den?” mit allem gerechnet. Aber nicht mit so einer Aussage.

Aber es ist ein verdammt gutes Gefühl, wenn in solchen Fragen der Lehrer gleicher Meinung ist.

Referatsnote

von Khark am 27. April 2007 um 18:27 Uhr

Zitat aus: Das kann man sich auch sparen. Oder: Wieso 15min für einen Vortrag zu wenig ist.

Ich will gar nicht wissen wie mein Referat “Aufbau von Betriebssystemen” im nächsten Block zensiert wird, wenn ich als einzige Quelle “Modern Operating Systems” von Andrew S. Tanenbaum angebe.

Es wird eine Eins. Mit leichtem Minus in der Formnote weil ich zu schnell spreche und mein Azubikollege zu oft Äh/Öhm gesagt hat. (Finde ich zwar nicht, aber ok..)

Spass mit Telnet (Ü18)

von Khark am 23. April 2007 um 17:30 Uhr

Macht mal “telnet gw.boston.ru” :-)

DVDs verschlüsseln

von MichiK am 22. April 2007 um 02:27 Uhr

Ich habe einige dutzend Gigabytes an Daten, die nicht jeder sehen soll — aus guten Gründen, die ihr euch vermutlich denken könnt. ;) Zur Zeit ist mein Paranoia Level wieder monoton steigend und ich habe mir mal überlegt, wie man die Backups vernünftig verschlüsselt sichert, aber gleichzeitig auch ordentlich Zugriff darauf bekommt.

Die erste Idee war es, die Dateien einfach mit GnuPG zu verschlüsseln. Guter Plan eigentlich, aber mit einigen Haken:

  • Wenn ich meinen privaten Schlüssel verliere, sind die Daten weg. Unwiederbringlich.
  • Wenn man eine einzige Datei aus dem großen Image braucht, muss man alles entschlüsseln. Das dauert lange. Außerdem muss man dann 4,7 GB für die temporär entschlüsselten Daten vorhalten.
  • Die entschlüsselten Daten landen auf der Festplatte oder einem anderen schreibfähigen Medium. Nicht wünschenswert.

Dann die Idee: Warum macht man es mit DVDs nicht einfach genauso wie mit Festplatten? LUKS ist bequem und funktioniert. Wenn man eine gute Passphrase hat und die für sich behält, sind die Daten sicher. Man kann da ein Filesystem drauftun und das beliebig mounten und draus lesen. Perfekt.

Wie aber vorgehen? Erstmal brauche ich eine temporäre Datei, in die die Daten kommen sollen:

dd if=/dev/zero of=foo.img bs=1M count=4450

Wer extrem paranoid ist, kann auch aus “/dev/random” lesen, aber das ist meiner Meinung nach etwas zu viel des guten. Mit 4450 MiB ist man recht gut bedient. 4700000000 Bytes sind ca. 4482 MiB – ich weiß leider nicht, wieviel Overhead da noch ist, also lieber großzügig kalkulieren.

Nun muss in diese Datei ein LUKS-Volume. Ein simples `cryptsetup luksFormat foo.img` scheitert, da der Device Mapper natürlich richtige Devices sehen will und nicht mit Dateien kann. Also nehme ich den Umweg über ein Loop-Device:

losetup /dev/loop0 foo.img
cryptsetup -c aes -s 256 luksFormat /dev/loop0

Dann mit “YES” antworten und eine schöne Passphrase ausdenken. 20 Zeichen sollten das Minimum sein. Anschließend muss das ganze ein richtiges Blockdevice werden:

cryptsetup luksOpen /dev/loop0 foo

Nun ist unter “/dev/mapper/foo” ein Gerät zu finden, das man mit beliebigen Dateien füllen kann. Im Idealfall natürlich ein Dateisystem. Ich entscheide mich da für ext2. Letztendlich ist es egal, jeder soll nehmen, was er mag, aber dabei im Hinterkopf behalten, dass das ganze mal read-only wird. Also ist Journaling beispielsweise Schwachsinn.

mke2fs /dev/mapper/foo
tune2fs -c 0 -i -1 -m 0 /dev/mapper/foo

Mit `tune2fs` setze ich nun noch die maximale Anzahl von Mounts, bevor das System einen Check will auf unendlich, sowie die Maximale Zeit, bevor das passiert auf ca. 138 Jahre. Außerdem bekommt der Superuser keine reservierten Blocks. So wird einerseits sichergestellt, dass man keinen Stress bekommt, falls man das Image irgendwann einmal zurück auf die Platte kopiert, den Inhalt ändert und dann das selbe Dateisystem wieder brennt. Anderseits braucht der Superuser hier keinen garantierten Platz (bei / oder /var ist das ja sinnvoll, ansonsten: nö).

Anschließend kann das ganze gemountet werden und außerdem noch direkt einem User, der das ganze dann befüllen darf, die entsprechenden Rechte gegeben:

mount /dev/mapper/foo /mnt/foo
chown user /mnt/foo && chgrp user /mnt/foo

Anschließend kann der User das Dateisystem beliebig mit vertraulichen Daten zuschaufeln. Um den Tresor abzusperren, genügen drei Zeilen:

umount /mnt/foo
cryptsetup luksClose foo
losetup -d /dev/loop0

Meine erste Idee war nun, “foo.img” direkt auf eine DVD zu schreiben. Ohne Dateisystem drunter. Obscurity und so. ;) Allerdings gab es da etwas Stress. Ich konnte das zwar bequem brennen und den Safe aufschließen, aber `mount` hat dann immer rumgemeckert: “blocksize too small for device”. Weiß da jemand mehr?

Als Workaround habe ich nun einfach ein ISO-Image mit “foo.img” drin erstellt und das dann auf die DVD getoastet:

mkisofs -J -R -o foo.iso foo.img
growisofs -dvd-compat -speed=4 -Z=/dev/hda=foo.iso

So hat man halt eine zusätzliche Abstrahierungsschicht noch dazwischen, aber dafür funktioniert es wenigstens. Wie kommt man da jetzt wieder dran, mag man sich fragen? Ganz einfach:

mount /dvdrom
losetup /dev/loop0 /dvdrom/foo.img
cryptsetup --readonly luksOpen /dev/loop0 foo
mount -o ro /dev/mapper/foo /mnt/foo

Ebenso leicht kann man den Tresor wieder abschließen:

umount /mnt/foo
cryptsetup luksClose foo
losetup -d /dev/loop0
umount /dvdrom

Natürlich versteht sich von selbst, dass man noch einige zusätzliche Sicherheitsvorkehrungen treffen sollte, damit auch ansonsten die Sicherheit gewährleistet wird:

  • Die DVDs nur auf eigenen, wirklich vertrauenswürdigen Maschinen mounten. Wenn die Passphrase auf einem möglicherweise kompromittierten Rechner eingegeben wird, ist die Sicherheit dahin.
  • Die DVDs nicht mit dem wahren Inhalt beschriften, sondern entweder mit Codebezeichnungen oder einfach durchnummerieren. Man kann gerne eine Zuordnungstabelle der einzelnen DVDs zu ihrem Inhalt anlegen, sollte diese dann aber ebenfalls nur sicher verschlüsselt aufbewahren. Ich brenne einfach die aktuelle Fassung auf die neuste DVD und lösche sie dann von meiner Festplatte. So muss ich nur die aktuellste DVD mounten und habe einen Überblick über die Inhalte.
  • Auch die restlichen Teile des Systems entsprechend sichern. Eine verschlüsselte Swap sowie ein verschlüsseltes /tmp sind schon fast Pflicht. Die DVDs nicht mounten, wenn andere Personen Zugriff (auch remote) auf den selben Rechner haben. Die DVDs nicht gemountet lassen, wenn man den Rechner verlässt.

Anregungen? Weitere Ideen? Verbesserungsvorschläge? Kritik? Ich bin für alles offen. Falls das Konzept für tauglich befunden wird, wird die nächste Spindel so befüllt. :)