Archive for the ‘Linux’ Category

Linux verschlüsseltes Software Raid

Samstag, April 17th, 2010

Die Überschrift habe ich absichtlich etwas offen gehalten, da es kurz um die Installation, einem Test und dann einem gewollten Datenverlust und Rebuild geht.

Mein Testsystem ist eine aktuelle Debian Installation mit einer Festplatte für das System und zwei identischen Festplatten für mein verschlüsseltes Software Raid das ich während der Installation von Debian kinderleicht erstellt habe. Es handelt sich um ein Raid 1, gespiegelt. Es spielt keine Rolle, ob ihr das System per Passwort oder nach der Installation per Flash-Speicher frei schalten lasst.

Wenn dann alles geklappt hat, dann könnt ihr ganz einfach mal testen ob alles glatt gelaufen ist mit:

sudo mdadm -D /dev/mdX

wobei das X für eine Zahl steht, die ihr bei der Installation oder beim booten sehen könnt.

Wichtig ist, dass ihr dann in der Konsole sehen könnt, ob das Raid vollständig ist oder nicht und welche Platte, also /dev/sd[a|b|c|d] etc. angeschlossen ist. (zu lesen ist das als entweder a oder b oder c, also sda oder sdb, etc.)

In meinem Testfall hat mit dem Raid nach der Installation alles gut geklappt und der Konsolen Output zeigt mir, dass mein Raid funktioniert. Jetzt habe ich den Rechner runter gefahren und eine der beiden Platten abgesteckt und wieder gebootet. Jetzt kann ich sehen, dass mein Raid nicht mehr vollständig ist. Anschließend habe ich die abgesteckte Platte an einem Windows System mit NTFS formatiert und anschließend ein paar Daten darauf kopiert und dann wieder an meine Debian Installation angesteckt.

Jetzt muss man eben heraus finden, wie die neue Festplatte intern gemapped wird. Ihr schaut also wieder mit dem gleichen Befehel wie oben angegeben, welcher Buchstabe für die schon vorhandene Festplatte vergeben wurde und dann könnt ihr zum Beispiel in gparted sehen, welchen Buchstaben die neu (wieder) angesteckte Festplatte bekommen hat und ihr solltet die vorhandene NTFS Partition in gparted einfach löschen.

Wenn ihr das geschafft habt, dann geht es wieder ins Terminal und ihr gebt folgenden Befehl für ein Rebuild ein:

sudo mdadm --re-add /dev/mdX /dev/sde

(/dev/sde ist hier nur ein Beispiel!)

und was der Rechner jetzt treibt könnt ihr mit

watch -n .1 cat /proc/mdstat

verfolgen und beobachten. Vielen Dank hier schonmal für diesen Beitrag.

Anschließend habe ich den Rechner wieder runter gefahren und habe die andere Festplatte abgesteckt und wieder gebootet und siehe da, alles funktioniert! Jetzt könnte man natürlich die andere Festplatte abstecken und das gleiche Szenario nochmal durch spielen, aber mir ging es eig. nur darum, ob der Rebuild trotz der Verschlüsselung klappt und ich bin froh, dass alles so einwandfrei funktioniert hat.

Links zu gparted, debian oder mehr wurden deshalb nicht angegeben, da ich erwarte, dass der Leser es schafft, die genannten Seiten trotzdem aufzurufen.

Und immer schön Backups machen, bevor ihr mit wichtigen Daten herum spielt!
Viel Spaß mit Linux, dm-crypt und OpenSource.

Kleine Helfer große Wirkung – Terminal Tipps

Samstag, Januar 23rd, 2010
  • Logfiles beobachten: $ tail -F /path/to/file.log
  • nach bestimmten Funktionen oder Textpassagen suchen:
    $ grep -rn ‘FunktionXYZ()’ *

    -r = rekursiv
    -n = Zeilennummer
    -* Pfad (ich rufe den Befehl immer im root Verzeichnis auf, in dem ich suchen will)
    weitere interessante Parameter sind -l oder -L:
    -l = print only names of FILEs containing matches
    -L = print only names of FILEs containing no match
    oder ihr piped das ganze und dreht das Ergebnis mit -v um:
  • und zwar ist das gut, um sich alle inputs eines Formulars auszudrucken:
    $ cat -s insert.html.php | grep name | grep -v ‘<!–’ | grep -v ‘label’ | grep -v ‘require’

    dies setzt natürlich voraus, dass jedes input/textarea, etc. einen name Tag besitzt.

  • wenn in einem Ordner nur Dateien liegen/ oder auch nur eine Datei und ihr auf die schnelle wissen wollte, wieviele Zeichen Code ihr geschafft habt:
    $ cat * | wc -l
  • [update]
    wenn ihr noch firebug logging-code in eurem Webprojekt habt und ihr nicht wisst, ob ihr schon alle logging Informationen auskommentiert habt, dann könnt ihr das mit diesem Befehl schnell raus finden:
    $ grep -r ‘console.log(‘ * | grep -v ‘//’

Und es gibt sicher noch mehrere nützliche Tools, ein nettes ist z.B. noch figlet oder vrms, welches euch anzeigt welche installierten Programme nicht OpenSource sind.

Und allgemein gilt: $ <package> – – help oder $ man <package>

Have fun

SSL mit stunnel – https the simple way

Dienstag, Januar 12th, 2010

Hallo,
der eine oder andere Leser hat vielleicht schon mal überlegt einen Webserver zu installieren. Ob jetzt Apache oder lighttpd (oder andere), liegt natürlich bei euch und je nach Anwendungsfall ist der eine oder andere besser geeignet.

Ich will heute nicht auf die Installation eines Webservers eingehen, sondern auf die Installation und Konfiguration von stunnel. Einfach gesagt, statt unverschlüsseltem http ein verschlüsseltes https via Zertifikaten. Ein lauffähiger Webserver wird voraus gesetzt.

Die Anleitung geht von einem Debian Linux oder Ubuntu aus. Stunnel gibt es aber auch für Windows.

Erstmal müssen wir uns um SSL und die Zertifikate kümmern:

sudo openssl req -new -x509 -days 3650 -nodes-out stunnel.pem -keyout stunnel.pem

einfach alle Fragen irgendwiebeantworten und danach per

openssl x509 -subject -dates-fingerprint -in stunnel.pem 

anschauen, was ihr so eingegeben habt. stunnel.pem ist ein frei gewählter Name und kannauch foo.pem genannt werden.
So,jetzt installieren wir stunnel:

sudo aptitude install stunnel4

dann unter “/etc/default/stunnel4″

von ENABLED=0 auf ENABLED= 1

abschließend in  “/etc/stunnel/stunnel.conf” folgendes editieren:


; Certificate/key is needed in server mode and optional in client mode

cert = /etc/stunnel/stunnel.pem
key= /etc/stunnel/stunnel.pem

; Protocol version (all, SSLv2, SSLv3, TLSv1)
sslVersion= SSLv3

; Some security enhancements for UNIX systems - comment them out on Win32
chroot = /var/lib/stunnel4/
setuid = stunnel4
setgid = stunnel4
; PID is created inside chroot jail
pid= /stunnel4.pid

; Some performance tunings
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1

[https]
accept = 443
connect = 8080

Erklärung: accept = stunnel lauscht auf Port 443 und leitet an connect Port, hier 8080 weiter. Ganz am Anfang müssen natürlich die Dateinamen mitden generierten Zertifikaten übereinstimmen.

Jetzt noch ein freundliches

sudo /etc/init.d/stunnel4 restart

und schon müsstet ihr euch per https://localhost/ verbinden können. Es kommt ein kurzer Hinweis mit einem nicht signierten Zertifikat, das müsst ihr annehmen und schonläuft die verschlüsselte Verbindung.

Mehr Informationen über SSL findet ihr bei www.google.de oder www.bing.de< /A> .

Das wars mit https in 10 Minuten.

ssh und Passwörter im Klartext – hö?

Dienstag, September 22nd, 2009

Auf meinem Laptop läuft u.a. ein MySQL-Server, diesen starte ich dann wenn ich ihn brauche. Um ein bisschen Tipparbeit zu sparen, gibt es dafür ein Alias. Dieser funktioniert aber nicht, wenn man das ganze folgendermaßen probiert:

ssh laptop '<Alias>'

Also habe ich es ausgeschrieben:

ssh laptop 'sudo /etc/init.d/mysql start'

Dann werde ich natürlich aufgefordert mein Admin Passwort einzugeben und dann habe ich erstmal geschluckt, als das mein Passwort im Klartext erschienen ist. Hö?

Kann das vielleicht mal jemand von euch testen und mir Bescheid geben ob das bei euch auch so toll funktioniert?

Und das von Debian per ssh zu Ubuntu – ganz schön komisch!

Verschlüsselung, Fehler und MySQL ohne InnoDB

Dienstag, September 1st, 2009

Hallo,

ich habe gestern etwas mit meiner aktuellen Verschlüsselung und dm-crypt rum gespielt und wollte meine /tmp Partition etwas anders verschlüsseln als bisher. Nach dieser Anleitung hat es leider nicht so geklappt wie ich mir das vorgestellt habe.  Nachdem diverse Versuche nicht geklappt haben, habe ich die “geschrottete” Partition mit gparted formatiert, wollte wieder booten, doch leider kam ich nicht mehr in mein System, also zurück in gparted und dann ist da mein Boot-Flag für meine / Partition weg. Ok, danach war ich dann wieder soweit wie vorher. Mein System funktioniert, aber ich kann mich nicht einloggen. Also habe ich ein neue verschlüsselte /tmp Partition erstellt. (Befehle u.a. hier)

Leider kam ich danach immer noch nicht in mein System. Ich konnte jedoch nach den richtigen Anpassungen in der /etc/fstab und der /etc/crypttab alles korrekt mounten. Das Problem: die Rechtevergabe in /tmp galt nur für root und nicht für meinen aktuellen Benutzer. Also konnte ich mich nach einem freundlichen “chown -hR <user>:<user> /tmp” wieder in mein System einloggen. Juheeee! (ich hatte fast nicht mehr daran geglaubt und schon diverse andere Distributionen als Linux runter geladen :-) )

Ok, soweit so gut. Ich habe eine lokale lighttpd und mysql Installation, die ich manuel starte um diverses zu programmieren.

Nur leider startet mein mysql Server nicht mehr so wie er soll. Und wirft komische Fehler, zu denen man alles mögliche im Internet findet. Der Fehler wenn mysql gestartet wird: ERROR 2013 (HY000) at line 2: Lost connection to MySQL server during query und hier der Fehler, wenn ich eine einfache Abfrage gegen die DB schicke: ERROR 1286 (42000): Unknown table engine ‘InnoDB’ . Na gut, man könnte meinen, dass die InnoDB Engine aus ist, ist sie aber laut my.cnf nicht! Dies kann man in der my.cnf nachsehen oder so innerhalb der mysql Console: “show variables like ‘have_innodb’;” und wenn hier steht “have_innodb = DISABLED” dann müsst ihr das in der Konfiguration anpassen, wenn hier aber wie in meinem Fall “have_innodb = NO” steht, dann habt ihr ein Problem.

Ich habe dann noch etwas recherchiert und hätte eig. auch selbst auf die Lösung kommen können, denn dieser kleine Befehl war des Rätsels Lösung: “chmod -R 0777 /tmp“. Ist ja auch klar, wenn man bedenkt, wer nach der neuen Formatierung Zugriff auf /tmp hatte.

Vielleicht erspart es ja dem einen oder anderen Ärger mit MySQL und komischen Fehlermeldungen.