<div id="tutorialrahmen"> Was wird gemacht?: ...
Zielgruppe: ...
Dauer: ca. xx Minuten </div>

FTP

Wie dieser FTP-Server An - und Abgeschaltet wird wissen wir alle, das muß ich also nicht erklären. (Klick auf *Systemeinstellungen/Sharing/FTP* <- Start/Stop)

Sicherheitslücke beheben

Was allerdings interessant ist und jeder wissen sollte: Mac OS X, als Unix-System enthält mehrere Sicherheits - und Abwehr-Mechanismen welche vor einem Arbeitsprozeß wie eine Schutzmauer fungieren. Das ist auch für den FTP-Server der Fall, da er für das System an sich genommen ein Risikofaktor darstellt. Man ist nicht nur mit dem Netzwerk Internet direkt verbunden, sondern es werden Programme und Prozesse dabei ausgeführt die bei Unachtsamkeit zu Verwüstung und Zerstörung führen können. Dafür gibt es die Tools "xinetd" und "inetd" welche den Betrieb eines FTP-Server ausreichend absichern und Angriffe auf unser internes Betriebssystem abwehren. Wenn wir also unseren FTP-Server jetzt starten werden, wird er nicht direkt gestartet, sondern mit Hilfe von "xinetd", welches die TCP und UDP-Ports nach Störungen und Fehlerquellen ablauscht. Bei Verwendung der in Mac OS X internen FireWall werden automatisch die notwendigen Ports geöffnet, darum muß man sich also nicht kümmern. Nun öffnen wir zwei Fenster im Programm Terminal und geben ein: Fenster 1:

 tail -f /var/log/ftp.log

Fenster 2:

 ftp Euer Domainname

Eure dyndns-Eintrag sollte dazu beim Anbieter http://www.dyndns.org/ bereits geupdatet sein. Schauen wir uns also an was passiert, "tail" schreibt dazu die Log-Datei mit. Wir geben unseren Usernamen ein, unser Kennwort und erhalten promt Zugriff. Bis hierhin alles gut. Nun geben wir mal diesen Befehl ein, damit wird erwirkt daß der FTP-Server uns in unser Homeverzeichnis schickt:

 cd /

Dann geben wir ein daß wir die Daten aufgelistet erhalten:

 ls -a

