IT-Service GmbH 


sgrX1.ulm.go-itservice.de

Jetway J7F2EDEN126 / Via Epia M10000 mit Debian 3.1 Sarge

Hardware:

  • Jetway J7F2EDEN126 (Via C7 1.2GHz, passiv) (alt:M10000 Board)
  • HD 800MB als 1.Master
  • 2. HD: 400GB SATA (WD 400GB) (alt: 320GB WD3200 IDE)
  • DVD als 2. Master
Bootreihenfolge im BIOS: CDROM - HD0
Netzwerk erstmal ausstecken (wegen DHCP)

Linux installieren:

Mit Debian Sarge DVD 1 booten:(Vorsicht: englische Tastaturbelegung)
boot> linux26 debian-installer/framebuffer=false
der Framebuffer muss beim M10000 ausgeschaltet sein, da die Anzeige sonst nicht geht. Ohne linux26 (nur linux) wird der 2.4.27 Kernel installiert.
	Language:	German<enter>
	Land:		Deutschland
	Tastatur:	deutsch
dann startet Hardwareerkennung und die DVD wird durchsucht... (dauert ca 1 Minute) Debian installer wird geladen, Hardwareerkennung (Netzwerk) ,
	primäres Netz:	eth0 (VIA VT6102)
DHCP läuft ziemlich lange, falls das Netz ausgesteckt wurde, sonst muss nachher in der /etc/network/interfaces editiert werden:
	Konfiguration:	manuell (auswahl)
	IP Adresse:	192.168.80.11
	Netmask:	255.255.255.0
	Gateway:	192.168.80.1
	DNS:		192.168.80.10
	Rechnername	sgrx1
	Domäne:	ulm.go-itservice.de
Resthardwareerkennung
	Festplatte:	manuell
	(Cursor auf Partition,  ...)
			Bootflag setzen, Grössen auswählen, Mountpoint /
	740 MB ext2	(ext 2 wegen booten von alten Disketten wählen, formatieren, bootflag)
	65 MB swap
änderungen schreiben, Partitionierung erfolgt. Anschliessend wird das Grundsystem installiert (dauert ca 10 Minuten auf der alten Miniplatte) und der Bootloader:
	Bootloader	MBR 
Die installation wird beendet, DVD ausgeworfen und um Neustart gebeten:
	Neustart 	
Neustart
	Konfiguration	
	Uhrzeit:	GMT
	Zeitzone:	Berlin
	rootpasswort:	**** (und Bestätigung)
	User:		Guenther Obermaier
	Account:	go
	passwort:	**** (und Bestätigung)
	apt Zugriff:	cdrom		(vorher DVD 1 einlegen)
die Durchsuchung dauert ...
	2. CD:		(vorher DVD 2 einlegen)
	weitere CD:	
Anschliessend wird versucht, Updates von security.debian.org zu holen (was ohne Netz fehlschlägt). DVD1 wieder einlegen. Installieren von Software:
	* manuelle Paketauswahl
	Mailserver:
	derzeit nicht konfigurieren
	Mails root:	go
Falls man die Grundkonfiguration später nochmals starten will: base-config als root aufrufen
Jetzt das Softwareverwaltungstool Aptitude starten:
# aptitude
nicht installierte Pakete auswählen, am besten über "Suche":
	+ acl 
	+ apache2 (worker) 
	+ cryptsetup
	+ hdparm
	+ laptop-mode-tools
	+ ldap-utils
	+ nfs-kernel-server	
	+ ntpdate
	+ perlmodule	(siehe Allgemein zu "Sarge")
	+ php4 		(incl diverser Module, siehe Allgemein zu "Sarge")
	+ rsync
	+ samba
	+ slapd
	+ sudo
	+ sysutils		(wegen dos2unix)
Pakete (wegen Speicherbedarf) ausschliessen:
	- dict
	- ispell
	- mutt
	diverse Rechtschreibbibliotheken
Installieren, anschliessend wird einiges zur Konfiguration gefragt:
	SMB Workgr:	workgroup
	Encrypt PW:	ja
	Wins / DHCP:	nein
	Samba:		als Demon
	SMBpaswdDB:	nein

verschlüsseltes Dateisystem einrichten

Zuerst die Zielpartition testhalber mit einem Filesytem beschreiben. Bei Debian Sarge sind alle relevanten Komponenten auf der DVD enthalten. Module laden:
# modprobe aes
# modprobe dm_crypt
# modprobe dm_mod
Test des Device Mappers
# ls -L /dev/mapper/control
/dev/mapper/control
Test AES
# cat /proc/crypto 
name : aes
module : aes
type : cipher
blocksize : 16
min keysize : 16
max keysize : 32
ausgeben. Test dmsetup:
# dmsetup targets
crypt v1.0.0
striped v1.0.1
linear v1.0.1
error v1.0.1
den Key erzeugen:
# ssh-keygen -t rsa -f .download.msg
# chmod 600 .download.msg
Beim Einbau einer neuen Platte wird bei sgrx1 auch die Option -c twofish-cbc-essiv:sha256 zur Sicherheit gegen Watermark Attack verwendet (siehe wiki.chaostreff.ch, wikipedia) und die verschlüsselte Partition so erstellt:
cryptsetup -d /root/.download.msg -c twofish-cbc-essiv:sha256 create crypt2 /dev/sdb1
( ohne Watermark :# cryptsetup -d .download.msg -s 256 create crypt1 /dev/sda1)
( mit IDE Platte :# cryptsetup -d .download.msg -s 256 create crypt1 /dev/hdc1)  
# dmsetup ls
name (254, 0)
Filesystem erstellen, wegen hdparm und flush wird hier ext2 statt ext3 verwendet
# mkfs.ext2 /dev/mapper/crypt1
# mkdir /mnt/crypt1
# mount /dev/mapper/crypt1 /home/common
Am besten kurzen Lese/Schreibtest. Permanente Einstellungen vornehmen: In /etc/crypttab einfügen:
crypt1 /dev/hdc1 /root/.download.msg
in /etc/modules hinzufügen:
aes
dm_crypt
dm_mod
Start der Partition mit Skript S99obi (=obi2) oder manuell
# cryptsetup -d .download.msg -s 256 create crypt1 /dev/hdc1
# mount -o acl /dev/mapper/crypt1 /home/common
Die Option acl ist nötig, daß das Verzeichnis common von allen Usern der Gruppe common gelesen und beschrieben werden kann. (siehe NFS Freigabe)

NFS Freigabe mit ACLs

in der /etc/exports folgenden Eintrag:
/home/common 192.168.80.0/24(rw,no_root_squash,sync)
Das verschlüsselte Verzeichnis kann von wega und anderen Rechnern aus gemountet werden. Damit die erst von NFS Version 4 unterstützten ACLs funktionieren, muss beim mounten als Option -t nfs4 angegeben werden. Auf dem Rechner, der das mit ACLs versehene Verzeichnis mountet, muß acl übrigens nicht installiert sein.
Die Default ACL wird mit
# setfacl -R -m d:group:common:rwx /home/common/
rekursiv gesetzt. So kann jeder User der Gruppe die darunter abgelegten Dateien lesen UND schreiben, auch solche, die ein anderes Mitglied der Gruppe angelegt hat. Die ACLs können mit getfacl DIR, angezeigt und mit getfacl SRC | setfacl -f - DEST kopiert werden
Die Freigabe auf wega wieder exportieren und dann von z.B.antares mounten geht anscheinend nicht! Nach dem Mounten kann das Verzeichnis via Samba ganz normal freigegeben werden.

User und Rechte

Benutzer und Gruppen so anlegen, dass für jeden User eine Gruppe mit GID=UID existiert. Zugriff auf gemeinsame Resourcen kann dann einfach mittels Gruppenzugehörigkeiten geregelt werden:
/etc/passwd
go:x:801:801:Guenther Obermaier:/home/go:/bin/bash
USER:x:899:899:USER:/home/USER:/bin/bash
common:x:890:890:Common User:/home/common:/bin/false
/etc/group
go:x:801:go,www-data
USER:x:899:USER,www-data
common:x:890:common,www-data,USER,go

verschlüsseltes Dateisystem via NFS - Samba freigegeben

am sgrX1 werden die User von wega eingerichtet: in der /etc/passwd User go,uw,gast eintragen, ebenso in der /etc/shadow Die User müssen die selben UIDs, GIDs und Passwörter wie bei wega, antares ec haben. Die Passwörter werden mittels
# passwd username
gesetzt. Anschliessend werden im root-Verzeichnis der verschlüsselten Platte die Heimatverzeichnisse angelegt und an die entsprechenden User übergeben. Damit die angelegten Dateien und Ordner die richtigen Rechte erhalten, mu� dies in der /etc/samba/smb.conf auf wega richtig eingerichtet werden. Für User go:
# cd /mnt/crypt1
# mkdir go
# chown go:go go
# chmod 770 go
Ohne die Userverzeichnisse können die Laufwerksfreigaben nicht verbunden werden, der Fehler deutet fälschlicherweise aber auf ein Samba-Problem hin.
In dieses Verzeichnis müssen alle Dateien, die bisher auf wega unter /home/go waren!
auf wega benötigt man zum mounten des NFS-Verzeichnises ein Kommando. Dies wird am Besten in /etc/rc.d/obi eingetragen und zwar bevor der smb Server gestartet wird.
# mount 192.168.80.11:/mnt/crypt1 /home
# mount -o remount -t nfs4 192.168.80.11:/mnt/crypt1 /home
Komischerweise scheint mount -t nfs4 ... in einer Zeile nicht zu funktionieren.
Im Produktivbetrieb ist der Schlüssel .download.msg nirgendwo auf sgrX1 gelagert, nach jedem scp vom Schlüsselserver und mounten der Partition wird er mit shred -n 5 .download.msg überschrieben (findet in /etc/init.d/obi2 statt). Nach Booten des Rechners ohne Zugriff zum externen Schlüsselserver ist kein Zugriff auf die verschlüsselte Datenpartition möglich!

weiteres

Datei /root/daily5h anlegen, dort ntpdate ec eintragen, alles was als cronjob nachts um 5h laufen soll. chmod 700 vor crontab -e nicht vergessen!
Um die Zahl der Schreibzugriffe zu verringern:/etc/fstab wird noatime als Bootparameter für Systemplatte eintragen.
Um (für alle User) den vi (statt nano) als Defaulteditor zu verwenden (z.B. für crontab -e) in /etc/profile:
export EDITOR=vi
Falls Samba benötigt wird: /etc/smb.conf
writable = yes
neuen User anlegen:
# smbpasswd -a user
Liste installierter Software:
# dpkg --get-selections "*" 

Manuelles Einstellen der IP Adresse

in /etc/networks/interfaces
auto eth0
iface eth0 inet static
		address 192.168.80.11
		netmask 255.255.255.0
		network 192.168.80.0
		broadcast 192.168.80.255
		gateway 192.168.80.1
		dns-nameservers 192.168.80.10
		dns-search ulm.go-itservice.de

ändern der Installationsquelle

In der Datei /etc/apt/sources.list wird folgendes eingetragen:
deb http://security.debian.org/ stable/updates main
deb http://debian.uni-essen.de/debian/ sarge main contrib
In aptitude erscheint als erstes eine Fehlermeldung, aber mit "u" Update geht das anschliessend jedenfalls.

Sicherheitsupdates

Dies funktioniert, sobald security.debian.org in der Quellenliste steht. Aptitude starten, dann
	u 	Updates anfordern
	U	alle Updates zum Installieren auswählen
	g	alles ausgewählte installieren
	g	(nochmal, dann geht der Download los)
	<enter>	Download bestätigen, Pakete werden nun konfiguriert
Letzter Schritt dauert (wegen DSL)!

Duplizieren des Systems auf Flashdisk

Um den Stromverbrauch des Servers zu reduzieren, wird eine Flashdisk statt der Bootplatte eingebaut. Die Flashdisk in einen CF2IDE Adapter stecken und z.B. in antares als 3.Master (/dev/hde1) einbauen. Die alte Bootplatte aus sgrX1 als 2.Master (/dev/hdc1) einbauen und die Flash Disk partitionieren (nur 1.Partition, bootbar). Ein ext2 Filesystem anlegen. /dev/hdc1 nach /hdc1 mounten, Flashdisk nach /hde1, mittels rsync (oder find -depth -print | cpio -pdauV /hde1) von hdc1 nach hde1 kopieren und anschliessend Grub auf hde installieren.
# cd /hdc1; rsync -avuR * /hde1
# grub
grub> device (hd0) /dev/hde
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
Da die Flashdisk nicht beliebig viele Schreibvorgänge aushält und obendrein nur 512 MB gro� ist, werden auf der neuen Datenplatte (/dev/sta) zwei Partition angelegt (sda5,sda6) welche als /var und als /tmp verwendet werden sollen. Dummerweise wird der SATA Treiber erst nach ausführen der /etc/fstab geladen, so dass das nicht direkt geht. Auf der Flashdisk wird /var angelegt, aber /var/lock, /var/spool, /var/log und /var/cache zeigen via symbolischen Link auf Verzeichnisse auf der (in init2 gemounteten /sda5). Dadurch kann es möglicherweise zu Problemen beim Log kommen, ist auf sgrX1 aber nicht wichtig. Die änderungen am Besten sofort vornehmen, wenn die Platte noch in antares eingebaut ist.
Flashdisk ausbauen, kann in sgrX1 direkt als Bootplatte verwendet werden. Obwohl sgrX1 ganz andere Hardware verwendet als z.B. armageddon II, bootet die Platte auch in diesen Standardrechnern: Debian rulez! Wenn beim Umbau die Bootplatte z.b. an den 2. IDE Controller wandert und damit aus hda hde wird, muss die /etc/fstab und die /boot/grub/menu.lst angepasst werden. Dort ist jeweils die Bezeichnung der Rootpartition und anderer zu mountender Partitionen zu ändern.
Nachtrag: Dummerweise war die Flashdisk nach einigen Wochen defekt und ich musste wieder die alte, kleine und laute 2.5" Platte einbauen, aber nicht für lange, siehe nächstes Kapitel.

Duplizieren des Systems auf neue Platte

Diesmal habe ich es mir noch leichter gemacht: Server herunterfahren, leere Platte als 2. Master einbauen (/dev/hdc).
Damit ich mich um das Datenlaufwerk nicht kümmern muß, habe ich die Datenplatte einfach von der Stromversorgung abgeklemmt.
Neu booten.
Zum Kopieren habe ich einen Mehrzeiler geschrieben, es reichten aber folgende Kommandos:
# mkdir /hdc1
# mount /dev/hdc1 /hdc1
# cd /
# rsync -avurt --progress --exclude /hdc1 --exclude /proc --exclude /sys * /hdc1
# mkdir /hdc1/proc
# mkdir /hdc1/sys
Falls Datenlaufwerk noch gemountet ist oder weitere Verzeichnisse ausgenommen werden sollen, einfach weitere Einträge mit --exclude /DIR einfügen. Nun muss die neue Platte noch mit dem Bootloader bootfähig gemacht werden:
# grub
grub> device (hd0) /dev/hdc
grub> root (hd0,0)

  Filesystem type is ext2fs, partition type 0x83

grub> setup (hd0)

  Checking if "/boot/grub/stage1" exists... yes
  Checking if "/boot/grub/stage2" exists... yes
  Checking if "/boot/grub/e2fs_stage1_5" exists... yes
  Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 16 sectors are embedded
succeded
  Running "install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/boot/grub/stage2/boot/grub/menu.lst"... succeeded
Done.

grub> quit
# init 0
Alte Bootplatte ausbauen, neue Platte als 1.Master einbauen, neu starten, das wars!
ach ja, Datenplatte vorher wieder anschliessen ...

Umbau auf SSD

Nachdem ich den alten, etwas unhandlichen Rechner bereits letztes Jahr durch einen älteren IBM X40 Subnotebook ersetzt habe, an den ich eine 1,0 TB Platte über USB als Datenplatte hängte (inzwischen 1,5 TB), bin ich weiter am umbauen. Diesmal habe ich die neue Bootplatte (Solidata K1, 16GB, SLC) des Servers an meiner Workstation in ein USB Gehäuse gehängt und anschliessend über das Netz befüllt.
# fdisk /dev/sdf
2 Partitionen, sdf1 mit 15 GB und ext2 (als bootbar), sdf2 mit 1 GB als SWAP
# mkfs.ext2 /dev/sdf1
# mkswap /dev/sdf2
# mkdir /sdf1
# mount /dev/sdf1 /sdf1
# rsync -e ssh -avuR --progress --exclude /mnt --exclude /proc --exclude /sys --exclude /sdf1 /home sgrx1:/* /sdf1
# mkdir /sdf1/proc
# mkdir /sdf1/sys
# mkdir /sdf1/mnt
# mkdir /sdf1/mnt/crypt1
# mkdir /sdf1/mnt/crypt2
Danach die schon gewohnte GRUB Installation:
# grub
grub> device (hd0) /dev/sdf
grub> root (hd0,0)

  Filesystem type is ext2fs, partition type 0x83

grub> setup (hd0)

  Checking if "/boot/grub/stage1" exists... yes
  Checking if "/boot/grub/stage2" exists... yes
  Checking if "/boot/grub/e2fs_stage1_5" exists... yes
  Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 16 sectors are embedded
succeded
  Running "install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/boot/grub/stage2/boot/grub/menu.lst"... succeeded
Done.

grub> quit
Da die Platte noch nie eingebaut war, musste ich den MBR noch neu schreiben (Paket mbr muss installiert sein)
# install-mbr /dev/sdf
# init 0
Fertig! Statt ca 60 Sekunden braucht die SSD nur mehr 20 Sekunden zum Booten, wobei die ersten ca 10 Sekunden bei beiden gleich langsam ablaufen, da hängt wohl am BIOS vom X40... Falls der Rechner von der neuen Platte nicht Bootet, hat meistens die Installation des GRUB fehlgeschlagen. Also USB CD-ROM mit Debian-Install CD an dem Rechner, in dem die Platte letztendlich eingebaut werden soll, anstecken und beim der Abfrage "Weitere Optionen" -> "Rescue" auswählen oder über das Netz booten. Die Rescue-Option bietet nach Länderauswahl und dem Hardwaregesums die Option, GRUB neu zu installieren. Danach gings bei mir immer.

Update von Debian Sarge (3.1) auf Etch (4.0)

Hatte damit gerechnet, daß das total kompliziert ist, vergiß es, ist fast peinlich einfach:
In der /etc/apt/sources.list werden die Zeilen für Sarge(sinngemäß):
deb http://security.debian.org/ stable/updates main
deb http://debian.uni-essen.de/debian/ sarge main contrib
ersetzt durch:
deb http://debian.uni-essen.de/debian/ etch main
deb-src http://debian.uni-essen.de/debian/ etch main
deb http://security.debian.org/ etch/updates main
deb-src http://security.debian.org/ etch/updates main
Die beiden Zeilen mit deb-src sind eigentlich nicht nötig, man könnte einfach "sarge" durch "etch" ersetzen, ich wollte aber die Einstellung auf allen Etch Rechnern gleich haben. Darum verzichte ich bei Etch auch auf den kommerziellen contrib-Zweig, aus dem ich sowieso nichts installiert habe. Dann
# apt-get update
# apt-get dist-upgrade
Nach erfolgtem Update kommen einige Fragen des Debian-Installers, bei mir konnten überall die Default-Antworten übernommen werden. (dazu habe ich erst einen Spruch gehört: "Im Prinzip kann ein Huhn Debian installieren, wenn man nur genügend Körner auf die Enter Taste legt.")
neu booten, fertig!
Achtung: Das hat bei mir problemlos funktioniert, ich verwendete aber auch nur Standardkernel und Software von Sarge. Im Internet kann man über eine Menge Probleme bis zur Neuinstallation nachlesen, falls Sarge mit anderem Kernel läuft oder Software aus anderen Quellen verwendet wird!

Update von Debian Etch (4.0) auf Lenny (5.0)

Zu Beginn erfolgt sofort ein Abbruch, die Key-Rings sind veraltet.
In der /etc/apt/sources.list werden die Zeilen für Etch(sinngemäß) durch Lenny oder Stable ersetzt. Dann folgende Kommandos ausführen.
# apt-get update
# apt-get install debian-archive-keyring
# apt-get dist-upgrade
Dann brach der Upgrade mit einer Fehlermeldung ab:
A non-dpkg owned copy of the libc6-i686 package was found
Rumprobiert, geärgert, kurz im Internet gesucht, folgendes Kommando abgesetzt:
# mv /lib/tls /lib/tls.old
Dann liefs! Danke an www.debianhelp.org. Alle anschliessenden Fragen des Installers wurden mit den Defaultwerten beantwortet.