FTP, NFS, SSH und rsync Server einrichten

Hackerangriffe auf Android können sehr gefähtlich sein.

Hier erfahrt Ihr, wie man ganz einfach z.B. einen rsync Server einrichtet und benutzt.

Wer große Datenmengen und/oder wertvolle Daten speichern möchte, der hat sich bestimmt schon mal Gedanken darüber gemacht, was passiert, wenn mal eine Festplatte ausfällt oder einmal der Rechner streikt. Neben Lösungen wie RAID-Systemen (also mehreren verbundenen Festplatten im Computer) gibt es auch Netzwerk Lösungen. Dazu gehört zum Beispiel das Protokoll rsync, FTP und SSH, sowie das Dateisystem NFS.

Hier wird nun beschrieben wie man einen rsync Server mit Hilfe von SSH und NFS aufsetzt. Zudem zeige ich noch, wie man einen FTP Server gleich mit einrichtet.

Was ist das alles?

Hier eine kleine Liste der obigen Protokolle und Dateisysteme mit einer kleinen Beschreibung:

  • rsync – Steht für remote synchronisation Protokoll zum übertragen und synchronisieren von Dateien über ein Netzwerk, bzw. auf dem lokalen Rechner.
  • FTP – Steht für File Transfere Protocoll und ist einigen bestimmt über den FTP-Server geläufig. Mit ihm kann man einfach Dateien auf Servern hoch- oder herunterladen.
  • SSH – Steht für Secure Shell und bietet die Möglichkeit auf einem Computer ohne Bildschirm und Eingabemöglichkeiten trotzdem Dinge zu tun. Dabei wird über das Netzwerk eine remote-console geöffnet.
  • NFS – Steht für Network File System und ermöglicht es ein Netzlaufwerk (sog. Freigabe) unter Linux einzurichten. Man kann dann einen Ordner auf dem Server wie eine Festplatte behandeln und bequem damit arbeiten.

Vorraussetzungen für einen Server

Allgemein sollte man immer aktuelle Software verwenden (sofern man kein Windows benutzt), als OS z.B. die aktuellste Distribution und immer gleich Updates installieren. Die Hardware, wie ein Netzwerk, ein lauffähiger Computer, etc. sollte man natürlich auch haben. Zur Software komme später, hier erst mal die Hardware.

Hardware

In dieser Anleitung benutze ich eine virtuelle Maschine (über VirtualBox) mit einem Kern (@3,4GHz, jedoch auf 40% Auslastung begrenzt). Zum Einsatz kommen außerdem sagenhafte 512MB RAM, sowie immense 9MB Grafikspeicher. Als Hauptspeicher müssen gigantische 20GB Festplattenspeicher (nur für Debian sind 5GB ausreichend) her halten.
Wer also seinen alten Commodore auspackt kann damit schon einiges machen 😛 Im Ernst: Man braucht keine High-End-Maschine für einen kleinen Heimserver. Ein alter Laptop oder Papas alter Rechner reicht vollkommen aus.

Ich selbst benutze als physische Hardware ein 60€ Mainboard mit integriertem Intel Atom (dual-core@1,6GHz). Man braucht wirklich kaum Leistung und sollte für Längere Einsätze eine stromsparende Variante suchen.
Zum Einsatz kommen außerdem 2GB DDR2 RAM (wie man oben sehen kann braucht man nur 512MB) eine 160GB HDD (SATA; Kapazität nach Bedarf). Optional (z.B. zur Installation) auch ein CD/DVD Laufwerk.
Insgesamt verbraucht das System weniger als 40Watt. Mit einem RaspberryPi, BananaPi oder sonstigen Einplatinen Computern kann das natürlich unterboten werden.

Die groben Vorraussetzungen:
  • CPU mit geringer Leistung (Dual-Core ist mehr als ausreichend)
  • 512MB bis 1GB RAM (je nach Dekstop-Umgebung und sonstigen laufenden Anwendungen)
  • <10GB Festplattenspeicher für das Linux-System
  • keine extra Grafikkarte notwendig, wenn es einen integrierten/OnBoard Grafikchip gibt (der reicht vollkommen aus)
  • ggf. extra Festplatte (für große Backups ratsam)

Debian – Das Betriebssystem

Zum Einsatz kommt in dieser Anleitung Debian in Version 8 (aktuell im Juli 2015), sowie die Programme (s.u.), die in den offiziellen Paketquellen verfügbar sind. Auch an rsync, SSH, etc. sollte man – auf Grund immer mal wieder auftauchender Sicherheitslücken – immer die aktuellste Version installiert haben (auch wenn es nur im lokalen Netzwerk ist).

Da ich Debian nutze, kann ich bequem per apt-get install von den offiziellen Paketquellen installieren. Bei anderen Systemen muss man ggf. yum, pacman oder eine andere Paketverwaltung nehmen.

Warum Debian?

Persönlich bin ich mit Debian basierenden Systemen (Ubuntu, LinuxMint, etc.) vertraut und mit der Stabilität sehr zufrieden. Allgemein ist die Wahl des Betriebssystems aber frei (wer jedoch bereits Ubuntu oder LinuxMint nutzt, wird sich bei Debian schnell zurecht finden).