Doch was ist das? Das ist ja gar nicht unser Homeverzeichnis. Wir sind ja im Root-Verzeichnis des Systems. Wie kommt das denn und kann das jeder User der sich per Name und Kennwort anmeldet? Die Antwort: Ja das kann jeder und wenn man dabei geschickt ist, läßt sich so auch komfortabel der Mach-Kernel des Systems löschen ... (Angst ist mein zweiter Vorname) Ist das nun wirklich ein zweites Sicherheitsproblem was sich da auftut? Ist das von Apple so gewollt oder eine Lücke im Sicherheits-Netz? Ich würde sagen keines von beiden. Denn: Erstens benötigt man für einen Zugriff Name und Passwort, zweitens muß der FTP-Server aktiviert sein. Drittens muß der Computer eingeschaltet sein ... Jetzt mal im Ernst: Die Firma Apple nimmt wahrscheinlich an, daß man als stinknormaler End-Anwender einen FTP-Server sowieso nicht benutzt. Hiermit ist aber das Gegenteil bewiesen. Weiterhin denkt sich Apple daß jeder der ihn doch benutzt, so schlau sein müßte um ihn auch hundertprozentig sicherheitstechnisch konfigurieren zu können. (Danke für das Vertrauen) Daß das nicht der Fall ist, stellen wir heute auch fest. Eine Erklärung des FTP-Server ist in den Man-Pages über das Terminal abrufbar. Damit ist der FTP-Server jedoch nicht eindeutig beschrieben, zumal noch auf Englisch. Also ich spreche da jetzt nur für mich, aber mir gefällt einfach der Gedanke nicht daß ein anderer Nutzer meines Computers mir Dateien in meinem Root-Verzeichnis auf diesem Wege löschen oder verändern könnte. Das muß doch nicht sein, dieses Problem werden wir hier ein für alle Mal beseitigen. Mein FTP-Server hat die kleine Tour bereits hinter sich und ist für jeden erreichbar unter ftp://treff.homeip.net// wohlbemerkt wenn mein iMac online ist. Was können wir also tun? Wir werden allen gewünschten Benutzern einen Zugang auf den FTP-Server gewähren so wie gehabt, mit dem einzigen Unterschied jedoch: Jeder Besucher wird auf sein Home-Verzeichnis beschränkt, sprich: dort eingesperrt. Das Home-Verzeichnis wird das Root-Verzeichnis sein, eine höhere Hirarchie zu erreichen ist damit ausgeschlossen. Dann werden wir einen Anonymous-Zugang einrichten für einen User mit beschränkten Zugriffsmöglichkeiten. Dieser kann sich ebenfalls nur im Rahmen seiner Verzeichnis-Struktur bewegen und wird nur Daten lesen können sowie in ein dafür angelegtes Verzeichnis Daten uploaden dürfen, welche aber eine bestimmte Größe (KB) nicht überschreiten werden. Zuletzt werden wir dann noch einen Test durchführen und darüber entscheiden welche Clients (FTP-Programme) zur Zeit in Frage kommen um diesen Service FTP auch effizient nutzen zu können. Ich benutze z.B. [CaptainFTP], ein sehr schönes Programm. Noch in der Entwicklungsphase aber es enthält jetzt schon wesentliche Features die ich heute nicht mehr missen möchte. Version 3.1 liegt seit gestern vor. Ich habe das Programm bereits schon gekauft weil ich meine, daß es große Zukunft hat. Das nur nebenbei ... Was brauchen wir dazu? Einige Text-Dateien die zum größten Teil im System fehlen, da Apple wie schon erwähnt diesen Bereich nicht ausreichend supportet. Drei Verzeichnisse die wir später noch anlegen werden. Ein User den wir mit Hilfe des Programms "Netinfo-Manager" erstellen, nicht im Terminal. Und Einrichten von erforderlichen Benutzer - und Zugriffsrechten, mit dem Terminal. Alle Dateien gehören in das Verzeichnis "/etc/", dafür benötigen wir [Root-Rechte|root] oder die eines "sudo". Als da wären: ftpusers (Diese Datei, auch wenn sie vom Namen her etwas anderes vermuten läßt, enthält die Namen der Benutzer des Systems die nicht auf den FTP-Server zugreifen dürfen. Das wären root, www und andere die bereits auch schon vorhanden und eingetragen sind. Ihr selbst müßt euren Namen dort entfernen, ansonsten könnt ihr den FTP-Server nicht verwenden.)

ftpchroot (Diese Datei wird die Namen der System-User enthalten die auf ihr Home-Verzeichnis beschränkt werden, außer der Anonymous der nicht)

ftpd.conf (Das ist die eigentliche Konfigurations-Datei des Servers, dort werden wir die nötigen Anweisungen an den FTP-Server eintragen.)

ftpwelcome (Diese Datei ist optional und von jedem Nutzer nach seinen Wünschen zu bestücken, sie wird beim Start des Servers als Information oder Begrüßung an den Client gesendet)

motd (Mit dieser Datei kann man dem Client eine Nachricht anzeigen wenn er ein Verzeichnis besucht in dem bestimmte Voraussetzungen gelten, die Datei muß dazu in jenem Verzeichnis liegen wo sie angezeigt werden soll. Vorgesehen vorallem für den Anonymous-Zugriff.) Es gibt noch weitaus mehr Dateien die den Betrieb des FTP-Server beinflussen können, diese benötigen wir jedoch für unser Vorhaben nicht. Wir legen also die von mir genannten Dateien der Reihe nach im Verzeichnis "/etc/" mit dem Terminal und dem Texteditor "pico" an, ausgenommen die Datei "ftpusers" die schon vorhanden ist und die Datei motd die zwar auch vorhanden ist aber nicht zum FTP-Server gehört. Sie gehört zum Terminal mit dem wir arbeiten. Bei Aufruf des Terminal werden wir damit begrüßt. ("Welcome to Darwin") Nun bearbeiten wir die Datei "ftpusers" und tragen die User ein die eurer Meinung nach den FTP-Server nicht benutzen sollten. Dann öffnen wir Datei "ftpchroot" und tragen dort die User untereinander ein die später den FTP-Server benutzen werden und auf ihr Home-Verzeichnis beschränkt werden sollen. Jetzt folgt die Begrüßungs-Nachricht in der Datei "ftpwelcome" die ihr selbst bestimmen könnt. Die Nachricht kann so lang sein wie ihr wollt, darf aber nur Text enthalten und nicht etwa HTML-Code. Nun öffnen wir die Datei "ftpd.conf" und tragen zunächst mal folgende Zeilen ein, Erklärungen gebe ich dazu später noch. Alle Eingaben einer Zeile müssen mindestens durch eine Leerzeile oder besser durch ein TAB voneinander getrennt sein. Auskommentiert werden Zeilen mit # am Anfang der Zeile. Damit werden diese Einstellungen vom FTP-Server ignoriert.

 classtype chroot CHROOT
 classtype guest GUEST
 classtype real REAL

 chroot guest /ftp
 chroot real
 chroot chroot
 passive all
 portrange all 49000 50000
 upload guest off
 checkportcmd all

 display none
 limit all -1 # unlimited connections
 maxtimeout all 7200 # 2 hours
 modify all
 motd all motd
 notify none
 timeout all 900 # 15 minutes
 umask all 027
 modify guest CHMOD,DELE,MKD,RMD,RNFR
 umask guest 0707

