www.ProFTPD.de

ProFTPD => ProFTPD - Deutsch => Thema gestartet von: nasi_be am 26. Februar 2006, 19:09:21



Titel: Kein Login an Virtualhost möglich
Beitrag von: nasi_be am 26. Februar 2006, 19:09:21
Hallo zusammen!

Ich habe ein Problem mit einem Virtualhost.
Bei der Anmeldung kommt bei mir auf dem Client immer die Fehlermeldung, daß das Kennwort falsch ist.
In der Log-Datei steht, daß eine LIMIT-Anweisung den Zugriff verweigert.
Aber ich sehe meinen Fehler einfach nicht...

Hier meine Config:
Code:

ServerName "Debian"
ServerType                      standalone
DeferWelcome off
DefaultAddress                  192.168.2.3
Port                            621
SocketBindTight                 on
DefaultServer                   off

MultilineRFC2228 on
ShowSymlinks on

TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200

DisplayLogin                    welcome.msg
DisplayFirstChdir               .message
ListOptions                 "-l"

DenyFilter \*.*/

UseReverseDNS off
IdentLookups off

RequireValidShell               off

MaxInstances 30
MaxClientsPerHost 3
MaxClientsPerUser 3
MaxHostsPerUser 1

# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask 027  027

# Normally, we want files to be overwriteable.
AllowOverwrite on
AllowRetrieveRestart            on
AllowStoreRestart               on

# Some logging formats
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"

<Global>

  # Set the user and group that the server normally runs at.
  User nobody
  Group nogroup

  # Log file/dir access
  ExtendedLog /var/log/proftpd/proftpd.access_log WRITE,READ write
  # Record all logins
  ExtendedLog /var/log/proftpd/proftpd.auth_log AUTH auth
  # Paranoia logging level....
  ExtendedLog /var/log/proftpd/proftpd.paranoid_log ALL default
  # Normale Log-Datei anstatt Syslog
  ServerLog /var/log/proftpd/proftpd.log

  DefaultChdir /home/ftpdaten
  DefaultRoot /home/ftpdaten

  # Login-Berechtigungen setzen
  <Limit LOGIN PASV PORT>
    DenyAll
    AllowGroup ftpuser
  </Limit>

  # Verzeichnis /home/ftpdaten und Unterverzeichnisse
  <Directory /home/ftpdaten>
    # Dateien ausblenden, auf die der Benutzer keine
    # Berechtigungen hat
    HideNoAccess on
    # Alles verbieten
    <Limit ALL>
      DenyAll
    </Limit>
    # Gruppe ftpuser Lese-Zugriff geben
    <Limit READ>
      AllowGroup ftpuser
    </Limit>
    # Gruppe ftpuser Dir-Zugriff geben
    <Limit DIRS>
      AllowGroup ftpuser
    </Limit>
  </Directory>

  # Verzeichnis /home/ftpdaten/upload und Unterverzeichnisse
  <Directory /home/ftpdaten/upload>
    # Gruppe ftpuser Schreib-Zugriff geben
    # (ohne Loesch-Rechte)
    <Limit MKD STOR STOU>
      AllowGroup ftpuser
    </Limit>
  </Directory>
</Global>


  # TLS
  <IfModule mod_tls.c>
  TLSEngine on
  TLSLog /var/log/proftpd/proftpd_tls.log
  TLSProtocol TLSv1
  TLSRequired on
  TLSVerifyClient off
  TLSRSACertificateFile /etc/ftpcert/ftphost.cert
  TLSRSACertificateKeyFile /etc/ftpcert/ftphost.key
  </IfModule>

<VirtualHost 192.168.2.4>
  ServerName "Debian-Local"
  Bind 192.168.2.4
  Port 21

  # Set the user and group that the server normally runs at.
  User nobody
  Group nogroup

  # Log file/dir access
  ExtendedLog /var/log/proftpd/local-proftpd.access_log WRITE,READ write
  # Record all logins
  ExtendedLog /var/log/proftpd/local-proftpd.auth_log AUTH auth
  # Record all paranoid...
  ExtendedLog /var/log/proftpd/local-proftpd.paranoid_log ALL default
  # Normale Log-Datei anstatt Syslog
  ServerLog /var/log/proftpd/local-proftpd.log


  DefaultChdir /home/backuplw
  DefaultRoot /home/backuplw
 
  <Limit LOGIN PASV PORT>
    DenyAll
    AllowGroup imageftp
  </Limit>


</VirtualHost>


Geht das eigentlich so wie ich mir das vorgestellt habe?
Ich will TLS nur auf Global und nicht auf dem Virtualhost aktiviert haben, da der globale für externen Zugriff sein soll und der andere für internen (LAN) für Programme, die mit TLS nicht umgehen können.
Wenn ich die TLS-Befehle aber in den Gobal-Teil aufnehme, dann kommt eine Fehlermeldung, aber anscheinend scheint es im Moment auf dem Virtualhost weder mit noch ohne TLS zu funktionieren.

Die Fehlermeldung in der Datei /var/log/proftpd/local-proftpd.log sieht folgendermaßen aus:

Code:

Feb 26 18:51:32 debsrv proftpd[3256] 192.168.2.4 (192.168.2.121[192.168.2.121]): FTP session opened.
Feb 26 18:51:32 debsrv proftpd[3256] 192.168.2.4 (192.168.2.121[192.168.2.121]): USER imageftp (Login failed): Limit access denies login
Feb 26 18:51:32 debsrv proftpd[3256] 192.168.2.4 (192.168.2.121[192.168.2.121]): FTP session closed.


Was habe ich denn falsch gemacht?

Gruß
Thomas


Titel: Kein Login an Virtualhost möglich
Beitrag von: VolGas am 27. Februar 2006, 00:17:48
Hi!

Wow, Da hat sich jemand aber ganz schön Mühe gegeben!
Jetzt im Detail darauf einzugehen wird mir -ehrlich gesagt- zu viel und warum das Login
nicht klappt, ist mir auch nicht ganz klar.

Ich versuche nun auf die Punkte einzugehen, die mir aufgefallen sind:
  • Fasse zuerst alle möglichen Anweisungen im <Global>-Block zusammen.
  • Prima: DefaultAddress, SocketBindTight, DefaultServer, <VirtualHost ...>
Weglassen: Bind (unnötig und "depricated")
  • <Limit LOGIN PASV PORT>: Login ist klar, aber warum den "passive mode"
verbieten - dieser ist doch normalerweise ausdrücklich erwünscht?!
  • DefaultChdir /home/ftpdaten entfernen
  • Du machst Dir mit deinen "Limits" das Leben ganz schön schwer.
Drehe die Logik um und es wird wesentlich einfacher (und kürzer):

Code:
<Limit LOGIN>
  DenyGroup !ftpuser
  </Limit>

<Directory /home/ftpdaten>
 <Limit WRITE>
    DenyAll
  </Limit>
</Directory>
...

Das dürfte das selbe bewirken wie das, was Du erreichen wolltest.
  • Daran denken: die System-Zugriffsrechte können nicht "ausgehebelt" werden!
Ich habe mir erlaubt und -auch nur ausnahmsweise(!!!)- die Mühe gemacht,
Deine .conf-Datei entsprechend umzugestalten (nicht getestet und natürlich
alles ohne Gewährleistung!):

Code:

ServerType          standalone
SocketBindTight     on
DefaultServer       off

DeferWelcome        off
MultilineRFC2228    on

MaxInstances 30
MaxClientsPerHost 3
MaxClientsPerUser 3
MaxHostsPerUser 1

UseReverseDNS off
IdentLookups off

# Some logging formats
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"

<Global>

    # Set the user and group that the server normally runs at.
    User    nobody
    Group   nogroup

    RequireValidShell    off
   
    TimeoutNoTransfer   600
    TimeoutStalled      600
    TimeoutIdle         1200
   
    DisplayLogin        welcome.msg
    DisplayFirstChdir   .message
    DenyFilter          \*.*/
    ListOptions         "-l"
    ShowSymlinks        on

    # Normally, we want files to be overwriteable.
    AllowOverwrite          on
    AllowRetrieveRestart    on
    AllowStoreRestart       on

    # Umask 022 is a good standard umask to prevent new files and dirs
    # (second parm) from being group and world writable.
    Umask   027  027
   
   
    # Log file/dir access
    ExtendedLog /var/log/proftpd/proftpd.access_log WRITE,READ write
    # Record all logins
    ExtendedLog /var/log/proftpd/proftpd.auth_log AUTH auth
    # Paranoia logging level....
    ExtendedLog /var/log/proftpd/proftpd.paranoid_log ALL default
    # Normale Log-Datei anstatt Syslog
    ServerLog /var/log/proftpd/proftpd.log
   
    DefaultRoot /home/ftpdaten

    # Login-Berechtigungen setzen
    <Limit LOGIN>
        DenyGroup !ftpuser
    </Limit>
   
    <Directory /home/ftpdaten>
        HideNoAccess on
        <Limit WRITE>
            DenyAll
        </Limit>
    </Directory>
   
    # Verzeichnis /home/ftpdaten/upload und Unterverzeichnisse
    <Directory /home/ftpdaten/upload>
        # Gruppe ftpuser Schreib-Zugriff geben
        # (ohne Loesch-Rechte)
        <Limit MKD STOR STOU>
            AllowGroup ftpuser
        </Limit>
    </Directory>
</Global>

# --------------------------------------------
# Standard-Server
# --------------------------------------------

ServerName      "Debian"
DefaultAddress  192.168.2.3
Port            621

# TLS
<IfModule mod_tls.c>
    TLSEngine on
    TLSProtocol TLSv1
    TLSLog /var/log/proftpd/proftpd_tls.log
    TLSRequired on
    TLSVerifyClient off
    TLSRSACertificateFile /etc/ftpcert/ftphost.cert
    TLSRSACertificateKeyFile /etc/ftpcert/ftphost.key
</IfModule>


# --------------------------------------------
# Lokaler Server
# --------------------------------------------

<VirtualHost 192.168.2.4>
    ServerName "Debian-Local"
    Port 21
   
    # Log file/dir access
    ExtendedLog /var/log/proftpd/local-proftpd.access_log WRITE,READ write
    # Record all logins
    ExtendedLog /var/log/proftpd/local-proftpd.auth_log AUTH auth
    # Record all paranoid...
    ExtendedLog /var/log/proftpd/local-proftpd.paranoid_log ALL default
    # Normale Log-Datei anstatt Syslog
    ServerLog /var/log/proftpd/local-proftpd.log

    DefaultRoot /home/backuplw

    <Limit LOGIN>
        DenyGroup !imageftp
    </Limit>
</VirtualHost>


Ich hoffe, daß das alles so funktioniert...
Zum Testen schaltest Du vielleicht zuerst einmal TLS aus ("TLSEngine off").
Wenn das mit TLS so nicht funktionieren sollte, dann überprüfe noch einmal
Deine Zertifikate und die Zugriffsrechte darauf.

Gruß
  VolGas