www.ProFTPD.de
13. März 2007, 18:43:59 *
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  
  Zeige Beiträge
Seiten: [1] 2
1  ProFTPD / ProFTPD - Deutsch / Re: Artikel in der NETWORK COMPUTING 13-14 / 2006 am: 25. Oktober 2006, 16:21:50
puh geschafft.    Cool Cool Cool


sodala, so stands im Artikel, have some fun.

 Zunge Zunge Zunge

2  ProFTPD / ProFTPD - Deutsch / Artikel in der NETWORK COMPUTING 13-14 / 2006 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.
3  ProFTPD / ProFTPD - Deutsch / Re: proftpd updaten mit plesk am: 25. Oktober 2006, 16:19:45
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.
4  ProFTPD / ProFTPD - Deutsch / Re: proftpd updaten mit plesk am: 24. Oktober 2006, 15:25:36
auf diese einfach lösung bin ich natürlich weider nicht gekommen  Zunge

ach ja glückwunsch zum artikel in der network computing 13-14/2006

interessant auch und mit tatsächlich einige probleme abgenommen hat.

DefaultRoot ~ users!admin

welchen ich bei hier im Forum noch nicht gefunden habe :-)


so far wenn ich noch was finde melde ich mich gerne nochmal .-)

bis dann euer Wiesel

5  ProFTPD / ProFTPD - Deutsch / Re: proftpd updaten mit plesk am: 18. Oktober 2006, 23:02:50
Tja die Kneipe gefällt mir eben..  L&auml;chelnd


psa-proftpd ist das packet mit dem plesk den proftpd eingebunden hat, ich denke mal der heist nur so...

man kann ja im plesk die Domainen-Kunden einen ftp-login geben diese werden dann automatisch angelegt und im vhost eingesperrt. Dann kann man per Webinterface (webftp) seine homepage daten raufladen.

für mich stress frei dann kommen die ganzen leute nicht mehr zu mir..
kann dir gerne mal ne stillgelegte domain mit zugang geben dann siehst du PLESK auch mal   L&auml;chelnd

so ich leg mich dann mal hin hab eh scho viereckige augen...


mfg euer Wiesel..
6  ProFTPD / ProFTPD - Deutsch / proftpd updaten mit plesk am: 18. Oktober 2006, 15:23:55

Hallo ich bins wieder,  Augen rollen

so da ich mir nun auchmal die Suse 10 mit Plesk auf dem Server geschraubt habe.. und eigentlich sehr zufrieden bin.
was die administration angeht.

leider habe ich es bis dato noch nicht geschafft den proftpd einem Update zu unterziehen. (was ja auch nicht so schlimm ist)
was für mich wichtiger ist ... kann man in das psa-proftpd packet die verschiedenen Module hinzufügen?

mein Problem wird immer defizieler, da ich auf meinem server den lhwclan hoste und dieser mit einer SQL datenbank arbeitet
(phpkit) und ich den membern einen bereich und den anonymen usern einen bereich zur verfügungstellen will.

- user sollen in /srv/ftp/members/ als root kommen
- anony. in      /srv/ftp/              als root kommen

die anony. sollen natürlich nicht in den member bereich kommen (versteht sich von selbst)
gut die möglichkeit mit .htaccess wäre denkbar. aber mir wäre hier die abfrage über die sql lieber.
somit könnte ich auch einen

/srv/ftp/admin bereich festlegen wo auch nur bestimmt user der SQL zugreifen dürfen hinein.

meine frage wie schwer/leicht ist das problem zu lösen (falls überhaupt) da in der psa-proftpd nicht alle module eingebunden sind die ich brauche...

bzw. den plesk proftpd nicht deinstallieren will / kann wg. den hosting geschichten der anderen Firmen und User.
die sehr zufrieden sind mit dem Plesk login für ihre domäne und die webmail geschichten auch sehr einfach und vorallem zügig von der hand gehen.

Lieber Volgas hoffe du kannst mir wieder einen kleinen denkanstoss geben :-)  Huch

bzw. kann man den proftpd mit allen modulen als rpm herunterladen. (das wäre die geilste lösung von allen)
Code:
- ProFTPD Version: 1.3.0 (stable)
 -   Scoreboard Version: 01040002
 -   Built: Wed Oct 4 09:16:32 CEST 2006
 -     Module: mod_core.c
 -     Module: mod_xfer.c
 -     Module: mod_auth_unix.c
 -     Module: mod_auth_file.c
 -     Module: mod_auth.c
 -     Module: mod_ls.c
 -     Module: mod_log.c
 -     Module: mod_site.c
 -     Module: mod_delay/0.5
 -     Module: mod_cap/1.0

momentan installiert und läuft auch ..
diese pakete würde ich dann praktisch noch brauchen

mod_sql
mod_sql_mysql
mod_ifsession
mod_tls

