it-swarm.com.de

Einrichten von FTP auf Amazon Cloud Server

Ich versuche, FTP auf Amazon Cloud Server einzurichten, aber ohne Glück .. Ich suche über das Netz und es gibt keine konkreten Schritte, wie dies zu tun ist.

Ich habe die folgenden Befehle gefunden:

$ yum install vsftpd
$ ec2-authorize default -p 20-21
$ ec2-authorize default -p 1024-1048
$ vi /etc/vsftpd/vsftpd.conf
#<em>---Add following lines at the end of file---</em>
    pasv_enable=YES
    pasv_min_port=1024
    pasv_max_port=1048
    pasv_address=<Public IP of your instance>
$ /etc/init.d/vsftpd restart

Aber ich weiß nicht, wo ich sie schreiben soll.

246
SharkTheDark

Jaminto hat die Frage sehr gut beantwortet, aber ich habe den Prozess kürzlich selbst durchlaufen und wollte die Antwort von Jaminto erweitern.

Ich gehe davon aus, dass Sie bereits eine EC2-Instanz erstellt haben und dieser eine elastische IP-Adresse zugewiesen hat.


Schritt 1: Installieren Sie vsftpd

SSH an Ihren EC2-Server. Art:

> Sudo yum install vsftpd

Dies sollte vsftpd ..__ installieren.

Schritt 2: Öffnen Sie die FTP-Ports Ihrer EC2-Instanz

Als Nächstes müssen Sie die FTP-Ports auf Ihrem EC2-Server öffnen. Melden Sie sich bei der AWS EC2 Management Console an und wählen Sie in der Navigationsstruktur links Sicherheitsgruppen aus. Wählen Sie die Sicherheitsgruppe aus, die Ihrer EC2-Instanz zugewiesen ist. Wählen Sie dann die Registerkarte Eingehend aus und klicken Sie auf Bearbeiten:

enter image description here

Fügen Sie zwei benutzerdefinierte TCP - Regeln mit den Portbereichen 20-21 und 1024-1048 hinzu. Als Quelle können Sie "Überall" auswählen. Wenn Sie Source als eigene IP-Adresse festlegen, müssen Sie beachten, dass sich Ihre IP-Adresse möglicherweise ändert, wenn sie über DHCP zugewiesen wird.

enter image description here



Schritt 3: Aktualisieren Sie die Datei vsftpd.conf

Bearbeiten Sie Ihre vsftpd-conf-Datei, indem Sie Folgendes eingeben:

> Sudo vi /etc/vsftpd/vsftpd.conf

Deaktivieren Sie das anonyme FTP, indem Sie diese Zeile ändern:

anonymous_enable=YES

zu 

anonymous_enable=NO

Fügen Sie dann die folgenden Zeilen am Ende der Datei vsftpd.conf hinzu:

pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=<Public IP of your instance> 

Ihre vsftpd.conf -Datei sollte in etwa wie folgt aussehen - mit der Ausnahme, dass Sie die pasv_address durch Ihre öffentliche IP-Adresse ersetzen:

enter image description here

Um die Änderungen zu speichern, drücken Sie die Escape-Taste, geben Sie :wq ein und drücken Sie die Eingabetaste.



Schritt 4: Starten Sie vsftpd neu

Starten Sie vsftpd neu, indem Sie Folgendes eingeben:

> Sudo /etc/init.d/vsftpd restart

Sie sollten eine Nachricht sehen, die wie folgt aussieht:

enter image description here


Wenn dies nicht funktioniert, versuchen Sie Folgendes:

> Sudo /sbin/service vsftpd restart



Schritt 5: Erstellen Sie einen FTP-Benutzer

Wenn Sie einen Blick auf/etc/vsftpd/user_list werfen, sehen Sie Folgendes:

# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even Prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

Dies bedeutet im Wesentlichen: "Diesen Benutzern keinen FTP-Zugriff erlauben." vsftpd ermöglicht den FTP-Zugriff für alle Benutzer, die nicht in dieser Liste aufgeführt sind.

Um ein neues FTP-Konto zu erstellen, müssen Sie möglicherweise einen neuen Benutzer auf Ihrem Server erstellen. (Wenn Sie bereits ein Benutzerkonto haben, das nicht in/etc/vsftpd/user_list aufgeführt ist, können Sie mit dem nächsten Schritt fortfahren.)

