ProFTPd

Debian Swirl

http://www.black-board.net
Es ist nicht gestattet dieses Tutorial losgelöst von dem Namen BlackBoard und der URL zu verbreiten.


Das Tutorial befindet sich noch in der Entwicklung. Wenn du mitwirken möchtest, melde dich hier.
Dies ist ein Aufruf - wenn du Ahnung hast, mach mit!



1. Was ist ProFTPd?


ProFTPD ist ein sehr vielseitig-konfigurierbarer FTP-Server, und bei den Unix-basierenden Systemen wohl auch einer der verbreitetsten. Durch die fast grenzenlosen Möglichkeiten ist seine Konfiguration auch nicht ganz einfach. Aber auf der Projektseite gibt es verschiedenste Konfigurationsdateien die man dann auf die eigenen Erfordernisse anpassen kann.

Die Projektseite dazu ist: www.proftpd.org

Es gibt die Seite auch auf deutsch: www.proftpd.de


2. Installation


Die Installaltion ist dank apt-get wie immer kein Problem, einfach "apt-get install proftpd" eintippen, danach werden die Pakete proftpd und proftpd-common installiert. Gestartet wird proftpd wie immer mit "/etc/init.d/proftpd start", weitere Möglichkeiten: force-start, stop, reload, restart, force-reload.


3. Konfiguration


Nun müssen wir uns um die Konfiguration kümmern. Auch hier erhebe ich keinen Anspruch auf Vollständigkeit, es geht darum einen laufenden ProFTPD auf die Beine zu stellen, damit man mal arbeiten kann. Für die speziellen Wünsche und Anpassungen sollte man sich mal die Manpage dazu durchsehen und auf www.proftpd.de die Konfigurationsmöglichkeiten anschauen.

Mit dieser Konfiguration kann man einem oder mehreren Benutzern Zugriff gewähren, die sich aber authentifizieren müssen, das heißt also mit Passworteingabe. Der Standort der Konfigurationsdatei ist /etc/proftpd.conf.


proftpd.conf

# Hier definieren wir den Namen des FTP-Servers und sagen, dass der Server als
# eigenständiger Prozess laufen soll

ServerName "gandalf's FTP Server"
ServerType standalone

# Hier wird der Port festgelegt auf dem der Server erreichbar sein soll. Standard
# ist Port 21

Port 21

#

Umask 022 022

# Hier geben wir an, welcher Ordner das Stammverzeichnis für ProFTPD sein soll, hier
# sollten alle eure Download- und Upload-Ordner sein. Hier ist es /var/proftpd

DefaultRoot /var/proftpd/

# Hier setzen wir den Benutzer und die Gruppe unter der der ProFTPD laufen soll,
# Standard sind die hier eingetragenen Werte.

User nobody
Group ftpuser

# Um unseren Server vor Denial of Service-Attacken zu schützen, setzen wir hier die
# maximale Anzahl der erlaubten Verbindungen. Wenn mehr als 30 Verbindungen benötigt,
# kann diesen Wert auch höher setzen.

MaxInstances 30

# Hier definieren wir, nach wievielen Sekunden ohne Datentransfer eine Verbindung
# abgebrochen wird.

TimeoutStalled 300

# Wir wollen eine Wilkommensnachricht beim Login anzeigen lassen, diese steht in
# "welcome.msg", beim Wechsel in einen neuen Ordner wird ".message" angezeigt.
# Das ist aber für einen laufenden Server nicht wichtig und kann auskommentiert
# werden.
DisplayLogin welcome.msg
DisplayFirstChdir .message




<Anonymous /var/proftpd>

Group ftpuser
AnonRequirePassword on
RequireValidShell off


# Wir wollen das alle rauf geladenen Dateien dem Benutzer "ftpuser" gehören
# und von Benutzer und Gruppe geschrieben werden können.

GroupOwner ftpuser
Umask 770

