www.ProFTPD.de
13. März 2007, 19:11:49 *
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: ProFTPd mit MySql - ein paar Fragen  (Gelesen 233 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
Mr.John_doe
ProFTPD
*
Offline Offline

Beiträge: 2


Profil anzeigen
« am: 24. November 2006, 11:41:54 »

Hallo Leute,

ich nutze seit kurzem ProFTPd mit dem MySQL-Modul auf einem Debian-Sarge.
Leider fehlen mir noch ein paar features und vielleicht könnt ihr mir da helfen:

1. Ich habe folgende Dateistruktur:
Code:
/FTP
        /Download 
        /Upload
               /User1 
               /User2

Der User1 soll, wenn er sich einloggt, wenn möglich, diese Struktur sehen und nicht höher kommen:
Code:
/              (/ftp/Download)        (r)
        /Upload     (/ftp/Upload/User1)    (r;w)

Kann man das irgendwie realisieren?

Meine Datenbank sieht wie folgt aus:
Code:
FTPGroup:
+-----------+------+---------+
| groupname | gid  | members |
+-----------+------+---------+
| ftpgroup  | 5500 | ftpuser |
+-----------+------+---------+

FTPUser:

id
userid
passwd
uid
gid
homedir
shell
count
accessed
modified


Außerdem möchte ich einem User, nähmlich mir, außerdem Zugriff auf das Verzeichnis /mnt geben. Wenn möglich r und w. Und dieses Verzeichniss wenn möglich auch in die virtuelle Struktur einbinden.

Ich habe momentan den Fehler, dass ich zwar, wenn ich in der User-Tabelle, Feld Homedir, den Wert /home/ftp/user1 eintrage, er zwar in diesem startet, aber immer noch eine Ebene höher gehen kann.
Ich habe mir eine Möglichkeit im bind-mounten überlegt, aber diese Methode ist, denke ich, ziemlich umständlich.

Kann mir einer ein paar Tipps geben, wie ich die Probleme lösen kann?
Hier noch meine conf:

Code:
#
# /etc/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes reload proftpd after modifications.
#

ServerName                      "Debian"
ServerType                      standalone
DeferWelcome                    off

MultilineRFC2228                on
DefaultServer                   on
ShowSymlinks                    on

TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200
DefaultRoot                     /home/ftp

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

DenyFilter                      \*.*/

# Uncomment this if you are using NIS or LDAP to retrieve passwords:
#PersistentPasswd               off

# Uncomment this if you would use TLS module:
#TLSEngine                      on

# Uncomment this if you would use quota module:
#Quotas                         on

# Uncomment this if you would use ratio module:
#Ratios                         on

# Port 21 is the standard FTP port.
Port                            21

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances                    30

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

# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask                           022  022
# Normally, we want files to be overwriteable.
AllowOverwrite                  on

# Delay engine reduces impact of the so-called Timing Attack described in
# http://security.lss.hr/index.php?page=details&ID=LSS-2004-10-02
# It is on by default.
#DelayEngine                    off

# A basic anonymous configuration, no upload directories.

# <Anonymous ~ftp>
#   User                                ftp
#   Group                               nogroup
#   # We want clients to be able to login with "anonymous" as well as "ftp"
#   UserAlias                   anonymous ftp
#   # Cosmetic changes, all files belongs to ftp user
#   DirFakeUser on ftp
#   DirFakeGroup on ftp
#
#   RequireValidShell           off
#
#   # Limit the maximum number of anonymous logins
#   MaxClients                  10
#
#   # We want 'welcome.msg' displayed at login, and '.message' displayed
#   # in each newly chdired directory.
#   DisplayLogin                        welcome.msg
#   DisplayFirstChdir           .message
#
#   # Limit WRITE everywhere in the anonymous chroot
#   <Directory *>
#     <Limit WRITE>
#       DenyAll
#     </Limit>
#   </Directory>
#
#   # Uncomment this if you're brave.
#   # <Directory incoming>
#   #   # Umask 022 is a good standard umask to prevent new files and dirs
#   #   # (second parm) from being group and world writable.
#   #   Umask                           022  022
#   #            <Limit READ WRITE>
#   #            DenyAll
#   #            </Limit>
#   #            <Limit STOR>
#   #            AllowAll
#   #            </Limit>
#   # </Directory>
#
# </Anonymous>

RequireValidShell       off
AuthOrder               mod_sql.c
AuthPAM                 off

#<Directory /home/ftp>
#       HideFiles "^(\.htaccess|\.directory|welcome\.msg)$"
#       <Limit WRITE>
#               IgnoreHidden on
#               DenyAll
#       </Limit>
#</Directory>



# MySQL-Konfiguration

SQLAuthTypes Plaintext
SQLAuthenticate users*
SQLConnectInfo proftpd@localhost proftpd hier_passwort_einfuegen PERSESSION
SQLDefaultGID 65534
SQLDefaultUID 65534
SQLMinUserGID 1000
SQLMinUserUID 1000
SQLHomedirOnDemand      off
SQLNegativeCache        off

#SQLLogFile /var/log/proftpd-sql.log
SQLUserInfo users userid passwd uid gid homedir shell

# Zusaetzliche WHERE Klausel * WHERE ftp_allow = 'Y'
SQLUserWhereClause "ftp_allow = 'Y'"


Danke im voraus...
Gespeichert
VolGas
Moderator
ProFTPD
*****
Online Online

Beiträge: 771



Profil anzeigen
« Antwort #1 am: 25. November 2006, 18:14:51 »

Hallo!

Die Direktive "DefaultRoot" dient dazu, den User in ein Verzeichnis "einzusperren" (chroot).
Wenn dies nicht sein Homedir ist, dann kann er natürlich innerhalb dieser Verzeichnisstruktur
herumspazieren wie er will und es die Zugriffsrechte erlauben.

Damit der User ausschließlich in seinem Homedir ist (und bleibt!), muß "DefaultRoot ~"
verwendet werden. Andere Verzeichnisse außerhalb davon sind dann eine Sache von entweder
individuellen mount's oder von separaten FTP-Accounts. Es gibt noch eine Möglichkeit,
"DefaultRoot" aufzuweichen - die "VRootEngine". Siehe ->hier und ->hier.
Da das Ganze aber darauf beruht, daß Symlinks das chroot-Gefängnis durchbrechen können,
ist diese Methode nur bein reinen FTP-Accounts sicher. Mit Shellzugang oder Scriptsprachen wie
z.B. PHP wäre dann die ganze Absicherung nutzlos und für die Katz.

Meine Meinung: für unterschiedliche Verzeichnisse, die außerhalb des eigenen Homedirs sind,
immer eigene FTP-Accounts anlegen. Das ist zwar nicht so anwenderfreundlich, aber darum
geht es bei Sicherheitsfragen einfach nicht.

Zu den Zugriffsrechten habe ich noch einen Textbaustein für Dich:

Der ProFTPD ist wie eine Usershell zu betrachten: nach dem Einloggen hat der neu gestartete,
individuelle Prozess die selbe User- und Group-ID wie der eingeloggte User - alle Root-Rechte
wurden aufgegeben. Damit hat der ProFTPD nur noch die selben Zugriffsrechte wie der User.
Das kann nicht ausgehebelt oder umgangen, sondern nur weiter ausgebaut werden!

Was mir bei Deiner recht ordentlichen proftpd.conf noch aufgefallen ist:

  • Die Direktiven "SQLDefaultUID" und "SQLDefaultGID" überschreiben Deine UID/GID Werte
    aus Deiner Datenbank. Das wirst Du wohl nicht wollen: entfernen oder auskommentieren.
  • Angaben, die Du in der Datenbank nicht führen möchtest, kannst Du bei "SQLUserInfo" durch
    "NULL" definieren. Damit kann man z.B. das IMHO absolut überflüssige Feld "shell" abhaken.
    Und: wenn alle User die selbe GID haben sollen, kann man dies dem entsprechend auch
    einsetzen. Dafür nutzt man dann (!) zusätzlich "SQLDefaultGID"...

Zu Deinen Fragen konnte ich Dir leider nur eine etwas unbequeme Lösung bieten,
aber ich hoffe, Du kommst damit dennoch ein Stück weiter.

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.058 Sekunden mit 18 Zugriffen.