1. Vorwort
2. SSH / SFTP – Installation und Konfiguration
3. ES Datei Explorer – Zugriff einrichten
4. AutoShare – Zugriff einrichten
5. Fail2Ban – Server absichern
6. SFTP – Speicher mit Dolphin öffnen

1. Vorwort
Wer seine Daten lieber auf dem eigenen Speicherplatz weiß und dennoch nicht auf die bequemen Funktionen einer Cloud verzichten möchte (oder kann), der wird eine Weile nach Lösungen suchen können. Man sollte annehmen, dass in Zeiten von Dropbx und Co. zahlreiche Scripte für den heimischen Server bereit stehen. Weit gefehlt – denn neben OwnCloud gibt es nur sehr wenige Alternativen (u.a. Seafile, Ajaxplorer). Diese mögen zwar auf einem schnellen Server auch gut laufen und mit Features glänzen, allerdings kann man auf einem Raspberry Pi an der Geschwindigkeit verzagen. Dabei bietet Linux mit SSH schon alles an, was man für eine „Cloud light“ braucht.

Meine Lösung:
SFTP-Zugang (nicht zu verwechseln mit FTPS)
Datei-Verwaltung im Browser mittels eXtplorer (eXtplorer auf dem Raspberry Pi installieren) und SSL
Datei-Verwaltung mit Android: ES Datei Explorer / AutoShare
Datei-Verwaltung mit Linux über Dolphin

___

2. SSH / SFTP – Installation und Konfiguration
sftp
Quellen:
http://www.gambaru.de/blog/2011/08/11/sicherer-datentausch-ein-sftp-server-mit-chroot/
  Sicherer Datentausch-Ein sftp Server mit chroot (179,8 KiB, 649 Klicks)

http://www.hack-job.org/how-tos/sftp-downloads-to-the-rescue/
  sftp downloads to the rescue (130,9 KiB, 376 Klicks)
http://madapez.com/it/linux/howto-chroot-sftp-zugang-openssh-ohne-shell-ssh/
  Chroot sftp Zugang - openssh (144,6 KiB, 1.443 Klicks)

Ich setze nun voraus, dass SSL schon auf dem Raspberry Pi installiert ist (was in den meisten Beschreibungen der Fall ist) – wenn nicht, dann „sudo apt-get install ssh“ 😉

1. Gruppe „nas“ anlegen:

sudo addgroup nas


Weiter unten habe ich einen Kombinations-Befehl aufgeschrieben, der alle nötigen Schritte zum Anlegen eines neuen Users auf einmal ausführt, ich empfehle jedoch mindestens einmal diesen hier beschriebenen Weg zu gehen, damit ihr wisst, was die Befehle überhaupt bewirken.

2. Wir legen einen User an,
dem vorerst der Zugriff „nur lesen“ gewährt wird.
loader“ steht dabei für den Username. Ihr könnt den Namen frei wählen, müsst dann natürlich unten überall bei loader den gewählten Namen ersetzen.
Mit diesem Namen loggen wir uns dann später in Kombination mit dem Passwort auf dem Server ein.

Es soll sein Home-Verzeichnis automatisch angelegt werden (-m), er soll keinen Shell-Zugang bekommen (-s /bin/false) und er soll der Gruppe „nas“ angehören (-G nas):

sudo useradd -m -s /bin/false -G nas loader
# alt: sudo useradd --create-home --home-dir /home/loader --shell /bin/bash loader

Passwort anlegen:

sudo passwd loader


Home/Loader-Ordner „absichern“

(bzw. dem Benutzer root zuweisen)
Damit erhält der User „loader“ auf seinen home-Ordner nur Lese-Rechte. Später erhält er seinen „eigenen“ Unterordner zum schreiben (uploaden)

sudo chown root.root /home/loader
sudo chmod 0755 /home/loader


optional: Speicherort festlegen

Ich habe nun versucht mittels folgende Anleitung PDF einen USB-Stick einzubinden und diesen als Speicher zu nutzen.
Leider war mir dies bis jetzt nicht möglich, da chroot misslingt. Ansonsten hätte es so ähnlich funktioniert:

sudo mkdir /media/usbstick/loader
sudo chown root.root /media/usbstick/loader
sudo mkdir /media/usbstick/loader/uploads
sudo chown loader.loader /media/usbstick/loader/uploads

Es dürfte ganz schlicht an dem Format der SD Karte gelegen haben. Diese sollte auf NTFS formatiert sein.
Da ich aber nun mit BerryBoot das OS vollständig auf eine externe USB-Festplatte ausgelagert habe, hat sich das Problem erledigt.