irdendwelche vergessen. hoffe nicht...

kleines anliegen große Wirkung

so far greetingz

euer Wiesel

7  ProFTPD / ProFTPD - Deutsch / Re: Module einbinden am: 06. Oktober 2006, 10:10:55
Code:
mod_sql_mysql.c:135:19: error: mysql.h: No such file or directory

make[1]: *** [mod_sql_mysql.o] Error 1
make[1]: Leaving directory `/usr/progz/proftpd-1.3.0/modules'
make: *** [modules] Error 2

so nachdem ich die mysql.h endlich hatte ... :-)

make[1]: *** [mod_tls.o] Error 1
make[1]: Leaving directory `/usr/local/proftpd-1.3.0/modules'
make: *** [modules] Error 2

appending configuration tag "CXX" to libtool
libtool.m4: error: problem compiling CXX test program
appending configuration tag "F77" to libtool


haben wir diesen hier... :-)
leider konnte ich aber die MOD_TLS.O nicht finden werder bei den Modules noch sonst irgendwo.
es sind ja immer 2 Files Angegeben

immer die x.h
und die    x.o

lrwxrwxrwx   1 root root     20 Oct  4 10:11 mod_tls.c -> ../contrib/mod_tls.c


leider war bei der mod_tls nur die .h aufzufinden und nicht die .o

Vorgehensweise:

>make clean
> LDFLAGS=-ldl ./configure ...


tja leider hat das auch nix gebracht  Unentschlossen

ich werd mich mal über die OpenSSL hermachen und melde mich dann nochmals im laufe des Tages.

schon mal FETTES MERCI im Voraus, von alleine kommt man da sowieso ned drauf. :-)

so far greetingz



8  ProFTPD / ProFTPD - Deutsch / Re: Module einbinden am: 05. Oktober 2006, 16:03:39
halt ... das configure kannst alles vergessen.

war ne RPM für SUSE 10 :-) über yast installiert...

srz.

euer Wiesel
9  ProFTPD / ProFTPD - Deutsch / Re: Noob Fragen am: 05. Oktober 2006, 12:59:58

Ich hatte da mal ein sehr nettes web tool mit dem man auf einfachsteweise sql datenbanken und benutzer/gruppen anlegen konnnte.

leider weis ich nicht mehr genau wie das programm heißt...

aber phpmyadmin war es nicht....


"vqadmin" glaube ich bin mir aber nicht mehr sicher.


mfg

Wiesel
10  ProFTPD / ProFTPD - Deutsch / Re: Module einbinden am: 05. Oktober 2006, 11:18:35


Bin schon stark am verzweifeln.... Server Neuinstalliert, die Lücke im Webadmin wurde bei  mir ausgenutzt  Unentschlossen Verlegen &Auml;rgerlich
hatte auch was gutes .. das System ist wieder FRISCH   Cool Cool Cool

./configure
make
make install

Code:
h996739:/etc/init.d # proftpd -vv
 - ProFTPD Version: 1.3.0 (stable)
 -   Scoreboard Version: 01040002
 -   Built: Wed Oct 4 09:16:32 CEST 2006
 -     Module: mod_core.c
 -     Module: mod_xfer.c
 -     Module: mod_auth_unix.c
 -     Module: mod_auth_file.c
 -     Module: mod_auth.c
 -     Module: mod_ls.c
 -     Module: mod_log.c
 -     Module: mod_site.c
 -     Module: mod_delay/0.5
 -     Module: mod_cap/1.0

so die Version 1.3 läuft.. :-) Version 1.2.90 wurde ins jenseitsbefördert.

der Start des FTP ist beim Neustart automatisch komischerweise bringt er bei der Eingabe:
 Huch Huch Huch
Code:
996739:/etc/init.d # proftpd start
 - unknown parameter: 'start'
Huch Huch Huch