# Hier beschränken wir die maximale Anzahl Clients, wenn sich mehr anmelden
# wollen, dann werden sie mit der Meldung in den Anführungszeichen abgewiesen.
# das %m zeigt die maximale Anzahl Benutzer die erlaubt ist, den Rest kann man
# mit einer eigenen Meldung ersetzen.

MaxClients 5 "Sorry, max %m users -- try again later"


# Das hier verbietet den Zugriff auf die Dateien die 'root' gehören.

HideUser root

<Limit WRITE>
DenyAll
</Limit>

# Dies verbietet den Clienten den Zugriff auf versteckte Dateien.

<Limit READ DIRS>
IgnoreHidden on
</Limit>

# Hier definieren wir einen Upload-Ordner, in welchem das Anlegen von Ordnern
# und Dateien allen erlaubt ist,

<Directory /var/proftpd/upload>
<Limit READ>
DenyAll
IgnoreHidden on
</Limit>

<Limit STOR MKD RMD XMKD XRMD>
AllowAll
IgnoreHidden on
</Limit>
</Directory>
</Anonymous>

Nun müssen wir noch die Ordner, welche wir in der Konfigurationsdatei angegeben haben, auf dem Server erstellen, das geht mit:

mkdir /var/proftpd

und:

mkdir /var/proftpd/upload

wahrscheinlich am schnellsten.

Da wir den Upload-Ordner zum Schreiben für die Gruppe "ftpuser" freigeben wollen, muss der der Gruppe "ftpuser" gehören und muss für die Gruppe Schreibrechte erhalten. Also übertragen wir den Ordner mal der Gruppe "ftpuser" mit dem Befehl:

chgrp ftpuser /var/proftpd/upload

und machen den für die Gruppe schreibbar mit dem Befehl:

chmod 770 /var/proftpd/upload

nun müsste jeder Benutzer der der Gruppe "ftpuser" angehört in diesen Ordner wechseln können, und sollte dort Dateien und Ordner erstellen können.


4. Benutzereinstellungen


Bei dieser Konfiguration müssen die Benutzer auf dem System existieren, also müssen wir die Benutzer, denen wir Zugriff gewähren möchten, auf unserem System anlegen, in unserem Beispiel nennen wir den mal "Tanja", dies machen wir als root mit dem Befehl:

useradd tanja

nun braucht der Benutzer Tanja noch ein Passwort:

passwd tanja

Danach werden wir für den Benutzer Tanja noch ein Passwort vergeben und bestätigen müssen. Da wir oben in der Konfigurationsdatei als Benutzergruppe "ftpuser" angegeben haben müssen wir nun den Benutzer "Tanja" noch der Gruppe "ftpuser" hinzufügen. Dies machen wir mit dem Befehl:

adduser tanja ftpuser

Damit existiert der Benutzer auf unserem Server und ist einsatzbereit.


5. Fehlersuche


Auch hier steckt der Fehler meist im Detail, das heißt Benutzer-, Gruppen- und Schreibrechte sind immer das erste was man kontrollieren sollte. Falls man bei der Anmeldung Probleme hat, sollte man kontrollieren ob der Benutzer existiert. Dies kann man zum Beispiel mit dem Befehl:

grep tanja /etc/passwd

wenn der Benutzer exisiert kriegt man eine Ausgabe in diesem Stil:

tanja:x:1002:1002:,,,:/home/tanja:/bin/bash

wenn nicht, sollte man den Benutzer erst mal anlegen.

Wenn man auf einen Ordner keine Schreibrechte erhält, und die Rechte am Ordner in Ordnung sind, dann sollte man noch kontollieren, ob der Benutzer zur entsprechenden Gruppe gehört, dies könnte man mit dem Befehl:

grep ftpuser /etc/group

falls der Benutzer zu der Gruppe gehört, sollte man so eine Ausgabe erhalten:

ftpuser:x:103:tanja

wenn nicht, sollte der Benutzer der Gruppe hinzugefügt werden.

Verfasser


Letzte Aktualisierung 19.06.2006 von LX