Ich habe gerade festgestellt, das dass problem zwar zusammen mit TLS aufgetreten ist, es sich jeodoch auch nicht beheben lässt durch die Abschaltung von TLS. Bei meinem ersten Test muss es gerade funktioniert haben.
Ich habe jetzt TLS in ProFTPd aktiviert, das geht aber nur sehr selten, meistens bekomme ich noch während der Anmeldung eine Zeitüberschreitung, meinchmal klappt es bis LIST, meinchmal geht es auch perfekt:
Mit FileZilla:
Status: Verbunden mit meinserver.de, SSL-Verbindung wird ausgehandelt...
Antwort: 220 FTP Server ready. TLS required!
Befehl: AUTH TLS
Antwort: 234 AUTH TLS successful
Status: SSL-Verbindung hergestellt. Warten auf Willkommens-Meldung...
Befehl: PBSZ 0
Antwort: 200 PBSZ 0 successful
Befehl: PROT P
Antwort: 200 Protection set to Private
Befehl: USER anonymous
Fehler: Timeout entdeckt!
Mit SmartFTP:
Tja, das kann ich nicht posten, immer wenn ich den text drin hab, sagt er posting.php not found. Habs bestimmt 10 mal ausprobiert, ohne gehts, mit nicht, wirklich merkwürdig. Bei meinem phpBB2 gehts ohne Probleme.
Hier meine TLS-Einstellungen (ProFTPd 1.2.10 auf Debian, fertiges Packet):
TLSEngine on
TLSLog /var/log/ftpd_tls.log
TLSProtocol TLSv1
TLSRequired on
TLSRSACertificateFile /etc/apache2/server.crt
TLSRSACertificateKeyFile /etc/apache2/server.key
TLSOptions NoCertRequest # this is REALLY important for WinClients
TLSVerifyClient off
Ich benutze das selbe Zertifikat wie Apache, das geht doch, oder gibts da irgendwelche Konflikte?
Hier ein auszug aus dem ftpd_tls.log:
Apr 10 15:02:32 mod_tls/2.0.7[2140]: using default OpenSSL verification locations (see $SSL_CERT_DIR)
Apr 10 15:02:32 mod_tls/2.0.7[2140]: TLS/TLS-C requested, starting TLS handshake
Apr 10 15:02:32 mod_tls/2.0.7[2140]: TLSv1/SSLv3 connection accepted, using cipher RC4-MD5 (128 bits)
Apr 10 15:07:16 mod_tls/2.0.7[2153]: using default OpenSSL verification locations (see $SSL_CERT_DIR)
Apr 10 15:07:16 mod_tls/2.0.7[2153]: TLS/TLS-C requested, starting TLS handshake
Apr 10 15:07:17 mod_tls/2.0.7[2153]: TLSv1/SSLv3 connection accepted, using cipher DHE-RSA-AES256-SHA (256 bits)
Apr 10 15:07:18 mod_tls/2.0.7[2153]: Protection set to Private
Zuerst SmartFTP, dann Filezilla.
Woran kann das liegen?
----
Das tritt immer auf, egal ob TLS oder nicht. Hier meine vollstänige proftpd.conf:
ServerName ftp.meinserver.de
ServerType standalone
ServerAdmin
email@meinserver.deServerIdent on "FTP Server ready. TLS required!"
DefaultServer on
Port 21
Umask 022
MaxInstances 30
User nobody
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/apache2/server.crt
TLSRSACertificateKeyFile /etc/apache2/server.key
TLSOptions NoCertRequest # this is REALLY important for WinClients
TLSVerifyClient off
<Global>
DefaultRoot /var/www
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>
<Anonymous /var/www>
User ftp
Group nogroup
UserAlias anonymous ftp
HideNoAccess on
<Limit READ WRITE>
DenyAll
IgnoreHidden on
</Limit>
<Directory /var/www/*>
<Limit ALL>
DenyAll
IgnoreHidden on
</Limit>
</Directory>
<Directory /var/www/dirA>
HideFiles (\.inc$|^\.|^config\.php$)
HideNoAccess on
<Limit READ DIRS LOGIN PASV PORT>
AllowAll
</Limit>
</Directory>
<Directory /var/www/dirB>
<Limit READ DIRS LOGIN PASV PORT>
AllowAll
</Limit>
</Directory>
<Directory /var/www/dirC>
<Limit READ DIRS LOGIN PASV PORT>
AllowAll
</Limit>
</Directory>
</Anonymous>
SQLAuthTypes Crypt
SQLAuthenticate users* groups*
SQLConnectInfo database@localhost user 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
### Log trafic (STOR, RETR commands)
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())"
### Log user error events (ERR_* commands)
SQLLog ERR_* logevents
SQLNamedQuery logevents FREEFORM "INSERT INTO userevents (username, eventtype, description, eventdate) VALUES ('%u', '%m', '%r', NOW())"
<Limit ALL>
DenyAll
IgnoreHidden on
</Limit>
<Limit LOGIN PASV PORT>
AllowAll
</Limit>
<Directory /var/www/*>
HideNoAccess on
<Limit ALL>
DenyAll
IgnoreHidden on
</Limit>
</Directory>
<Directory /var/www/DirA>
HideFiles (\.inc$|^\.|^config\.php$)
HideNoAccess on
<Limit READ DIRS LOGIN PASV PORT>
AllowAll
</Limit>
</Directory>
<Directory /var/www/DirB>
<Limit ALL>
DenyAll
AllowGroup admin
</Limit>
<Limit READ DIRS LOGIN PASV PORT>
AllowAll
</Limit>
<Limit SITE_CHMOD>
DenyAll
</Limit>
</Directory>
<Directory /var/www/DirC>
<Limit ALL>
DenyAll
AllowGroup admin
</Limit>
<Limit READ DIRS LOGIN PASV PORT>
AllowAll
</Limit>
<Limit SITE_CHMOD>
DenyAll
</Limit>
</Directory>
<Directory /var/www/DirD>
<Limit ALL>
DenyAll
AllowGroup admin
AllowGroup usergroup
</Limit>
<Limit SITE_CHMOD>
DenyAll
</Limit>
</Directory>
Kurze Erklärung wie das funktionieren soll:
Anonymous kann dirA, dirB, dirC lesen, mehr nicht. admin kann dirA lesen, dirB, dirC und dirD lesen/schreiben. usergroup ist wie anonymous, nur dass dirD auch gelesen/geschrieben werden kann. Dinge worauf man kein Zugriff hat sollen nicht angezeigt werden und beim direkten Zugriff sollen sie verleugnet werden (der FTP soll sie existenz der datei abstreiten und nicht sagen zugriff verweigert).
Wie macht man das? Ich bastle hier stundenlang rum, bekomm es aber beim besten willen nicht hin. Ich versteh die Konfiguration irgendwie nicht.