Datensicherung unter Linux

Der beste Linuxserver bringt leider gar nichts, wenn die Platte(n) im Server meint, sie macht mal nen ordentlichen Crash und es ist kein Backup eingerichtet. Auf ein Raid-System kann man sich auch nicht 100% verlassen, da gerade bei mehreren Festplatten im Server oft die gleiche Charge benutzt wird und es nicht selten dazu kommt, dass der Zeitraum zwischen zwei Plattendefekten zeitlich sehr nah beieinander liegt. Ein Blitzeinschlag im falschen Moment und der Raid-Controller ist hinüber – mit ihm auch die Daten.

So viel zur Vorgeschichte. Auch wenn es ein unliebsames Thema ist: Ein Backup ist sicherlich auf jedem Server ein absolutes Muß. Der folgende Beitrag versucht zu beschreiben, wie man unter Linux mit dem Tool rsync ein erfolgreiches Backup implementieren kann.

Folgendes Szenario:
Ich habe ein Verzeichnis namens source, welches ich in das Verzeichnis destination sichern will. Das Verzeichnis destination befindet sich auf dem gleichen Rechner, wie das source Verzeichnis. Folgender Befehl erledigt Selbiges für mich:


rsync -a source/ destination/

rsync kennt noch weitere unzählige Argumente. Hier sollte man einfach die manpage zur Hilfe nehmen.

Unterm Strich bewirkt dieses Kommando nicht viel Anderes, als ein simples Kopieren (cp -a source/. destination/), allerdings ist rsync wesentlich intelligenter. Beim Starten des Kommandos werden die beiden angegeben Verzeichnisse miteinander verglichen und wirklich nur die Dateien übertragen, die sich auch geändert haben. Zusätzlich werden von der Datei auch nur die Segmente übertragen, die unterschiedlich sind.
Daher eignet sich rsync auch hervorragend für ein Backup auf einen Remoterechner. Hierzu muss der Befehl schlicht und ergreifend abgeändert werden:


rsync -a -e ssh source/ username@remotemachine.com:/path/to/destination/

Sinnvollerweise sollte man dann auch mit SSH Key Authentication arbeiten, da eine Automatisierung des Backups mit Passworteingabe nicht praktikabel ist.

Antivirus mit ClamAV und Bitdefender

Zentralisierte Datenhaltung auf einem Server bringt den Vorteil mit, dass man diese Daten auch zentral nochmals auf Viren überprüfen kann. Natürlich ist ein täglich aktualisierter Virenscanner auf den Arbeitsplätzen unabdingbar, allerdings kann es nie schaden in regelmäßigen Abständen die kompletten Nutzdaten direkt auf dem Server zu scannen.
Bewährt haben sich bei mir für diese Aufgabe ClamAV und/oder Bitdefender.
Installation der Software

ClamAV
ClamAV ist bereits bei vielen Distributionen enthalten und muss nur über den entsprechenden Paketmanager installiert werden. Bei Debian empfiehlt es sich allerdings nicht die Pakete aus dem Standard-Repository zu benutzen, da die Version hier fast nie aktuell ist. Die aktuelle Verson kann man vom Volatile-Projekt beziehen.
Hierzu muss folgendes in die /etc/apt/sources.list eingetragen werden:

deb http://ftp2.de.debian.org/debian-volatile sarge/volatile main

Anschließend aktualisiert ein apt-get update die Paketlisten und man kann ClamAV mit apt-get install clamav installieren.
Ein Virenscanner mit veralteten Virensignaturen bringt bekanntermaßen rein garnichts. Zu diesem Zweck hat ClamAV den freshclam-Daemon mit an Bord. Wann dieser Daemon die Signaturen aktualisieren soll, wird unmittelbar bei der Installation abgefragt. Welche Antwort man hier wählen muss, hängt von der Anbindung ans Internet ab. Da ich quasi ständig mit dem Internet verbunden bin, wähle ich daemon aus.
Anschließend muss der Update-Server ausgewählt werden. Aus der Liste einfach den ersten Eintrag selektieren und mit OK bestätgen. Die meisten Anwender werden wahrscheinlich im Privatbereich keinen Proxy-Server benutzen und können daher die folgenden Fragen einfach überspringen. Ob der Updateprozess von freshclam den Clamav-Daemon benachrichtigen soll, ist mit Yes zu beantworten.
Ob die freshclam-Konfiguration funktioniert, kann man ganz leicht mit dem Befehl freshclam auf der Kommandozeile testen. Die Meldungen:
main.cvd is up to date
daily.cvd is up to date
weisen auf eine erfolgreiche Aktualisierung hin.
Bitdefender
Bitdefender stellt auf der englischen Homepage bereits rpm- und deb Pakete zum Download bereit. Da ich einen Debian-Server habe, lade ich das entsprechende deb-Paket runter und installiere es folgendermaßen:

dpkg -i BitDefender-Console-Antivirus-7.1-3.linux-gcc3x.i586.deb

Die Frage nach dem Installationsverzeichnis kann man auf der Vorgabe (/opt) lassen und einfach bestätigen. Nach erfolgreicher Installation findet man dann unter /opt/bdc die Bitdefender-Dateien. Gesteuert wird Bitdefender mit dem Programm bdc. Updates werden bespielsweise mit dem Parameter –update aus dem Internet geladen (bdc –update).
Test
Ob beide Virenscanner einwandfrei funktionieren, kann man mit Hilfe des EICAR-Virus testen. Er läßt sich von der eicar-Webseite in verschiedenen Formaten downloaden. Zum Test sollte man auf jeden Fall auch die zip-Archive herunterladen und in einen Ordner auf dem Fileserver speichern.
Im folgenden die Ausgaben der Virescanner:
ClamAV
server:/data/eicar# clamscan *
eicarcom2.zip: Eicar-Test-Signature FOUND
eicar.com.txt: Eicar-Test-Signature FOUND
eicar_com.zip: Eicar-Test-Signature FOUND
———– SCAN SUMMARY ———–
Known viruses: 40911
Engine version: 0.87
Scanned directories: 0
Scanned files: 3
Infected files: 3
Data scanned: 0.00 MB
Time: 2.474 sec (0 m 2 s)
Bitdefender
server:/data/eicar# bdc *
BDC/Linux-Console v7.1 (build 2559) (i386) (Jul 6 2005 16:28:53)
Copyright (C) 1996-2004 SOFTWIN SRL. All rights reserved.
/data/eicar/eica … m.zip=>eicar.com infected: EICAR-Test-File (not a virus)
/data/eicar/eicar.com.txt infected: EICAR-Test-File (not a virus)
/data/eicar/eicar_com.zip=>eicar.com infected: EICAR-Test-File (not a virus)
Results:
Folders :0
Files :6
Packed :3
Infected files :3
Suspect files :0
Warnings :0
Identified viruses:3
I/O errors :0
Wie man gut erkennen kann, steht einem produktiven Einsatz nun nichts mehr im Wege.
Automatisierung
Für den wöchentlichen Scan bietet sich auch in diesem Fall wieder ein cronjob an. Also mit crontab -e den Editor für cronjobs öffnen und folgende Einträge hinzufügen:

#ClamAV Virusscan jeden Samstag um 4 Uhr
0 4 * * 6 /usr/bin/clamscan -r -i --stdout /ZIELVERZEICHNIS > /var/log/clamscan.log
#Bitdefender Virusscan jeden Sonntag um 4 Uhr
45 3 * * 7 /usr/bin/bdc --update
0 4 * * 7 /usr/bin/bdc /ZIELVERZEICHNIS --files --disinfect --arc > /var/log/bdc.log

