www.ProFTPD.de
13. März 2007, 19:49:09 *
Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge
News: SMF - Neu installiert!
 
   Übersicht   Hilfe Suche Login Registrieren  
Seiten: [1]   Nach unten
  Drucken  
Autor Thema: Artikel in der NETWORK COMPUTING 13-14 / 2006  (Gelesen 180 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
LHW_Wiesel
ProFTPD
*
Offline Offline

Beiträge: 23

271388837
Profil anzeigen
« am: 25. Oktober 2006, 16:20:31 »

Workshop: Datentransfer effektiv schützen – Per SSL/TLS lassen sich FTP-Datentransfers verschlüsseln und die Dateien vor neugierigen Blicken verstecken. Somit eignet sich FTP auch zur Übertragung geschäftskritischer Daten.
 
   

Einige Benutzer ärgern sich noch immer täglich mit Dateitransfers via ISDN herum. Mit 64 bis128 KBit/s lassen sich Daten nur langsam übertragen und die Software ist auch nicht gerade für Stabilität bekannt. Einen Vorteil hat der Transfer über ISDN dennoch: Er ist abhörsicher, da eine leitungsgebundene Punkt-zu-Punkt-Verbindung steht. Diese Sicherheit konnte das File-Transfer-Protocol (FTP) über das Internet naturgemäß nicht bieten. Erst seit sich die FTP-Verbindung per SSL/TLS (Secure Socket Layer / Transport Layer Security) sichern lässt, ist der entscheidende Vorteil von ISDN dahin.

Ein bekannter Open-Source-Server für FTP ist ProFTPd (http://www.proftpd.org). Der Daemon kommt auf so gut wie jedem Linux-Mietserver zum Einsatz und lässt sich auch zügig für die Unternehmens-DMZ einrichten. Der Server beherrscht den Passive-Mode, wodurch der Verwalter lediglich eine geringe Anzahl Ports auf der Firewall freigeben muss. In einer kontrollierten Umgebung, in der lediglich einige Geschäftspartner Zugriff auf den FTP-Dienst haben sollen, reichen bereits zwei oder drei Ports aus. Der Verwalter erhöht die Sicherheit weiter, indem er den FTP-Dienst in einen Chroot-Käfig verweist. Dabei handelt es sich um ein frei wählbares Verzeichnis, aus dem der Service und mit ihm alle Anwender nicht ausbrechen können.

Sollen nur wenige User Zugriff auf den FTP-Dienst haben, lassen sich diese als Systembenutzer ohne Login-Shell anlegen. Noch weniger Aufwand ist die Benutzerverwaltung in einer separaten Textdatei, welche die »passwd«-Datei abbildet. Wer die Anwender lieber in eine Datenbank steckt, erhält Unterstützung für MySQL und Postgres. Sollen die Nutzer gleich in den Verzeichnisdienst des Unternehmens aufgenommen werden, bedient sich der Verwalter des LDAP-Moduls.

 



Funktionen wählen
Die meisten Linux-Distributionen enthalten ProFTPd. Häufig sind diese Versionen nur mit Basismodulen ausgestattet, die lediglich Standard-Konfigurationen abdecken. Für die ersten Schritte eignen sich die Distributions-Binaries jedoch sehr gut. Die Konfigurationsdatei »proftpd.conf« befindet sich in der Regel in »/etc.« Um herauszufinden, welche Module die installierte Version enthält, ruft der Anwender den Server mit der Option »-l« (list) auf.
/usr/sbin/proftpd -l
Die Ausgabe lässt sich mit der Liste in der Datei »README.modules« vergleichen oder online auf www.proftpd.org/docs.

Wer Unterstützung für verschlüsselte Verbindungen, LDAP oder Anti-Virus-Software benötigt, kompiliert und installiert ProFTPd von Hand. Module von Drittanbietern befinden sich teilweise im Verzeichnis »contrib« des Quellpakets. Weitere funktionale Module holt sich der User von www.proftpd.org/module_news.html.

Die Proftpd-Versionen auf Mietservern besitzen in der Regel die SSL/TLS-Funktion. Falls nicht, besorgen Sie sich die Quellen von www.proftpd.de. Wir benutzen die aktuell stabile Version 1.3.0 auf Debian 3.1 (Sarge). Entpacken Sie die Quellen im lokalen System und stellen Sie eine Liste der gewünschten Module zusammen. Für die Konfiguration und Kompilierung wechseln Sie ins Verzeichnis mit den Quellen. Über den Befehl »configure« lassen sich die Module für die Übersetzung einbinden:
./configure --with-modules=mod_tls:mod_ldap

Mehrere Module trennen Sie mit einem Doppelpunkt voneinander. Anschließend übersetzen Sie die Quellen mit »make« und installieren die fertigen Binärdateien als Benutzer »root« mit dem Befehl »make install«.

Den ProFTP-Daemon »proftpd« verschiebt der Installer standardmäßig in das Verzeichnis »/usr/local/sbin«. Das Zielverzeichnis ändert der Verwalter mit der configure-Option »--prefix«. Der Befehl
./configure --prefix=/usr
kopiert den Daemon in das Verzeichnis »/usr/sbin/«, in dem sich die Server-Dienste auf den meisten Distributionen aufhalten.

Basiskonfiguration anlegen
Der FTP-Server funktioniert out-of-box, ohne dass der Verwalter die Konfigurationsdatei »/etc/proftpd.conf« bearbeitet. Allerdings lässt der Server dann nur Anmeldungen von lokalen Benutzern zu, die in »/etc/passwd« aufgeführt sind. Um die Besucher in einen Chroot-Käfig einzusperren, legt der Verwalter selbst Hand an. Listing 1 zeigt eine Basiskonfiguration.

Jede Zeile leitet eine Direktive ein, die für bestimmte Funktionen steht. Der Direktive folgen ein oder mehrere Optionen. Die deutsche ProFTPd-Website erklärt auf www.proftpd.de/?id=54 alle Direktiven und was die dazu gehörigen Optionen bewirken.

Vergeben Sie zuerst einen Namen für den Server. Diesen bekommen die Benutzer nach der Kontaktaufnahme und vor dem Login zu sehen. Beachten Sie, dass der »ServerName« in doppelten Hochkommas eingeschlossen sein muss, sofern sich ein Leerzeichen darin befindet.

Den »ServerType« setzt der Administrator in der Regel auf »standalone«, denn nur damit lässt sich der Passive-Mode nutzen. Der Umask-Wert 022 regelt, dass neue Dateien mit den Rechten -rwxr-xr-x angelegt werden (777-022=755). Nur der Eigentümer darf alles. Die Gruppe des Eigentümers sowie alle anderen sind auf Schreib- und Ausführrecht beschränkt.

Die Direktive »MaxInstances« lässt sich nur in Kombination mit dem »ServerType standalone« benutzen und erledigt gleich mehrere Sachen. Damit legt der Verwalter die maximalen Kindprozesse fest, die der Server starten darf. Es gilt: je ein Kindprozess pro Verbindung. Der Wert 10 lässt also zehn Clients gleichzeitig zu. Nach oben hin ist keine Grenze gesetzt. Mit einem relativ niedrigen Wert kann der Verwalter die Angriffsfläche für Denial-of-Service-Attacken (DoS) verringern.

 



Sicherheit geht vor
Wie immer soll ein Daemon nicht im Root-Kontext laufen, da dieser alle Rechte im System hat. Über die Anweisungen »User« und »Group« setzt der Administrator einen Pseudobenutzer als Besitzer des Serverprozesses ein. Auf den meisten Systemen ist dies der Benutzer »nobody«, der zur Gruppe »nogroup« gehört. »Nobody« besitzt nur wenige Rechte und bekommt von »root« die Kontrolle sofort nach dem Start des Servers.
Mit der Anweisung »DefaultRoot« bestimmt der Verwalter, dass die Anwender nach dem Login in einem bestimmten Verzeichnis landen. Die Benutzer sind in der Verzeichnishierarchie eingesperrt und können nicht in eine höhere Ebene wechseln.

Die in »/etc/passwd« auf dem Server eingetragenen Benutzer befinden sich nach der Anmeldung im jeweiligen Home-Verzeichnis, was der Verwalter mit dem Tilde-Zeichen »~« festlegt. Ein anderes Verzeichnis tragen Sie mit absoluter Pfadangabe ein, beispielsweise »/var/ftp«. Optional kann der Verwalter ganze Gruppen einsperren oder Gruppen erlauben den Käfig zu verlassen. Dazu dient das vorangestellte Ausrufezeichen:
DefaultRoot ~ users,!admin

Die Direktive bestimmt, dass alle Angehörigen der Gruppe »users« im Käfig bleiben müssen. Wer zur Gruppe »admin« gehört, darf hingegen auf die über dem Home-Verzeichnis liegende Ebene wechseln.

Die letzte Direktive »AllowOverwrite« der Basiskonfiguration erlaubt dem Benutzer Dateien auf dem Server zu überschreiben (on). Standardmäßig lässt ProFTPd dies nicht zu. Die Anweisung ist im Direktiven-Block »<Directory /> … </Directory>« eingeschlossen. Damit lassen sich Anweisungen wie »AllowOverwrite« auf bestimmte Verzeichnisse und Unterverzeichnisse anwenden. Hier ist dies das Root-Verzeichnis »<Directory />«, das sich wegen »DefaultRoot« auf die Home-Verzeichnisse der Benutzer bezieht. Der Block endet mit »</Directory>«.

Schreibzugriffe regeln
Meist ist es nicht erwünscht, dass die Benutzer in jedem Verzeichnis schreiben dürfen. Um dies genau einzustellen, dient der Direktiven-Block »<Limit WRITE> … </Limit>«. Der Lesezugriff ist standardmäßig erlaubt. Die Direktive »DenyAll« wehrt jeden Schreibversuch ab. Mit dieser leiten Sie die Zugriffsrechte für Verzeichnisse in der Regel ein und geben mit weiteren Limit-Direktiven innerhalb des Directory-Blocks bestimmte Rechte frei.

Damit die Benutzer Dateien auf den Server laden können, erlauben Sie für ein bestimmtes Verzeichnis den beschränkten Schreibzugriff für das FTP-Kommando »STOR« (siehe Kasten »Listing 2« Seite 46). Als Upload-Verzeichnis dient »incoming«. Der erste Limit-Block unterbindet es generell, Dateien zu lesen oder in das Verzeichnis zu schreiben (»DenyAll«). Der zweite Block »<Limit STOR>« erlaubt, dass ein Client Dateien zum Server senden darf (FTP-Befehl »STOR«) und dieser die Datei anlegen soll, wenn das Ziel das Verzeichnis »incoming« ist (»AllowAll«). Dieser Block hat eine höhere Priorität als der vorherige Limit-Block, da es sich speziell um die Einschränkung eines FTP-Befehls handelt.

FTPS für verschlüsselte Transfers
Ein wesentliches Sicherheitsleck von FTP ist die Übertragung von Passwörtern im Klartext. Mit Hilfe der Bibliothek »OpenSSL« (www.openssl.org) kann ProFTPd Account- sowie Nutzdaten verschlüsseln. Dieses Verfahren ist unter FTPS (FTP + SSL) bekannt. Um den Server für FTPS zu konfigurieren, ist jedoch ein bisschen Handarbeit fällig, da der Verwalter den Server mit einem digitalen Zertifikat ausstatten muss. Das bisschen Arbeit lohnt sich, da das FTPS-Verfahren ideal ist, um Kunden oder Geschäftspartnern einen sicheren Zugang zum FTP-Server zu verschaffen.

Die meisten Clients für Linux, Windows oder Mac OS unterstützen mittlerweile FTPS. Der Client-Anwender muss lediglich die Unterstützung für FTP über SSL (explizit) für einen Server aktivieren.

Damit ProFTPd nur noch SSL/TLS-geschützte Verbindungen erlaubt, kompiliert der Verwalter das Modul »mod_tls« ein. Für ProFTPd 1.3.0 benötigen Sie die Quellen von OpenSSL 0.9.8b, die Sie in einem beliebigen Verzeichnis entpacken. Übersetzen Sie OpenSSL und installieren die Bibliotheken:
./configure && make && make install
Dem »configure«-Skript von ProFTPd teilt der Anwender dann noch mit, wo sich das Verzeichnis mit den Quellcodes von OpenSSL befindet. Im folgenden Beispiel ist das »/home/joe/sources/openssl-0.9.8b«.
./configure --with-modules=mod_tls --with-includes=/home/joe/sources/openssl-0.9.8b/include --with-libraries=/home/joe/sources/openssl-0.9.8b

Nun lässt sich ProFTPd mit SSL/TLS-Unterstützung kompilieren (»make«) und installieren (»make install«).

 



Zertifikat selbst signieren
Anschließend fertigen Sie ein Zertifikat und einen Schlüssel an. Für kleine Sites reicht es, ein selbst signiertes Zertifikat anzulegen. Größere Unternehmen richten eine eigene Certification-Authority ein. Wie dies funktioniert, lesen Sie im Beitrag über OpenSSL in Network Computing 11-12/2006 ab Seite 50.

Zuerst generieren Sie als Benutzer »root« die RSA-Parameter und speichern den Schlüssel in der Datei »host.key«:
openssl genrsa 1024 > host.key

Ändern Sie die Rechte von »host.key«, so dass die Datei nur noch der Eigentümer »root« lesen und schreiben darf. Anschließend erzeugen Sie ein X.509-konformes Zertifikat und signieren es mit dem vorher erstellten Schlüssel:
openssl req -new -x509 -nodes -sha1 -key host.key > host.cert

Um das Zertifikat zu erstellen, müssen Sie einige Fragen beantworten. Wichtig ist, dass Sie die Frage nach dem »Common Name« (CN) mit dem FQDN beantworten. Dabei handelt es sich um den Hostnamen inklusive Domain, beispielsweise »ftpsrv.example.net«.

Kopieren Sie »host.key« und »host.cert« beispielsweise in das Verzeichnis »/etc/openssl/host«. Nun fügen Sie in »proftpd.conf« eine Modul-Direktive ein, die den Server mit den notwendigen Angaben zu SSL/TLS versorgt (siehe Kasten »Listing 3«, oben).

Der Verwalter sollte beachten, dass sich der Anmeldemodus lediglich über die Option »TLSRequired« steuern lässt. Steht diese auf »on« können sich Nutzer ausschließlich im sicheren FTPS-Modus einloggen. Andernfalls lässt sich auch SFTP (FTP über SSH) oder normales FTP mit Passwörtern im Klartext benutzen. Bestimmten Benutzern oder Gruppen ein Anmeldeverfahren zuzuweisen, ist nicht möglich.

 



Viele Server als Virtual-Host
Auch andere Module bindet der Verwalter über das »configure«-Skript ein. Welche Informationen das Skript für ein bestimmtes Modul benötigt, steht in der mitgelieferten HTML-Dokumentation im ProFTPd-Verzeichnis »contrib«.

Der FTP-Server beherrscht auch interessante Funktionen, die sich bereits mit den Basismodulen realisieren lassen. Mehrere voneinander unabhängige FTP-Server lassen sich mit der »<VirtualHost>«-Direktive konfigurieren. Dazu ist es nötig, virtuelle Netzwerkschnittstellen zu definieren und diesen eine IP-Adresse zuzuweisen. Die Einstellungen trägt der Administrator dann in einen entsprechenden Block ein, beispielsweise »<VirtualHost 192.168.10.100> </VirtualHost>«.

Für deutschsprachige Anwender ist die Website www.proftpd.de interessant, die neben einem gut besuchtem Forum auch Workshops und Dokumentation hostet. Von dort lassen sich die Quellen der stabilen Version 1.3.0 oder CVS-Snapshots herunterladen. Auf Module, die noch nicht der offiziellen Release angehören, verlinkt www.proftpd.org/module_news.html.
Gespeichert

You talking to me ?
LHW_Wiesel
ProFTPD
*
Offline Offline

Beiträge: 23

271388837
Profil anzeigen
« Antwort #1 am: 25. Oktober 2006, 16:21:50 »

puh geschafft.    Cool Cool Cool


sodala, so stands im Artikel, have some fun.

 Zunge Zunge Zunge

Gespeichert

You talking to me ?
VolGas
Moderator
ProFTPD
*****
Offline Offline

Beiträge: 771



Profil anzeigen
« Antwort #2 am: 25. Oktober 2006, 21:58:42 »

Du wirst das doch wohl hoffentlich nicht abgetippert haben, oder? (Frage rein rethorisch)
Nochmal: vielen Dank!

mfg.
  VolGas
Gespeichert
Seiten: [1]   Nach oben
  Drucken  
 
Gehe zu:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.2 | SMF © 2006-2007, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS
Seite erstellt in 0.078 Sekunden mit 15 Zugriffen.