Freitag, 25. Mai 2012, 02:57

Du bist nicht angemeldet.



[HowTo] ProFTPD

basslord

Ubuntufreund

  • »basslord« ist der Autor dieses Themas

Beiträge: 2 671

Ubuntu: 12.04

Kernel: 3.2.0-24-generic

Desktop: KDE

Architektur: 64-bit

Danksagungen: 1 / 1

  • Private Nachricht senden

1

Samstag, 9. Dezember 2006, 14:45

ProFTPD

Dieses HowTo kann in Form eines PDFs in unserer Datenbank herunter geladen werden: download

Hallo zusammen,

da in letzter Zeit doch häufiger die Frage nach einer einigermaßen vernünftigen FTP-Server-Einrichtung aufgetaucht ist, hier mal ein kleines HowTo, um einen FTP-Server ohne Anonymous-Zugriff einzurichten.

Die Installation und Konfiguration ist ziemlich simpel.
"Ohne Musik wäre das Leben ein Irrtum." - Friedrich Nietzsche

basslord

Ubuntufreund

  • »basslord« ist der Autor dieses Themas

Beiträge: 2 671

Ubuntu: 12.04

Kernel: 3.2.0-24-generic

Desktop: KDE

Architektur: 64-bit

Danksagungen: 1 / 1

  • Private Nachricht senden

2

Mittwoch, 28. März 2007, 02:13

1. ProFTPD installieren

Dazu Konsole/Terminal öffnen und proftpd mit diesem Befehl installieren:

Quellcode

1
sudo aptitude install proftpd

Während der Installation wird man gefragt, ob man den Server als Daemon laufen lassen will, oder über inetd starten lassen will. Dazu Folgendes:

Braucht man den Server nur selten, macht es wenig Sinn, wenn dieser die ganze Zeit im Hintergrund mitläuft und auf Anfragen lauscht. Also wählt man inetd.

Ist der Server dagegen permanent oder sehr häufig im Einsatz, dann ist es eher kontraproduktiv, wenn er jedesmal über den inetd aufgerufen wird, denn hierbei entstehen längere Wartezeiten für die Clients. Also lieber als eigenen Daemon starten und laufen lassen.

Da ich den FTP-Server eher selten nutze, aber derzeit keine anderen Dienste durch xinetd gestartet werden müssen, wähle ich standalone.
Das kann man später jedoch jederzeit in der proftpd.conf wieder ändern.

So, proftpd ist installiert, nun weiter.

basslord

Ubuntufreund

  • »basslord« ist der Autor dieses Themas

Beiträge: 2 671

Ubuntu: 12.04

Kernel: 3.2.0-24-generic

Desktop: KDE

Architektur: 64-bit

Danksagungen: 1 / 1

  • Private Nachricht senden

3

Mittwoch, 28. März 2007, 02:14

2. ProFTPD konfigurieren

a) Sichern der originalen proftpd.conf:

Quellcode

1
sudo cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.org

b) Mit einem Editor seiner Wahl (hier: gedit) die Konfigurationsdatei zum Editieren öffnen:

Quellcode

1
gksu gedit /etc/proftpd/proftpd.conf

Diese kann man im Großen und Ganzen so belassen. Der Übersicht halber hier mal ein funktionierendes Beispiel:

Quellcode

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
Include /etc/proftpd/modules.conf

ServerName		"deinrechnername"
#ServerType		inetd
ServerType		standalone
DeferWelcome		off

MultilineRFC2228	on
DefaultServer		on
ShowSymlinks		on

TimeoutNoTransfer	600
TimeoutStalled		600
TimeoutIdle		1200

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

DenyFilter		\*.*/
DefaultRoot		~
Port			21
MaxInstances		30
User			nobody
Group			nogroup
Umask			022  022
AllowOverwrite		on

#RequireValidShell	off

Zu den Optionen und Direktiven kann man hier einiges erfahren:
deutsche ProFTPD-Seite

Die inetd-Variante ist die auskommentierte Zeile

Quellcode

1
#ServerType                     inetd

Je nachdem wählt man eine von beiden.

Die Direktive

Quellcode

1
RequireValidShell		off

muss man nur dann nutzen, wenn man keine /bin/false in seiner /etc/shells stehen hat. Da dies aber eine gute Idee ist, fügt man /bin/false zu den Shells hinzu, falls sie noch nicht eingetragen ist:

Quellcode

1
sudo add-shell /bin/false

Siehe dazu auch unter Anmerkungen III. am Schluss des HowTos.