Daher weiter mit
Uploadordner für „loader“ anlegen:
Und den Besitzer auf „loader“ setzen. Wir können natürlich beliebig viele Ordner anlegen und diese „loader“ zuordnen. Innerhalb von diesen kann dann loader selbst neue Ordner und Dateien anlegen und verwalten.

sudo mkdir /home/loader/uploads
sudo chown loader.loader /home/loader/uploads


Kombinations-Befehl
für das schnelle Anlegen eines neuen Users.
Einfach den gewünschten Username bei neuerbenutzername=’karlheinz‘ eingeben (in diesem Fall natürlich „karlheinz“ ersetzen). Der Benutzer erhält dann automatisch seinen Upload Ordner (hier „ups“ genannt)

neuerbenutzername='karlheinz'    && sudo useradd -m -s /bin/false -G nas $neuerbenutzername && sudo passwd $neuerbenutzername && sudo chown root.root /home/$neuerbenutzername && sudo chmod 0755 /home/$neuerbenutzername && sudo mkdir /home/$neuerbenutzername/ups && sudo chown $neuerbenutzername.$neuerbenutzername /home/$neuerbenutzername/ups && sudo /etc/init.d/ssh restart


3. ssh config öffnen:

sudo nano /etc/ssh/sshd_config

Dort einfügen (damit wird nach dem Gruppenzugehörigkeit geschaut und der User dann in sein Verzeichnis eingesperrt. Zudem wird sftp erzwungen):

Match group nas
      ChrootDirectory /home/%u
      X11Forwarding no
      AllowTcpForwarding no
      ForceCommand internal-sftp
Match

( Wenn der Stick funktioniert, sieht die ChrootDirectory Zeile so aus:
„ChrootDirectory /media/usbstick/%u“ )
Damit würde ich auf den USB Stick verweisen, welchen ich nach dieser Anleitung eingebunden habe.
Ein Ordner mit dem entsprechenden Username (hier loader) muss vorhanden sein. Dieser muss „root“ gehören. Ein Unterordner „uploads“ muss hingegen dem User „loader“ gehören. Daran scheiterte das USB-Vorhaben.

Ganz wichtig: jetzt ssh neustarten

sudo /etc/init.d/ssh restart


4. Der Test:

sftp loader@192.168.xx.yy

sollte als Ergebnis liefern:
Connected to 192.168.xx.yy.

hingegen die SSH Verbindung sollte unterbunden sein:

ssh loader@192.168.xx.yy

sollte als Ausgabe liefern:
This service allows sftp connections only.
Connection to 192.168.1.123 closed.

Um einen User später wieder zu löschen, genügt folgender Befehl:

deluser username

___

3. ES Datei Explorer – Zugriff einrichten


Funktioniert nun der SSH-Zugang können wir uns an die Konfiguration des ES Datei Explorers machen. Dieses Programm ist im Google Play-Store kostenlos zu haben und meiner Meinung nach die beste Datei-Verwaltung für Android. Neben zahlreichen Features (z.B. Cload-Unterstützung) und Tools (wie z.B. ein Tool zum Bereitstellen der Dateien auf dem Gerät über FTP) hat der ES Datei Explorer eben auch eine SFTP Client Funktion. XDA-Developers Link (engl.)

ES Datei Explorer Schnellzugriff

Nun unten-links auf das „+“ klicken (für neuen Server) -> SFTP wählen und die entsprechenden Daten eingeben. Fertig. Die Dateien lassen sich nun verwalten, als wären sie lokal auf dem Smartphone.

___

4. AutoShare – Zugriff einrichten
autoshare
Auto Share im PlaystoreXDA Developers Beitrag
AutoShare ist ein kleines Tool, welches das schnelle Hinzufügen von Dateien in unsere Cloud ermöglicht. Dabei können Bilder und andere Inhalte wie gewohnt über den Teilen-Button verschickt werden. AutoShare lädt diese dann im Hintergrund hoch (oder verschickt diese per Mail oder oder oder). Für meinen Zweck habe ich nur die SFTP Funktion aktiviert. Alternativ würde auch AndFTP funktionieren, allerdings finde ich es etwas zu mächtig für die einfache Senden-Aufgabe. Wer jedoch den ES-Datei-Explorer nicht benutzen möchte, der ist mit AndFTP sehr gut beraten.