Das Erstellen eines neuen Benutzers in einer EC2-Instanz ist ziemlich einfach. Um beispielsweise den Benutzer 'bret' zu erstellen, geben Sie Folgendes ein:

> Sudo adduser bret
> Sudo passwd bret

So wird es aussehen:

enter image description here



Schritt # 6: Beschränken der Benutzer auf ihre Basisverzeichnisse

Zu diesem Zeitpunkt sind Ihre FTP-Benutzer nicht auf ihre Basisverzeichnisse beschränkt. Das ist nicht sehr sicher, aber wir können es ziemlich leicht beheben. 

Bearbeiten Sie Ihre vsftpd-conf-Datei erneut, indem Sie Folgendes eingeben:

> Sudo vi /etc/vsftpd/vsftpd.conf

Kommentar aus der Zeile auskommentieren:

chroot_local_user=YES

Es sollte so aussehen, wenn Sie fertig sind:

enter image description here

Starten Sie den vsftpd-Server erneut wie folgt:

> Sudo /etc/init.d/vsftpd restart

Alles erledigt!


Anhang A: Neustart überleben

vsftpd wird beim Booten Ihres Servers nicht automatisch gestartet. Wenn Sie wie ich sind, bedeutet dies, dass Sie nach dem Neustart Ihrer EC2-Instanz einen Moment des Schreckens verspüren, wenn FTP beschädigt zu sein scheint - aber in Wirklichkeit läuft es einfach nicht! Hier ist eine praktische Möglichkeit, das zu beheben:

> Sudo chkconfig --level 345 vsftpd on

Wenn Sie redhat verwenden, können Sie Ihre Dienste alternativ auch über diese grafische Benutzeroberfläche verwalten, um zu steuern, welche Dienste automatisch gestartet werden sollen:

>  Sudo ntsysv

enter image description here

Jetzt startet vsftpd automatisch, wenn der Server hochfährt.


Anhang B: Ändern des FTP-Stammverzeichnisses eines Benutzers

* HINWEIS: Iman Sedighi hat eine elegantere Lösung veröffentlicht, um den Zugriff von Benutzern auf ein bestimmtes Verzeichnis zu beschränken. Bitte beziehen Sie sich auf seine ausgezeichnete Lösung als Antwort *

Möglicherweise möchten Sie einen Benutzer erstellen und seinen FTP-Zugriff auf einen bestimmten Ordner beschränken, z. B./var/www. Dazu müssen Sie das Standardverzeichnis des Benutzers ändern:

> Sudo usermod -d /var/www/ username

In diesem speziellen Beispiel wird dem Benutzer normalerweise die Berechtigung für die Gruppe "www" erteilt, die häufig mit dem Ordner/var/www verknüpft ist: 

> Sudo usermod -a -G www username
552
clone45

Um passives FTP auf einem EC2-Server zu aktivieren, müssen Sie die Ports konfigurieren, die Ihr FTP-Server für eingehende Verbindungen verwenden soll, und dann eine Liste der verfügbaren Ports für die FTP-Client-Datenverbindungen öffnen. 

Ich kenne mich mit Linux nicht aus, aber die Befehle, die Sie bereitgestellt haben, sind die Schritte zum Installieren des FTP-Servers, zum Konfigurieren der Regeln für die ec2-Firewall (über die AWS-API) und anschließend zum Konfigurieren des FTP-Servers für die Verwendung der Ports, die für die ec2-Firewall zugelassen sind .

Dieser Schritt installiert also den FTP-Client (VSFTP).

> yum install vsftpd

Diese Schritte konfigurieren den FTP-Client

> vi /etc/vsftpd/vsftpd.conf
--    Add following lines at the end of file --
     pasv_enable=YES
     pasv_min_port=1024
     pasv_max_port=1048
     pasv_address=<Public IP of your instance> 
> /etc/init.d/vsftpd restart

die anderen beiden Schritte lassen sich jedoch leichter über die Amazon-Konsole in den EC2-Sicherheitsgruppen erledigen. Dort müssen Sie die Sicherheitsgruppe konfigurieren, die Ihrem Server zugewiesen ist, um Verbindungen an den Ports 20,21 und 1024-1048 zuzulassen

25
jaminto