Installation

Debian kann man sich direkt von debian.org herunterladen und z.B. auf eine CD/DVD brennen oder einen bootfähigen USB-Stick erstellen. Bei der Installation kann man gleich SSH und einen Web-Server (apache) installieren, jedoch zeige ich hier auch die manuelle Installation.

Als Desktopumgebung kann man am besten XFCE oder LXDE nehmen, da diese sehr Ressourcenschonend sind (sowohl auf der HDD als auch auf CPU und RAM).

sudo – Ich root du nichts

Wenn sudo nicht von Anfang an verfügbar ist, kann man es ganz einfach installieren:

su
apt-get install sudo

Um sudo zu aktivieren (für z.B. sudo apt-get install) einfach folgende zwei Befehle eingeben:

su
adduser deinBenutzername sudo

Danach einmal abmelden und wieder anmelden (oder ggf. neu starten) und Befehle mit sudo ... funktionieren.

SSH Server

Mit SSH kann man ein Terminal/eine Shell aufmachen ohne direkt am Computer/Server zu sitzen. Dies ermöglicht es bequem vom Hauptrechner aus auf dem Server zu arbeiten (ähnlich wie bei TeamViewer o.Ä. nur mit einem Terminal).

Zudem werden wir später über SSH Backups erstellen, was mit rsync ein Kinderspiel ist.

Installation

Für SSH braucht man einmal das Paket ssh selbst und den openssh-server:

sudo apt-get install ssh openssh-server

Normalerweise sollte nun der Dienst bei jedem starten des Servers automatisch mit gestartet werden. Nach der Installation ist auch kein Neustart erforderlich.

Nun kann man ganz einfach im Terminal per remote auf den Server zugreifen:

ssh benutzername@192.168.x.y

Statt der IP kann man auch den Namen des Rechners, also z.B. Debian-Server, nehmen.
Beim ersten verbinden wird man zudem informiert, dass Schlüssel ausgetauscht werden. Einfach bestätigen und los geht’s.

SSH unter Windows

Wer ab sofort lieber unter Windows arbeiten möchte, kann sich putty angucken, damit kann man SSH Verbindungen von Windows aus aufbauen. Zum testen von rsync und NFS ist jedoch Linux zu empfehlen.

FTP Server

Als nächstes kommt der FTP-Server für einfachen und bequemen Datenaustausch. Der Vorteil gegenüber SSH oder rsync ist, dass es FTP-Clients wie Sand am Meer gibt. Man kann also von jedem Betriebssystem aus (selbst vom Android-Handy aus) Dateien hoch- oder herunterladen.

Installation

Als Server nehmen wir proftpd, eine mächtige und relativ (!) einfach zu konfigurierende Software.
Einfach wieder per apt-get installieren:

sudo apt-get install proftpd-basic

Man wird während der Installation nach dem Betriebsmodus gefragt. Inetd eignet sich hier ganz gut, da wir einen Heimserver aufsetzen, auf dem (wahrscheinlich) kaum was los sein wird.

Konfiguration

Alle wichtigen Einstellungen befinden sich in der Datei /etc/proftpd/proftpd.conf. Dort kann man z.B. den ServerName, die WelcomeMessage, Benutzerrichtlinien, etc. festlegen.

Wichtiger Hinweis

Erlauben sie es NIEMALS, dass sich der Benutzer root einloggen kann, das ist ein immenses Sicherheitsrisiko!

Benutzerverwaltung

Normalerweise kann man sich schon jetzt direkt mit seinem Benutzerkonto (welches man während der Installation von Debian angelegt hat) einloggen. Darüber hinaus kann man entweder einen neuen Benutzer anlegen und diesen verwenden, oder virtuelle Benutzer anlegen, die nur für proftpd nutzbar sind. Dies hat den Vorteil einer einfachen Verwaltung und man muss sich keine Gedanken um andere Dienste machen.

Einstellungen anpassen

Wenn also ein neuer Benutzer nur den FTP-Dienst nutzen können soll, fügt man folgende Zeilen in die proftpd.conf ein, bzw. ändern sie:

# for vortual users:
DefaultRoot                     ~
AuthOrder                       mod_auth_file.c mod_auth_unix.c
AuthUserFile                    /etc/proftpd/ftpd.passwd
AuthGroupFile                   /etc/proftpd/ftpd.group
AuthPAM                         off
RequireValidShell               off
Benutzer anlegen

Einen neuen Benutzer kann man mit Hilfe von ftpasswd anlegen. Dabei muss man im Ordner /ect/proftpd/ sein, damit die Dateien auch dort erstellt werden.
Einfach folgendes kopieren und fertig:

cd /etc/proftpd
sudo ftpasswd --passwd --name benutzername --uid 1001 --home /pfad/zum/home/ordner --shell /bin/false

Mit uid (User-ID) wird eine eindeutige Nummer für den Benutzer festgelegt, wählen sie also immer nur eine pro Benutzer. Der /pfad/zum/home/ordner ist der Ordner, in dem der neue Benutzer arbeiten darf. Man kann sich also einfach einen neuen erstellen und diesen dann verwenden.