Was noch interessant wird, ist das Root-Verzeichnis. Hier ist als DefaultRoot ~ angegeben, also das Heimatverzeichnis des FTP-Users.
Per default ist das /home/ftp. Doch kann man das Verzeichnis auch ändern. Siehe dazu auch hier:
DefaultRoot Direktive

In den Beispielskripten verwende ich /var/ftp als DefaultRoot. Die proftpd.conf bleibt unangetastet. Damit halte ich mich an die Ubuntu/Debian-Richtlinie, Ordner für Serverdienste in /var abzulegen. Bei Suse wäre dies das Verzeichnis /srv.

basslord

Ubuntufreund

  • »basslord« ist der Autor dieses Themas

Beiträge: 2 671

Ubuntu: 12.04

Kernel: 3.2.0-24-generic

Desktop: KDE

Architektur: 64-bit

Danksagungen: 1 / 1

  • Private Nachricht senden

4

Mittwoch, 28. März 2007, 02:16

3. xinetd installieren - optional

Möchte man den ProFTPD nicht als standalone laufen lassen, sondern über xinetd starten, muss man das Paket wie folgt installieren.

Dieser Schritt ist optional!

Dazu in der Konsole diesen Befehl eingeben:

Quellcode

1
sudo apt-get install xinetd

basslord

Ubuntufreund

  • »basslord« ist der Autor dieses Themas

Beiträge: 2 671

Ubuntu: 12.04

Kernel: 3.2.0-24-generic

Desktop: KDE

Architektur: 64-bit

Danksagungen: 1 / 1

  • Private Nachricht senden

5

Mittwoch, 28. März 2007, 02:17

4. xinetd konfigurieren - optional

Eigentlich sollte es Sinn machen, xinetd vor dem proftd zu installieren, da so angeblich gleich ein paar notwendige Einträge für den FTP-Server in die Konfigurationsdatei des xinetd geschrieben werden.
Das war bei mir leider nicht der Fall, somit muss man sie also sowieso nachträglich anpassen:

Quellcode

1
gksu gedit /etc/xinetd.d/proftpd

und das hier einfügen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
service ftp
{
	disable = no
	socket_type = stream
	wait = no
	user = root
	server = /usr/sbin/in.proftpd
	log_on_success += DURATION USERID
	log_on_failure += USERID
	nice = 10
}
Anschließend die Datei speichern und schließen.
Damit auch die Konfiguration übernommen wird einmal den xinetd neu starten mit:

Quellcode

1
sudo /etc/init.d/xinetd restart
Das war es erstmal für die Grundlagen, nun läuft der xinetd. Kommt nun eine Anfrage für den proftpd, wird dieser durch xinetd aufgerufen.

basslord

Ubuntufreund

  • »basslord« ist der Autor dieses Themas

Beiträge: 2 671

Ubuntu: 12.04

Kernel: 3.2.0-24-generic

Desktop: KDE

Architektur: 64-bit

Danksagungen: 1 / 1

  • Private Nachricht senden

6

Mittwoch, 28. März 2007, 02:18

5. Skript zum Anlegen von FTP-Usern

Es gibt (außer Systembenutzern, die bereits existieren) noch keinen dedizierten FTP-User, der Zugriff auf den FTP-Server hat.

Nun soll jeder hinzukommende FTP-User ein eigenes Heimatverzeichnis unterhalb von /var/ftp erhalten. Das anzulegen plus den Benutzer zu erstellen, ist auf Dauer etwas lästig, also erledigt das ein Skript:

Quellcode

1
gedit /pfad/zur/skriptsammlung/addproftpduser.sh

und das sieht dann so aus:

Quellcode

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
#!/bin/sh
#
# script zum einfachen anlegen eines ftp-users
# mit zugehoerigem homeverzeichnis.

GROUP=nogroup
SHELL=/bin/false
GECOS=ftpuser
OLDHOME=/home/ftp
NEWHOME=/var
FTPHOME=/var/ftp

if [ -d $OLDHOME ]; then
   cp -a $OLDHOME $NEWHOME
   rm -r $OLDHOME
fi

if [ -d $FTPHOME ]; then
   echo "FTP-Hauptverzeichnis existiert."
else
   mkdir $FTPHOME
fi

