staging.inyokaproject.org

Webserver und FTP-Server installiert. Kleines Problem und Frage, ob grundsätzlich richtig

Status: Ungelöst | Ubuntu-Version: Server 22.04 (Jammy Jellyfish)
Antworten |

Cyperline

Anmeldungsdatum:
20. August 2006

Beiträge: 154

Ich habe mir dokumentiert, wie ich meinen neuen Ubuntuserver installiert habe. Ziel ist es:

  • Apache2 installieren

  • Mariadb installieren

  • phpMyAdmin installieren und unter http://server_ip/phpmyadmin verfügbar zu machen.

  • FTP-Server installieren

  • Gruppe für FTP-Benutzer erstellen

  • Einen Benutzer für FTP-Zwecke erstellen und der Gruppe zuordnen

Die Sache funktioniert auch fast. Das Problem ist, dass wenn ich einen neuen Ordner via FTP anlege und dann eine Datei rein speichere ich im Browser ein "Forbidden" bekomme. Was habe ich falsch gemacht?

Eine weitere Frage wäre, ob ich noch weitere Dinge falsch gemacht habe, was beispielsweise eine Sicherheitslücke ins System reist oder im späteren Verlauf noch Probleme machen kann.

 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
sudo apt-get install net-tools <-- Notwendig für Befehle wie "ifconfig"
ifconfig <-- IP-Adresse rausfinden
sudo apt-get update && sudo apt-get dist-upgrade <-- System auf den aktuellen Stand bringen
sudo apt-get install apache2 <-- Der Apache Webserver
sudo add-apt-repository ppa:ondrej/php <-- Ondrej's PPA hinzufügen
sudo apt update
sudo apt install php8.3 php8.3-cli php8.3-{bz2,curl,mbstring,intl}
sudo apt-get install php8.3-ldap <-- PHP-LDAP-Modul
sudo apt-get install php8.3-mysql <-- PHP-MySQL-Modul
sudo apt install php8.3-fpm <-- Apache2-Modul installiren
sudo a2enconf php8.3-fpm <-- Modul aktivieren
sudo systemctl reload apache2 <-- Apache2 neu starten
sudo apt-get install mariadb-server <-- Datenbank-Server
sudo apt-get install phpmyadmin <-- Administration der Datenbank. Bei der Installation Konfiguration für "apache2" auswählen
sudo nano /etc/php/8.3/apache2/php.ini <-- PHP-Konfigurationsdatei von PHP für Apache2
Zeile ";extension=mysqli" suchen und ggf. auskommentieren und speichern
sudo service apache2 restart <-- Apache 2 neu starten
sudo apt-get install vsftpd <-- FTP-Server
sudo addgroup ftpgroup <-- Neue Gruppe für FTP-Benutzer erstellen
sudo adduser ftpuser1 <-- FTP-Benutzer erstellen
sudo usermod -aG ftpgroup ftpuser1 <--Benutzer der Gruppe "ftpgroup" hinzufügen
sudo usermod -aG ftpgroup startuser <--Benutzer der Gruppe "ftpgroup" hinzufügen mit dem im Terminal gearbeitet wird
sudo chgrp ftpgroup /var/www/html/ <-- Gruppe dem Verzeichnis hinzufügen, ohne den Besitzer zu ändern
sudo chmod -R 770 /var/www/html/ <-- Vollzugriff für Besitzer und Gruppe. Keine Rechte für alle anderen
sudo nano /etc/vsftpd.conf <-- Konfigurationsdatei von vsftpd aufrufen
Zeile "#write_enable = Yes" auskommentieren
sudo service vsftpd restart <-- FTP-Server neu starten
exit <-- Sitzung beenden und neu anmelden um Gruppenberechtigungen auf Verzeichnisse wirksam werden zulassen.

DJKUhpisse Team-Icon

Supporter, Wikiteam
Avatar von DJKUhpisse

Anmeldungsdatum:
18. Oktober 2016

Beiträge: 18245

Wie sind denn die Zugriffsrechte der Datei?

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

FTP ist mega old-school und per se halt eine mega terra old-school Technik. Warum nimmst du nicht z.B. Nextcloud? Einfacher zu konfigurieren, sicher zu betreiben.

Du weißt, dass das FTP-Protokoll komplett unverschlüsselt läuft? Das absolute Minimum ist, SSL Verschlüsselung im FTP-Server zu aktiveren, dass du zumindest bei SFTP bist.

Sachen direkt nach document root hochzuladen birgt das Risiko, dass ggf. falsche oder schädliche Dokumente / Seiten sind direkt für den Server verfübar.

Gruß, noisefloor

DJKUhpisse Team-Icon

Supporter, Wikiteam
Avatar von DJKUhpisse

Anmeldungsdatum:
18. Oktober 2016

Beiträge: 18245

noisefloor schrieb:

FTP ist mega old-school und per se halt eine mega terra old-school Technik.

Es bleibt aber gut. Man muss es nu richtig einsetzen.

Du weißt, dass das FTP-Protokoll komplett unverschlüsselt läuft? Das absolute Minimum ist, SSL Verschlüsselung im FTP-Server zu aktiveren, dass du zumindest bei SFTP bist.

https://en.wikipedia.org/wiki/FTPS

vsftpd kann das.

Sachen direkt nach document root hochzuladen birgt das Risiko, dass ggf. falsche oder schädliche Dokumente / Seiten sind direkt für den Server verfübar.

Das ist halt das Risiko beim Betrieb eines Webservers. Das Übertragungsprotokoll ändert daran gar nix.

