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
Quellen:
http://www.gambaru.de/blog/2011/08/11/sicherer-datentausch-ein-sftp-server-mit-chroot/ (PDF)
http://www.hack-job.org/how-tos/sftp-downloads-to-the-rescue/ (PDF)
http://madapez.com/it/linux/howto-chroot-sftp-zugang-openssh-ohne-shell-ssh/ (PDF)
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 BerryBootdas 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.)
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
Auto Share im Playstore– XDA 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
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.