Man wird nach ausführen des Befehls zudem nach einem Passwort gefragt.

Benutzer einer Gruppe hinzufügen

Damit der Benutzer sich auch einloggen kann, muss man ihm einer Gruppe hinzufügen. Dies geht ebenfalls über ftpasswd und auch hier muss man in /etc/proftpd sein:

sudo ftpasswd --group --name=gruppenname --gid=1002 --member=benutzername

Wenn keine Gruppe mit dem Namen gruppenname existiert, wird eine neue angelegt. Auch hier muss die gid (GroupID) eine eindeutige Nummer sein.

Nun kann sich der Benutzer mit dem gegebenen Passwort anmelden.

Passwort ändern

Das Passwort eines Benutzers kann man ganz einfach wie folgt ändern:

sudo ftpasswd --passwd --change-password --name benutzername

NFS Freigabe

NFS ist ein Dateisystem, welches es erlaubt unter Linux Netzlaufwerke (sog. Freigaben) einzurichten. Bei Windows geht das ja quasi out-of-the-box, unter Linux muss man dann NFS benutzen.

Installation

Für NFS gibt es die Pakete nfs-common und nfs-kernel-server, welche man ganz einfach installieren kann:

sudo apt-get install nfs-common nfs-kernel-server

Konfiguration

Wenn man keinen speziellen Ordner (z.B. /var/www) hat, den man als Freigabe verwenden möchte, so sollte man sich einen speziellen Ordner erstellen und die Rechte anpassen:

mkdir /pfad/zum/ordner
chmod 755 /pfad/zum/ordner

In der Datei /etc/exports kann man dann eintragen welche Ordner von welchem Rechner/welcher IP aus erreichbar sein soll, wie die Rechte sind und was an Optionen genutzt werden.
Üblicherweise reichen folgende Optionen:

  • rw – Benutzer darf lesen und schreiben (ro – nur lesen)
  • async – Asynchroner Datentransfer (schneller aber unsicherer gegenüber Ausfällen/Abstürzen)
  • sync – Synchroner Transfer (etwas langsamer, dafür sicherer)

Man kann nun z.B. folgenden Eintrag in die /etc/exports Datei machen:

/pfad/zum/ordner 192.168.1.42(rw,async)

Der Rechner mit der 192.168.1.42 darf nun im Ordner /pfad/zum/ordner lesen und schreiben.

Um die Einstellungen an den NFS-Server weiter zu reichen, muss man noch folgenden Befehl ausführen:

sudo exportfs -ra

Danach muss man ggf. Neustarten, damit der nfs-kernel-server Dienst alles korrekt einliest und zur Verfügung stellt. Man kann ihn jedoch auch per sudo service nfs-kernel-server restart neu starten.

Benutzern (mounten)

Man kann nun die Freigabe fast wie ein normales Laufwerk über den mount Befehl verwenden. Dabei muss man lediglich die IP angeben, eine Authentifizierung ist nicht notwendig, da vom Server ja eine spezielle IP ausgewählt wurde.

sudo mount 192.168.1.43:/pfad/zum/ordner /media/net

Man muss lediglich den Pfad zum Ordner aus der /etc/exports Datei angeben und natürlich den Ordner, in den gemounted werden soll (üblicherweise erstellt man einen eigenen Ordner unter /media/, z.B. /media/net).

Mit dem Dateibrowser deiner Wahl kann man nun die Freigabe benutzen. Mit dem Terminal natürlich auch.

rsync Server

Rsync ist ein Protokoll zum schnellen, einfachen und sicheren Übertragen von z.B. Backups.

Installation Konfiguration

Die Installation geht einfach per:

sudo apt-get install rsync

Backup erstellen (per SSH)

Über SSH kann man ganz einfach Backups über eine verschlüsselte Verbindung senden.

Dazu einfach rsync mit folgenden Parametern aufrufen:

rsync -av --delete /lokale/quelle -e ssh benutzername@192.168.1.43:/backup/ordner

Dabei sind die Parameter -av und -e besonders wichtig:

  • -a – Vereint die Parameter rlptgoD und behält Meta-Daten der Dateien bei
  • -v – Zeigt alle ausgeführten Schritte an
  • --delete – Löscht Dateien vom Server, die nicht mehr im lokalen Verzeichnis enthalten sind
  • -e – Ermöglicht eine Verbindung über eine Shell (SSH)
  • ssh – Nutzt SSH als Verbindung
  • --progress – Zeigt an, wie weit rsync mit einer Datei ist (nützlich bei großen Dateien um Fortschritt anzuzeigen)

Backup erstellen (per NFS)

Auch per NFS kann man rsync Backups erstellen. Dazu muss man natürlich erst mal NFS Freigabe mounten (s.o.).

Danach kann man ganz einfach rsync wie gerade benutzen:

rsync -av --delete /lokale/quelle /media/net

Statt /media/net muss natürlich der Pfad angegeben werden, in dem die Freigabe gemounted wurde.

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert