Pure-FTPd ist ein kostenloser und leichtgewichtiger FTP-Server, der auf Troll-FTPd basiert, die Entwicklung begann 2001 und läuft auf vielen Unix-ähnlichen Betriebssystemen, einschließlich Linux, *BSD, Solaris und HP-UX. Pure-FTPd hat viele Funktionen wie virtuelle Domänen, Chroot-Home-Verzeichnis, virtuelle Benutzer, TLS/SSL-Unterstützung, virtuelle Quota und vieles mehr.
In diesem Tutorial zeige ich Ihnen, wie Sie pure-ftpd unter OpenSUSE Leap 42.1 installieren und konfigurieren. Ich werde Ihnen zeigen, wie Sie pure-ftpd mit TLS/SSL einrichten und dann virtuelle Benutzer einrichten.
Voraussetzung
- OpenSUSE Leap 42.1
- Root-Rechte
- OpenSUSE, Zypper-Wissen
Schritt 1 - SuSEfirewall2 installieren und konfigurieren
SuSEfirewall2 ist ein Skript zum Generieren der Firewall-Konfiguration in der Datei '/etc/sysconfig/SuSEfirewall2'. Wir werden SuSEfirewall2 installieren und dann die Ports für SSH und den FTP-Dienst öffnen.
Installieren Sie SuSEfirewall2 mit Zypper:
zypper in SuSEfirewall2
Als nächstes bearbeiten Sie die Konfigurationsdatei ‚/etc/sysconfig/SuSEfirewall2‘ mit vim:
vim /etc/sysconfig/SuSEfirewall2
Fügen Sie die neuen Dienste ssh und FTP in Zeile 253 hinzu:
FW_SERVICES_EXT_TCP="ssh ftp"
Speichern und beenden.
Starten Sie nun SuSEfirewall2 mit dem systemctl-Befehl:
systemctl start SuSEfirewall2
Schritt 2 – Pure-FTPd installieren und konfigurieren
In diesem Schritt installieren wir pure-ftpd mit OpenSSL für die TLS/SSL-Konfiguration und konfigurieren den Benutzer und die Gruppe pure-ftpd.
Installieren Sie die Anwendungen mit Zypper wie unten gezeigt:
zypper in pure-ftpd openssl
Fügen Sie nun die neue Gruppe 'ftpgroup hinzu ' und den neuen Benutzer für den Master-'FTP-Benutzer' namens 'ftpuser ' zur Gruppe.
groupadd ftpgroup
useradd -g ftpgroup -d /dev/null -s /etc ftpuser
Gehen Sie in das pure-ftpd-Verzeichnis und bearbeiten Sie die Konfigurationsdatei ‚pure-ftpd.conf‘ mit dem vim-Editor:
cd /etc/pure-ftpd/
vim pure-ftpd.conf
Ändern Sie den Wert in Zeile 81 auf „yes“, um den anonymen Benutzer zu deaktivieren.
NoAnonymous yes
Kommentieren Sie Zeile 131 aus, um das Backend zu konfigurieren. Pure-ftpd bietet Unterstützung für MySQL, PostgreSQL und LDAP als Backend, aber in dieser Anleitung verwenden wir „PureDB“ für das Backend.
PureDB /etc/pure-ftpd/pureftpd.pdb
Kommentieren Sie die PAMAuthentication-Zeile aus, um die PAM-Authentifizierung in Zeile 141 zu deaktivieren, da wir PureDB als Authentifizierungsquelle verwenden werden.
#PAMAuthentication yes
Speichern und beenden.
Schritt 3 – TLS/SSL für Pure-FTPd konfigurieren
Generieren Sie mit dem openssl-Befehl eine neue selbstsignierte Zertifikatsdatei im Verzeichnis „/etc/ssl/private“:
openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem -days 365
Ändern Sie die Berechtigungen der Zertifikatsdatei auf 0600:
chmod 600 /etc/ssl/private/pure-ftpd.pem
Gehen Sie als Nächstes zurück zum pure-ftpd-Verzeichnis und bearbeiten Sie die Konfigurationsdatei, um die TLS/SSL-Unterstützung für die Client-Verbindung zu aktivieren.
cd /etc/pure-ftpd/
vim pure-ftpd.conf
Kommentieren Sie Zeile 439 aus, um TLS zu aktivieren.
TLS 1
Entkommentieren Sie Zeile 449 und fügen Sie eine neue Option hinzu, um sie sicherer zu machen.
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:!SSLv3
Kommentieren Sie Zeile 445 aus, um die Zertifikatsdatei zu definieren.
CertFile /etc/ssl/private/pure-ftpd.pem
Speichern und beenden.
Starten Sie nun pure-ftpd mit dem systemctl-Befehl:
systemctl start pure-ftpd
Schritt 4 – Virtuelle Benutzer konfigurieren
Pure-FTPd bietet Funktionen zum Erstellen und Verwenden virtueller Benutzer anstelle von echten Systembenutzern (Linux). Pure-FTPd bietet mehrere Authentifizierungs-Backends und die virtuelle Benutzerkonfiguration hängt vom Backend ab, das vom Server verwendet wird. In Schritt 2 haben wir 'PureDB' als Backend eingestellt.
Wir können einen neuen virtuellen Benutzer mit dem von pure-ftpd bereitgestellten Befehl ‚pure-pw‘ erstellen. In diesem Schritt erstellen wir einen neuen virtuellen Benutzer namens „shiro“ mit dem Verzeichnis „/srv/ftp/shiro“ als FTP-Home-Verzeichnis und der Benutzer wird in dieses Verzeichnis chrooted, sodass er nicht auf die anderen Systemverzeichnisse zugreifen kann.
Erstellen Sie den neuen virtuellen Benutzer mit pure-pw:
pure-pw useradd shiro -u ftpuser -d /srv/ftp/shiro
Erstellen Sie das Verzeichnis für den virtuellen Benutzer und ändern Sie den Eigentümer dieses Verzeichnisses in den Master-'FTP-Benutzer'.
mkdir -p /srv/ftp/shiro
chown -R ftpuser.ftpgroup /srv/ftp/shiro
Als nächstes müssen wir die Änderungen mit dem folgenden Befehl speichern:
pure-pw mkdb
Jetzt ist der Benutzer shiro einsatzbereit, wir können FTPp von der Befehlszeile oder FileZilla für die GUI-Schnittstelle verwenden, um eine Verbindung zum Server herzustellen.
Hinweis:
pure-pw hat mehr Befehlsoptionen, Sie können 'pure-pw help verwenden ', um alle nützlichen Befehle anzuzeigen.
Schritt 5 – Testen
Ich werde zum Testen den FTP-Befehl im Terminal verwenden. Öffnen Sie Ihr Terminal und geben Sie "ftp":
einftp
Geben Sie als Nächstes die pure-ftpd-Server-IP ein:
open 192.168.43.69
Melden Sie sich mit dem Benutzer „shiro“ und dem Passwort an und drücken Sie dann „Enter“.
Versuchen Sie, die Datei mit dem Befehl „put“ hochzuladen:
put picture.png mypict.png
Jetzt sehen Sie die Datei mypict.png auf dem Server mit dem folgenden ls-Befehl:
ls