Code:
checking for string.h... (cached) yes
checking for strings.h... (cached) yes
checking stropts.h usability... yes
checking stropts.h presence... yes
checking for stropts.h... yes
checking sys/file.h usability... yes
checking sys/file.h presence... yes
checking for sys/file.h... yes
checking sys/mman.h usability... yes
checking sys/mman.h presence... yes
checking for sys/mman.h... yes
checking for sys/types.h... (cached) yes
checking sys/uio.h usability... yes
checking sys/uio.h presence... yes
checking for sys/uio.h... yes
checking for sys/param.h... yes
checking for sys/mount.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking whether netdb.h requires _USE_IRS... no
checking for netinet/in_systm.h... yes
checking for netinet/ip.h... yes
checking netinet/tcp.h usability... yes
checking netinet/tcp.h presence... yes
checking for netinet/tcp.h... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking for sys/stat.h... (cached) yes
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/termios.h usability... yes
checking sys/termios.h presence... yes
checking for sys/termios.h... yes
checking sys/termio.h usability... no
checking sys/termio.h presence... no
checking for sys/termio.h... no
checking sys/statvfs.h usability... yes
checking sys/statvfs.h presence... yes
checking for sys/statvfs.h... yes
checking sys/un.h usability... yes
checking sys/un.h presence... yes
checking for sys/un.h... yes
checking sys/vfs.h usability... yes
checking sys/vfs.h presence... yes
checking for sys/vfs.h... yes
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking dirent.h usability... yes
checking dirent.h presence... yes
checking for dirent.h... yes
checking ndir.h usability... no
checking ndir.h presence... no
checking for ndir.h... no
checking sys/ndir.h usability... no
checking sys/ndir.h presence... no
checking for sys/ndir.h... no
checking sys/dir.h usability... yes
checking sys/dir.h presence... yes
checking for sys/dir.h... yes
checking vmsdir.h usability... no
checking vmsdir.h presence... no
checking for vmsdir.h... no
checking utime.h usability... yes
checking utime.h presence... yes
checking for utime.h... yes
checking utmpx.h usability... yes
checking utmpx.h presence... yes
checking for utmpx.h... yes
checking regex.h usability... yes
checking regex.h presence... yes
checking for regex.h... yes
checking syslog.h usability... yes
checking syslog.h presence... yes
checking for syslog.h... yes
checking curses.h usability... no
checking curses.h presence... no
checking for curses.h... no
checking ncurses.h usability... no
checking ncurses.h presence... no
checking for ncurses.h... no
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking for uid_t in sys/types.h... yes
checking for pid_t... yes
checking for size_t... yes
checking for mode_t... yes
checking for off_t... yes
checking type of array argument to getgroups... gid_t
checking for timer_t... yes
checking whether time.h and sys/time.h may both be included... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking for short... yes
checking size of short... 2
checking for int... yes
checking size of int... 4
checking for long... yes
checking size of long... 4
checking for long long... yes
checking size of long long... 8
checking for off_t... (cached) yes
checking size of off_t... 8
checking for size_t... (cached) yes
checking size of size_t... 4
checking for time_t... yes
checking size of time_t... 4
checking for umode_t... no
checking for ino_t... yes
checking for intptr_t... yes
checking for socklen_t... yes
checking utmp.h usability... yes
checking utmp.h presence... yes
checking for utmp.h... yes
checking whether your struct utmp has ut_user... yes
checking whether your struct utmp has ut_host... yes
checking whether your struct utmp has ut_exit... yes
checking whether your syslog.h defines LOG_CRON... yes
checking whether your syslog.h defines LOG_FTP... yes
checking for d_fd in DIR structure... no
checking for dd_fd in DIR structure... no
checking for __dd_fd in DIR structure... no
checking for working alloca.h... yes
checking for alloca... yes
checking for alloca in -lucb... no
checking whether gcc needs -traditional... no
checking whether setpgrp takes no argument... yes
checking return type of signal handlers... void
checking for vprintf... yes
checking for _doprnt... no
checking for bcopy... yes
checking for crypt... yes
checking for fdatasync... yes
checking for fgetgrent... yes
checking for fgetpwent... yes
checking for flock... yes
checking for freeaddrinfo... yes
checking for iconv... yes
checking for nl_langinfo... yes
checking for gai_strerror... yes
checking for getaddrinfo... yes
checking for getcwd... yes
checking for getenv... yes
checking for gethostbyname2... yes
checking for gethostname... yes
checking for getnameinfo... yes
checking for getopt_long... yes
checking for gettimeofday... yes
checking for hstrerror... yes
checking for inet_aton... yes
checking for inet_ntop... yes
checking for inet_pton... yes
checking for memcpy... yes
checking for mempcpy... yes
checking for mkdir... yes
checking for mkstemp... yes
checking for mlock... yes
checking for mlockall... yes
checking for munlock... yes
checking for munlockall... yes
checking for rmdir... yes
checking for select... yes
checking for setgroups... yes
checking for socket... yes
checking for statfs... yes
checking for strchr... yes
checking for strcoll... yes
checking for strerror... yes
checking for strsep... yes
checking for strtol... yes
checking for strtoull... yes
checking for setprotoent... yes
checking for setspent... yes
checking for endprotoent... yes
checking for vsnprintf... yes
checking for snprintf... yes
checking for setsid... yes
checking for setgroupent... no
checking for seteuid... yes
checking for setegid... yes
checking for setenv... yes
checking for siginterrupt... yes
checking for setpgid... yes
checking for regcomp... yes
checking for tzset... yes
checking for unsetenv... yes
checking for pathconf... yes
checking for fpathconf... yes
checking for fgetspent... yes
checking for setpassent... no
checking for struct sockaddr_in.sin_len... no
checking whether struct addrinfo is defined... yes
checking whether struct sockaddr_storage is defined... yes
checking whether ss_family is defined... yes
checking whether ss_len is defined... no
checking whether __ss_len is defined... no
checking sys/acl.h usability... no
checking sys/acl.h presence... no
checking for sys/acl.h... no
checking acl/libacl.h usability... no
checking acl/libacl.h presence... no
checking for acl/libacl.h... no
checking which POSIX ACL implementation to use... None
checking which sendfile() implementation to use... Linux
checking sys/sendfile.h usability... yes
checking sys/sendfile.h presence... yes
checking for sys/sendfile.h... yes
checking whether setgrent returns void... yes
checking for setproctitle... no
checking libutil.h usability... no
checking libutil.h presence... no
checking for libutil.h... no
checking for setproctitle in -lutil... no
checking sys/pstat.h usability... no
checking sys/pstat.h presence... no
checking for sys/pstat.h... no
checking whether __progname and __progname_full are available... yes
checking which argv replacement method to use... writeable
checking whether printf supports %llu format... yes
checking for default transfer buffer sizes... 16384
checking checking for duplicate module requests... no
checking whether gcc accepts -Wno-long-double... no
configure: creating ./config.status
config.status: creating lib/Makefile
config.status: creating modules/Makefile
config.status: creating src/Makefile
config.status: creating src/ftpdctl.8
config.status: creating src/proftpd.8
config.status: creating src/xferlog.5
config.status: creating utils/Makefile
config.status: creating utils/ftpcount.1
config.status: creating utils/ftpshut.8
config.status: creating utils/ftptop.1
config.status: creating utils/ftpwho.1
config.status: creating Makefile
config.status: creating Make.rules
config.status: creating config.h
config.status: executing default commands

