www.ProFTPD.de

ProFTPD => ProFTPD - Deutsch => Thema gestartet von: maone am 02. Februar 2006, 22:01:22



Titel: Zugriffsrechte
Beitrag von: maone am 02. Februar 2006, 22:01:22
Hallo!

Bin neu bei Debian & ProFTPd...aber schon total begeistert davon :wink: !
Hab den Server mit SQL zum laufen gebracht...d.h die User-Konfig rennt schon über SQL!

Meine Frage jetzt...wie regel ich jetzt wer was wo machen darf???


Titel: Zugriffsrechte
Beitrag von: VolGas am 02. Februar 2006, 22:53:21
Wenn Du die ProFTPD-Userdaten (und damit auch die Home-Verzeichnisse) schon mit mySQL verwalten kannst,
dann regeln den Rest -mehr oder weniger- die Filesystem-Zugriffsrechte bzw. "Directory"-Direktiven in der .conf

Nicht mehr und nicht weniger. ;-)

mfg.
  VolGas


Titel: Zugriffsrechte
Beitrag von: maone am 02. Februar 2006, 23:36:02
Code:
#
# /etc/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes reload proftpd after modifications.
#

ServerName                      "oxymoronsrv"
ServerType                      standalone
ServerAdmin                     support@oxymoron.at

ServerIdent                     on      "FTP Server ready."
DeferWelcome                    on
DefaultServer                   on

Port                            21
Umask                           022

#Dateien können überschrieben werden
<Directory />
        AllowOverwrite on
</Directory>

# Maximal Werte setzen
MaxClientsPerHost               5       "Nicht mehr als %m Verbindungen"
MaxClients                      30      "Leider sind schon %m Clients verbunden"
MaxLoginAttempts                3
MaxInstances                    30

# Restart erlauben
AllowStoreRestart               on
AllowRetrieveRestart            on

# Logging options
TransferLog /var/log/ftp/proftpd.xferlog

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"

MultilineRFC2228                on
ShowSymlinks                    on

TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200

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

DenyFilter                      \*.*/

DefaultRoot                     ~

UseReverseDNS                   off
IdentLookups                    off

RequireValidShell               off

# 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

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

# 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

<Directory ~>
        <Limit MKD RTFR RNTO DELE RMD STOR SITE_CHMOD>
                DenyAll
        </Limit>
</Directory>
<Directory ~/*>
        <Limit CWD MKD RTFR RNTO DELE RMD RETR STOR>
                AllowAll
        </Limit>
</Directory>

#
# SQL Zugangskontrolle
#

SQLAuthTypes                    Plaintext
SQLAuthenticate                 users*
SQLConnectInfo                  sys_ftpserver@localhost USER PASSWORD
SQLDefaultGID                   65534
SQLDefaultUID                   65534
SQLMinUserGID                   100
SQLMinUserUID                   500
SQLUserInfo                     users userid passwd uid gid homedir shell
SQLHomeDirOnDemand              on


Sind da irgendwelche Fehler drinnen? :?


Titel: Zugriffsrechte
Beitrag von: maone am 02. Februar 2006, 23:40:09
Was ich eigentlich machen möchte ist folgendes:

User hat Home-Verzeichnis...dort hab ich für ihn Ordner angelegt "www.domain.at"...er darf in seinem Home-Dir lesen aber sonst nix...kein Ordner erstellen...löschen...raufladen.
Im Ordner "www.domain.at" darf er alles machen!

Wie kann ich das lösen? :roll:


Titel: Zugriffsrechte
Beitrag von: stonki am 03. Februar 2006, 04:36:14
http://www.proftpd.de/HowTo_Directory.43.0.html


Titel: Zugriffsrechte
Beitrag von: maone am 03. Februar 2006, 09:25:04
Danke für den Link!
Aber irgendwie check ichs nicht!

Code:
<Directory ~/*/*>
        <Limit CWD MKD RTFR RNTO DELE RMD RETR STOR>
                AllowAll
        </Limit>
</Directory>


Das müsste doch reichen, oder?


Titel: Zugriffsrechte
Beitrag von: VolGas am 03. Februar 2006, 09:38:13
Ich denke, so könnte es funktionieren wie Du es möchtest:

Code:
<Directory ~>
<Limit WRITE>
DenyAll
</Limit>
</Directory>

