|
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
Supporter, Wikiteam
Anmeldungsdatum: 18. Oktober 2016
Beiträge: 18245
|
Wie sind denn die Zugriffsrechte der Datei?
|
|
noisefloor
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
Supporter, Wikiteam
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: | 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
Supporter, Wikiteam
Anmeldungsdatum: 18. Oktober 2016
Beiträge: 18245
|
Seit wann kann Filezilla kein FTP mehr?
Wäre mir völlig neu.
|
|
noisefloor
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
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:
| # 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:
| 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:
| 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?
|