FTP Server mit ProFTPD

0 | 45505 Aufrufe
Sie können diese Wikiseite nach der Anmeldung auf Webmasterpro bearbeiten. Helfen Sie mit und verbessern Sie "FTP Server mit ProFTPD" mit Ihrem Wissen!

Anzeige Hier werben

Das Ziel

Installation und Konfiguration eines ProFTPD Server der auf die Systembenutzer aufbaut.

Installation

Debian / Ubuntu

 
sh
1
apt-get install proftpd

Arch Linux

 
sh
1
pacman -S extra/proftpd

Gentoo Linux

 
sh
1
emerge -av net-ftp/proftpd

Andere Distributionen

Ich hab momentan keine andere Distribution. Wer hier also was Posten kann, kann das gerne machen.

Vorbereitung

Als erstes legen wir eine Gruppe an, in der wir alle Benutzer hinzufügen, die sich per FTP anmelden dürfen.

 
sh
1
addgroup ftpuser

Nun könnt ihr, je nachdem wer sich anmelden darf, die Benutzer zu dieser Gruppe hinzufügen.

Die ProFTPD Konfiguration

Die Konfiguration liegt in (Debian Etch / Ubuntu) in /etc/proftpd/proftpd.conf oder in (Debian Sarge) in /etc/proftpd.conf.

Größten Teils ist die Konfiguration Standard.
Allerdings ist an der einen oder anderen Stelle noch eine Änderung.
Die Änderungen sind mit Kommentaren gekennzeichnet.

 
Text
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Include /etc/proftpd/modules.conf

UseIPv6                         off

# Hostname / IP hier eintragen
ServerName                      "hostname"
ServerType                      standalone
DeferWelcome                    off

MultilineRFC2228                on
DefaultServer                   on
ShowSymlinks                    on

TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200

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

DenyFilter                      \*.*/

# Diese Optionen sollen für alle gelten
<Global>
    # Es dürfen sich nur Benutzer anmelden die eine Login Shell besitzen
        RequireValidShell       on
    # Dem Benutzer root den Login verweigern
        RootLogin               off
    # Die Benutzer in ihr Home Verzeichnis einsperren
    DefaultRoot ~
</Global>

# Bestimmte Benutzer erlauben
<Limit LOGIN>
    # Wir verbieten allen Benutzern den Login außer denen, die in der Gruppe ftpuser sind
    # Damit hier keine Liste angegeben werden muss, negieren wir einfach die richtige Gruppe
        DenyGroup               !ftpuser
</Limit>

Port                            21

MaxInstances                    30

User                            proftpd
Group                           nogroup

Umask                           022  022

AllowOverwrite                  on

TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log

<IfModule mod_quota.c>
    QuotaEngine on
</IfModule>

<IfModule mod_ratio.c>
    Ratios on
</IfModule>


<IfModule mod_delay.c>
    DelayEngine on
</IfModule>

<IfModule mod_ctrls.c>
    ControlsEngine        on
    ControlsMaxClients    2
    ControlsLog           /var/log/proftpd/controls.log
    ControlsInterval      5
    ControlsSocket        /var/run/proftpd/proftpd.sock
</IfModule>

<IfModule mod_ctrls_admin.c>
    AdminControlsEngine on
</IfModule>

Zuweisen eines FTP-Home-Verzeichnisses

Nicht immer soll ein Benutzer FTP-Zugang zu seinem, wenn er denn eines besitzt, Homeverzeichnis bekommen. Wird beispielsweise ein Benutzer angelegt, der sich um den Webauftritt kümmern und Zugriff auf /var/www/ haben soll, so bringt ihm der Zugriff auf sein Home-Verzeichnis nicht viel.

Zur Verdeutlichung werde ich dieses Beispiel nutzen und als erstes einen User www-web der Gruppe ftpuser anlegen und ihn danach als Eigentümer des Verzeichnisses /var/www/ eintragen.

 
sh
1
2
useradd -g ftpuser www-web
chown www-web /var/www/

Um nun dem User den FTP-Zugriff auf das Verzeichnis /var/www/ zu gestatten, muss folgendes über der DefaultRoot ~ Zeile in die proftpd.conf eingetragen werden:

 
Text
1
DefaultRoot /var/www/ www-web

Hier muss aber unbedingt darauf geachtet werden, dass der Benutzer des Apache auch darauf zugreifen kann.

SSL

Für die SSL Verschlüsselung wird natürlich das Modul selber, das Zertifkat sowie der Schlüssel benötigt.

 
Text
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# Existiert das Modul
<IfModule mod_tls.c>
    # TLS aktivieren
        TLSEngine on
    # Log Datei
        TLSLog /var/log/proftpd/ssl.log
    # Welches Protkoll, in diesem Fall SSL
        TLSProtocol SSLv23
        TLSOptions NoCertRequest
    # Angabe des Zertifikats und des Schlüssels
        TLSRSACertificateFile /pfad/zu/meinem/cert.crt
        TLSRSACertificateKeyFile /pfad/zu/meinem/key.key
    # off: Es wird kein Client Zertifkat benötigt
    # on: Das Zertifikat des Clients wird überprüft
        TLSVerifyClient off
    # TLS erzwingen
        TLSRequired off
</IfModule>

Wikiseite bearbeiten

Diese Seite kann von jedem registrierten Benutzer bearbeitet werden. Bisher haben 4 Personen an der Seite "FTP Server mit ProFTPD" mitgewirkt.

Sie haben einen Fehler entdeckt oder möchten etwas ergänzen? Dann können Sie nach der Anmeldung "FTP Server mit ProFTPD" hier bearbeiten.

Mitarbeiter
  • hat keine Beschreibung angegeben. Eine Beschreibung kann man unter dem Punkt "Profil bearbeiten" im Kontrollzentrum eintragen.
  • hat keine Beschreibung angegeben. Eine Beschreibung kann man unter dem Punkt "Profil bearbeiten" im Kontrollzentrum eintragen.
  • (Web-) Programmierer, v.a. in PHP seit über 4 Jahren sowie längere Erfahrung auch in (X)HTML und CSS.
  • Zur Zeit Schüler eines informationstechnischen Gymnasiums in der 12. Klasse. Seit 2 Jahren im Webdesign und seit einem halben Jahr in der Welt der Linuxserver unterwegs.