Samba Server

Um im lokalen Netzwerk von einem Windows Client auf Dateien eines Linux Servers zuzugreifen bietet sich ein Samba Server an. GNOME und KDE bringen auch eine Möglichkeit mit direkt von der grafischen Oberfläche entsprechende Freigaben zu erzeugen. Hier soll jedoch die Installation eines „vollwertigen“ Samba Servers beschrieben werden. Zunächst muss dieser aus den Paketquellen installiert werden.

$ sudo apt-get install samba

Alle Benutzer die später über Samba Zugriff erhalten sollen, müssen zunächst in die Samba Benutzerdatenbank aufgenommen werden. Hierbei empfiehlt es sich das selbe Passwort zu vergeben wie für das System.

$ sudo smbpasswd -a USERNAME

Anschließend muss die Konfigurationsdatei /etc/samba/smb.conf angepasst werden. Diese ist in Verschiedene, jeweils durch [xyz] gekennzeichnete Abschnitte aufgeteilt.

[global]
  workgroup = ARBEITSGRUPPE
  usershare allow guests = no

Die Standardeinstellungen im [global] Block sind sinnvoll. Angepasst werden sollten ggf. nur die beiden Einträge. workgroup gibt die Windows Arbeitsgruppe des Netzwerks an. Um anonyme Gastzugänge zu unterbinden und nur registrierten Benutzern Zugriff zu gestatten sollte usershare allow guests = no gesetzt sein.

Will man nun für jeden Benutzer (und nur für diesen) das eigene Home-Verzeichnis (und nur dieses) freigeben, so müssen im dafür vorgesehenen Block [homes] nur die Semikolons am Zeilenanfang entfernt werden.

[homes]
  comment = Home Directories
  browseable = no
  read only = no
  create mask = 0700
  directory mask = 0700
  valid users = %S

Es gibt auch bereits vorbereitete Freigaben für Drucker [printers] und das CD/DVD-Laufwerk [cdrom]. Auch dort müssen nur die Semikolons entfernt bzw. hinzugefügt werden um die Freigaben zu aktivieren bzw. deaktivieren. Gerade die [cdrom] Freigabe ist sehr praktisch falls das eigene Netbook z.B. kein CD/DVD-Laufwerk besitzt und auch kein externes USB-Laufwerk zur Hand ist.

FreeNX Remote Desktop Server

Vorausgesetzt ein Server besitzt überhaupt eine grafische Oberfläche, dann gibt es verschiedene Verfahren um Fernzugriff zu erhalten. Das Methode sollte hohe Performance bieten und auch über eine Internetverbindung gut bedienbar sein. Darüber hinaus sollte das ganze Verfahren am besten durch einen SSH Tunnel verschlüsselt sein. Als Client sollte Linux oder Windows zum Einsatz kommen.

Da X Forwarding übers Internet einfach zu langsam ist und Windows als Client nicht gerade eine Option, war ich schon kurz davor einen VNC Server aufzusetzen. Wird zuvor ein SSH Tunnel geöffnet kann die gesamte Verbindung auch zuverlässig abgesichert werden. Windows als Client ist dank PuTTy auch kein Problem. Sollen jedoch mehrere Benutzer auf dem Server gleichzeitig remote einloggen ist das nicht so einfach. Durch Zufall und Google stieß ich jedoch auf den Free NX Server von www.nomachine.com und war begeistert.

  • Die Performance ist extrem hoch (selbst über ein normale Internetverbindung lässt sich sehr gut arbeiten)
  • Komplette SSH Verschlüsselung der gesamten Kommunikation
  • Ähnlich dem Windows Remote Desktop können Sitzungen unterbrochen und zu einem späteren Zeitpunkt fortgesetzt werden
  • Client Software existiert für Linux und Windows
  • Mehrere Nutzer können gleichzeitig remote eingeloggt sein
  • Kostenlose Server Version (Limitierung auf max. 2 Benutzer)

Das NX Protokoll ist eigentlich nur ein Protokoll zur Komprimierung des X Servers. Es werden also nicht wie bei VNC Bilder erstellt und dann übermittelt. Die Bildqualität ist daher sehr hochwertig. Der Client baut zunächst eine Public-Key basierende SSH Verbindung zum Server auf. Anschließend authentifiziert sich der Benutzer gegenüber dem System. Diese erfolgt direkt wenn Passwort Authentifizierung für SSH gestattet ist oder über eine eigene NX Benutzer Datenbank.