Danke @ clone45 für die Nice-Lösung. Aber ich hatte nur ein wichtiges Problem mit Anhang B seiner Lösung. Unmittelbar nachdem ich das Basisverzeichnis in var/www/html geändert habe, konnte ich keine Verbindung zum Server über ssh und sftp herstellen, da es immer folgende Fehler anzeigt 

permission denied (public key)

oder in FileZilla habe ich diesen Fehler erhalten:

No supported authentication methods available (server: public key)

Ich könnte aber über eine normale FTP-Verbindung auf den Server zugreifen.

Wenn Sie denselben Fehler festgestellt haben, machen Sie einfach den Anhang b der @ clone45-Lösung rückgängig, indem Sie das Standardverzeichnis für den Benutzer festlegen:

Sudo usermod -d /home/username/ username

Wenn Sie jedoch das Standardverzeichnis des Benutzers festlegen, hat der Benutzer Zugriff auf viele andere Ordner außerhalb von/var/www/http. Um Ihren Server abzusichern, folgen Sie diesen Schritten:

1- Sftponly-Gruppe erstellen Erstellen Sie eine Gruppe für alle Benutzer, deren Zugriff auf den Zugriff auf ftp und sftp auf var/www/html beschränkt werden soll. um die Gruppe zu bilden:

Sudo groupadd sftponly

2- Jail the chroot Um den Zugriff dieser Gruppe auf den Server über sftp zu beschränken, müssen Sie die chroot-Datei blockieren, damit die Benutzer der Gruppe keinen Zugriff auf einen Ordner außer dem html-Ordner in ihrem Home-Verzeichnis haben. Öffnen Sie dazu /etc/ssh/sshd.config in der vim mit Sudo . Am Ende der Datei kommentieren Sie bitte diese Zeile:

Subsystem sftp /usr/libexec/openssh/sftp-server

Und dann füge diese Zeile darunter hinzu:

Subsystem sftp internal-sftp

Also haben wir das Subsystem durch internal-sftp ersetzt. Fügen Sie dann folgende Zeilen darunter hinzu:

 Match Group sftponly
        ChrootDirectory /var/www
        ForceCommand internal-sftp
        AllowTcpForwarding no

Nachdem ich diese Zeile hinzugefügt hatte, speicherte ich meine Änderungen und starte dann den ssh-Dienst neu:

Sudo service sshd restart

3- Hinzufügen des Benutzers zur Gruppe sftponly Jeder Benutzer, dessen Zugriff eingeschränkt werden soll, muss Mitglied der Gruppe sftponly sein. Deshalb schließen wir uns zu sftponly durch: Sudo usermod -G Sftponly username

4- Beschränken Sie den Benutzerzugriff auf nur var/www/html Um den Benutzerzugriff auf den Ordner var/www/html zu beschränken, müssen Sie ein Verzeichnis im Heimatverzeichnis (mit dem Namen 'html') von erstellen diesen Benutzer und mounten Sie/var/www in/home/username/html wie folgt:

Sudo mkdir /home/username/html
Sudo mount --bind /var/www /home/username/html

5- Schreibzugriff einstellen Wenn der Benutzer Schreibzugriff auf/var/www/html benötigt, müssen Sie den Benutzer unter/var/www sperren, das über root: root-Besitzrechte und Berechtigungen von 755 verfügen muss Dann müssen Sie/var/www/html den Besitz von root: sftponly und die Berechtigungen von 775 geben, indem Sie die folgenden Zeilen hinzufügen:

Sudo chmod 755 /var/www
Sudo chown root:root /var/www
Sudo chmod 775 /var/www/html
Sudo chown root:www /var/www/html

6- Shell-Zugriff blockieren Wenn Sie den Zugriff auf Shell beschränken möchten, um die Sicherheit zu erhöhen, ändern Sie die Standard-Shell wie folgt in bin/false:

Sudo usermod -s /bin/false username
16
Iman Sedighi

Großartiger Artikel ... funktionierte unter Amazon Linux AMI wie ein Kinderspiel.

Zwei weitere nützliche Befehle:

So ändern Sie den Standard-FTP-Uploadordner

Schritt 1: 

edit /etc/vsftpd/vsftpd.conf

Schritt 2: Erstellen Sie einen neuen Eintrag am unteren Rand der Seite:

local_root=/var/www/html

Zum Anwenden der Lese-, Schreib- und Löschberechtigung für die Dateien unter dem Ordner, sodass Sie sie mit einem FTP-Gerät verwalten können

