Neues in der Kategorie FTP
Um einen sicheren SSH- oder SFTP-Zugang zu einem Server herzustellen, lohnt es sich manchmal den verbindenden Benutzer in eine sogenannte CHROOT-Umgebung einzusperren. Hierfür gibt es eine Vielzahl von Möglichkeiten, die im folgenden einmal aufgelistet sind. Vor allem in Hinsicht als sichere FTP-Alternative sollte man sich überlegen, ob man nicht eine der untenstehenden Möglichkeit in Betracht zieht.
1. ChrootDirectory-Option ab OpenSSH-Version 4.8p1
Ab dieser Version gibt es eine Option "ChrootDirectory" die es einem erlaubt, den Benutzer sauber in seinem chroot-Verzeichnis einzusperren. Allerdings muss man beachten, dass unterhalb dieses Verzeichnisses alle benötigten Dateien für den User vorhanden sein müssen. Also einige Binaries aus "bin", ein paar Devices aus "dev", etc.
Hierzu auch die Man-Page von OpenSSH:
http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config
Changelog zu OpenSSH 4.8:
http://www.openssh.com/txt/release-4.8
Und noch eine Anleitung wie man das Ganze unter Debian umsetzt:
http://www.debian-administration.org/articles/590
Und hier nochmal eine Kurzanleitung:
http://openbsd.maroufi.net/sshchroot.shtml
2. Frühere OpenSSH-Versionen und Patch-Möglichkeiten
Für frühere OpenSSH-Versionen hatte man die Möglichkeit spezielle gepatchte SSH-Server zu verwenden, so dass ein chroot möglich war. Funktioniert hat dieser Patch ab Version 3.1p1. (siehe auch http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=139047 und die Debian-Anleitung G.1.2 in http://www.debian.org/doc/manuals/securing-debian-howto/ap-chroot-ssh-env.de.html). Letztendlich sollte man aber lieber Variante 1 nehmen und sich das neueste Release des OpenSSH-Servers besorgen, auch wenn er momentan noch nicht in Debian Etch als Stable enthalten ist. Die Problematik, dass man eine saubere CHROOT-Umgebung schaffen muss, ist hier natürlich wie bei Variante 1 gegeben.
Projektseite des nun veralteten gepatchten OpenSSH-Servers:
http://chrootssh.sourceforge.net/index.php
Eine Reihe von Anleitungen zu dem gepatchten SSH-Server:
http://hp.kairaven.de/scpsftp/ssh-rssh-sftp.html#a3
http://howtoforge.com/chroot_ssh_sftp_debian_etch
http://www.howtoforge.com/chrooted_ssh_howto_debian
3. libpam-chroot benutzen
Wer versuchen will ein chroot per libpam-chroot durchzuführen, sollte sich unter G.1.1 in folgender Anleitung einmal umsehen: http://www.debian.org/doc/manuals/securing-debian-howto/ap-chroot-ssh-env.de.html
4. Das Projekt MySecureShell
Eine andere alternative ist das Projekt "MySecureShell". Hauptsächliche Verwendung findet dieses Programm als SFTP-Server der leicht zu konfigurieren und einzustellen ist. Unter Debian ist dies tatsächlich sehr leicht und es lässt sich auch recht einfach eine Chroot-Umgebung realisieren, wie man es von einem FTP-Server kennt.
Projektseite von MySecureShell:
http://mysecureshell.sourceforge.net/ (Vorsicht die Deutsche Seite wurde sehr schlecht übersetzt)
Und hier noch eine Anleitung für Debian Etch:
http://www.cplinux.de/debian-chrooted-sftp-server.view.html (Deutsch)
Eine andere Anleitung für Debian Etch:
http://howtoforge.com/mysecureshell_sftp_debian_etch (Englisch)
5. Den SSH-Server in ein CHROOT-Gefängnis sperren
Wenn man natürlich den ganzen SSH-Daemon in ein Chroot-Gefängnis sperrt, dann hat man noch ganz andere Möglichkeiten. Beschrieben wird das Ganze unter G.2 in folgender Anleitung:
http://www.debian.org/doc/manuals/securing-debian-howto/ap-chroot-ssh-env.de.html
Appendix
Eine Seite mit nützlichen Infos zum Erstellen eine sauberen chroot-Umgebung findet man hier:
http://wiki.ubuntuusers.de/chroot?highlight=%28chroot%29
Natürlich kann man gerne auch "makejail" für manche Möglichkeiten verwenden:
http://www.floc.net/makejail/
Wer unter Linux (oder Windows) auf die Kommandozeile angewiesen ist, der wird feststellen, dass der normale FTP-Client keine Möglichkeit besitzt, ganze Verzeichnisse oder Verzeichnisbäume hoch- oder runterzuladen. Eine Abhilfe kann hier das Programm "wput" bieten, mit dem man ganze Verzeichnisse hochladen kann.
Unter Debian installiert man das wie folgt:
apt-get install wput
Wer nun ein Verzeichnisbaum hochladen möchte, kann folgenden Befehl benutzen:
wput * ftp://BENUTZER:PASSWORT@192.168.1.1/public/
(Dieser Befehl schiebt alle Dateien und Unterverzeichnisse des aktuellen Verzeichnisse auf den FTP-Server mit der IP "192.168.1.1" und dort in das Unterverzeichnis "public".)
Eine paar kleine Eigenheiten sollte man bei wput allerdings beachten:
1. Für jede Datei die hochgeladen wird, öffnet und schließt wput eine URL-Verbindung. Das bedeutet im Klartext, dass wput langsamer als ein normale SAMBA-Verbindung werden kann.
2. Gibt man zum hochkopieren einen absoluten Pfad an, wie zum Beispiel "/home/ich/, so versucht wput, den führenden Slash mit dem gesamten Pfad ebenfalls auf dem FTP-Server zu erzeugen. Dies führt zu Fehlern, die wput aber teilweise ignoriert.
Die Frage ist, warum ist das so?
Nunja, vom Prinzip her wird nämlich immer eine Datei generiert in die wput schreibt. In diesem Fall muss ein Unterverzeichnis mit den darin liegenden Dateien also erst erzeugt werden. Aufschluß über diese Funktionsweise gibt auch die Dokumentation, die das URL-Konzept erklärt. Umgehen kann man das Problem mit dem Parameter "--basename", welcher den Pfad wegschneidet.
Eine Windows-Version des Programmes wput findet man auf der Projektseite bei sourceforge:
http://wput.sourceforge.net/
Ebenso die Dokumentation:
http://wput.sourceforge.net/wput.1.html
Weiter Beschreibung und Dokumentation auf Linux-fuer-Blinde.de:
http://www.linux-fuer-blinde.de/88-0-ftp-client-wput.html
Wer analog dazu Verzeichnisse herunterladen möchte, der sollte sich mit dem Prorgamm "wget" beschäftigen:
http://de.wikipedia.org/wiki/Wget
Eine interessante, wenn leider auch nicht sehr ausführliche Tabelle mit einem Vergleich der Geschwindigkeiten zwischen FTP und SAMBA findet man auf der Seite http://lug.krems.cc/docu/samba/appb_01.html. (Diese Seite ist ein Auszug aus dem Appendix B des Buches "Using Samba", welches im O'Reilly Verlag erschienen ist.)
Dort kann man deutlich sehen, dass man SAMBA erstmal tunen muss, bevor es mit der Geschwindigkeit von FTP mithalten kann. Somit ist FTP der eindeutige Sieger in der Frage um die Schnelligkeit zwischen den beiden Datenübertragungsdiensten.
Das FTP-Protokoll (File Transfer Protocol) ist eines der ältesten Internetprotokolle die es gibt (Die RFC hierfür ist aus dem Jahre 1985). Mit einem einfachen Satz an Befehlen, lassen sich Dateien herunterladen oder aber auch hochladen.
Wie FTP funktioniert findet man sehr schön beim ELKO (Elektronikkompendium):
http://www.elektronik-kompendium.de/sites/net/0902241.htm
Eine Übersicht der Befehle findet man hier:
http://www.moritzschubel.de/pc_ftp.html (kurze und vollständige Übersicht)
http://www.nsftools.com/tips/RawFTP.htm
http://www.linuxer.onlinehome.de/apps/ftp.htm
Die Original RFC befindet sich hier:
http://tools.ietf.org/html/rfc959