Ich werde im Folgenden die Installation und Konfiguration des Servers unter Ubuntu beschreiben und wie man die Authentifizierung über die NX Benutzer Datenbank einrichtet. Diese hat den Vorteil, dass man für den SSH Server nur das sichere Public-Key-Verfahren zulassen kann.

Installation und Konfiguration Server

  1. Falls noch nicht geschehen muss der SSH Server installiert werden (siehe SSH Server)
  2. Im Download Bereich von www.nomachine.com müssen unter „NX Free Edition for Linux“ nacheinander
    1. NX Client
    2. NX Node
    3. NX Server

    heruntergeladen und installiert werden. Dies erfolgt mittels dpkg und ist im dortigen Download Bereich erklärt.

  3. Als nächstes muss die Datei /usr/NX/etc/server.cfg angepasst werden. Hierzu editiert man die beiden folgenden Einträge.
  4. EnableUserDB = "1"
    EnablePasswordDB = "1"
  5. Nun wechseln wir ins Verzeichnis /usr/NX/bin/ und fügen einen neuen Benutzer hinzu indem wir nacheinander folgende Befehle ausführen. Der Benutzer sollte anschließend in der Liste erscheinen, die mit dem letzten Befehl angezeigt wird.
  6. $ sudo ./nxserver --useradd USERNAME
    $ sudo ./nxserver --userauth USERNAME
    $ sudo ./nxserver --userenable USERNAME
    $ sudo ./nxserver --passwd USERNAME
    $ sudo ./nxserver --userlist
  7. Als nächstes tauschen wir die bei der Installation mitgelieferten Public-Keys noch gegen einen Neuen aus. Dies ist zwar nicht unbedingt nötig aber sicher ist sicher.
  8. $ sudo /usr/NX/scripts/setup/nxserver --keygen
  9. Die Zugriffsrechte für einige Dateien müssen noch korrekt gesetzt werden.
  10. $ sudo chown nx:root /usr/NX/home/nx/.ssh/authorized_keys2
    $ sudo chmod 0644 /usr/NX/home/nx/.ssh/authorized_keys2
    $ sudo chown nx:root /usr/NX/home/nx/.ssh/default.id_dsa.pub
    $ sudo chmod 0644 /usr/NX/home/nx/.ssh/default.id_dsa.pub
  11. Als letztes tauschen wir den alten privaten Schlüssel auf dem Client aus. Der neue Schlüssel findet sich unter /usr/NX/share/keys/default.id_dsa.key und muss im Client Installationsverzeichnis unter share/keys/ abgelegt werden.

Installation und Konfiguration Client

  1. Im Download Bereich von www.nomachine.com unter „NX Client Prodcuts“ den passenden Client heruntergeladen und installieren.
  2. Falls der Public-Key geändert wurde (Punkt 5 – Installation Server) muss dieser nun ins Installationsverzeichnis unter share/keys/ kopiert werden.
  3. Startet man nun den Client muss zunächst ein neues Profil eingerichtet werden. Die Schritte sind selbsterklärend. Es ist jedoch wichtig, dass abschließend in den Einstellungen unter Configure... --> General --> Key... der neue Public-Key importiert wird.

Weiterführende Dokumentation und Hilfe

Im Support und Documents Bereich von www.nomachine.com finden sich jede Menge gut beschriebene HowTo Anleitungen für die Installation und Administration.

Es gibt darüber hinaus inzwischen auch eine an Ubuntu angepasste Version. Unter wiki.ubuntuusers.de/FreeNX finden sich mehr Informationen darüber.

SSH Server

Einen SSH Server einzurichten um von einem anderen Rechner Zugang zum eigenen Homeserver zu erhalten ist denkbar einfach. Zunächst wird der SSH Server aus den Paketquellen installiert:

$ sudo apt-get install openssh-server

Die Konfigurationsdatei findet sich unter /etc/ssh/sshd_config und ist meist schon sehr vernünftig eingestellt. Drei Einträge können jedoch verändert bzw. ergänzt werden um ein zusätzliches Maß an Sicherheit zu erhalten:

PermitRootLogin no
PasswordAuthentication no
AllowUsers USERNAME1 USERNAME2 USERNAME3

Mit dem ersten Eintrag wird der Login für den Benutzer root unterbunden.
Der zweite Eintrag unterbindet die Anmeldung mittels Benutzername und Passwort. Nur noch die sichere Anmeldung mittels Public-Key wird gestattet. Es ist wichtig, dass man diese Option erst aktiviert nachdem dem eigenen Public-Key der Zugang gestattet wurde. Andernfalls sperrt man sich selbst aus. Ohne physikalischen Zugang zum Server sieht man dann alt aus.
Der letzte Punkt beschränkt den Zugang auf die angegebenen Benutzer. Alternativ lassen sich mit AllowGroups, DenyUsers, DenyGroups auch feinere Abstufungen machen. Man könnte z.B. alle Benutzer die einen remote Zugang erhalten sollen in eine Gruppe remoteUsers packen und diese dann freischalten.

AllowGroups remoteUsers

Abschließend muss der SSH Server neu gestartet werden um die Änderungen an der Konfigurationsdatei einzulesen.

$ sudo /etc/init.d/ssh restart

Projekt Homeserver

Ich habe endlich Zeit gefunden mein „Projekt Homeserver“ auch schriftlich zu dokumentieren. Den Anfang bildet die Seite Homeserver in welcher ich die Motivation und einige Umbauten an der Hardware beschreibe. Ein Schlosser, etwas schwarzer Lack und eine SSD machen aus einem Shuttle X27D Barebone die ideale Basis für den eigenen lautlosen Homeserver.

Als nächstes werden Artikel zur Konfiguration einzelner Dienste folgen.

WordPress Backup-Script [Update]

Heute habe ich endlich mal das Update von WordPress 2.8 auf Version 2.8.2 vollzogen. Zum Glück habe ich mir vorher ein Backup angelegt da beim ersten Versuch mit der Vollversion von 2.8.2 einige PHP Fehlermeldungen bei Wiederinbetriebnahme auftraten.

Erst das Inkrementelle Update von 2.8 auf 2.8.1 und anschließend von 2.8.1 auf 2.8.2 hat ohne Probleme geklappt. Um für das Backup nicht jedes mal alles nachzuschlagen habe ich alle Schritte in ein Bash-Script gepackt. Es erstellt ein Backup der WordPress Installation und der Datenbank. In einem zentralen Backup Verzeichnis wird für jede WordPress Version ein eigenes Unterverzeichnis erstellt in dem dann alle Backups dieser Version landen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/bash
 
# author: Michael Prim
# date: 25.07.2009
# contact: www.mprim.de
 
# main webserver directory
APACHE=/var/www
# wordpress subfolder
WP=wordpress
# current WP version
VERSION=`grep Version $APACHE/$WP/liesmich.html | head -n 1 | awk '{print $3}' | sed 's/\r//g'`
# wp database
DBUSER=username
DBNAME=databasename
# backup destination
BACKUPMAINFOLDER=$HOME/BackupFolder
BACKUPVERSIONFOLDER=$BACKUPMAINFOLDER/$VERSION
BACKUP=$BACKUPVERSIONFOLDER
mkdir -pv $BACKUP
# timestamp every backup file will get
TIMESTAMP=$(date +"%Y%m%d-%H_%M")
# logfile
LOG=blog.backup_$TIMESTAMP.log
 
echo '--- backup blog files ---'
cd $APACHE
tar -czvf $BACKUP/blog.backup_$TIMESTAMP.tar.gz $WP &> $BACKUP/$LOG
 
echo '--- dump SQL database - password required ---'
cd $BACKUP
mysqldump --add-drop-table -u $DBUSER -p $DBNAME --lock-tables=false | bzip2 -c > blog.backup_$TIMESTAMP.sql.bz2

Die Werte für VERSION,APACHE,WP,DBUSER,DBNAME und BACKUPMAINFOLDER müssen natürlich noch an die eigene Umgebung angepasst werden.

Um bei der Wiederherstellung die Rechte der Ordner der WordPress Installation zu erhalten sollte das Backup mit der Option -p entpackt werden:

$ tar -xpzvf blog.backup_$TIMESTAMP.tar.gz

[Update]
Nachdem in kurzer Zeit noch die Updates auf 2.8.3 und 2.8.4 erschienen sind, habe ich das Script erweitert. Die aktuelle Version wird jeweils aus der liesmich.html ausgelesen. Diese liegt der deutschen WordPress Version und allen Updates bei.

TAB-Completition für ssh und scp

Wer täglich mehrmals mittels ssh oder scp auf die selben Server zugreift will nicht immer alle Daten neu eingeben. Je nach User und Server kann dies deutlich länger sein als in diesem Beispiel:

$ ssh useratwork@server.at.work:~/documents/myfile.txt .

Zunächst erstellt man eine Datei ~/.ssh/config und trägt dort die Zugangsdaten ein:

# ssh config file
 
Host homeserver
    HostName name.of.server
    User username
    CheckHostIP no
Host work
    HostName server.at.work
    User useratwork

CheckHostIP hat standardmäßig den Wert yes. Für einen Homeserver ohne statische IP und mit DynDNS sollte man diesen Wert auf no setzen. Sonst erhält man jeden Tag eine Sicherheitswarnung, dass sich die IP des Servers geändert hat.

Um die Auto-Vervollständigung der Befehle mittels TAB in der Shell zu ermöglichen fügt man in der .bashrc die folgenden Zeilen ein:

complete -W "homeserver work" ssh
complete -W "homeserver work" scp

Damit werden die Befehle ssh und scp um Wortlisten zur Auto-Vervollständigung ergänzt. Diese lässt sich nun wie üblich in der Shell nutzen. Somit ergibt sich:

$ ssh work:~/documents/myfile.txt .

SMC 7004BR – Barricade Broadband Router als Printserver

Der „SMC 7004BR“ ist genauso wie mein „HP LaserJet 6P“ ein Stück ältere aber zuverlässige Hardware. Inzwischen haben nur noch wenige Mainboards einen Parallelport (von Notebooks ganz zu schweigen) und somit lässt sich der Drucker über kurz oder lang nicht mehr überall anschließen. Ein Glück, dass der SMC 7004BR mit seinem Parallelport auch als Printserver im Netzwerk agieren kann.

SMC 7004BR

Am Router ist keinerlei Konfiguration nötig. Einfach den Drucker am Parallelport anschließen und einige Sekunden warten. Im Status vom Webinterface des Routers sollte nach kurzem „Printer – ready“ stehen.

Linux

Die Einrichtung unter Linux erfolgt mit Hilfe von CUPS, das gegebenenfalls noch installiert werden muss:

$ sudo apt-get install cups

Anschließend wird der Drucker eingerichtet:

  1. CUPS-Webinterface starten: http://localhost:631
  2. Drucker hinzufügen auswählen.
  3. Als Gerät LPD/LPR Host or Printer auswählen.
  4. Als Geräte URL lpd://192.168.123.254/lp eintragen. 192.168.123.254 ist hierbei ab Werk die Standard-IP-Adresse des SMC 7004BR und kann im Webinterface des Routers überprüft bzw. geändert werden.
  5. Marke und Modell des Druckers auswählen und Konfiguration abschließen.
  6. Im CUPS-Webinterface sollte der Drucker nun im Reiter „Drucker“ erscheinen. Bei Bedarf von dort aus eine Testseite drucken.

Windows Vista

Unter Windows Vista muss zunächst unter Systemsteuerung -> Programme und Funtionen -> Windows Funktionen ein- oder ausschalten -> Druckdienste der LPR-Anschlussmonitor installiert werden.

  1. Systemsteuerung -> Drucker öffnen und neuen Drucker hinzufügen
  2. Einen lokalen Drucker hinzufügen.
  3. Neuen Anschluss erstellen. Anschlusstyp: LPR Port
  4. LPD-Servername oder -addresse: 192.168.123.254 (siehe Linux)
  5. Name des Druckers oder der Druckerwarteschlange auf dem Server: lp
  6. Hersteller und Modell des Druckers auswählen und restliche Konfiguration abschließen.
  7. Bei Bedarf Testseite drucken.

Windows XP

Unter Windows XP sollte unter Systemsteuerung -> Software -> Windows Komponenten hinzufügen/entfernen gegebenenfalls überprüft werden ob alle Druckdienste installiert sind. Ansonsten verläuft die Installation analog zu Windows Vista.