Bei diesen Einträgen ist zu beachten, dass ClamAV bei mir duch den freshclam-daemon stets aktuell gehalten wird und daher keine Aktualisierung der Virensignaturen durch den cronjob nötig ist. Das Verzeichnis, welches gescannt werden soll ist selbstredend zu ersetzen. Die Ergebnisse können in dn jeweiligen Log-Dateien unter /var/log eingesehen werden.

virtuelle Desktops unter Windows mit dexpot

Unix- und Linux-Nutzer wissen es längst zu schätzen: Besser als ein Desktop sind mehrere gleichzeitig. Dexpot macht’s unter Windows möglich.

Dexpot macht aus Ihrem Monitor gleich mehrere. Es erstellt so genannte virtuelle Desktops. Was Unix- und Linux-Nutzer schon lange kennen, kann mit Dexpot auch für Windows nachgerüstet werden. Schalten Sie einfach zwischen den verschiedenen Desktops hin und her um den Ãœberblick zu behalten.

Sollte es auf einem einzelnen Desktop trotzdem zu voll sein, so können Sie einzelne Programm-Fenster zu einem anderen virtuellen Desktop verschieben und so Ordnung schaffen. Praktischerweise lassen sich den Fenstern verschiedene Auflösungen und ein eigenes Passwort zuordnen.

www.dexpot.de

Installation ProFTPD Server

[img_assist|nid=59|title=ProFTPD Logo|desc=|link=none|align=left|width=100|height=43]

Installation und Konfiguration:

Als erstes sollten, wie bei jeder Installation die apt-Quellen upgedatet werden. Das geschieht wie gehabt über den Befehl apt-get update. Danach wird der ProFTP-Server über den Befehl apt-get install proftpd installiert. Im Dialog nach der Frage der Startart des FTP-Server wähle ich inetd, da die Anwendung nur eine sporadische Nutzung vorsieht.

FTP-User sollen in der Regel keine normale Systemshell bekommen. Daher empfielt es sich eine pseudo-Shell namens /bin/ftp anzulegen. Dies geschieht mit folgenden Kommandos:


cp /bin/false /bin/ftp
echo "/bin/ftp" >> /etc/shells

Für die spätere Benutzung lege ich an dieser Stelle das Verzeichnis /home/ftphome, die Benutzergruppen ftpuser und ftpadmin, sowie den User ftpadmin an:


mkdir /home/ftphome
addgroup ftpuser
addgroup ftpadmin
useradd -d /home/ftphome/ftpadmin -G ftpadmin -s /bin/ftp ftpadmin

Die zentrale Konfigurationsdatei des ProFTP-Server heißt /etc/proftpd.conf. Ich möchte allerdings nur auf die Parameter eingehen, die ich gebraucht habe. Wer zusätzliche Informationen benötigt, dem sei die Homepage des Projektes www.proftpd.org ans Herz gelegt.

/etc/proftpd.conf

#beliebiger Name
ServerName "FTP-Server"

#Anmeldung nur für Gruppenmitglieder der aufg. Gruppen

DenyGroup !ftpuser, !ftpadmin

#Root-Login verbieten, User eine Shell auf dem Server haben

RootLogin off
RequireValidShell on

#Berechtigungen für Homeverzeichnisse setzen


DenyAll


Diese Einstellungen haben folgende Auswirkungen:

Jeder User, der den FTP-Server benutzen möchte, muss vorher auf dem System erstellt worden und Mitglied der Gruppe ftpuser sein. Bei einer Verbindung wird ihm automatisch sein persönliches Home-Verzeichnis auf dem Server angezeigt, aus dem er nicht wechseln kann. In diesem Verzeichnis darf er dann laut den Direktiven MKD, RMD und DELE Dateien und Verzeichnisse erstellen und löschen. Für weitere Direktiven möchte ich hier auf http://www.proftpd.de/Direktiven.54.0.html verweisen.

FTP-User anlegen:

An dieser Stelle kommt das Script addftpuser.sh ins Spiel. Es verpasst dem neuen Benutzer gleich ein entsprechendes Home-Verzeichnis unter /home/ftphome, fügt ihn der Gruppe ftpuser zu und weist ihm die Pseudoshell /bin/ftp zu.

Folgende Zeilen kopiere ich einfach in eine neue Datei namens addftpuser.sh und mache sie mit chmod 700 addftpuser.sh für root ausführbar:


#!/bin/bash
echo -n "Bitte Benutzernamen eingeben: "
read username
echo "Erstelle Benutzer $username..."
useradd -d /home/ftphome/$username -G ftpuser -s /bin/ftp $username
echo "Erstelle Homeverzeichnis..."
mkdir /home/ftphome/$username
echo "Setze Benutzerberechtigungen..."
chown $username:ftpadmin /home/ftphome/$username
chmod 770 /home/ftphome/$username
echo "Setze Passwort fuer neuen Benutzer..."
passwd $username

Sämtliche neu erstellten Userverzeichnisse bekommen so als Gruppeneigentümer die Gruppe ftpadmin. Das hat den Vorteil, dass ich mich mit dem User ftpadmin am FTP-Server anmelden kann und munter zwischen den unterschiedlichen Verzeichnissen wechseln kann, um z.B. Dateien zum Download bereit zu stellen. Hierfür hat sich insbesondere das Programm Filezilla empfohlen.

Wartung:

Das zweite Script dient dem Löschen von Dateien, die älter als eine bestimmte Anzahl von Tagen ist. Bei einer überschaubaren Anzahl von Dateien ist das Script vielleicht hinfällig, allerdings ist dann ein manueller Eingriff von Nöten.


#!/bin/bash
find /home/ftphome -type f -mtime +14 -exec rm \{} \;

Diese Anweisung löscht alle Dateien unterhalb von /home/ftphome, die älter sind als 14 Tage. 14 ist hier natürlich nur ein Beispiel. Damit dieses Script auch automatisch ausgeführt wird, erstelle ich einen crontab Eintrag, der mein Script delftpfiles.sh jede Nacht um 0 Uhr ausführt.


0 * * * * /root/delftpfiles.sh

Zum Schluß noch mit einem /etc/init.d/proftpd restart den FTP-Server neu starten und schon kann es losgehen.

Diese Installation habe ich auf einem Debian-Server durchgeführt. Allerdings sollte sich das Vorgehen auch auf andere Distributionen anwenden lassen (insbesondere Distributionen, die Debian Paketmanager APT nutzen, z.B. Ubuntu).

Ubuntukernel optimieren

Bei der Standardinstallation wird bei Ubuntu der i386 Kernel installiert, der sicherlich auf den meisten System funktioniert, aber nicht das optimale an Leistung bringt.

Der Befehl uname -r auf der Konsole gibt den aktuell laufenden Kernel aus. Erscheint hier etwas wie 2.6.15-22-386, dann gibt es möglicherweise Verbesserungspotenzial.
Mit cat /proc/cpuinfo prüft man, welche CPU auf dem Mainboard steckt.

Die entsprechende Ausgabe liefert alle Informationen über den verbauten Prozessor. Im Wesentlichen interessieren hierbei die Werte vendor_id und model name.

Mit den obigen Informationen geht es jetzt weiter zum nächsten Schritt: die Installation des angepassten Kernel für den entsprechenden CPU-Typ. Folgende Befehle veranlassen den Paketmanager APT die passenden Kernel zu installieren:
Für einen AMD Athlon (K7):
sudo apt-get install linux-k7 linux-restricted-modules-k7

Für einen AMD Athlon 64:
sudo apt-get install linux-amd64-k8 linux-restricted-modules-amd64-k8

Für einen Intel P4 oder Pentium:
sudo apt-get install linux-686 linux-restricted-modules-686

Der Kernel wird automatisch beim nächsten Reboot vom Bootmanager GRUB geladen (ggfls. mit uname -r überprüfen).