Im PlayStore steht zu AutoShare:
„Weiterleiten von Inhalten wie Text, Links oder Bilder per E-Mail, HttpPost, ftp, Sftp, Dropbox oder Box ohne weitere Interaktion des Benutzers. Ohne jedesmal die gewünschte E-Mail-Adresse eingeben zu müssen.
Offline Weiterleiten: Verzögertes senden nur im WLAN ist ebenfalls möglich.
Wie mit Google+ teilen Sie Ihre Fotos sofort nach der Aufnahme(optional).“

Die Einrichtung sollte selbsterklärend sein.

___

5. Fail2Ban – Server absichern
fail2ban

Zu guter Letzt sollten wir eine zusätzliche Absicherung nach außen vornehmen. SSH habt ihr hoffentlich aktiviert (und ruft natürlich eure Verwaltung im Browser nur mit https auf) 😉
Da die Ports für uns offen sind, wird nun natürlich auch von bestimmten Netz-Nutzern versucht, in das System dahinter einzudringen. Eine Methode ist das s.g. Brute-Force (Wikipedia), bei welcher durch zahlloses Versuchen ein Erraten des Passworts erfolgt. Um dem einen Riegel vor zu schieben, begrenzen wir die Versuche und sperren danach die IP für eine bestimmte Zeit. Das ist kein Allheilmittel, aber eben ein zusätzlicher Schutz. Wer nur von bestimmten IP-Adressen zugreift, kann natürlich eine Whitelist für diese erstellen und alle anderen aussperren.

Fail2Ban prüft die Logfiles der aktivierten Programme und wenn o.g. Versuch erkannt wird, erfolgt die Sperre.
Die Installation ist denkbar einfach (Quelle: http://www.myslug.de/index.php?title=Firewalling:_iptables_und_Fail2Ban )

Fail2Ban installieren:

sudo apt-get install fail2ban

Falls noch nicht automatisch geschehen, auch whois installieren:

sudo apt-get install whois

Konfigurationsdatei jail.conf nach jail.local kopieren:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Konfiguration bearbeiten:

sudo nano /etc/fail2ban/jail.local

„bantime = XYZ“ nach Wunsch ändern (600 Sekunden = 10 Minuten)
„maxretry“ gibt die maximale Anzahl der Versuche an.
„ignoreip“ sollte die feste IP eines PC im Netzwerk sein, mit dem ihr auf jeden Fall zugreifen können wollt.

SSH / SFTP ist schon aktiviert, wir können jedoch auch gleich noch den Lighttpd mit in die Überwachungsliste nehmen, indem wir am Ende folgendes anhängen:

[lighttpd-fastcgi]
enabled = true
port    = http,https
filter  = lighttpd-fastcgi
logpath = /var/log/lighttpd/error.log #anpassen wenn nötig
maxretry = 2

speichern und fail2ban neustarten:

sudo /etc/init.d/fail2ban restart

Noch ein paar Informationen zu Fail2Ban:

1. Die aktuelle log findet ihr unter

cat /var/log/fail2ban.log

2. Um eine geblockte IP wieder frei zu geben, geht wie folgt vor:

sudo iptables -L -n

Nun nach „Chain fail2ban-xyz“ suchen und den genauen Namen merken. Auch die Dazugehörige „DROP“ Position der IP-Adresse.
Beispiel (4.8.15.16 soll wieder frei gegeben werden):

Chain fail2ban-vsftpd (1 references)
target prot opt source destination
DROP 0 — 123.123.123.123 0.0.0.0/0
DROP 0 — 4.8.15.16 0.0.0.0/0
RETURN 0 — 0.0.0.0/0 0.0.0.0/0

Ihr merkt euch also „fail2ban-vsftpd“ und die Position 2 ( auf der 1. steht 123.123.123.123 )
Gebt nun ein:

sudo iptables -D fail2ban-vsftpd 2

Fertig.

___

6. SFTP – Speicher mit Dolphin öffnen

Der Zugriff unseres SFTP Speichers ist in Dolphin ein Kinderspiel. Einfach wie auf dem Bild zu sehen die IP Adresse eingeben und mit Enter bestätigen. Danach erscheint ein Dialog zur Eingabe des Usernamen und Passworts. Diesen ausfüllen und abschicken und schon habt ihr Zugriff auf euer NAS.
sftp_in_dolphin

Downloads

  Sicherer Datentausch-Ein sftp Server mit chroot (179,8 KiB, 649 Klicks)
  sftp downloads to the rescue (130,9 KiB, 376 Klicks)
  Chroot sftp Zugang - openssh (144,6 KiB, 1.443 Klicks)