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 muß 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 muß 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 daß 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.