pure-ftpd
pure-ftpd – A Lightweight, Fast, and Secure FTP Server
Pure-FTPd is a fast, production-quality, and standard-conforming FTP server, based-on Troll-FTPd. Unlike other popular FTP servers, it has no known security flaws, is trivial to set up, and is especially designed for modern Linux kernels (setfsuid and sendfile capabilities) . Features include: PAM support, IPv6, chroot()ed home directories, virtual domains, built-in LS, anti-warez system, bandwidth throttling, FXP, bounded ports for passive downloads, upload and download ratios, Apache log files, and more.
- Instalirat sa suse dvd-ea
- Kopirat (pure-ftpd.conf, pure-ftpd.passwd, pure-ftpd.pdb) (Download) u etc/pure-ftpd
- U Yast/systemservice(runlevel) pokrenuti ga da starta zajedno sa linuxsom
Anleitung für die Einrichtung von pure-ftpd (FTP Server unter Suse Linux)
Zunächst installiert man mit Yast das pure-ftpd.rpm (von Suse9.1 DVD)
Dann legen wir mit Yast eine Gruppe Ftpuser an.
Yast —> Sicherheit und Benutzer—-> Gruppe bearbeiten und anlegen—->hinzufügen
Anschließend einen User ftpuser. (Namen könnt Ihr natürlich frei wählen)
Yast —> Sicherheit und Benutzer—-> Benutzer bearbeiten und anlegen—->hinzufügen
Der User ftpuser gehört nur der Gruppe Ftpuser an und hat keine weiteren Rechte. Er dient nur als Container für die virtuellen FTP-User.
Login Shell /bin/false !!!
Nun können wir Yast verlassen und uns um die Einrichtung des Servers kümmern.
Einrichtung des Servers
Bitte eine Konsole öffnen und sich zum root machen. su rootpasswort
Nun wird der virtuelle User gast hinzugefügt. (gast durch Usernamen Deiner Wahl ersetzen) Wichtig! Der Shareordner muss existent sein, es muss aber nicht das home des ftpusers sein !
root@linux # pure-pw useradd gast -u ftpuser -d /pfad/zu/Deinem/Shareordner/
Passwort vergeben und gut merken Smile
Anmerkung: Solltest Du oben den User ftpuser anderst genannt haben musst Du dies natürlich nun beim Anlegen der virtuellen User berücksichtigen. Also wäre der Befehl so:
root@linux # pure-pw useradd gast -u Dein angelegter FTP-User -d /pfad/zu/Deinem/Shareordner/
Anschließend muss das Passwort für den gerade angelegten User in der Datenbank gespeichert werden. Dazu folgendes eingeben.
root@linux # pure-pw mkdb root@linux # rcpure-ftpd restart
So nun darf der User gast mit dem von Euch gewähltem Passwort auf den Server zugreifen und zwar in den von Euch festgelegten Shareordner)
Nun wird es Zeit den Server mal zu starten Smile
root@linux # rcpure-ftpd start
Mal schauen ob das Dingen wirklich rennt.
root@linux # rcpure-ftpd status Checking for pure-ftpd: running
Sollte dies dann da stehen habt Ihr gewonnen Smile
Nun könnt Ihr einen Cron für den automatischen Start des FTP anlegen bzw. eine Verknüpfung auf dem Desktop um das Teil bei Bedarf zu starten.
Feineinstellungen
Dazu geht Ihr in das Verzeichniss /etc/pure-ftpd/ und ändert als root die Datei pure-ftpd.conf entsprechend Euren Vorstellungen ab. Hier eine Beispiel zum leichteren Verstehen.
Code:
#
- Konfigurationsdatei für Pure-FTPd
-
-
- Wenn Sie Pure-FTPd mit dieser Konfiguration starten möchten,
- anstelle der Kommandozeilenoptionen , geben Sie den
- Befehl
- /usr/sbin/pure-config.pl /etc/pure-ftpd.conf
- oder
- rcpure-ftpd start
- ein und der FTP- Server wird gestartet.
- mit rcpure-ftpd stop gestoppt und mit rcpure-ftpd restart
- neu gestartet
- Damit der FTP- Server automatisch beim Hochfahren startet,
- an der Konsole den Befehl
- chkconfig -a pure-ftpd
- ausführen.
- Vergessen Sie nicht, sich die Dokumentation auf
- http://www.pureftpd.org/documentation.html anzusehen.
- Dort finden Sie eine komplette Liste der Optionen.
- Jeder User wird direkt in sein Heimatverzeichnis geleitet
ChrootEveryone yes
- Wenn die vorherige Option auf "no" gesetzt ist, werden Mitglieder der
- folgenden Gruppe dort nicht "eingesperrt". Andere schon.
- Wenn Sie mit niemanden chroot vorhaben,
- ChrootEveryone und TrustedGID auskommentieren mit "#"
- Dieser Gruppen- ID wird "vertraut", d.h. User die dieser Gruppe angehoeren
- koennen z.B. wenn aktiviert Dotfiles bearbeiten. Nachteil dabei ist, dass die
- Quotas (Speicherplatzbeschraenkung) dann nicht mehr aktiv sind.
- TrustedGID 100
- Einschalten der Nichtkompatibilität für ruhende Clients
BrokenClientsCompatibility no
- Maximale Zahl von Clients die gleichzeitig zugreifen duerfen
MaxClientsNumber 10
- Pure-FTPd wird als Daemon gestartet
Daemonize yes
- Maximale Zahl von aehnlichen Clients mit der selben IP Addresse
MaxClientsPerIP 8
- Wenn Sie alle Client-Kommandos mitloggen wollen auf "yes" setzen.
- Diese Anweisung kann ausserdem dazu genutzt werden die Server-Antworten mitzuloggen.
VerboseLog no
- Zeigt dot-files an: yes|no, sebst wenn der Client nicht "-a" sendet.
- Dotfiles sind Dateien die mit einem Punkt beginnen.
- Beispiele : .ftpquota .htaccess .htpasswd
DisplayDotFiles no
- Erlaubt bei 'yes' keine authentifizierten Benutzer – nur oeffentlicher anonymer FTP.
AnonymousOnly no
- Verbietet anonyme Verbindungen. Erlaubt nur authentifizierte Benutzer.
NoAnonymous yes
- Syslog Einrichtung (auth, authpriv, daemon, ftp, security, user, local*)
- Die Vorgabe ist "ftp".
SyslogFacility ftp
- Glueckskekse anzeigen
- Hier habe ich den Pfad / web/fortune angegeben. In dieser Datei
- kann sich zum Beispiel die Begruessung beim Einloggen befinden.
- Mehrere Eintraege werden durch % gertennt.
- Beispiel:
- Hallo…
- %
- Willkomen….
- %
- blablabla
FortunesFile /web/fortune
- Hostnamen nicht in Logdateien aufloesen. Logs sind kleiner, aber
- benoetigen weniger Bandbreite. Auf "yes" setzen bei stark frequentierten
- Servern oder wenn Sie keinen DNS laufen haben.
DontResolve yes
- Maximale Leerlaufzeit in Minuten (Vorgabe = 15 Minuten)
- Nach dieser Zeit wird die Verbindung getrennt.
MaxIdleTime 15
- LDAP Konfigurationsdatei (siehe README.LDAP)
- LDAPConfigFile /etc/pureftp-ldap.conf
- PureDB Benutzerdatenbank (siehe README.Virtual-Users)
- Wer keine virtuellen User einrichten möchte, sollte ein "#" davorsetzen.
- Auf die Konfiguration von virtuellen Usern gehe ich
- nach der Serverkonfiguration ein.
- Achtung !
- Ab der Version 8.1 (SuSE) fehlt dieser Eintrag in der Konfigurationsdatei.
- Er muss, sofern man virtual users nutzen will, nachgetragen werden.
PureDB /etc/pureftpd.pdb
- Pfad zu pure-authd socket (siehe README.Authentication-Modules)
- ExtAuth /var/run/ftpd.sock
- Wenn Sie PAM Authentifizierung aktivieren wollen, "#" vor der folgenden
- Zeile entfernen
- PAMAuthentication yes
- Wenn Sie einfache Unix (/etc/passwd) Authentifizierung aktivieren wollen,
- "#" vor der folgenden Zeile entfernen
- Hier werden die User anhand der /etc/passwd und etc/shadow identifiziert,
- also die dem System bekannten User.
UnixAuthentication yes
- Bitte beachten Sie: LDAPConfigFile, MySQLConfigFile, PAMAuthentication und
- UnixAuthentication könne alein fuer sich und kombiniert genutzt werden.
- Zum Beispiel: Wenn Sie MySQLConfigdatei, dann UnixAuthentication benutzen,
- wird der SQL-Server gefragt. Wenn die SQL Authentifizierung fehlschlägt,weil der
- Benutzer nicht gefunden wurde, wird ein neuer Versuch mit /etc/passwd und
- /etc/shadow gestartet. Wenn die SQL Authentifizierung fehlschlägt,weil
- das Passwort falsch ist, wird die Authentifizierungskette hier gestoppt.
- Authentifizierungsmethoden laufen in der Reihenfolge ab, in der sie
- vergeben wurden.
- 'ls' Recursionslimit. Das erste Argument ist diemaximale Zahl von
- Dateien, die angezeigt werden. Das Zweite ist die maximale
- Unterverzeichnistiefe
LimitRecursion 2000 10
- Ist es anonymen Benutzern erlaubt neue Verzeichnisse anzulegen?
AnonymousCanCreateDirs no
- Wenn im System mehr geladen wird als der folgende Wert,ist
- anonymen Benutzern ist kein download erlaubt.
MaxLoad
- Portbereich fuer passive Verbindungen. – fuer firewalling.
- PassivePortRange 30000 5000
# IP Addresse dazu bringen in PASV/EPSV/SPSV zu antworten. - fuer NAT.
- ForcePassiveIP 192.168.0.
- Upload/download Verhaeltnis für anonyme Benutzer.
- AnonymousRatio 1 10
- Upload/download Verhaeltnis fuer alle Benutzer.
- Diese Anweisung uebertrumpft die Vorherige.
- UserRatio 1 10
- Verbietet downloading von Dateien die im "Besitz" von z.B. "ftp" sind,
- Dateien die hochgeladen sind, aber nicht bestätigt durch den lokalen Admin.
AntiWarez yes
- IP Addresse/Port horcht nach (Vorgabe=alle IP und Port 21).
- Bind 127.0.0.1,21
- Maximale Bandbreite fuer anonyme Benutzer in Kb/s
- AnonymousBandwidth 8
- Maximale Bandbreite fuer *alle* Benutzer (inklusiv anonymous) in Kb/s
- Benutzen Sie AnonymousBandwidth *oder* UserBandwidth, beides ergibt keinen Sinn.
- UserBandwidth 8
- Dateierzeugungsmaske. <umask fuer Dateien>:<umask fuer Verzeichnisse> .
- 177:077 wenn Sie aengstlich sind.
- Umask ist das Gegenstück zu chmod. Nehme ich den höchsten chmod Wert
- also 777 und ziehe davon den umask Wert ab, so ist das Ergebnis die
- gesetzten Dateiattribute.
- In diesem Beispiel: 777 ? 022 = 755 . Der chmod Wert fuer die Verzeichnisse
- ist also 755. Erster Wert fuer Dateien zweiter Wert nach dem Doppelpunkt
- fuer Verzeichnisse
Umask 022:022
- Minimum UserID fuer einen authentifizierten Benutzer zum einloggen.
- Mininal User- ID zum Login User- ID?s unter 100 sind nicht zugelassen.
- Das sind die Systemuser z.B. root hat die User- ID 0
MinUID 100
- Erlaubt FXP Uebertragungen nur für authentifizierte Benutzer.
- FXP ist eine Art FTP aber von Server zu Server
AllowUserFXP no
- Erlaubt anonymes FXP fuer anonyme und nicht-anonyme Bentzer.
AllowAnonymousFXP no
- Verbietet Benutzern Dateien, die mit einem Punkt beginnen, löschen/schreiben,
- selbst wenn sie Besitzer sind. Wenn aber TrustedGID aktiviert ist,
- hat diese Gruppe Zugriff zu dot-files.
ProhibitDotFilesWrite no
- Verbietet *lesen* von Dateien, die mit einem Punkt beginnen (.history, .ssh…)
ProhibitDotFilesRead no
- Nie Dateien ueberschreiben. Wenn eine Datei, die mit gleichem
- Namen bereits auf dem Server existiert hochgeladen wird,
- wird sie automatisch in datei.1, datei.2, datei.3, … umbenannt
AutoRename no
- Verbietet anonymen Benutzern das Hochladen neuer Dateien (no = hochladen ist erlaubt)
AnonymousCantUpload no
- Nur nicht-anonyme Verbindungen mit dieser speziellen IP Addresse sind zugelassen.
- Sie koennen diese Anweisung nutzen, um verschieden oeffentlichen IPs Zugang zu gewaehren
- fuer anonymen FTP, und eine private firewalled IP fuer Fernadministration zu unterhalten.
- Sie koennen auch nur erlauben eine nicht-routfaehige lokale IP (wie 10.x.x.x) zu
- authentifizieren, und einen oeffentlichen und nur FTP server auf einer anderen IP unterhalten.
- TrustedIP 10.1.1.1
- Wenn Sie die Prozess-ID zu jder Log-Zeile hinzufügen möchten, "#" vor der naechsten Zeile
- entfernen.
- LogPID yes # Eine zusaetzliche Log-Datei erzeugen mit transferlogging in einem apacheaehnlichen Format:
- fw.c9x.org – jedi [13/Dec/1975:19:36:39] "GET /ftp/linux.tar.bz2" 200 21809338
- Diese Log-Datei kann dann über's www mit traffic analyzern ausgewertet werden.
- AltLog clf:/var/log/pureftpd.log
- Eine zusaetzliche Log-Datei erzeugen mit transferlogging in einem für Format, das optimiert
- ist fuer Statistikberichte und mit ftpStats ausgewertet werden kann.
- (http://www.shagged.org/ftpstats) .
- AltLog stats:/var/log/pureftpd.log
- Eine zusaetzliche Log-Datei erzeugen mit transferlogging im W3C Standardformat
- (kompatible mit den meissten kommerziellen Loganalyzern)
- AltLog w3c:/var/log/pureftpd.log
- Verbietet das CHMOD Kommando. Benutzer können die Dateiattribute nicht aendern.
- (Aenderungen erlaubt=no)
NoChmod no
- Erlaubt Benutzer das betrachten und hochladen und runterladen von Dateien,
- aber *NICHT* zu loeschen.(löschen erlaubt=no)
KeepAllFiles no
- Pure-FTPd erstellt automatisch Heimatverzeichnisse wenn sie fehlen.
CreateHomeDir yes
- Aktivieren von virtuellen quotas. Die erste Zahl ist die max. Anzahl von Dateien.
- Die zweite Zahl die max. Groesse im Megabyte.
- 1000:10 begrenzt jeden Benutzer auf 1000 Dateien und 10 MB.
Quota 1000:100
- Wenn Ihr pure-ftpd mit stand-alone support kompiliert wurde, koennen
- Sie den Ort der PID-Datei aendern
- Die Vorgabe ist /var/run/pure-ftpd.pid
PIDFile /var/run/pure-ftpd.pid
- Wenn Ihr pure-ftpd mit pure-uploadscript support kompiliert wurde,
- bringt dies pure-ftpd dazu, Info's ueber neue Uploads nach zu schreiben
- /var/run/pure-ftpd.upload.pipe zu schreiben.So kann pure-uploadscript
- es lesen und ein Script zum Handhaben der uploads erzeugen.
- CallUploadScript yes
- Diese Option ist nuetzlich bei Servern, bei denen anonymes upload
- erlaubt ist. Wie /var/ftp z.B. in /var, es sichtert etwas Platz und
- schuetzt die Log-Dateien. Wenn im Verzeichnis X Prozent belegt ist,
- sind neue uploads sind nicht erlaubt.
MaxDiskUsage 90
- Auf 'yes' sezten, wenn Sie Ihren Usern das Umbenennen von Dateien
- nicht erlauben wollen.
NoRename no
- 'customer proof' : Schutz gegen allgemeine Benutzerfehler wie
- 'chmod 0 public_html', dies ist zwar gueltig, aber es könnte bei unkundigen
- Benutzern dazu führen, dass sie ihre Dateien selbst sperren, und dann
- Ihren technischen Support mit dummen Fragen beschaeftigen.
- wenn Sie sicher sind, dass alle Ihre Benutzer etwas Unix-Basiswissen haben
- ist diese Eigenschaft nutzlos. Sind Sie ein Hosting Service, aktivieren.
CustomerProof yes
- Fuer gleichzige Nutzer Zugriffsbeschraenkungen. Es wird nur funktionieren,
- wenn der FTP Server mit -peruserlimits kompiliert wurde (bei den meissten
- binaer Distributionen ist dies der Fall) .
- Das Format ist : <max.Sitzungen je Benutzer>:<max. anonyme Sitzungen>
- Zum Beispiel: 3:20 bedeutet,dass der selbe authentifizierte Benutzer
- maximal 3 aktive Sitzungen haben kann
- und maximal 20 anonyme Sitzungen sind erlaubt.
- PerUserLimits 3:20
- In der Version 1.0.16-38 (SuSE Linux 9.0) kommt folgender Parameter hinzu:
- Diese Option akzeptiert drei Werte :
- 0 : SSL/TLS Verschluesselungsschicht abgeschaltet (default).
- 1 : akzeptiert beite traditionelle und verschluesselte Sitzungen.
- 2 : lehnt Verbindungen die nicht den SSL/TLS Sicherheitsmechanismus nutzen ab,
- inklusiv anonymer Sitzungen.
- Nicht blind aktivieren. Seien Sie sicher, dass :
- 1) Ihr Server mit SSL/TLS Unterstuetzung kompiliert wurde (–with-tls),
- 2) Ein gueltiges Zertifikat vorhanden ist,
- 3) Nur kombatible Clients sich einloggen werden.
- TLS 1
Anschliessend einen gepflegten Restart des Servers nicht vergessen Smile
Weiteres
Ihr wollt ein Verzeichniss ändern? Kein Problem! (gast wieder durch den jeweiligen Usernamen ersetzen)
root@linux # pure-pw usermod gast -d /neues/verzeichniss/ root@linux # pure-pw mkdb root@linux # rcpure-ftpd restart
Server Status abfragen:
root@linux # rcpure-ftpd status Checking for pure-ftpd: running
Einen neuen User hinzufügen:
root@linux # pure-pw useradd neueruser -u ftpuser -d /pfad/zu/seinem/Shareordner/ root@linux # pure-pw mkdb root@linux # rcpure-ftpd restart
Schon kann sich der neu erstellte User mit seinem Usernamen und dem von Euch vergebenen Passwort einloggen.
Abschliessend sei noch angemerkt das es für Webmin ein Modul gibt, mit dem Ihr den FTP gut überwachen könnt. Vergesst auch nicht in Eurer Firewall den Port 21 freizugeben.
So das wars ich hoffe Ihr kommt dank dieser Anleitung in den Genuss einen FTP- Server zu betreiben.