leider kann ich dir nicht mehr zeigen da man mit putty nicht mehr so weit zurück kommt.

Leider haben die Parameter mit --with-modules=LISTE der Module    z.B. =mod_sql:mod_sql_mysql:  usw... nicht funktioniert.
-rwxr--r--    1 root root     20 Oct  4 10:11 mod_sql.c -> ../contrib/mod_sql.c
-rwxr--r--   1 root root  82780 Oct  4 10:15 mod_sql.o
-rwxr--r--    1 root root     26 Oct  4 10:11 mod_sql_mysql.c -> ../contrib/mod_sql_mysql.c
-rwxr--r--    1 root root     29 Oct  4 10:16 mod_sql_postgres.c -> ../contrib/mod_sql_postgres.c
-rwxr--r--   1 root root     20 Oct  4 10:11 mod_tls.c -> ../contrib/mod_tls.c


so ich werde die SQL Auth stark überdenken und ggf. nen anderen weg einschlagen.
Ist hald Problematisch ...

- 3 Gruppen unter einen Hut zu bekommen.
1. Benutzer die nur auf das Home zugreifen dürfen. (wenigste Problem)
2. Benutzer die auf die Registriertenbereich zugreifen dürfen. (größeres Problem) da ich hier 2 Unterteilungen habe
   1. Reg. Benutzer der Woidschratzl.de Seite (eigenes Verzeichnis)
   2. Reg. Benutzer der Woidschratzl.de Seite mit Sonderrechten. (eigenes Verzeichnis)
3. die anonymen Benutzer stellen hier mal garkein Problem dar. :-)

also 33 % Fertig 33% noch zu machen (aber auch kein Problem) 33% keine Ahnung
11  ProFTPD / ProFTPD - Deutsch / Module einbinden am: 04. Oktober 2006, 10:31:33
hi ho ,

so nachdem ich trotz Ausrüstung wenig Zeit im Urlaub hatte die SQLAuth zu schaffen, habe ich noch ein kleines Problem.

 - ProFTPD Version 1.2.10

möchte diese Version gerne auf 1.3.0 Updaten.

 - ProFTPD Version: 1.2.10 (stable)
 -   Scoreboard Version: 01040002
 -   Built: Fri Mar 31 14:27:30 NOVST 2006
 -     Module: mod_core.c
 -     Module: mod_xfer.c
 -     Module: mod_auth_unix.c
 -     Module: mod_auth_file.c
 -     Module: mod_auth.c
 -     Module: mod_ls.c
 -     Module: mod_log.c
 -     Module: mod_site.c
 -     Module: mod_auth_pam.c
 -     Module: mod_ratio.c
 -     Module: mod_readme.c
 -     Module: mod_quota.c
 -     Module: mod_tls.c
 -     Module: mod_cap/1.0

Diese Module sind bei mir Installiert. möchte hier aber noch einige dazu nehmen. Leider will die Kiste mal wieder nicht so wie ich will.. (wars den anders zu erwarten.)


1. Update:

