Verschlüsselte Partition mit Debian und luks

Eine verschlüsselte Partition einrichten

Vorraussetzung: Eine leere Partition

Die leere Partition formatieren wird als erstes.

cryptsetup luksFormat –y /dev/hde1

Der Befehl fordert uns auf eine Passphrase einzugeben. Am besten verwenden wir hier nun Zahlen, Sonderzeichen, Klein- und Großbuchstaben und was wir noch so auf der Tastatur finden.

Damit wir nun auch ein Dateisystem erzeugen können, müssen wir das verschlüsselte Device öffnen. Hier wird auch gleich die neue Passphrase verlangt.

cryptsetup luksOpen /dev/hde1 hde1_crypt

Ich habe es mit ext3 formatiert.

mkfs.ext3 /dev/mapper/hde1_crypt

Die verschlüsselte Partition soll beim Starten gemountet werden. Wir müssen bedenken, dass die Passphrase beim Starten verlangt wird.

echo "hde1_crypt /dev/hde1 none luks" > /etc/crypttab

Erst jetzt kommen wir an unsere Daten, und können die Partion mounten.

echo "/dev/mapper/hde1_crypt /ein/datei/pfad rw 0 0" >> /etc/fstab

Wenn alles klappt, dann sollte beim nächsten Start nach einer Passphrase gefragt werden.

Continue reading Verschlüsselte Partition mit Debian und luks

HA mit Debian Lenny & drbd8, ocfs2, heartbeat, pound (http) und mysql

Vorrausetzung

  • 2 Server mit einer Lenny Grundinstallation ( Hier als Servernamen cnode1 und cnode2 )
  • Optional: 2 Netzwerkkarten je Server (für drbd)
  • eine leere Partion je Server
  • Vorausgesetzt es ist nicht anderst angegeben, alles auf beiden Nodes ausführen !

Konfiguration von drbd

Auf beiden Servern als root anmelden

aptitude install drbd8-utils drbd8-modules-2.6.24-1-686
echo "drbd" >> /etc/modules

Nun sichern wir die alte drbd-Konfigurationsdatei

mv /etc/drbd.conf /etc/drbd.conf.old

Jetzt erstellen wir eine neue Datei mit vim /etc/drbd.conf

global { usage-count yes; }
common { syncer { rate 10M; } }
resource ha {
protocol C;
startup { wfc-timeout 0; degr-wfc-timeout 120; }
disk { on-io-error detach; }
net {
cram-hmac-alg sha1;
allow-two-primaries; # Wichtig für Primary/Primary Setup
}
on cnode1 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.1.1:7788;
meta-disk internal;
}
on cnode2 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.1.2:7788;
meta-disk internal;
}
}

Speichern mit :wq

Wenn 2 Netzwerkkarten vorhanden sind, drbd lieber auf eine eigene Karte konfigurieren. Damit drbd mit der Partion etwas anfangen kann, müssen wir diese initialisieren.

drbdadm create-md ha

Nun können wir die beiden Partionen synchronisieren. (Den folgenden Befehl nur auf einer Node starten !)

drbdsetup /edv/drbd0 primary --overwrite-data-of-peer

Je nach dem wie groß die Partionen sind kann es nun etwas Zeit vergehen. Der Fortschritt kann überprüft werden mit

/etc/init.d/drbd status

In der Ausgabe sollte sich die unten stehende Zeile finden lassen, wenn beide drbd-Devices synchron sind.

0: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---

Nun können wir die zweite Node auch zum ”Primary” machen

drbdsetup primary r0

Update (Danke keks)

Da es sehr störend ist, wenn wir die Server neustarten, immer per Hand die 2 Nodes als Primary zu definieren, fügen wir noch zusätzlich in den startup-Block

become-primary-on both;

ein. Die Zeile sollte dann wie folgt aussehen:

startup { wfc-timeout 0; degr-wfc-timeout: 120; become-primary-on both; }

Das bewirkt, dass beide während des Bootvorgangs als Master definiert werden. Nun die Konfiguration auf beiden Nodes aktualisieren, dann

drbdadm adjust ha

und

drbdadm primary ha