echo -n "Bitte Benutzernamen eingeben: "
read FTPUSER
echo "Erstelle Benutzer $FTPUSER..."
adduser $FTPUSER --home $FTPHOME/$FTPUSER --gecos $GECOS --shell $SHELL --ingroup $GROUP --disabled-login
echo "Kopiere die Willkommensnachricht..."
rm $FTPHOME/$FTPUSER/*
cp $FTPHOME/welcome.msg /$FTPHOME/$FTPUSER
echo "Setze Benutzerberechtigungen..."
chown -R $FTPUSER:$GROUP $FTPHOME/$FTPUSER
echo "Setze Passwort für neuen Benutzer..."
passwd $FTPUSER

Anschließend das Skript ausführbar machen:

Quellcode

1
chmod 755 /pfad/zur/skriptsammlung/addproftpduser.sh

Und einen Symlink anlegen, um es unter gewünschtem Namen in der Konsole aufrufen zu können:

Quellcode

1
sudo ln -s /pfad/zur/skriptsammlung/addproftpduser.sh /usr/local/bin/wunschname

Damit lässt es sich dann später in der Konsole aufrufen:

Quellcode

1
sudo wunschname

Damit ist man dann aber auch fertig ;) Sieht viel aus, ist aber eigentlich in 5 Minuten erledigt.

basslord

Ubuntufreund

  • »basslord« ist der Autor dieses Themas

Beiträge: 2 671

Ubuntu: 12.04

Kernel: 3.2.0-24-generic

Desktop: KDE

Architektur: 64-bit

Danksagungen: 1 / 1

  • Private Nachricht senden

7

Mittwoch, 28. März 2007, 02:20

6. Skript zum grafischen Administrieren von ProFTPD

In Anlehnung an obiges Skript habe ich mir gedacht, dass es ganz nett wäre, ein Tool für diejenigen bereit zu stellen, die es gerne bunt haben. Also auch für mich ;)
Um dieses Skript ausführen zu können, benötigt man zenity. Dann erhält man eine nette grafische Oberfläche, um neue FTP-Benutzer anzulegen, alte zu löschen, den Dienst zu starten/stoppen oder den Status abzufragen.

Das Skript (derzeit nur Gnome) habe ich angehängt. Wie üblich muss man das jeweilige Skript zuvor ausführbar machen. Dann kann man es nach /usr/local/bin verlinken und sich nach Geschmack einen Starter dafür anlegen. Man benötigt für das Ausführen administrative Rechte.

Viel Spaß damit.

---Changelog---
17.12.2006
Bug beim Abfragen der Statusanzeige beseitigt (bei multiplem Zugriff auf FTP-Server)

28.03.2007
Code aktualisiert, Rechtschreibfehler entfernt (keine Funktion betroffen)

04.05.2007
Falsches Verzeichnis angegeben für DefaultRoot. Statusabfrage erneut verbessert (Skriptname per grep)

10.09.2008
grep-Abfragen umgeschrieben: identische Funktion, verbesserter Code
Funktion hinzugefügt: checkshells (prüft, ob /bin/false als valide Login-Shell in /etc/shells eingetragen ist. Falls nicht, wird sie per add-shell eingetragen)
»basslord« hat folgende Datei angehängt:
  • proftpd-zenity.sh (8,45 kB - 218 mal heruntergeladen - zuletzt: 21. Mai 2012, 08:31)

basslord

Ubuntufreund

  • »basslord« ist der Autor dieses Themas

Beiträge: 2 671

Ubuntu: 12.04

Kernel: 3.2.0-24-generic

Desktop: KDE

Architektur: 64-bit

Danksagungen: 1 / 1

  • Private Nachricht senden

8

Mittwoch, 28. März 2007, 02:23

7. Ergänzungen und Bemerkungen

I. Zusätzliche Direktive

Die FTP- User haben in ihren jeweiligen Verzeichnissen volle Lese- und Schreibrechte. Will man jedoch unterbinden, dass die User dort auch löschen können, kann man das durch diese Direktive in der proftpd.conf abschalten:

Quellcode

1
2
3
4
5
<Directory /var/ftp/*>
<Limit DELE>
DenyAll
</Limit>
</Directory> 

Das soll es gewesen sein. Über Anregungen freue ich mich. Über konstruktive Kritik natürlich auch.


II. GUI für ProFTPD

Für die grafische Administration des ProFTPD-Servers existiert ein Frontend, gproftpd. Dieses liegt in den Universe-Repositories und kann somit leicht nachinstalliert werden:

Quellcode

1
sudo apt-get install gproftpd

Beim ersten Start von gproftpd wird man gefragt, ob man seine proftpd.conf behalten oder eine neue anlegen möchte.
Bei einer bereits gut konfigurierten proftpd.conf ist diese Frage zu verneinen.
"Ohne Musik wäre das Leben ein Irrtum." - Friedrich Nietzsche