In der Standardeinstellung des FTP-Server und ohne Datei "ftpd.conf" sind grundsätzlich alle erweiterten Funktionen verboten und untersagt. Wenn wir also eine Funktion aktivieren wollen, so müssen wir das in der Einstellungsdatei erst erlauben. Wir speichern nun ab und legen im Root-Verzeichnis ein neues Verzeichnis mit Namen ftp an:

 mkdir /ftp

Nun gehen wir in dieses Verzeichnis hinein und legen dort zwei weitere Vezeichnisse an incoming und pub:

 cd /ftp

 mkdir incoming

 mkdir pub

Dann vergeben wir den Verzeichnissen erforderliche Rechte:

 chown ftp:staff /ftp/incoming /ftp/pub

 chown root:admin /ftp

Nun legen wir noch die Datei "motd" ins Verzeichnis /ftp und tragen dort ein was wir wollen:

 pico /ftp/motd

Jetzt verlassen wir kurz das Terminal und öffnen das Programm "Netinfo-Manager" und melden uns dort mit Kennwort als Administrator an. Wir suchen uns die Bezeichnung "users" heraus und wählen diese aus. Im Bereich "users" markieren wir den User "www" und betätigen oben im Menü den Befehl "Duplizieren". Der User "www" sollte nun zweimal da sein. Wir markieren die Kopie und verändern dort die Einträge so:

 uid 90

 home /ftp

 gid 20

 name ftp

 realname Anonymous User

 _writers_passwd ftp

Die anderen Einstellungen sind OK und bleiben so wie sie sind. Nun schließen wir den Manager und müssen unsere Änderungen noch bestätigen. Wer allzu lange für den Vorgang gebraucht hat, muß nun auch wieder sein Kennwort eingeben. Im System gibt es nun einen neuen User namens "ftp". Dieser kann sich jedoch nicht am System anmelden und ist auch im Anmelde-Dialog nicht vorhanden. Es ist der Benutzer "Anonymous". Dieser steht nun dafür daß sich Besucher per FTP mit unserem System verbinden können. Jeder kann nun mit einem FTP-Programm, einem Webbrowser mit FTP-Unterstützung oder einem Terminal auf den Anonymous-Bereich zugreifen. Es ist dafür kein Kennwort erforderlich, die Anmeldung erfolgt mit Username "ftp" oder "anonymous" und als Kennwort ist die E-Mailadresse des Clients oder einfach nur ein Punkt "." einzugeben. FTP-Programme tun das automatisch. Das wollen wir jetzt mal testen. Zunächst beenden wir den FTP-Server und starten ihn neu daß auch alle neuen Einstellungen eingelesen werden. Nun geben wir im Terminal den Befehl ein:

 ftp Euer Domainname

Name

 ftp

Passwort

 . oder eure E-Mail

Und schon befinden wir uns im erforderlichen FTP-Verzeichnis welches wir erstellt haben. Mit den Befehlen:

 ls

oder

 ls -a