(Befehle auf beiden Nodes ausführen!)

Wichtig: Um diese Funktion zunutzen, müsst ihr DRBD aus den Quellen bauen, da die Funktion (laut drbd-Homepage) erst ab 8.2.0 implementiert ist.

Konfiguration von ocfs2

Jetzt installieren das ocfs2 Filesystem

aptitude install ocfs2-tools ocfs2console

Noch die Konfigurationsdatei erstellen

#/etc/ocfs2/cluster.conf

node:
ip_port = 7777
ip_address = 192.168.1.1
number = 0
name = cnode1
cluster = ocfs2

node:
ip_port = 7777
ip_address = 192.168.1.2
number = 1
name = cnode2
cluster = ocfs2

cluster:
node_count = 2
name = ocfs2

Nun sind wir fast fertig. Jetzt einmal

/etc/init.d/ocfs2 restart

und dann können wir das Filesystem erstellen mit

mkfs.ocfs2 /dev/drbd0

Damit wir mit dem Filesystem arbeiten können, müssen wir es initialisieren.

/etc/init.d/o2cb online ocfs2

bewirkt das der Cluster mit dem Namen ocfs2 geladen wird.

/etc/init.d/o2cd load
/etc/init.d/o2cd online ocfs2

Jetzt können wir es mit

mount /dev/drbd0 /srv

nutzen

Konfiguration vom HTTP Loadbalancer – pound

Hier 🙂

Konfiguration von heartbeat

Folgt !

Serielle Konsole für Server (Grub)

Einführung

Wenn wir zwei Server irgendwo (z.B. Rechenzentrum) stehen haben und es die Möglichkeit besteht, dass man beide via Nullmodem-Kabel verbinden, kann man sie auch ohne SSH-Zugang warten (z.B. nach einem fehlgeschlagenen Kernelupdate). Leider nur immer in eine Richtung. Für beide Richtungen bräuchte man 2 Nullmodem-Kabel.

Konfiguration

Damit wir die Möglichkeit haben den Kernel auszuwählen, sollten wir Grub sagen, dass es seine Ausgabe an den seriellen Port weiterleitet.

Dazu fügen wir folgende Zeien in die /boot/grub/menu.lst hinzu.

serial --unit=0 --speed=57600
terminal --timeout=2 serial console

Erklärung:

--unit=0

heißt einfach das der Com1 bzw. ttyS0 genutzt wird. Der Parameter

--speed=57600

steht für die Übertragungsgeschwindingkeit. Standard ist 9600.

--timeout=2 serial console

bedeutet das man 2 Sekunden Zeit hat und das die primäre Ausgabe auf dem seriellen Port und die sekundäre auf der Console ist.

Jetzt wird die Ausgabe vom Grub an den seriellen Port umgeleitet. Damit wir aber auch einen Login an der seriellen Konsole bekommen, müssen wir die /etc/inittab noch bearbeiten.

Wir suchen diesen Teil

# Example how to put a getty on a serial line (for a terminal)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

und entfernen das # vor der Zeile mit T0 und ändern die Zahl 9600 wieder auf 57600.

Die Zeile

T0:23:respawn:/sbin/getty -L ttyS0 57600 vt100

heißt dann nichts anderes als das nach dem Starten ein Login auf ttyS0 in/mit der Geschwindigkeit von 57600 Kbit/s auf uns wartet.

Damit der Kernel seine Meldungen auf der seriellen Konsole aus gibt, geben wir dem Kernel noch zwei Parameter mit:

console=tty0 console=ttyS0,57600n8

Das sollte dann so in etwa aussehen:

title           Debian GNU/Linux, kernel 2.6.18-6-686 (single-user mode)
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.18-6-686 root=/dev/hda1 ro vga=791 console=tty0 console=ttyS0,57600n8
initrd          /boot/initrd.img-2.6.18-6-686
savedefault

Das heißt, dass die Kernelmeldung auf der console und der seriellen Konsole ausgegeben werden. Wenn alles fertig ist, neustarten. Mann kann jetzt zB via minicom auf dem anderen Server die Ausgabe von dem gerade eingerichteten Server sehen.