Cyperline

(Themenstarter)

Anmeldungsdatum:
20. August 2006

Beiträge: 154

Danke für eure Antworten. Ich habe die VM heute wieder gestartet um weiter zu machen. Das mit den Rechten hat sich wohl erledigt. Funktioniert. Eventuell habe ich vergessen einen Restart des vsftpf zu machen(?)

Ich habe nun das Homeverzeichnis des FTP-Benutzers auf /var/www/html/projekt geändert.

Weiterhin habe die vsftpd.conf wie folgt weiter abgeändert:

1
2
3
listen_ipv6=NO <--IPv6 wird im lokalen Netzwerk nicht benötigt
ssl_enable=YES <-- SSL für SFTP aktivieren
chroot_local_user=YES <-- Benutzer im Home-Verzeichnis einsperren 

chroot_local_user=YES funktioniert trotz Systemneustart nicht!

Kann mir bitte jemand erklären warum?

Gibt es sonnst noch etwas, dass beachtet werden sollte?

Edit: Muss man wirklich ein Zertifikat erstellen um sicheres FTP verwenden zu können? Filezilla verbindet sich NICHT mehr mit normalem FTP, sondern besteht jetzt auf "SFTP - SSH File Transfer Protokoll"

DJKUhpisse Team-Icon

Supporter, Wikiteam
Avatar von DJKUhpisse

Anmeldungsdatum:
18. Oktober 2016

Beiträge: 18245

Seit wann kann Filezilla kein FTP mehr? Wäre mir völlig neu.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

Edit: Muss man wirklich ein Zertifikat erstellen um sicheres FTP verwenden zu können?

Ja. Das Zertifikat ist halt notwendig und die sichere = verschlüsselte Verbindung zu bestätigen.

Gruß, noisefloor

Cyperline

(Themenstarter)

Anmeldungsdatum:
20. August 2006

Beiträge: 154

DJKUhpisse schrieb:

Seit wann kann Filezilla kein FTP mehr? Wäre mir völlig neu.

Das ist ein Missverständnis: Gemeint war, dass vsftpd keine Verbinudng über das normale FTP-Protokoll mehr zulässt, sondern eine Verbindung nur mit SFTP zustande kommt.

Ich habe das Zertifikat, wie im Wiki beschrieben installiert und Linux neu gestartet, aber wenn ich mich jetzt mit Filezilla verbinde gibt es keine Abfrage zum Zertifikat. Eigentlich würde ich einen Hinweis erwarten, weil das Zertifikat selbst ausgestellt ist.

Cyperline

(Themenstarter)

Anmeldungsdatum:
20. August 2006

Beiträge: 154

Hier mal die komplette vsftpd.conf

 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
listen=NO
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
force_dot_files=Yes
pasv_min_port=40000
pasv_max_port=50000

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH

Irritierend ist auch, dass der FTP nach einem Neustart des Servers, bzw. auch nach einem kompletten shutdown und wieder starten direkt zur Verfügung steht. Ich dachte mit "listen=NO" muss man den Server manuell starten? Und ja, ich bin mit der richtigen VM verbunden. Hatte zwischenzeitich Zweifel an mir selbst und habe die VM ausgeschaltet und mich dann versucht zu verbinden. Klappte nicht. Also dieser Fehler kann ausgeschlossen werden.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

Irritierend ist auch, dass der FTP nach einem Neustart des Servers, bzw. auch nach einem kompletten shutdown und wieder starten direkt zur Verfügung steht.

vsftp wird wie die allermeisten Dienste über eine systemd Service Unit gestartet. Die installierst du direkt mit, wenn du vsftp aus den Paketquellen installiert. Wenn du vsftp immer manuell starten willst muss du die Unit deaktivieren und maskieren. Steht hier im Wiki, wie das geht.

Ich dachte mit "listen=NO" muss man den Server manuell starten?

Nein, das ist falsch. Guck dir mal den Eintrag zu listen in der Man-Page zu vsftpd.conf an.

Gruß, noisefloor

Cyperline

(Themenstarter)

Anmeldungsdatum:
20. August 2006

Beiträge: 154

Ich kämpfe mich gerade mit der Gruppenfunktion. Ziel ist es dem Verzeichnis /var/www/html/ und allen Unterordnern folgende Gruppen und Rechte zuzuweisen:

www-data ⇒ Alle notwendigen Rechte zum Webseiten anzeigen und PHP-Scripte ausführen.

ftpgroup ⇒ Lese- und Schreibrechte für Upload via vsftpd

Dazu habe ich folgendes recherchiert. Ich habe es kommentiert, was ich denke was passieren sollte:

1
2
3
4
# Apache Rechte zum Anzeigen der Webseiten geben.
sudo chown -R www-data:www-data /var/www/html
# Gruppe dem Verzeichnis hinzufügen, ohne den Besitzer zu ändern
sudo chgrp -R ftpgroup /var/www/html

Das scheint aber so nicht zu funktionieren. Jedenfalls gibt mit ein "ls -l" folgende Ausgabe wenn ich es innerhalb des Ordners "/var/www/" ausführe:

1
drwxr-xr-x 2 www-data ftpgroup 4096 Dez 10 18:29 html

Führe ich "ls -l" aber aus, bevor ich die Gruppe "ftpgroup" hinzufüge, sieht die Ausgabe wie folgt aus:

1
drwxr-xr-x 2 www-data www-data 4096 Dez 10 18:29 html

Kann bitte jemand für erklären was da passiert und wie man den Vorgang richtig ausführt?

Antworten |