lassen wir uns nun den Inhalt des Verzeichnisses anzeigen und erhalten die Übersicht über zwei weitere Verzeichnisse "incoming" und "pub" Soweit so gut. Ihr könnt nun euer FTP-Verzeichnis "pub" mit euren Daten füllen welche Besucher vorfinden sollen. Jetzt noch einige Erklärungen zur Datei "ftpd.conf": Die Eingaben für die Einstellungen verstehen sich ja fast von selbst wenn man sie denn erst einmal weiß und zuordnen kann. Der FTP-Server unterteilt seine Clients in so genannte Classes. So ist es auch verständlich daß in einer Standardkonfiguration weder ein Anonymous-Zugriff möglich ist noch ein User in ein Home-Verzeichnis gechrootet werden kann. Denn dem FTP-Server sind die Classes "CHROOT" und "GUEST" noch gar nicht bekannt. Erst in der Einstellungsdatei kann man ihm mitteilen welche Funktionen er aktivieren soll. Nun will ich mal kurz und knapp übersetzen was wir unserem Server mitgeteilt haben. Dazu nehmen wir die "ftpd.conf" mal etwas genauer in Augenschein. Also der Reihe nach werde ich jede Funktion kommentieren. Die Eingabe der Funktionen ist so zu verstehen: Name der Funktion---Name der Classes für die der Befehl gilt---Der Befehl ansich und Name der Funktion---Funktion an oder aus---Funktionswert Beispiel:

HASSO---HUND---WAU WAU WAU

classtype
Das sind die Classes die ein FTP-Server unterstützt, unser kennt nun die Standard-Classes "REAL", "CHROOT" und "GUEST". Man kann auch selbst noch eigene Classes hinzufügen wenn erforderlich.
chroot
Das ist der Befehl zum Chrooten einer Classes. Damit weiß der Server nun welche Classes auf ein Verzeichnis beschränkt werden. Wenn kein Verzeichnis als Funktionswert eingegeben ist, wird das Verzeichnis benutzt welches in der netinfo-Datenbank auf den User zutrifft.
passive
Das ist der Modus der zwischen Server und Client verwendet wird. Es gibt passiven und aktiven FTP-Mode.
portrange
Das sind die Ports die der FTP-Server im passiven Mode im System für eine Kommunikation mit den Clients nutzen soll.
upload
Ist die Upload-Funktion, man kann diese für eine Classes erlauben oder verbieten und gibt dazu das Verzeichnis und eine Größenbeschränkung an.
checkportcmd
Damit wird die Kommunikation der Classes über die Ports kontrolliert.
display
Damit kann man Einstellungen über die Eingabemaske vornehmen.
limit
Bezeichnet die Anzahl der Verbindungen die eine IP-Adresse allein ausführen darf.
maxtimeout
Die Verbindung wird automatisch nach dieser Zeit vom Server unterbrochen, auch wenn der Client noch Daten abruft.
modify
Unter diesem Punkt erlaubt oder verbietet man einem Client die ausführbaren Programme wie zum Beispiel Kopieren, Löschen, Lesen oder Schreiben.
motd
Damit bestimmt man die Datei welche Mitteilungen an den Client enthält wenn dieser ein Verzeichnis mit Besonderheiten besucht.
notify
Damit wird festgelegt ob der FTP-Server unter bestimmten Umständen Einträge in einer anderen Log-Datei notiert.
timeout
Mit der Angabe wird der Client vom Server nach einer angegebenen Zeit getrennt wenn dieser keine Antwort mehr gibt oder nichts mehr tut.

Ihr solltet nun die Konfigurationsdatei euren Bedürfnissen anpassen. Die Einstellungen die ihr von mir übernommen habt sind für euch vielleicht nicht zutreffend.

Besser, einfacher, schneller und komfortabler ist es mit Apache WebDav. Hätte ich damals schon die aktuelle Version dieser Software gehabt, könnte ich das Thema FTP-Server getrost ausgelassen haben. Man spart sich mit WebDav die User, die Ports und eine nicht einfach zu erstellende ftpd.conf. Darüber hinaus kann man gleichzeitig iCal, einen Web-Kalender veröffentlichen und abbonieren lassen und online bearbeiten.

Dazu hier eine wunderbare Anleitung

Besser, einfacher, schneller und ohne Terminal läßt sich ein FTP Server auch mit http://jeanmatthieu.free.fr/pureftpd/ einrichten.

Kategorie

Tutorials, MacGyver


Zuletzt geändert am 20.10.2005 21:23 Uhr ( Besuche)

© 2004 – 2024 ApfelWiki

Impressum - Datenschutz

cb