<Directory ~/*>
<Limit WRITE>
AllowAll
</Limit>
</Directory>

Im Home-Verzeichnis selbst werden alle schreibende Zugriffe verboten,
aber in den darunter liegenden Verzeichnissen wird es wieder erlaubt.

mfg.
  VolGas


Titel: Zugriffsrechte
Beitrag von: maone am 03. Februar 2006, 09:45:52
Und wie kann ich dem User "Administrator" (über SQL gelöst) volle Zugriffsrechte ab seinem Home-Dir geben?

(Es hat erst funktioniert, als ich den Unterordner per chmod auf 777 gestellt habe)


Titel: Zugriffsrechte
Beitrag von: maone am 03. Februar 2006, 10:09:17
Warum geht das nicht?
Muss ich zuerst alle existierenden Ordner auf chmod 777 setzen?

Code:
<Directory ~>
        <Limit All>
                AllowUser administrator
        </Limit>
</Directory>

<Directory ~/*>
        <Limit CWD MKD RTFR RNTO DELE RMD RETR STOR>
                AllowAll
        </Limit>
</Directory>


Ist das ok?
Code:
Umask                           000


Titel: Zugriffsrechte
Beitrag von: VolGas am 03. Februar 2006, 10:40:37
Aua, aua!

Mit dem Adminstrator und den Zugriffsrechten ist das immer so eine Sache -
man sollte dies vorher gründlichst überdenken und planen!
So ganz kann dies nämlich nicht funktionieren, wie Du das möchtest,
dazu müßtest Du nämlich root-Rechte erhalten (NEVER-EVER per FTP!!!)

Man kann aber versuchen, zumindest etwas ähnliches zu erreichen,
indem man allen Usern die selbe Gruppe zuweist und umask auf 007 setzt.

Dann noch:
Code:
<Directory ~>
<Limit WRITE>
AllowUser administrator
DenyAll
</Limit>
</Directory>

<Directory ~/*>
<Limit WRITE>
AllowAll
</Limit>
</Directory>

Das hat allerdings den gravierenden Nachteil, daß jeder User in den Verzeichnissen
der anderen stöbern und wildern kann, sofern diese nicht selbst die Zugriffsrechte ändern.

Warum gehst Du nicht hin, und machst dies so:
* jedem User sein eigenes Verzeichnis
* alle User die selbe Gruppe
* umask=007
* home von administrator in das übergeordnete Verzeichnis

Der "administrator" hat zwar auch nur Zugriff, wenn die User das nicht ändern, aber immerhin...

Meine Meinung:
Am besten hält man die User- und Gruppenrechte so restriktiv wie möglich und
erledigt seinen Admin-Job über die Konsole z.B. mit mc!

mfg.
  VolGas


Titel: Zugriffsrechte
Beitrag von: maone am 03. Februar 2006, 10:51:08
Dann werde ich den Admin einfach weglassen!

Welcher Wert für Umask wäre am sinnvollsten?

Gibt es am Conf-File noch was auszusetzen?
Quota & Ratio möchte ich auch über SQL lösen!

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

ServerName                      "oxymoronsrv"
ServerType                      standalone
ServerAdmin                     support@oxymoron.at

ServerIdent                     on      "FTP Server ready."
DeferWelcome                    on
DefaultServer                   on

Port                            21
Umask                           000

#Dateien können überschrieben werden
<Directory />
        AllowOverwrite on
</Directory>

# Maximal Werte setzen
MaxClientsPerHost               5       "Nicht mehr als %m Verbindungen"
MaxClients                      30      "Leider sind schon %m Clients verbunden"
MaxLoginAttempts                3
MaxInstances                    30

# Restart erlauben
AllowStoreRestart               on
AllowRetrieveRestart            on

# Logging options
TransferLog /var/log/ftp/proftpd.xferlog

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"

MultilineRFC2228                on
ShowSymlinks                    on

TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200

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

DenyFilter                      \*.*/

DefaultRoot                     ~

UseReverseDNS                   off
IdentLookups                    off

RequireValidShell               off

# 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

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

# 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