- Vers. 1.3 ist auf dem Rechner kann ich dann einfach die 1.2.10 löschen oder muss ich noch auf verlinkungen aufpassen?
- wenn ich Proftpd aus dem Verzeichnis für 1.3 starte kommt trotzdem die Version 1.2.10 zum Einsatz. k.a. warum? (1.2.10 noch installiert.)

2. Module:
-
Code:
h996739:/usr/progz/proftpd-1.3.0 # make
cd lib/ && make lib
make[1]: Entering directory `/usr/progz/proftpd-1.3.0/lib'
make[1]: Nothing to be done for `lib'.
make[1]: Leaving directory `/usr/progz/proftpd-1.3.0/lib'
cd src/ && make src
make[1]: Entering directory `/usr/progz/proftpd-1.3.0/src'
make[1]: Nothing to be done for `src'.
make[1]: Leaving directory `/usr/progz/proftpd-1.3.0/src'
cd modules/ && make static
make[1]: Entering directory `/usr/progz/proftpd-1.3.0/modules'
gcc -DHAVE_CONFIG_H  -DLINUX  -I.. -I../include -I/usr/local/include -O2 -Wall -c mod_sql_postgres.c
mod_sql_postgres.c:41:22: error: libpq-fe.h: No such file or directory
mod_sql_postgres.c:68: error: syntax error before âPGconnâ
mod_sql_postgres.c:68: warning: no semicolon at end of struct or union
mod_sql_postgres.c:69: warning: type defaults to âintâ in declaration of âresultâ
mod_sql_postgres.c:69: warning: data definition has no type or storage class
mod_sql_postgres.c:70: error: syntax error before â}â token
mod_sql_postgres.c: In function â_build_errorâ:
mod_sql_postgres.c:203: warning: implicit declaration of function âPQerrorMessageâ
mod_sql_postgres.c:203: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:203: warning: passing argument 4 of âmod_create_retâ makes pointer from integer without a cast
mod_sql_postgres.c: In function â_build_dataâ:
mod_sql_postgres.c:214: error: âPGresultâ undeclared (first use in this function)
mod_sql_postgres.c:214: error: (Each undeclared identifier is reported only once
mod_sql_postgres.c:214: error: for each function it appears in.)
mod_sql_postgres.c:224: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:227: warning: implicit declaration of function âPQntuplesâ
mod_sql_postgres.c:228: warning: implicit declaration of function âPQnfieldsâ
mod_sql_postgres.c:235: warning: implicit declaration of function âPQgetvalueâ
mod_sql_postgres.c:235: warning: passing argument 2 of âpstrdupâ makes pointer from integer without a cast
mod_sql_postgres.c: In function âcmd_openâ:
mod_sql_postgres.c:288: warning: implicit declaration of function âPQstatusâ
mod_sql_postgres.c:288: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:288: error: âCONNECTION_OKâ undeclared (first use in this function)
mod_sql_postgres.c:300: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:300: warning: implicit declaration of function âPQconnectdbâ
mod_sql_postgres.c:300: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:302: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:302: error: âCONNECTION_BADâ undeclared (first use in this function)
mod_sql_postgres.c: In function âcmd_closeâ:
mod_sql_postgres.c:393: warning: implicit declaration of function âPQfinishâ
mod_sql_postgres.c:393: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:394: error: dereferencing pointer to incomplete type
mod_sql_postgres.c: In function âcmd_defineconnectionâ:
mod_sql_postgres.c:460: error: invalid application of âsizeofâ to incomplete type âdb_conn_tâ
mod_sql_postgres.c:463: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:464: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:495: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:496: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:497: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:500: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:501: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:501: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:502: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:502: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:503: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:522: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:523: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:524: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:525: error: dereferencing pointer to incomplete type
mod_sql_postgres.c: In function âcmd_selectâ:
mod_sql_postgres.c:674: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:674: warning: implicit declaration of function âPQexecâ
mod_sql_postgres.c:674: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:675: warning: implicit declaration of function âPQresultStatusâ
mod_sql_postgres.c:675: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:675: error: âPGRES_TUPLES_OKâ undeclared (first use in this function)
mod_sql_postgres.c:678: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:678: warning: implicit declaration of function âPQclearâ
mod_sql_postgres.c:678: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:693: error: dereferencing pointer to incomplete type
mod_sql_postgres.c: In function âcmd_insertâ:
mod_sql_postgres.c:792: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:792: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:793: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:793: error: âPGRES_COMMAND_OKâ undeclared (first use in this function)
mod_sql_postgres.c:796: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:796: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:806: error: dereferencing pointer to incomplete type
mod_sql_postgres.c: In function âcmd_updateâ:
mod_sql_postgres.c:895: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:895: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:896: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:896: error: âPGRES_COMMAND_OKâ undeclared (first use in this function)
mod_sql_postgres.c:899: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:899: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:909: error: dereferencing pointer to incomplete type
mod_sql_postgres.c: In function âcmd_queryâ:
mod_sql_postgres.c:1015: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:1015: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:1016: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:1016: error: âPGRES_TUPLES_OKâ undeclared (first use in this function)
mod_sql_postgres.c:1017: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:1017: error: âPGRES_COMMAND_OKâ undeclared (first use in this function)
mod_sql_postgres.c:1020: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:1020: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:1034: error: dereferencing pointer to incomplete type
mod_sql_postgres.c:1037: error: dereferencing pointer to incomplete type
mod_sql_postgres.c: In function âcmd_escapestringâ:
mod_sql_postgres.c:1112: warning: implicit declaration of function âPQescapeStringâ
make[1]: *** [mod_sql_postgres.o] Error 1
make[1]: Leaving directory `/usr/progz/proftpd-1.3.0/modules'
make: *** [modules] Error 2