find /var/www/html -type d -exec chmod 777 {} \;
11
Ravi Shanker

Falls Sie ufw aktiviert haben, vergessen Sie nicht, ftp hinzuzufügen:

> Sudo ufw allow ftp

Ich habe 2 Tage gebraucht, um zu realisieren, dass ich ufw aktiviert habe.

6
chbong

Es wird nicht in Ordnung sein, bis Sie Ihren Benutzer mit den folgenden Befehlen zur Gruppe www hinzufügen:

Sudo usermod -a -G www <USER>

Dies löst das Berechtigungsproblem.

Legen Sie den Standardpfad fest, indem Sie Folgendes hinzufügen:

local_root=/var/www/html
6
user1802434

Vergessen Sie nicht, Ihre iptables-Firewall zu aktualisieren, wenn Sie die Bereiche 20-21 und 1024-1048 zulassen.

Tun Sie dies aus/etc/sysconfig/iptables 

Zeilen wie diese hinzufügen:

-EINGANG -m Zustand - Zustand NEU -m Tcp -p Tcp -dport 20:21 -j ACCEPT

-Ein Zustand INPUT -m - state NEU -m TCP -P TCP -dport 1024: 1048 -j ACCEPT

Und starten Sie iptables erneut mit dem Befehl:

Sudo-Dienst iptables neu starten

4
Kevin Meek

Ich habe clone45 Schritte vereinfacht:

Öffnen Sie die Ports wie er erwähnt hat

Sudo su
Sudo yum install vsftpd
echo -n "Public IP of your instance: " && read publicip
echo -e "anonymous_enable=NO\npasv_enable=YES\npasv_min_port=1024\npasv_max_port=1048\npasv_address=$publicip\nchroot_local_user=YES" >> /etc/vsftpd/vsftpd.conf
Sudo /etc/init.d/vsftpd restart
3
Willem Bressers

Ich habe clone45s Antwort bis zum Ende verfolgt. Ein toller Artikel! Da ich den FTP-Zugriff für die Installation von Plug-Ins auf einer meiner Wordpress-Sites benötigte, habe ich das Home-Verzeichnis in/var/www/mysitename geändert. Dann fügte ich fort, meinen FTP-Benutzer wie folgt zu der Apache-Gruppe (oder WWW-Gruppe) hinzuzufügen:

Sudo usermod -a -G Apache myftpuser

Danach sah ich immer noch diesen Fehler auf der WP-Plugin-Installationsseite: "WordPress-Inhaltsverzeichnis (WP-Inhalt) kann nicht gefunden werden". Diese Lösung wurde in einer wp.org - F & A - Sitzung gesucht und gefunden: https://wordpress.org/support/topic/unable-to-locate-wordpress-content-directory-wp-content und fügte der folgenden Datei Folgendes hinzu: Ende von wp-config.php:

if(is_admin()) {
    add_filter('filesystem_method', create_function('$a', 'return "direct";' ));
    define( 'FS_CHMOD_DIR', 0751 );
}

Danach wurde mein WP Plugin erfolgreich installiert.

2
CodeBrew

Falls Sie ein falsches 530-Passwort erhalten 

1 weiterer Schritt erforderlich 

in der Datei/etc/shells

Fügen Sie die folgende Zeile hinzu

/ bin/false

0
Varun Bhatia

vielleicht erwähnenswert, zusätzlich zu clone45 s Antwort: 

Schreibberechtigungen für chrooted FTP-Benutzer in vsftpd behoben

Die vsftpd-Version, die mit Ubuntu 12.04 Precise geliefert wird, hat keine Erlauben Sie chrootierten lokalen Benutzern, standardmäßig zu schreiben. Standardmäßig werden Sie haben dies in /etc/vsftpd.conf:

chroot_local_user=YES
write_enable=YES

Damit lokale Benutzer schreiben können, müssen Sie den folgenden Parameter hinzufügen:

allow_writeable_chroot=YES

Hinweis: Probleme mit Schreibberechtigungen werden möglicherweise als FileZilla-Fehler angezeigt:

Error: GnuTLS error -15: An unexpected TLS packet was received.
Error: Could not connect to server

Verweise:
Schreibberechtigungen für chrooted FTP-Benutzer in vsftpd korrigiert
VSFTPd funktioniert nicht mehr nach Update

0
Hartmut