<Directory ~/*>
        <Limit CWD MKD RTFR RNTO DELE RMD RETR STOR>
                AllowAll
        </Limit>
</Directory>

#
# SQL Zugangskontrolle
#

SQLAuthTypes                    Plaintext
SQLAuthenticate                 users*
SQLConnectInfo                  sys_ftpserver@localhost USER PASSWORD
SQLDefaultGID                   65534
SQLDefaultUID                   65534
SQLMinUserGID                   100
SQLMinUserUID                   500
SQLUserInfo                     users userid passwd uid gid homedir shell
SQLHomeDirOnDemand              on


Titel: Zugriffsrechte
Beitrag von: VolGas am 03. Februar 2006, 11:21:31
Ich gehe davon aus, daß die Gruppenrechte dazu da sind, daß der Apache ebenfalls auf die Dateien zugreifen kann.
Dann wäre "umask 037 027" die sicherste Einstellung.
(User darf alles, Gruppe: Dateien nur lesen, Verzeichnisse "öffnen" und lesen, sonst kein Zugriff)
Umask 000 ist wohl die denkbar schlechteste Einstellung.


Was mir sonst noch an der .conf aufgefallen ist:

* "AllowOverwrite on" braucht kein umgebendes "Directory"
* Sind die Limitierungen wirklich (noch) notwendig?
* Solange Deine User keine Shell brauchen, reicht "SQLUserInfo users userid passwd uid gid homedir NULL" völlig aus.
Das Datenfeld in der mySQL-Tabelle braucht dann nicht mehr gepflegt und kann auch weglassen werden.
Dies gilt alalog auch für "gid", wenn alle User in der selben Gruppe sind - das ist sicherer. SQLDefaultGID ist ja vorhanden.
* SQLHomeDirOnDemand könnte man -streng genommen- als Risiko einstufen, ist aber ok.

Einen Fehler konnte ich nicht entdecken. (was aber nicht unbedingt etwas bedeutet)

mfg.
  VolGas


Titel: Zugriffsrechte
Beitrag von: maone am 03. Februar 2006, 11:48:49
Welche Limitierungen meinst du?

Kann ich "Quota" und "Ratio" hier weglassen?
Wird ja eh über SQL realisiert!


Titel: Zugriffsrechte
Beitrag von: maone am 03. Februar 2006, 11:59:36
Auf welches chmod muss ich die bestehenden Ordner also "domain.at" bzw "www.domain.at" setzen?


Titel: Zugriffsrechte
Beitrag von: VolGas am 03. Februar 2006, 13:34:44
Mit Limitierungen meine ich den ganzen "<Directory ~/*>..." Block.

"Quota" und "Ratio" ist sowieso auskommentiert.

Meine Güte: Grundwissen und (selbst) Nachdenken!
chmod u=rwX,g=rX,o= /pfad/wohin/auch/immer

mfg.
  VolGas


Titel: Zugriffsrechte
Beitrag von: maone am 03. Februar 2006, 13:40:58
Das Problem ist, dass ich nicht weiß inwieweit "normale" Dateizugriffsrechte bei ProFTPd eine Rolle spielen!

Ohne den "Directory"-Teil könnte doch jeder in sein Root-Verzeichnis schreiben, oder?


Titel: Zugriffsrechte
Beitrag von: VolGas am 03. Februar 2006, 15:07:19
Sobald man als FTP-User eingeloggt ist, hat der zugehörige ProFTPD-Prozess die vordefinierten UID/GID des Users.
Damit gelten die Unixrechte uneingeschränkt und genauso als hätte man sich mit einer Shell eingeloggt!

Zu Punkt zwei:
das hatte ich nicht richtig realisiert - ich dachte, es ginge dabei nur um einen Admin. Nun ist klar.

Den User kann man entweder durch geschickt gesetzte Unix-Rechte reglementieren
oder aber durch die zwei "Directory"-Blöcke weiter oben in diesem Thread.

Jetzt sollte aber alles geklärt sein.

mfg.
  VolGas


Titel: Zugriffsrechte
Beitrag von: maone am 03. Februar 2006, 17:22:58
Hab ich das richtig verstanden, dass ich für jeden FTP-User einen dazugehörigen FTP-User anlegen muss?
Irgendwie steh ich auf der Leitung!
Dachte ich kann das mit SQL umgehen!


Titel: Zugriffsrechte
Beitrag von: VolGas am 03. Februar 2006, 18:23:47
Bitte einen, nein, besser gleich zwei Schritte zur Seite!

In mySQL werden zu den Usernamen UID/GID's vergeben, die nach einem erfolgreichen Einloggen
dann von dem laufenden ProFTPD-Prozess übernommen werden.

Das ist genau so, als hätte man sich als existierender Systemuser mit einer Shell eingeloggt,
ohne daß aber dieser besagte Shelluser wirklich im System angelegt sein muß.

Ebenso kann man auch im Filesystem mit nicht im System eingetragenen Usern und Gruppen arbeiten.

Ich hoffe, ich habe mich nun verständlich genug ausgedrückt.

mfg.
  VolGas


Titel: Zugriffsrechte
Beitrag von: maone am 03. Februar 2006, 18:59:39
Darf ich dich noch ein (hoffentlich) letztes Mal nerven?

Code:

#
# /etc/proftpd.conf -- oxymoronsrv
#

ServerName                      "oxymoronsrv"
ServerType                      standalone
ServerAdmin                     support@oxymoron.at

ServerIdent                     on      "FTP Server ready."
DeferWelcome                    on
DefaultServer                   on

Port                            21
Umask                           037 027

User                            nobody
Group                           nogroup

AllowOverwrite                  on

AllowRetrieveRestart            on
AllowStoreRestart               on

MaxClientsPerHost               5       "Nicht mehr als %m Verbindungen"
MaxClients                      30      "Leider sind schon %m Clients verbunden"
MaxLoginAttempts                3
MaxInstances                    30

ShowSymlinks                    off

TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200

DisplayLogin                    welcome.msg

DefaultRoot                     ~
DenyFilter                      \*.*/

