PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ProFTPd: Probleme mit TLS und Berechtigungen



S_O
26.10.05, 21:17
Ich versuche bereits seit Monaten, meinen FTP-Server vernünftig einzurichten. Leider ohne Erfolg.
Was ich möchte:
3 Gruppen (A, B, C), die für 3 Ordner folgende Berechtigungen haben:
Ordner 1:
Gruppe A: lesen/schreiben
Gruppe B/C: nichts
Ordner 2:
Gruppe A: lesen/schreiben
Gruppe B: lesen/schreiben (nicht löschen)
Gruppe C: nichts
Ordner 3:
Gruppe A: lesen/schreiben
Gruppe B: lesen
Gruppe C: lesen/schreiben (nicht löschen)

Alles der Zugang geht über MySQL und alles soll (zwangsweise) TLS-verschlüsselt sein.

Das ist meine proftpd.conf:

ServerName ftp.domain.tld
ServerType standalone
ServerAdmin webmaster@domain.tld
ServerIdent on "FTP Server ready. TLS required!"
DefaultServer on
Port 21
Umask 022
MaxInstances 30
User www-data
DenyFilter "%"
UseReverseDNS off
IdentLookups off
TimeoutStalled 300
TimeoutLogin 30
TimeoutIdle 120
TimeoutNoTransfer 300
RootLogin off
MaxLoginAttempts 3
RequireValidShell off
UseFtpUsers off
AllowOverride On
TLSEngine on
TLSLog /var/log/ftpd_tls.log
TLSProtocol TLSv1
TLSRequired on
TLSRSACertificateFile /etc/server.pem
TLSRSACertificateKeyFile /etc/server.pem
TLSOptions NoCertRequest
TLSVerifyClient off

<Global>
DefaultRoot /var/ftp
AllowRetrieveRestart on
AllowForeignAddress on
AllowStoreRestart on
HiddenStor off
MaxClients 10 "Sorry, to many users online! Please try again later"
MaxClientsPerHost 2 "Max 2 Login per Host!!"
DeleteAbortedStores off
ShowSymlinks on
</Global>

SQLAuthTypes Crypt
SQLAuthenticate users* groups*
SQLConnectInfo ftp@localhost username password
SQLUserInfo users username passwd NULL NULL homedir NULL
SQLGroupInfo groups groupname id username
SQLUserWhereClause "valid = 1"
SQLDefaultGID 8
SQLDefaultUID 30
SQLHomedirOnDemand off
SQLLog PASS updatelogin
SQLNamedQuery updatelogin UPDATE "count=count+1, lastlogin=NOW() WHERE username = '%u'" users
SQLLog STOR,RETR,ERR_STOR,ERR_RETR logtrafic
SQLNamedQuery logtrafic FREEFORM "INSERT INTO history (username, filename, transfertype, transfersize, transferhost, transfertime, transferdate) VALUES('%u', '%F', '%m', %b, '%a', '%T', NOW())"
SQLLog ERR_* logevents
SQLNamedQuery logevents FREEFORM "INSERT INTO userevents (username, eventtype, description, eventdate) VALUES ('%u', '%m', '%r', NOW())"

<Directory /var/ftp/ornder1/*>
AllowOverwrite on
HideNoAccess on
<Limit ALL>
DenyGroup !gruppeA
</Limit>
<Limit SITE_CHMOD>
DenyAll
</Limit>
</Directory>

<Directory /var/ftp/ordner2/*>
AllowOverwrite on
HideNoAccess on
<Limit ALL>
DenyAll
AllowGroup gruppeA
AllowGroup gruppeB
</Limit>
<Limit DELE RMD>
DenyGroup !gruppeA
</Limit>
<Limit SITE_CHMOD>
DenyAll
</Limit>
</Directory>

<Directory /var/ftp/ordner3/*>
HideNoAccess on
<Limit ALL>
DenyAll
AllowGroup gruppeA
AllowGroup gruppeB
AllowGroup gruppeC
</Limit>
<Limit WRITE>
DenyAll
AllowGroup gruppeA
AllowGroup gruppeC
</Limit>
<Limit DELE RMD>
DenyGroup !gruppeA
</Limit>
<Limit SITE_CHMOD>
DenyAll
</Limit>
</Directory>

Die Probleme dabei:
Mit TLS geht gar nichts, der Client sagt "AUTH TLS", der Server antwortet "234 AUTH TLS successful", dann bricht die Verbindung ab.
Im Log steht folgendes:

Oct 26 19:22:01 mod_tls/2.1[7982]: using default OpenSSL verification locations (see $SSL_CERT_DIR)
Oct 26 19:22:01 mod_tls/2.1[7982]: TLS/TLS-C requested, starting TLS handshake
Oct 26 19:22:02 mod_tls/2.1[7982]: unable to accept TLS connection:
(1) error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Oct 26 19:22:02 mod_tls/2.1[7982]: TLS/TLS-C negotiation failed on control channelWas genau ist da falsche Version? Ich habe OpenSSL 0.9.7e (läuft perfekt mit Apache/Postfix/Cyrus) und ProFTPd 1.3.0 RC2 (selber kompiliert).

Aber auch ohne SSL geht es nicht richtig, die Berechtigungen passen überhaupt gar nicht, z.B. kann gruppeA nirgendwo schreiben. Im Ornder /var/ftp hat der ftp (www-data) natürlich Schreibberechtigung. Was mache ich falsch? Ich hab schon so viel probiert, jedoch ohne Erfolg.


Nachtrag:
Ich habe zumindest einen Teil des Problems gefunden: ProFTPd läuft nicht auf dem user, den ich angebe. Wenn ich das verzeichnis /var/ftp 777 mache (mit allen Dateien) klappt es. Der Ordner gehört aber www-data und soll auch nur von dem user gelesen/geschrieben werden. ProFTPd arbeitet aber mit der user ID 30, welche im system anscheinend nicht vergeben ist. Wie kann das passieren, wenn ich ausdrücklich "user www-data" angebe? Ich habe auch versucht direkt die user-id und nicht den namen einzugeben, dann starten aber nicht, mit der begründung, der benutzer existiere nicht.