soviel dazu... :-(

Ich bin mir nicht 100%ig sicher aber ich denke ich muss noch irgendwelche Pfade angeben... sonst hat mich das ding nicht lieb.. ..

mfg

euer Wiesel
12  ProFTPD / ProFTPD - Deutsch / Re: User ins Home / Rest in die gewünschten Verzeichnisse am: 22. September 2006, 11:11:55
Code:
- mod_tls/2.0.7: using OpenSSL 0.9.7g 11 Apr 2005
 - parsing '/etc/proftpd.conf' configuration
 - FS: using system open()
 - FS: using system read()
 - dispatching directive 'ServerType' to module mod_core
 - dispatching directive 'PidFile' to module mod_core
 - dispatching directive 'MaxInstances' to module mod_core
 - dispatching directive 'MaxConnectionRate' to module mod_core
 - dispatching directive 'SocketBindTight' to module mod_core
 - dispatching directive 'UseReverseDNS' to module mod_core
 - dispatching directive 'RootRevoke' to module mod_auth
 - dispatching directive 'DefaultServer' to module mod_core
 - dispatching directive 'MultilineRFC2228' to module mod_core
 - dispatching directive 'SystemLog' to module mod_log
 - dispatching directive 'LogFormat' to module mod_log
 - dispatching directive 'LogFormat' to module mod_log
 - dispatching directive 'LogFormat' to module mod_log
 - dispatching directive '<Global>' to module mod_core
 - dispatching directive 'User' to module mod_core
 - dispatching auth request "getpwnam" to module mod_auth_file
 - dispatching auth request "getpwnam" to module mod_auth_unix
 - dispatching directive 'Group' to module mod_core
 - dispatching auth request "getgrnam" to module mod_auth_file
 - dispatching auth request "getgrnam" to module mod_auth_unix
 - dispatching directive 'ServerIdent' to module mod_core
 - dispatching directive 'DeferWelcome' to module mod_core
 - dispatching directive 'DisplayConnect' to module mod_core
 - dispatching directive 'IdentLookups' to module mod_core
 - dispatching directive 'UseFtpUsers' to module mod_auth
 - dispatching directive 'RequireValidShell' to module mod_auth
 - dispatching directive 'TimeoutLogin' to module mod_auth
 - dispatching directive 'MaxLoginAttempts' to module mod_auth
 - dispatching directive 'MaxClientsPerHost' to module mod_auth
 - dispatching directive '<IfModule>' to module mod_core
 - <IfModule>: skipping 'mod_sql.c' section
 - FS: using system read()
 - FS: using system read()
 - FS: using system read()
 - Fatal: <IfModule>: unclosed <IfModule> context on line 199 of '/etc/proftpd.conf'

FRAGE: skipping 'mod_sql.c' sollte eigentlich nicht sein da ich nur User auf dem FTP haben will die in der SQL DB stehen.
           ich denke mal das auch wg. skipping das unclosed <IfModule> auftaucht... aber ich steh irgendwie am schlauch warum das ned. geht...
13  ProFTPD / ProFTPD - Deutsch / Re: User ins Home / Rest in die gewünschten Verzeichnisse am: 22. September 2006, 10:39:46
Code:
# Universelles Muster einer proftpd.conf
#
# Diese Konfigurationsdatei ist fuer den Standard-ProFTPD
# als auch mit eincompilierten mySQL- und TLS-Support.
# Einzelne Direktiven oder ganze Bereiche wurden durch ein
# Kommentarzeichen ("#") deaktivert und sind bei Bedarf
# wieder einfach zu reaktivieren.
#
# Dies ist nur ein Muster und entsprechend anzupassen -
# eine Garantie gleich jedwelcher Art ist ausgeschlossen.
#
# 2006 Volker Gass


ServerType              standalone
PidFile                 /var/run/proftpd.pid

MaxInstances            30
MaxConnectionRate       4
SocketBindTight         off
UseReverseDNS           off

RootRevoke              on
DefaultServer           on
MultilineRFC2228        on

<IfModule mod_delay.c>
        DelayEngine     off
        DelayTable      var/run/proftpd/proftpd.delay
</IfModule>

<IfModule mod_tls.c>
        TLSProtocol     SSLv23
</IfModule>

# Log-Formate definieren
SystemLog               NONE
LogFormat default       "%h %l %u %t \"%r\" %s %b"
LogFormat auth          "%v [%P] %h %t \"%r\" %s"
LogFormat write         "%h %l %u %t \"%r\" %s %b"



# --------------------------------------------
# globale Settings
# --------------------------------------------

<Global>
        User                    nobody
        Group                   nogroup


        # --------------------------------------------
        # Login
        # --------------------------------------------

        ServerIdent             on "FTP server ready."
        DeferWelcome            on
        DisplayConnect          /etc/proftpd.msg

        IdentLookups            off
        UseFtpUsers             off
        RequireValidShell       off

        TimeoutLogin            60
        MaxLoginAttempts        3
        MaxClientsPerHost       3


        # --------------------------------------------
        # Authentifikation: Standard
        # --------------------------------------------

        <IfModule !mod_sql.c>
                AuthOrder               mod_auth_unix.c
   
               <Limit LOGIN>
  Order deny,allow
  AllowGroup friends
  </Limit>
        </IfModule>


        # --------------------------------------------
        # Authentifikation per SQL
        # --------------------------------------------

        <IfModule mod_sql.c>
                AuthOrder               mod_sql.c
        SQLConnectInfo        dbstuff@localhost user   pw
SQLAuthenticate       users groups
SQLAuthTypes          Crypt Backend
SQLDefaultHomedir     ~
SQLUserInfo           users userid passwd uid gid homedir shell
SQLGroupInfo          groups groupid gid members

SQLHomedirOnDemand      on
SQLLogFile              /var/log/proftpd.sql_log

# Count number of logins for each user
SQLLog                PASS logincount
SQLNamedQuery         logincount UPDATE "login_count=login_count+1 WHERE userid='%u'" users
# Save last login
SQLLog                PASS lastlogin
SQLSQLLog STOR           ulbytescount
SQLNamedQuery         ulbytescount UPDATE "ul_bytes=ul_bytes+%b WHERE userid='%u'" users
SQLLog STOR           ulcount
SQLNamedQuery         ulcount UPDATE "ul_count=ul_count+1 WHERE userid='%u'" users

NamedQuery         lastlogin UPDATE "last_login=now() WHERE userid='%u'" users
# Count number of bytes/files downloaded and uploaded
SQLLog RETR           dlbytescount
SQLNamedQuery         dlbytescount UPDATE "dl_bytes=dl_bytes+%b WHERE userid='%u'" users
SQLLog RETR           dlcount
SQLNamedQuery         dlcount UPDATE "dl_count=dl_count+1 WHERE userid='%u'" users
SQLLog STOR           ulbytescount
SQLNamedQuery         ulbytescount UPDATE "ul_bytes=ul_bytes+%b WHERE userid='%u'" users




# Do not let disabled or expired users to login
SQLUserWhereClause    "disabled!=1 and (NOW()<=expires or expires=-1)"

# Do not require a valid shell, this might be a good thing to turn on for SQL-users
# This might simplify the configuration a little bit
RequireValidShell     off
       
</IfModule>


        # --------------------------------------------
        # TLS Standards
        # --------------------------------------------
        <IfModule mod_tls.c>
                TLSEngine               off
                TLSTimeoutHandshake     60
                TLSRequired             off
                TLSVerifyClient         off
       
                TLSOptions              NoCertRequest
                TLSLog                  /var/log/proftpd/tls.log
       
#               TLSCACertificateFile    /etc/ssl/certs/CA.cert          # CA-Cert optional
        </IfModule>


        # --------------------------------------------
        # Post-Login, Timeouts
        # --------------------------------------------

        PassivePorts            49152 65534

        DisplayLogin            welcome.msg
        DisplayFirstChdir       .message
        AllowOverride           off

        TimeoutIdle             600             # Inaktivitaet
        TimeoutNoTransfer       3600            # keine Datenuebertragung (Listing, File, ...)
        TimeoutStalled          300             # haengende Datenuebertragung
        TimeoutSession          7200            # Gesamtdauer einer Session


        # --------------------------------------------
        # Session
        # --------------------------------------------

        DefaultRoot             ~

        DenyFilter              \*.*/
        ListOptions             "-An +R" strict
        UseGlobbing             off

        ShowSymlinks            on
        TimesGMT                on


        # --------------------------------------------
        # Up- & Download
        # --------------------------------------------

        AllowOverwrite          on
        AllowRetrieveRestart    on
        HiddenStores            on
        DeleteAbortedStores     on
        AllowStoreRestart       off             # widerspricht sonst "DeleteAbortedStores"


        # --------------------------------------------
        # Datei & Verzeichnis
        # --------------------------------------------

        Umask 022 022


        ### hierher alle <Directory>-Bloecke




        # --------------------------------------------
        # Logging
        # --------------------------------------------

        WtmpLog         off
        TransferLog     /var/log/proftpd/xferlog

        # Record all logins
        ExtendedLog     /var/log/proftpd/auth.log       AUTH auth

        # Logging file/dir access
        ExtendedLog     /var/log/proftpd/access.log     WRITE,READ write

        # Paranoia logging level....
        ExtendedLog     /var/log/proftpd/paranoid.log   ALL default

        # fuer Debug: alle modMySQL Kommentare (Datenmenge immens!)
        #SQLLogFile     /var/log/proftpd/sql.log
</Global>


DefaultAddress          XXXXXXXXX
ServerName              xxxx.tld
ServerAdmin             xxxx.tld
# MasqueradeAddress     
<IfModule mod_tls.c>
        TLSEngine                       off
        TLSRSACertificateFile           /etc/ssl/certs/.tld.cert
        TLSRSACertificateKeyFile        /etc/ssl/certs/.tld.key
</IfModule>


SO hab immer noch Probleme mit der <ifmodule> unclosed....

neu hinzugekommen ist die SQL auth. ... hab mir auch gleich den ProftpdAdmin fürs Web raufgeklatscht funzt eigentlich ganz gut.. nur diese Fehlermedlung ..... grml

Code:
- mod_tls/2.0.7: using OpenSSL 0.9.7g 11 Apr 2005
 - parsing '/etc/proftpd.conf' configuration
 - FS: using system open()
 - FS: using system read()
 - dispatching directive 'ServerType' to module mod_core
 - dispatching directive 'PidFile' to module mod_core
 - dispatching directive 'MaxInstances' to module mod_core
 - dispatching directive 'MaxConnectionRate' to module mod_core
 - dispatching directive 'SocketBindTight' to module mod_core
 - dispatching directive 'UseReverseDNS' to module mod_core
 - dispatching directive 'RootRevoke' to module mod_auth
 - dispatching directive 'DefaultServer' to module mod_core
 - dispatching directive 'MultilineRFC2228' to module mod_core
 - dispatching directive '<IfModule>' to module mod_core
 - <IfModule>: skipping 'mod_delay.c' section
 - FS: using system read()
 - FS: using system read()
 - FS: using system read()
 - Fatal: <IfModule>: unclosed <IfModule> context on line 229 of '/etc/proftpd.conf'




MAC:

mit dem 2.2 Parallels ist es eigentlich kein Problem mehr er trennt eine Partition von der Festplatte ab speichert diese als .vcd und verwendet diese als einen art chroot wie hier in linux.

vorteill du kannst das komplette system 1:1 auf DVD Sichern und an jedem PC sogar auf der Parallels Win verwenden.


Bekannt Versionen:
 Red Hat Enterprise Linux WS4
 Red Hat Enterprise Linux AS4
 Red Hat Enterprise Linux WS3
 Red Hat Enterprise Linux ES4
 Red Hat Enterprise Linux ES3
 Red Hat Linux 9
 Red Hat Linux 8
 Red Hat Linux 7.3
Introduction 9
 Debian Linux 3.1
 Fedora Core Linux 4
 Fedora Core Linux 3
 SUSE Linux 10
 SUSE Linux 9.3
 SUSE Linux 9.2
 SUSE Linux 9.1
 SUSE Linux 9.0
 Mandriva Linux 10.1
 Mandriva Linux 10
 Mandriva Linux 9.2

Bei mir läuft: open Suse 10.1 und die Slaxx version...  :-)
14  ProFTPD / ProFTPD - Deutsch / Re: User ins Home / Rest in die gewünschten Verzeichnisse am: 22. September 2006, 08:17:47
Mac OSX das Macbookpro mit Parallels Virtualsoftware :-)

und Urlaub ist leicht gesagt, eher Messe Besuch ne ganze geschlagene Woche da bleibt dann schon mal zeit bischen zu stöbern.

aber nach der Messe wird noch ne woche drangehängt..

und in 2 Wochen werde bestimmt das thema FTP-Sicherheit, im Griff haben.
15  ProFTPD / ProFTPD - Deutsch / Re: User ins Home / Rest in die gewünschten Verzeichnisse am: 21. September 2006, 16:35:52
ach schade jetzt wo ich die SQL DB umbenannt habe und mich von den Systemusern in zukunft zu trennen.... :-)  naja

ich werd ne nacht drüber schlafen mir die geschichte nochmal unters Kopfkissen legen. und hoffen das das Koflerbuch morgen in der Post liegt.. damit ich dann für den urlaub ne lektüre hab..

so far

Wiesel
Seiten: [1] 2
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.146 Sekunden mit 15 Zugriffen.