UseReverseDNS                   off
IdentLookups                    off

RequireValidShell               off

ListOptions                     +R      strict

<Directory ~/*>
        <Limit CWD MKD RTFR RNTO DELE RMD RETR STOR SITE_CHMOD>
                AllowAll
        </Limit>
</Directory>

# SQL Zugangskontrolle

SQLAuthTypes                    Plaintext
SQLAuthenticate                 users*
SQLConnectInfo                  sys_ftpserver@localhost USER PASSWORD
SQLDefaultGID                   65534
SQLDefaultUID                   65534
SQLMinUserGID                   100
SQLMinUserUID                   500
SQLUserInfo                     users userid passwd uid NULL homedir NULL
SQLHomeDirOnDemand              off


Passt das jetzt alles?

Ist es nicht auf irgendeinem Weg über die Directory & Limit Anweisungen möglich einem Benutzer Zugriff (schreibend&lesend) auf den root (oberste Ebene aller per FTP zugänglichen Dateien) zu geben?

Neu erstellte Dateien/Ordner haben die Berechtigung "rw-r-----"...stimmt das so?


Titel: Zugriffsrechte
Beitrag von: VolGas am 03. Februar 2006, 19:57:01
Die die Berechtigung "rw-r-----" ist für Dateien in Ordnung, aber für
Verzeichnisse sollte es "rwxr-x---" sein, sonst klappt das mit den Usern und dem Apachen nicht!

Deinen "directory"-Block läßt momentan noch jeden in Dein "root"-Verzeichnis,
es fehlt der Teil der weiter oben im Thread beschrieben wurde, um auch dieses zu sperren.

Nach wie vor würde ich Dir noch einmal empfehlen, Deine Struktur zu überdenken!
Jedem User sein eigenes home-Verzeichnis und dann dort für jede Domain ein Unterverzeichnis.

Es wurde in diesem Thread nun alles relevante mindestens schon einmal angesprchen.
Das sollte schon längstens ausreichen, damit Du von selbst weiterkommst.

mfg.
  Volker


Titel: Zugriffsrechte
Beitrag von: maone am 03. Februar 2006, 20:06:50
Zitat von: "VolGas"
Nach wie vor würde ich Dir noch einmal empfehlen, Deine Struktur zu überdenken!
Jedem User sein eigenes home-Verzeichnis und dann dort für jede Domain ein Unterverzeichnis.
So ist es doch jetzt!


Titel: Zugriffsrechte
Beitrag von: VolGas am 03. Februar 2006, 20:20:47
Schmeiß' den einen "Directory"-Block raus und dann:
Code:
<Directory ~>
<Limit WRITE>
AllowUser administrator
DenyAll
</Limit>
</Directory>

<Directory ~/*>
<Limit WRITE>
AllowAll
</Limit>
</Directory>

Feierabend!

mfg.
  VolGas


Titel: Zugriffsrechte
Beitrag von: maone am 04. Februar 2006, 12:03:23
So kann keiner ins "Haupt"-Root?!
Also ins Root vom Admin!?

Mit ist es lieber genau zu sagen was jeder darf:
Code:
<Directory ~>
        <Limit MKD RTFR RNTO DELE RMD STOR SITE_CHMOD>
                AllowUser administrator
                DenyAll
        </Limit>
</Directory>

<Directory ~/*>
        <Limit CWD MKD RTFR RNTO DELE RMD RETR STOR SITE_CHMOD>
                AllowAll
        </Limit>
</Directory>


Stimmt so, oder?

"Umask 026 027" müsste doch stimmen, oder?

Ich möchte für Dateien "rw-r-----" haben -> enspricht "640" -> 666-640 -> 026
Ich möchte für Ordner "rwxr-x---" haben -> enspricht "750" -> 777-750 -> 027